2011-07-22 149 views
2

我正在嘗試爲圖像創建親和矩陣。我現在試圖使用簡單的像素值差異,我的圖像是84x84,展平它是一個大小爲7056的矢量,它給出了大小爲7056x7056的相關矩陣A.爲了填補在親和度矩陣的值,我開始帶有明顯的方法:使用Numpy的親和矩陣計算

import matplotlib.pyplot as plt 
import numpy as np 

Img = plt.imread("twoObj.bmp") 
Img2 = Img.flatten() 
(n,) = Img2.shape 
print n 
A = np.zeros((n,n)) 
for i in range(n): 
    for j in range(n): 
     A[i,j] = np.abs(Img2[i] - Img2[j]) 

但時間太長執行。 Numpy中是否有內置的方法,或者可用庫來更快地運行?

回答

5

它可能看起來有點神祕,但

A = np.subtract.outer(Img2, Img2) 
A = np.abs(A) 

應該做你想要什麼。

我下班後會多發一點解釋(提醒我,如果我不這樣做!)。

+0

我不得不使用np.subtract.outer(Img2,Img2),但它工作!謝謝。 – user423805

+0

@ user423805 - 是的!這是我的一個錯字。很高興你看到它! –