Я хочу сравнить два фрагмента изображения таким образом, чтобы, если они были точно такими же, результат должен быть равен 1, а если они соответствуют 60 процентам, то ответ должен быть равен 0,6.процентное различие между двумя изображениями в python с использованием коэффициента корреляции
В Matlab я могу сделать это с помощью команды corr2
, но в python я не смог найти способ. Я пробовал numpy.corrcoef
, но он возвращает матрицу, и scipy.signal.correlate2d
возвращает то же самое.
Это то, что я пробовал:
import numpy as np
import matplotlib.pyplot as plt
from skimage.filter import threshold_otsu
import matplotlib.cm as cm
import Image
import scipy
from PIL import Image as im
fname = 'testi.jpg'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
global_thresh = threshold_otsu(arr)
global_otsu = arr >= global_thresh
global_otsu = np.invert(global_otsu).astype(int)
a1 = global_otsu[80:150,1350:1350+160]
fname1 = 'testi2.jpg'
image1 = Image.open(fname1).convert("L")
arr1 = np.asarray(image1)
global_thresh1 = threshold_otsu(arr1)
global_otsu1 = arr1 >= global_thresh1
global_otsu1 = np.invert(global_otsu1).astype(int)
a2 = global_otsu1[80:150,1350:1350+160]
co = scipy.signal.correlate2d(a1,a2)
plt.gray()
plt.subplot(121)
plt.imshow(a1)
plt.subplot(122)
plt.imshow(a2)
plt.show()
и результат:
[[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
...,
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]]
Это образы, которые я хочу, чтобы сравнить:
образа собирается быть таким же размером? – EvilTak
да, они будут такого же размера. –
Изображения @EvilTak будут одинакового размера –