求助 这样求图像的局部均值和局部方差对吗?
我想求图像的局部均值和局部方差,我先选定模板大小,然后将模板在图像上依次滑动,每滑动一次求出该模板中心像素对应的均值和方差,我这样编程对吗?I=imread('banare.bmp');
nhood=;
localmean=filter2(ones(nhood),I)/prod(nhood);
localvar=filter2(ones(nhood),(I-localmean).^2)/prod(nhood);
请高人指点! 不明白LZ为什么要用filter2,局部均值是不是一个块的像素均值?LZ想用均值滤波?
回复 沙发 maigicku 的帖子
我不是想用均值滤波,就像你说的我想求的局部均值和方差就是一个块的像素均值和方差。回复 沙发 maigicku 的帖子
这是用for语句写的g=imread('20100104150345.bmp');
I=g(:,:,1);
=size(I);
localmean1=ones(m,n);
localvar1=ones(m,n);
z=1;
for k=z+1:m-z
for l=z+1:n-z
localmean1(k,l)=mean2(I(k-z:k+z,l-z:l+z));
localvar1(k,l)=mean2((I(k-z:k+z,l-z:l+z)-localmean1(k,l)).^2);
end
end
有哪个函数可以实现这个功能吗? 可以用块处理函数实现:
如:模板大小为:,则用:
blkproc(I,,,@mean2)求均值.
具体help blkproc LS正解。。计算均值和方差只不过blkproc里面的函数不同而已。。。
回复 5楼 friendchj 的帖子
非常感谢! 不能直接用var和mean求吗? B = blkproc(A,,fun)将函数fun应用到图像A的每一个m-by-n的图像块中,如果需要的,则用0填充图像A。函数fun 接受一个m-by-n的矩阵x,输出一个矩阵、向量或者标量y。 www.iLoveMatlab.cn
y = fun(x)
blkproc函数不期望输出y和输入x的维数一样,然而,只要输出y和输入x的尺寸相同,则B和图像A的尺寸相同。
页:
[1]