声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3345|回复: 8

[编程技巧] 求助 这样求图像的局部均值和局部方差对吗?

[复制链接]
发表于 2010-1-6 20:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想求图像的局部均值和局部方差,我先选定模板大小,然后将模板在图像上依次滑动,每滑动一次求出该模板中心像素对应的均值和方差,我这样编程对吗?
I=imread('banare.bmp');
nhood=[5 5];
localmean=filter2(ones(nhood),I)/prod(nhood);
localvar=filter2(ones(nhood),(I-localmean).^2)/prod(nhood);
请高人指点!
回复
分享到:

使用道具 举报

发表于 2010-1-7 11:11 | 显示全部楼层
不明白LZ为什么要用filter2,局部均值是不是一个块的像素均值?LZ想用均值滤波?
 楼主| 发表于 2010-1-7 22:00 | 显示全部楼层

回复 沙发 maigicku 的帖子

我不是想用均值滤波,就像你说的我想求的局部均值和方差就是一个块的像素均值和方差。
 楼主| 发表于 2010-1-7 22:06 | 显示全部楼层

回复 沙发 maigicku 的帖子

这是用for语句写的
g=imread('20100104150345.bmp');
I=g(:,:,1);
[m,n]=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
有哪个函数可以实现这个功能吗?
发表于 2010-1-8 04:04 | 显示全部楼层
可以用块处理函数实现:
如:模板大小为:[5,5],则用:
blkproc(I,[1,1],[2,2],@mean2)求均值.
具体help blkproc

评分

1

查看全部评分

发表于 2010-1-8 08:51 | 显示全部楼层
LS正解。。计算均值和方差只不过blkproc里面的函数不同而已。。。
 楼主| 发表于 2010-1-8 14:46 | 显示全部楼层

回复 5楼 friendchj 的帖子

非常感谢!
发表于 2011-3-16 10:20 | 显示全部楼层
不能直接用var和mean求吗?
发表于 2011-5-13 20:51 | 显示全部楼层
B = blkproc(A,[m n],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的尺寸相同。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 13:30 , Processed in 0.064409 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表