我花了很多时间来理解和应用 Matlab 函数blockproc
。我还阅读了有关此功能的 stackoverflow 上的一些帖子,例如this和this,但我仍然无法按照我的意愿使用该功能。
基本上,我想要的只是图像上的一个滑动窗口,它与窗口重叠,但不(零)填充图像的边缘。
例如,在 10x10 的图像上,我想应用一个 8x8 的窗口,重叠为 2。如果
img = reshape(1:100,[10,10]);
然后,在 Matlab-Notation 中,我想得到
所需范围:
[1:8, 1:8] [1:8, 3:10]
[3:10, 1:8] [3:10, 3:10]
我认为可以解决问题的命令是:
fun = @(block_struct) mean2(block_struct.data);
blockproc(img, [4,4], fun, 'BorderSize', [2,2], 'TrimBorder', true)
其中,4+2*2=8 是我的窗口大小,2 表示重叠。但是,这不起作用。我尝试了其他参数和值的组合,但没有运气。
如果有人可以帮助我,我会非常高兴!提前致谢!