我正在做一些多视图几何重建与结构从运动。到目前为止,我有以下内容
两个图像作为初始输入相机参数和失真系数初始输入图像的工作校正管道创建视差图从视差图中创建一个点云,迭代视差图,并将值作为z (x和y是视差图中像素的像素坐标)(不工作的是reprojectImageTo3D,因为我的Q矩阵似乎是非常错误的,但其他一切都工作得很好)这给了我一个很好的场景点云。
现在我需要向管道中添加n多个图像。我在谷歌上搜索了很多,发现solvePnP方法对我很有帮助。
但现在我很困惑……
SolvePnP将获取3D点和对应的2D图像点的列表,并重建第三,第四个相机的R和T向量…等等......我读到这两个向量需要对齐,这意味着第一个向量中的第一个3D点对应于第二个向量中的第一个2D点。
到目前为止一切顺利。但是我从哪里得到这些信件呢?我可以使用这种方法reprojectPoints来获得这两个向量吗?还是我用视差图进行深度重建的整个想法都错了?(可选:使用前面找到的良好匹配的三角角点)。
有谁能帮我弄清楚吗?我如何使用solvePnP来添加n个更多的相机,因此3D点到我的点云,并改善重建的结果?Solve PnP是一个函数,它给出了一个物体的3D模型(假设,一个棋盘)和这个物体在现实世界中的视图,将给你一个相对于物体的相机的大致位置和方向。
对象的三维模型和视图是相应的三维和二维点的集合。当您知道对象模型(对象关键点的位置)和这些关键点在相机图像上的位置时,该功能将更好地工作。
我不是3D图像重建方面的专家,但似乎使用包含观察到的场景及其关键点的每个图像中的信息,并从视图中找到这些图像,您应该能够迭代地改进您的模型,并提高相机位置的近似值。
当你有一个视差图时,它显示了从两个不同的点观看的场景关键点的距离,如果你知道确切的视角,那么使用三角测量确实会更好。或者它们的良好近似值(然后您需要使用随后的新视图改进这些近似值)。