Я пытаюсь получить матрицу гомографии, которая описывает преобразование из одного изображения в другое. Я попытался сделать это с помощью собственного разложения и взять наименьший собственный вектор. По-видимому, я должен преобразовать его в матрицу 3x3, но функция ninaly linalg возвращает собственное значение формы (9,9). (пытаясь вычислить его из 4 баллов)
A - матрица 8x9. pts1 и pts2 - это массивы из 4 точек на исходном и целевом изображениях соответственно.
Код начинается с матрицы симметрии для расчета гомографии (размер 8x9)
A_t = A.transpose()
sym_mat = np.dot(A_t,A)
eig_val,eig_vec = np.linalg.eig(sym_mat)
#sort according to value
idx = np.argsort(eig_val)
eig_val = eig_val[idx]
eig_vec = eig_vec[:,idx]
# Return the eigenvector corresponding to the smallest eigenvalue, reshaped
# as a 3x3 matrix.
H = np.reshape(smallest,(3,3))
`