Blockproc对图像进行平均

时间:2018-10-22 06:14:51

标签: matlab

我正在尝试对图像中MxN块的值求平均,然后用平均值的MxN矩阵替换该块。使用blockproc,我的代码如下:

a = imread('image.jpg');
fun = @(x) mean(x)*ones(size(x));
b = blockproc(a, [M N], fun);

但是,我一直在生成尺寸小于原始尺寸的图像(我认为可以通过使用尺寸(x(size(x))来规避))。另外,生成的图像是空白的。关于我犯错误的任何提示?

2 个答案:

答案 0 :(得分:0)

使用mean2表示矩阵。 将乐趣从example更改为

fun = @(block_struct) ...
mean2(block_struct.data) * ones(size(block_struct.data));

答案 1 :(得分:0)

documentation提到您应该使用部分填充:

b = blockproc(a, [M N], ...
    @(block_struct) mean(block_struct.data(:)) * ones(block_struct.blockSize), ...
    'PadPartialBlocks',true);