2015-05-21 130 views
0

我想知道在Python中执行以下操作非常高效。围绕网格移动图像

假设我有一个对象“d”这是我的数据,并表示“M”一个模型的图像。我在下面创建了一个非常基本的示例,其中数据只是一个圆圈。想象一下,数据稍微偏移了3px在X和2px在Y,我的模型最初被设置在中心。 (在这个例子中,数据和模型都在中心),我希望能够获得模型,并将其移动一个5px x 5px的网格(间隔为1px),并且在每次迭代中用数据减去它看看哪一个班次给我最少的错误。

谢谢。

import numpy as np 
import matplotlib.pyplot as plt 

dim = 512 

# Create the Data. 
xx, yy = np.mgrid[:dim, :dim] 
D = (xx - dim/2) ** 2 + (yy - dim/2) ** 2 

# Create the Model. 
M = D.copy() 

plt.imshow(D) 
plt.show() 

回答

0

好吧我找到了使用Numpy的滚动功能的解决方案。

for shiftY in range(-5, 5): 
     for shiftX in range(-5, 5): 

      FShifted = np.roll(F, shiftY, axis=0) 
      FShifted = np.roll(FShifted, shiftX, axis=1)