在numpy中使用as_strided函数滑动窗口?

Jus*_*ime 6 numpy image-processing scipy computer-vision

当我使用python实现一个滑动窗口来检测静止图像中的对象时,我开始了解这个很好的函数:

numpy.lib.stride_tricks.as_strided
Run Code Online (Sandbox Code Playgroud)

因此,我尝试实现一般规则,以避免在改变我需要的滑动窗口大小时可能失败的错误.最后我得到了这个代表:

all_windows = as_strided(x,((x.shape[0] - xsize)/xstep ,(x.shape[1] - ysize)/ystep ,xsize,ysize), (x.strides[0]*xstep,x.strides[1]*ystep,x.strides[0],x.strides[1])
Run Code Online (Sandbox Code Playgroud)

这导致4 dim矩阵.前两个表示图像的x和y轴上的窗口数.其他代表窗口的大小(xsize,ysize)

并且step表示两个连续窗口之间的位移.

如果我选择方形滑动窗口,这种表示可以正常工作.但我仍然有一个问题,让这个工作为ex(128,64)的窗口,我通常得到图像不相关的数据.

我的代码出了什么问题.有任何想法吗?如果有一个更好的方法来获得一个漂亮和整洁的python图像处理滑动窗口?

谢谢

Ben*_*min 3

查看此问题的答案:使用跨步实现高效的移动平均滤波器。基本上,跨步并不是一个好的选择,尽管它们确实有效。