我正在尝试获取描述从一个图像到另一个图像的转换的单应矩阵。我尝试通过使用特征分解并采用最小的特征向量来做到这一点。显然,我必须将其重塑为3x3矩阵,但是numpy 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))
`