目标:在2D图像(灰度)中滑动2D“窗口”。对于图像的每个像素,复制窗口(图案)内的所有像素,然后移至下一个像素。
问题:非常慢。我想加快速度。
使用Cython(ewwww)除外。
我在具有48个内核的服务器中使用此代码,因此可以选择并行处理。因此,我对如何使用numpy解决多线程解决方案感到困惑。
说明:我有一种称为提取的方法。此方法接收灰度图像,位置i和j指的是窗口居中的图像的x轴和y轴。对于i和j的每个位置,我将窗口看到的内容复制到另一个数组。
img 是2d NumPy数组。
pat可以删除,我可以返回模式。没关系
i和j是整数。
def extract(self, img, i, j, pat):
pattern = pat
win = self.window
hh = win.shape[0]
ww = win.shape[1]
hh2 = hh / 2
ww2 = ww / 2
k = 0
for l in range(-hh2, hh2 + 1):
for m in range(-ww2, ww2 + 1):
try:
pattern[k] = img[i + l, j + m]
except:
pattern[k] = 0
k += 1
相关分类