如何计算图像中每个块的标准偏差

时间:2013-09-26 09:18:12

标签: image-processing std matlab

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

 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 , []);

1 个答案:

答案 0 :(得分: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);