基于matlab图像的滑动窗口
我需要在图像Z上创建一个32x32的滑动窗口。然后我需要检查图像上每个窗口的平均强度 我可以使用: n=[32,32] h=f特殊('平均',n); 过滤器2(h、img)基于matlab图像的滑动窗口,matlab,image-processing,Matlab,Image Processing,我需要在图像Z上创建一个32x32的滑动窗口。然后我需要检查图像上每个窗口的平均强度 我可以使用: n=[32,32] h=f特殊('平均',n); 过滤器2(h、img) 但是,这仅创建12x30。有人能看出我哪里出错了吗?您的图像是364x350,窗口大小是32x32。结果是: 请注意,最后一列中的窗口是32x30,最后一行中的窗口是12x32,最后一个窗口(右下角)是12x30。这是最后一个要计算的值,也是为什么代码停止运行时会得到该值 我在这里看到三种选择: 用两列像素填充最后一列,用
但是,这仅创建12x30。有人能看出我哪里出错了吗?您的图像是364x350,窗口大小是32x32。结果是: 请注意,最后一列中的窗口是32x30,最后一行中的窗口是12x32,最后一个窗口(右下角)是12x30。这是最后一个要计算的值,也是为什么代码停止运行时会得到该值 我在这里看到三种选择:
在for循环之前初始化
e=1代码>
然后在for循环中启动计数器,并输入以下代码
imgWindow (:,:,e)= Z(row:min(end,row+N-1), col:min(end,col+N-1));
而不是
imgWindow = Z(row:min(end,row+N-1), col:min(end,col+N-1));
希望它能帮助你。
关于这个神奇的单词struct
和repmat
一起在做什么?它可能无法解决手头的问题,但对它很好奇。如果你键入size(Z)
,你会得到什么?如果你有图像处理工具箱,你可能会想使用它现成的滑动过滤器函数。你也可以从我的一些实现中获得灵感,nfilter
这里:,filter2
这里:如果这是你想要的平均值,看看这个:我认为前两个选项中的一个最好,因为我将在不同大小的不同图像上使用此代码。但是,如果我使用这两个选项中的一个,这会影响窗口的平均强度值吗?在选项一中,是的。你不能使用那些不是32x32的窗口的平均强度吗?我会坚持使用第二个选项,但它实际上取决于你的应用程序。
imgWindow = Z(row:min(end,row+N-1), col:min(end,col+N-1));