如何使用 OpenCV 从已知的 3D 点云(没有 I 构建)估计新图像 I 的相机姿态矩阵

How to estimate camera pose matrix of a new image I, from a known 3D point cloud (built without I) using OpenCV

我有以下问题:给定一个 3D 点云,其具有已知姿势的视图集 V,以及一个视图 vV(即完全未知的姿态),如何估计v的相机姿态矩阵避免运行再次重建V∪{v}?

我正在尝试在 OpenCV 3.2 中解决这个问题,但是您可以提供给我的任何想法、直觉或伪代码都将非常有用。谢谢!

嗯,你显然需要使用点云在新视图和旧视图之间建立图像点对应关系,例如通过匹配与旧图像中的云点投影相关联的图像描述符(SURF、ORB 等),并将它们与新图像中提取的兴趣点相匹配。

然后您可以使用 5 点或 8 点算法完成移除异常值的常规过程。一旦你有了良好的对应关系,你就可以使用 solvePnP 从云点到它们在新图像中的匹配位置。

请注意,这基本上是 VSLAM 算法在不需要重新定位时对所有 "new" 图像执行的操作。