当我使用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'
参数未做任何更改。有什么我想念的吗?
答案 0 :(得分:3)
该函数具有非常简单的逻辑。如果添加了2个像素的边框,则在处理块后将删除两个像素。你的函数输出标量,删除边框后,剩下一个空数组。
你必须关闭修剪边框:
im4 = blockproc(im1,[BlockSize BlockSize],fun,'BorderSize', [1 1],'TrimBorder',false);