2011-07-22 8 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 - うん!それは私の誤植でした。あなたはそれを見てうれしい! –

関連する問題