2

我正在尝试使用文档中的这个示例来计算图像中每个 8x8 像素块的标准偏差,但在这种情况下我不能很好地使用它,所以任何人都可以帮我计算每个块的标准差。

 fun = @(block_struct) std2(block_struct.data) * ones(size(block_struct.data))
 I2 = blockproc('moon.tif',[8 8],fun);
 figure;
 imshow('moon.tif');
 figure;
 imshow(I2 , []);
4

1 回答 1

1

我怀疑你想要nlfilter(或colfilt'sliding'选项)。使用blockproc,它将图像分割成不重叠的不同块,并通过复制它计算的标准偏差值来写入块。它nlfilter是一个滑动窗口,因此您可以获得平滑的输出图像。

的语法nlfilter不同,所以它会像这样应用:

Iout = nlfilter(imread('moon.tif'),[8 8],@std2);

或者,您可以使用colfilt以获得更好的性能:

Iout = colfilt(double(imread('moon.tif')),[8 8],'sliding',@std);
于 2013-09-26T23:16:50.643 回答