在对整个图像应用单应之后,如何将2D点转换回来?

2024-09-30 14:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我是opencv和图像相关几何的新手。但现在我正在做一些图像处理任务。 以下是我所做的: 给定pts_src、ptsdst,我使用cv2.findhomography()和cv2.warpprospective()扭曲了整个图像

findHomography为我提供了一个3x3单应矩阵。 cv2.warpPerspective()为我提供了一个扭曲的图像,我可以从这个扭曲的图像中检测到一些特征点

但是,我需要将特征点坐标映射回原始输入图像。 有人能告诉我如何做到这一点吗

谢谢


Tags: 图像src矩阵特征cv2opencv图像处理pts
1条回答
网友
1楼 · 发布于 2024-09-30 14:17:28

我认为单应矩阵的逆矩阵将是从pts_dst映射回pts_src的新矩阵

正如您在评论中所说,如图here所示,您的第三个分量似乎确实是结果向量的缩放系数w

(x, y) → (x′/w, y′/w)
where (x′, y′, w′) = mat ⋅ [x y 1]
(...) In case of a 2D vector transformation, the z component is omitted.

因此,您可以通过执行(V[0]/V[2], V[1]/V[2])来重新缩放它,就像您在评论中提到的那样

此外,我认为这个比例因子与矩阵的生成方式有关,因此请检查矩阵的详细信息,正如cv2.findHomography()的官方documentation所说:

Homography matrix is determined up to a scale. Thus, it is normalized so that h33=1.

希望这有帮助

相关问题 更多 >

    热门问题