假设我有一张灰度图像。考虑每个像素周围的圆形邻域窗口。我需要计算那些圆形邻域中像素值的方差。
如何在MatLab中高效实现循环邻域操作?
答案 0 :(得分:4)
使用matlab的stdfilt
来获取局部方差。
J = stdfilt(I, NHOOD)
计算输入图像I的局部标准偏差,在此处指定NHOOD中的邻域。 NHOOD是一个零和多维数组,其中非零元素指定邻居。 NHOOD的尺寸在每个维度都必须是奇数。因此,对于循环邻域,您可以使用具有> 0条件的磁盘过滤器,使其成为二进制:
NHOOD = fspecial('disk',radius)>0;
其中半径是某个数字,数字越大,过滤器越“圆形”,玩它并看到......
最后,局部方差只是J.^2