Код: Выделить всё
Idm = np.identity(Kxx.shape[1])
A = Kxx.T @ Kxx
B = Kxx.T @ y
alpha = np.linalg.solve(A + 2e-4*Idm, B)
Код: Выделить всё
Kxx
Код: Выделить всё
g1 = cv2.getGaussianKernel(Kxx.shape[0], 1.5)
g2 = cv2.getGaussianKernel(Kxx.shape[1], 1.5)
y = g1 @ g2.T
Код: Выделить всё
response = Kxz@alpha
Вот как отображается карта ответа ведет себя, когда я перемещаю тренировочную область вертикально:
перемещение тренировочной области вертикально
Однако, когда я перемещаю тренировочную область горизонтально, это перемещение целевого объекта не является представлено на карте ответов:
перемещение региона обучения горизонтально
На самом деле я могу получить что-то вроде карты ответа, которая представляет только горизонтальное движение с ответом = альфа@Kxz.T. Но это не работает с упомянутым в этой статье корреляционным методом из-за разницы в форме матриц. Я думаю, что это не проблема вычисления корреляционных матриц, потому что я уже пробовал несколько методов корреляции, таких как cv2.filter2D и тот, который описан в статье.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -an-object