2014-02-03 6 views
1

Мне нужно рассчитать корреляцию между двумя бинарными изображениями в Python. Сценарий должен возвращать 1, если матрицы идентичны, и 0, если они полностью некоррелированы. Это должно быть что-то похожее на corr2 в Matlab (http://www.mathworks.se/help/images/ref/corr2.html). Вот тест, который я использую:Корреляция между двумя двоичными изображениями

import numpy as np 
from scipy import signal 

A = np.matrix('1 0; 1 0') 
B = np.matrix('1 0; 1 0') 
cor = signal.correlate2d(A, B) 
print cor 

Как я могу получить единственное значение вместо матрицы?

ответ

1

Пробег: corrcoef. Он вернет матрицу 2 * 2 с коэффициентом корреляции недиагональных элементов между двумя матрицами:

import numpy as np 
A = np.matrix('1 1; 1 0') 
B = np.matrix('1 0; 1 0') 
cor = np.corrcoef(A.reshape(-1), B.reshape(-1))[0][1] 
print cor 
+0

Thanks @ lennon310. Есть ли способ перейти от матрицы 'corrcoef' к одному значению? –

+0

Спасибо, альбус. Вы можете просто выбрать элемент [0,1] в матрице. – lennon310

+0

Это будет работать для пары массивов, но у меня есть две матрицы 2x2 ... –

Смежные вопросы