使用Numpy计算亲和度矩阵

BBD*_*Sys 2 python numpy image-processing

我正在尝试为图像创建亲和度矩阵.我现在尝试使用简单的像素值差异,我的图像是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])
Run Code Online (Sandbox Code Playgroud)

但执行时间太长.Numpy中是否有任何内置方式,或者可用的库更快地运行它?

Joe*_*ton 6

这可能看起来有点神秘,但是

A = np.subtract.outer(Img2, Img2)
A = np.abs(A)
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.

下班后我会发布更多解释(如果我没有,请提醒我!).