我正在尝试为图像创建关联矩阵。我现在尝试使用简单的像素值差异,我的图像是84x84,它是一个大小为7056的向量,这给了我大小为7056x7056的亲和矩阵a。为了填充关联矩阵的值,我从显而易见的方法开始:

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中有没有内置的方法,或者可用的库来运行得更快?

最佳答案

看起来有点神秘,但是

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

应该做你想做的。
下班后我会再发一点解释(如果我不上班,请提醒我!).

10-08 04:54