📄 image_stat.m
字号:
function image_stat(command)%IMAGE_STAT Computes and display some Image statistic values%% IMAGE_STAT(COMMAND)%% Valid commands:% COMMAND: START Begin the session% EVALUATE Computes the image statistics% SETVALUES Set the values from the statistic% RE_EVALUATE Evaluate and set the values% SAVE Save the statistics in a file%% Calculations:% Size = size(I);% Pixels = prod(size(I));% Sum = sum(sum(I));% Min = min(min(I));% Max = max(max(I));% Mean = sum(sum(I))/prod(size(I));% Median = median(reshape(I,prod(size(I)),1));% StDev = std(reshape(I,prod(size(I)),1));% StErr = StDev/sqrt(prod(size(I)));%%% Claudio Oct. 30 1995%%% Copyright (c) 1995 by Claudio Rivetti and Mark Young% claudio@alice.uoregon.edu, mark@alice.uoregon.edu%global I Handlefig B_frame Uibgcolor savepath Fname Fstatextglobal txt_val prev_Sautoname prev_Sascii val_txtglobal Isize Ipx Isum Imin Imax Imean Imedian Istd Isterrif nargin==0 command='START';endif isempty(I) return;endif strcmp(upper(command), 'START') if isempty(prev_Sautoname), prev_Sautoname=0; end if isempty(prev_Sascii), prev_Sascii=0; end Sstr=[ ' Size:';... 'Pixels:';... ' Sum:';... ' Min:';... ' Max:';... ' Mean:';... 'Median:';... ' StDev:';... ' StErr:']; % position variables--------------------------------------------------- pos=get(B_frame, 'Position'); uiwidth=0.12; uithick=0.035; middle=pos(1)+(pos(3)-uiwidth)/2; %--------------------------------------------------------------------- % Positions of buttons ----------------------------------------------- txt_pos = [pos(1)+0.005 pos(2)+0.72 0.08, 0.030]; val_pos = [pos(1)+0.09 pos(2)+0.72 0.1, 0.030]; exe_pos = [middle pos(2)+0.35 uiwidth, uithick]; par_pos = [middle pos(2)+0.30 uiwidth, uithick]; f2pos= [middle-0.02 pos(2)+0.1 uiwidth+0.04 0.17]; save_pos = [middle pos(2)+0.22 uiwidth uithick]; autoname_pos = [middle pos(2)+0.155 uiwidth 0.030]; ascii_pos = [middle pos(2)+0.115 uiwidth 0.030]; %-------------------------------------------------------------- % CallBacks exe_cbk ='image_stat(''RE-EVALUATE'');'; par_cbk ='display_header'; save_cbk ='image_stat(''SAVE'');'; figure(Handlefig); image_stat('EVALUATE'); initbuttons('Image Statistics', 'Done', ''); pos=txt_pos; for i=1:size(Sstr,1) pos(2)=txt_pos(2)-0.03*i; uicontrol(Handlefig, 'Style', 'text',... 'String', Sstr(i,:),... 'Units', 'normalized',... 'Horiz', 'right',... 'Position', pos,... 'BackgroundColor', Uibgcolor); end pos=val_pos; val_txt=zeros(size(Sstr,1),1); for i=1:size(Sstr,1) pos(2)=val_pos(2)-0.03*i; val_txt(i)=uicontrol(Handlefig, 'Style', 'text',... 'String', '',... 'Units', 'normalized',... 'Horiz', 'left',... 'Position', pos,... 'ForegroundColor', 'y',... 'BackgroundColor', Uibgcolor); end uicontrol(Handlefig, 'Style', 'push', ... 'String', 'Re-Evaluate', ... 'Units', 'normalized', ... 'Position', exe_pos, ... 'CallBack', exe_cbk); uicontrol(Handlefig, 'Style', 'push', ... 'String', 'Parameters', ... 'Inter', 'yes',... 'Units', 'normalized', ... 'Position', par_pos, ... 'CallBack', par_cbk); uicontrol(Handlefig, 'Style', 'frame',... 'Units', 'normalized',... 'Position',f2pos,... 'BackgroundColor', Uibgcolor); uicontrol(Handlefig, 'Style', 'push', ... 'String', 'Save', ... 'Units', 'normalized', ... 'inter', 'yes',... 'Position', save_pos, ... 'CallBack', save_cbk); uicontrol(Handlefig, 'Style', 'check', ... 'String', 'Auto Name', ... 'Units', 'normalized', ... 'value', prev_Sautoname,... 'Position', autoname_pos,... 'CallBack', 'global prev_Sautoname;prev_Sautoname=get(gco, ''value'');'); uicontrol(Handlefig, 'Style', 'check', ... 'String', 'Ascii File', ... 'Units', 'normalized', ... 'value', prev_Sascii,... 'Position', ascii_pos,... 'CallBack', 'global prev_Sascii;prev_Sascii=get(gco, ''value'');'); image_stat('SETVALUES');end % STARTif strcmp(upper(command), 'EVALUATE') f=watchon; statusbar('Evaluating image statistics...'); Isize=size(I); Ipx=prod(Isize); Isum=sum(sum(I)); Imin=min(min(I)); Imax=max(max(I)); Imean=Isum/Ipx; Imedian=median(I(:)); Istd=std2(I); Isterr=Istd/sqrt(Ipx); clearstatusbar; watchoff(f);end % EVALUATEif strcmp(upper(command), 'SETVALUES') set(val_txt(1), 'string', sprintf('%dx%d', Isize(1), Isize(2))); set(val_txt(2), 'string', sprintf('%d', Ipx)); set(val_txt(3), 'string', sprintf('%.4f', Isum)); set(val_txt(4), 'string', sprintf('%.4f', Imin)); set(val_txt(5), 'string', sprintf('%.4f', Imax)); set(val_txt(6), 'string', sprintf('%.4f', Imean)); set(val_txt(7), 'string', sprintf('%.4f', Imedian)); set(val_txt(8), 'string', sprintf('%.4f', Istd)); set(val_txt(9), 'string', sprintf('%.4f', Isterr));end % SETVALUESif strcmp(upper(command), 'RE-EVALUATE') image_stat('EVALUATE'); image_stat('SETVALUES');end % RE-EVALUATEif strcmp(upper(command), 'SAVE') ext=['*.mat';'*.txt']; if prev_Sautoname fext=Fstatext; if ~isempty(findstr(fext,'.mat')) & prev_Sascii==1 fext=strrep(fext, '.mat', '.txt'); end fname = [savepath Fname fext]; else [name, p] = uiputfile([savepath ext(prev_Sascii+1,:)]); if ~isempty(name) & name ~= 0 fname = [p name]; end end if ~isempty(fname) f=watchon; if prev_Sascii==0 eval(['save ' fname ' Isize Ipx Isum Imin Imax Imean Imedian Istd Isterr']); else SM=['Image Statistic of: ' Fname ' (' date ' ' time ')']; SM=str2mat(SM, 13); SM=str2mat(SM, ['Size:' 9 sprintf('%dx%d', Isize(1), Isize(2))]); SM=str2mat(SM, ['Pixels:' 9 sprintf('%d', Ipx)]); SM=str2mat(SM, ['Sum:' 9 sprintf('%.4f', Isum)]); SM=str2mat(SM, ['Min:' 9 sprintf('%.4f', Imin)]); SM=str2mat(SM, ['Max:' 9 sprintf('%.4f', Imax)]); SM=str2mat(SM, ['Mean:' 9 sprintf('%.4f', Imean)]); SM=str2mat(SM, ['Median:' 9 sprintf('%.4f', Imedian)]); SM=str2mat(SM, ['StDev:' 9 sprintf('%.4f', Istd)]); SM=str2mat(SM, ['StErr:' 9 sprintf('%.4f', Isterr)]); writestr(fname, SM); end statusbar(['Statistics saved in ' fname]); watchoff(f); clearstatusbar('WAIT'); endend % SAVEreturn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -