我有一组 3-d 点和一些带有这些点投影的图像。我还有相机的焦距和带有投影的图像的主要点(由先前完成的相机校准产生)。
给定这些参数,有什么方法可以找到 3-d 点和图像投影之间的自动对应关系?我浏览了一些 OpenCV 文档,但直到现在我还没有找到合适的东西。我正在寻找一种方法来自动标记投影以及它们与 3-d 点之间的对应关系。
我有一组 3-d 点和一些带有这些点投影的图像。我还有相机的焦距和带有投影的图像的主要点(由先前完成的相机校准产生)。
给定这些参数,有什么方法可以找到 3-d 点和图像投影之间的自动对应关系?我浏览了一些 OpenCV 文档,但直到现在我还没有找到合适的东西。我正在寻找一种方法来自动标记投影以及它们与 3-d 点之间的对应关系。
这个问题不是很清楚,但我认为你的意思是说你有相机的内在校准,而不是它相对于场景的位置和姿态(校准的“外在”部分)。
如果您只有一张图像,则此问题对于一般 3d 点云没有唯一的解决方案:请注意,如果您将 3d 点沿着将它们投射到相机中的光线移动到任何位置,图像不会改变。
如果有一张或多张图像,您就知道关于 3D 点云的所有信息(例如,这些点属于已知形状和大小的对象,并且位于其上的已知位置),并且您已经将它们与它们的图像进行了匹配,那么它是一个标准的“相机切除”问题:您只需解决使 3D 点投影到其图像上的相机外部参数。
如果您有多个图像并且您知道在相机移动时场景是静态的,并且您可以在每个相机位置将“足够”的 3d 点与它们的图像匹配,您可以按比例求解相机姿势。您可能想从 David Nister 和/或 Henrik Stewenius 的关于校准相机求解器的论文开始,然后研究“捆绑调整”。
如果你真的想了解这个(广泛的)主题,Zisserman 和 Hartley 的书和任何书一样好。有关代码,请查看libmv、vxl和ceres捆绑调节器。