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

标签 image-processing numpy computer-vision scipy

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

numpy.lib.stride_tricks.as_strided

所以我试图实现一个通用规则,以避免在更改我需要的滑动窗口的大小时可能会失败的错误。最后我得到了这个表示:
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])

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

step表示两个连续窗口之间的位移。

如果我选择方形滑动窗口,这种表示效果很好。但是我仍然有一个问题要让它在 e.x. 的 windows 上工作。 (128,64),在这里我通常会得到与图像无关的数据。

我的代码有什么问题。有任何想法吗?如果有更好的方法可以在python中获得漂亮整洁的滑动窗口进行图像处理?

谢谢

最佳答案

您的代码中存在问题。实际上,此代码适用于 2D,没有理由使用多维版本 ( Using strides for an efficient moving average filter )。下面是固定版本:

A = np.arange(100).reshape((10, 10))
print A
all_windows = as_strided(A, ((A.shape[0] - xsize + 1) / xstep, (A.shape[1] - ysize + 1) / ystep, xsize, ysize),
      (A.strides[0] * xstep, A.strides[1] * ystep, A.strides[0], A.strides[1]))
print all_windows

关于image-processing - 在numpy中使用as_strided函数滑动窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7542135/

相关文章:

objective-c - 如何从头开始在 iOS 上创建 JPEG 图像

python - Tensorflow:如何像在 numpy 中一样使用 2D 索引对张量进行索引

image-processing - 我可以将任何矩阵转换为图像吗?

c - 二值图像的简单多 Blob 检测?

matlab - 检测图像中的数独方 block

java - 为什么我的文本到图像方法返回全黑图像?

matlab - 错误使用 bsxfun 不支持混合整数类输入

python - 在python中存储大量 bool 数据

通过带有字典的字符串输入,带有 numpy 数组的 Python eval 函数

python - Tensorflow Inception V3 无法加载计算图