0001 function [mimg,stdv]=adaptstats(img,win)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 if ~exist('win','var') || isempty(win)
0016
0017 win=round(min(size(img))/5);
0018 end
0019
0020
0021
0022 intimg = cumsum(cumsum(img),2);
0023 intimg2 = cumsum(cumsum(img.^2),2);
0024
0025 hwin=floor(win/2);
0026
0027
0028
0029 intimg=padarray(intimg,[hwin+1,hwin+1],'pre');
0030 intimg=padarray(intimg,[hwin,hwin],'post','replicate');
0031 intimg2=padarray(intimg2,[hwin+1,hwin+1],'pre');
0032 intimg2=padarray(intimg2,[hwin,hwin],'post','replicate');
0033
0034
0035 simg=intimg(1:size(img,1),1:size(img,2))+intimg(win+1:size(img,1)+win,win+1:size(img,2)+win)...
0036 -intimg(1:size(img,1),win+1:size(img,2)+win)-intimg(win+1:size(img,1)+win,1:size(img,2));
0037 simg2=intimg2(1:size(img,1),1:size(img,2))+intimg2(win+1:size(img,1)+win,win+1:size(img,2)+win)...
0038 -intimg2(1:size(img,1),win+1:size(img,2)+win)-intimg2(win+1:size(img,1)+win,1:size(img,2));
0039
0040 n=win^2;
0041 mimg=simg/n;
0042 vari=(simg2-(mimg.^2)*n)/(n-1);
0043 stdv=sqrt(vari);