Матрица расчетов с использованием Numpy - PullRequest
2 голосов
/ 22 июля 2011

Я пытаюсь создать сходную матрицу для изображения. Сейчас я пытаюсь использовать простые различия значений пикселей, мое изображение размером 84х84, сглаженное это вектор размером 7056, что дает мне матрицу сродства А размером 7056х7056. Чтобы заполнить значения матрицы сродства, я начал с очевидного метода:

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 или доступные библиотеки для более быстрого запуска?

1 Ответ

6 голосов
/ 22 июля 2011

Это может показаться немного мистическим, но

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

должен делать то, что вы хотите.

Я выложу немного больше объяснений, когда уйду с работы (напомните, если янет!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...