所以问题是我有一个矩形的 3D 投影,我想把它变成 2D。那就是我有一张放在桌子上的纸的照片,我想将其转换为该纸的 2D 视图。所以我需要的是通过还原所有 3D/投影变换并从顶部获得一张平面视图来获得一个不失真的 2D 图像。我碰巧找到了关于这个主题的一些方向,但他们没有建议立即说明如何实现这一点。获得有关需要做什么的分步说明会非常有帮助。或者,或者,链接到将其分解为小细节的资源。
3 回答
您需要更多信息才能做到这一点。例如纸张的大小。假设你有它。
您需要了解的内容称为“单应性”。这基本上是以下情况:
你有相同的平面(你的纸),你从两个不同的相机拍了一张照片(比如说一个是你拥有的实际图像,另一个是你想要获得的那个 - 一个带有相机的正好在纸的上方)。
存在从一个图像的 2D 空间到另一个图像的 2D 空间的转换(单应性),您的目标是找到它。找到它后,只需将其应用于图像即可获得顶视图。
为了找到您需要(至少)4 个点的单应矩阵,您在两张图像中都知道其坐标。
这些点的一个明显选择当然是纸张的顶点。在您拥有的图像中,您可以手动找到它们。在目标图像中,您可以选择那些使工作表居中的图像 (0,0),知道它的尺寸。
网上有很多关于单应矩阵的信息4点。 这只是我遇到的第一个,所以那里一定有更好的来源:)
请注意,这些计算通常是在 2D 投影空间中完成的,因为这是一个投影变换。
如果您对纸的形状一无所知,Petar 的答案将是正确的——如果纸可以是任意的四边形。但是由于纸张是矩形,这将问题限制在足以确定单应性的程度,而无需知道矩形的纵横比。
请参阅Microsoft Research 的“Whiteboard It!”的第 4 节。有关如何执行此操作的详细信息。
如果您对顶点进行正确的 3D --> 2D 变换,它应该可以正常工作。出发点是研究达芬奇的3D点模型-->2D点射影几何。