我正在尝试对一组图像执行图像稳定。我已经确定了每个图像中匹配的角点对,并且我正在尝试为每组匹配对(源与目标)计算仿射变换矩阵。但是,当我这样做时,使用最小二乘法,得到的变换矩阵会产生不稳定的图像。我正在遵循这个过程:
source_points = [[219, 187], [221, 387], [347, 31], [135, 311], [296, 615], [86, 417]]
dst_points = [[221, 187], [222, 387], [348, 30], [137, 310], [299, 615], [88, 417]]
transform_mat, res, rank, s = np.linalg.lstsq(source_points, dst_points)
#looping through all dst_coordinates in a blank array of size = source image
transformed_coor = np.dot(transform_mat,dst_coordinate)
循环遍历空白数组中的坐标后,我从源图像中获取transformed_coor的插值,并将该值放在空白数组中的dst_coordinate中。当这个过程完成时,我会得到一个变换后的图像,但是当我将它与源图像进行比较时它并不稳定。
这个过程是否正确?我错过了一步吗?
答案 0 :(得分:0)
我认为你的点对应关系source_points和dst_points不匹配。对于这个输入,我计算了仿射变换矩阵
T = [0.9997 -0.0026 -0.9193
0.0002 0.9985 0.7816
0 0 1.0000]
导致
的个别转换误差(欧几里德距离)errors = [0.7592 1.0220 0.2189 0.6964 0.4003 0.1763]
为6点对应。那些相对较大,特别是在考虑
的source_points和dst_points之间的距离时move_dist = [2.0000 1.0000 1.4142 2.2361 3.0000 2.0000]