将边框像素添加到块时,blockproc的奇怪行为

时间:2013-12-18 19:24:13

标签: image matlab block

当我使用blockproc函数的这个参数时,我很难理解发生了什么:

当我尝试一个简单的功能时

fun = @(block) mean(mean(block.data));
im4 = blockproc(im1,[BlockSize BlockSize],fun);

它就像一个魅力。 现在功能相同,但是当块包含边框像素时:

fun = @(block) mean(mean(block.data));
im4 = blockproc(im1,[BlockSize BlockSize],fun, 'BorderSize', [BlockSize BlockSize]);

它返回一个空的im4。没有错误消息,只是一个空值。更改'TrimBorder''PadPartialBlock'参数未做任何更改。有什么我想念的吗?

1 个答案:

答案 0 :(得分:3)

该函数具有非常简单的逻辑。如果添加了2个像素的边框,则在处理块后将删除两个像素。你的函数输出标量,删除边框后,剩下一个空数组。

你必须关闭修剪边框:

im4 = blockproc(im1,[BlockSize BlockSize],fun,'BorderSize', [1 1],'TrimBorder',false);