【发布时间】:2017-02-01 18:01:35
【问题描述】:
我正在使用 Python 中 OpenCV 中的标准方法计算两个图像 img1 和 img2 之间的单应性(图像主要包含一个平面对象,因此单应性在它们之间运行良好)。即,我使用 sift 计算图像之间的点匹配,然后调用cv2.findHomography。
为了使计算更快,我将两个图像缩小为small1 和small2,并对这些较小的副本执行计算,因此我计算了单应矩阵H,它将small1 映射到small2 .
但是,最后,我想使用计算单应矩阵将一个全尺寸图像img1 投影到另一个全尺寸图像img2 上。
我想我可以通过以下方式简单地转换单应矩阵HH_full_size = A * H * A_inverse,其中A 是表示从img1 到small1 的缩放矩阵,A_inverse 是它的逆矩阵。
但是,这不起作用。如果我用H 将cv2.warpPerspective 应用于缩小的图像small1,一切都会按预期进行,结果(大部分)与small2 重叠。如果我将cv2.warpPerspective 应用于带有H_full_size 的完整尺寸图像img1,则结果不会映射到img2。
但是,如果我使用A(使用projected_pts = cv2.perspectiveTransform(pts, A) 之类的东西)投影点匹配(在缩小的图像上检测到),然后我从中计算H_full_size,一切正常。
知道我在这里做错了什么吗?
【问题讨论】:
标签: python opencv coordinate-transformation homography