Я экспериментирую с некоторыми методами компьютерного зрения, в частности с обнаружением функций. Я пытаюсь определить особенности путем проведения автокорреляции между изображением и ядром объекта.
Однако полученная матрица корреляции не имеет смысла для меня ... Может кто-нибудь помочь мне понять, как интерпретировать или визуализировать эту матрицу, чтобы было ясно, где находится функция?
Ядро функции:
Исходное изображение:
Код:
import cv2
import pprint
import numpy
import scipy.ndimage
from matplotlib import pyplot as plt
import skimage.feature
# load the image
img = cv2.imread('./lenna.jpg')[:,:,0]
f_kernel = cv2.imread('./lenna_feature.jpg')[:,:,0]
def matched_filter(img, f_kernel, detect_thres):
result = scipy.ndimage.correlate(img, f_kernel)
print("Feature Match Template")
plt.imshow(skimage.feature.match_template(img, f_kernel))
plt.show()
return result
plt.imshow(matched_filter(img,f_kernel,1))
print("Correlation Matrix")
plt.show()
Результат:
Итак, на первом изображении результата есть очевидная максимальная точка в (150 200). Я интерпретирую это как наиболее вероятное местоположение объекта.
Однако во втором результирующем изображении, корреляционном матричном результате, нет очевидного паттерна. Я ожидал, что будет какая-то очевидная точка высокой корреляции.
Справка?