我目前正面临一个问题,要描述我的程序应该做什么和应该做什么,这里是我上一篇文章开头的复制/粘贴。
这个程序取决于经典的“运动结构”方法。
基本思想是拍摄一对图像,检测其关键点并计算这些关键点的描述符。然后,完成关键点匹配,进行一定数量的测试以确保结果良好。那部分完美无缺。
一旦完成,将执行以下计算:基本矩阵,基本矩阵,基本矩阵的SVD分解,相机投影矩阵计算以及最后的三角测量。
一对图像的结果是一组3D坐标,为我们提供了在3D查看器中绘制的点。这对于一对来说非常有效。
但是,我必须手动执行一个步骤,如果我希望我的程序能够有效地处理两个以上的图像,这是不可接受的。
实际上,我根据经典方法计算我的投影矩阵,如下所示,在“从E确定R和t”段落中:https://en.wikipedia.org/wiki/Essential_matrix
我的投影矩阵有4种可能的解决方案。
我想我已经理解了这个问题的几何观点,在哈特利和齐瑟曼的论文摘要(第9.6.3和9.7.1章)中描述:http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook2/HZepipolar.pdf
尽管如此,我的问题是:给定计算的四个可能的投影矩阵和OpenCV函数triangulatePoints()计算的3D点(对于每个投影矩阵),如何自动选择“真实”投影矩阵?(无需在我的3D查看器中绘制4倍于我的点,以查看它们是否一致)
感谢阅读。