從迭代圖像模式搜索與減少步長我有一個'質量'數組。由於搜索模式的性質,數組未被完全填充。在第一次迭代中,我使用步長10來找到最佳點,然後搜索+ -10 XY範圍以找到真正的最佳點。因此,陣列中的大多數陣列都會填充第10個插槽,並且存在密集填充的小「最佳」區域。現在我想繪製這個數組,並希望通過每隔10個插槽使用數據,在需要的地方「繪製」插圖。現在執行我的搜索,我用一個巨大的值初始化數組。我所有的測量值都較小,後來我使用np.argmin(q)
功能。這對於搜索很好,但對於繪製它是不好的。情節的動態範圍丟失。繪製人口稀少的二維numpy陣列
這裏是從舊版本,做詳盡的,但不必要的長時間的搜索代碼的例子:
這裏是我所得到的與優化的搜索:
這是一塊能夠做圖的代碼。 (q是要繪製的質量數組)
fig= plt.figure(1)
im= plt.imshow(q[::-1], cmap='rainbow', interpolation='none', extent=[-search_size,search_size,-search_size,search_size])
fig.savefig(pfn(img_fn), bbox_inches='tight')
該問題可能指向數組的初始化。再次爲我做的最小搜索我這樣做:
q = np.empty(shape=(2*search_size,2*search_size))
q.fill(+1e20)
q_min = 1e20
for xs in range(-search_size,+search_size,search_step):
for ys in range(-search_size,+search_size,search_step):
img_shift = np.zeros_like(img)
img_shift[mom(ys):non(ys), mom(xs):non(xs)] = img[mom(-ys):non(-ys), mom(-xs):non(-xs)]
d = np.absolute(img_shift - prev_img)[search_size:-search_size,search_size:-search_size]
q[ys+search_size,xs+search_size] = np.sum(d)
if q[ys+search_size,xs+search_size] < q_min : q_min= q[ys+search_size,xs+search_size]
#print '1st iter try : %+3d %+3d %6.3f %6.3f' % (xs, ys, q[ys+search_size,xs+search_size], q_min)
idxmin = np.argmin(q)
dy,dx = np.unravel_index(idxmin, q.shape)
dx= dx-search_size
dy= dy-search_size
print '1st iter best : dx= %+3d dy= %+3d' % (dx , dy)
然後接着用search_step = 1
另一個循環。
是否可以初始化數組,即NaN
?這將允許最低限度的搜索?和/或它會允許繪圖儀跳過未定義的條目?
那麼初始化/繪圖的最佳方式是什麼,以便搜索起作用,並且情節看起來不錯?
謝謝, 格特
更新@Nix G-d
平均化失敗。我首先根據建議嘗試了代碼。
q_int = pd.DataFrame(q).interpolate(method='linear', axis=0).values
fig= plt.figure(1)
im= plt.imshow(q_int[::-1], cmap='rainbow', interpolation='none', extent=[-search_size,search_size,-search_size,search_size])
但是2D插值失敗。 (至少如由曲線圖表示)
我試圖添加代碼以執行X和Y內插。
q_int = pd.DataFrame(q).interpolate(method='linear', axis=0).values
q_int = pd.DataFrame(q_intx).interpolate(method='linear', axis=1).values
fig= plt.figure(1)
im= plt.imshow(q_int[::-1], cmap='rainbow', interpolation='none', extent=[-search_size,search_size,-search_size,search_size])
但結果仍然損壞。
最佳, 格特
更新@Nix G-d 的平均失敗。請參閱上面的附加問題。 –