如前所述,这个问题非常困难,通常也称为多视图对象重建。它通常通过解决每对连续图像的立体视图重建问题来解决。
执行立体重建需要拍摄具有大量可见物理点重叠的图像对。您需要找到相应的点,以便您可以使用三角测量来找到这些点的 3D 坐标。
对极几何
立体重建通常是通过首先校准您的相机设置来完成的,这样您就可以使用对极几何理论来校正您的图像。这简化了查找对应点以及最终的三角测量计算。
如果你有:
您可以仅使用矩阵理论计算基本矩阵和基本矩阵,并使用它们来校正您的图像。这需要一些关于具有齐次坐标的坐标投影的理论,以及针孔相机模型和相机矩阵的知识。
如果您想要一种不需要相机参数并且适用于未知相机设置的方法,您可能应该研究未校准立体重建的方法。
对应问题
寻找对应点是棘手的部分,需要您寻找具有相同亮度或颜色的点,或者使用纹理图案或其他一些特征来识别成对图像中的相同点。这方面的技术要么通过在每个点周围的小区域中寻找最佳匹配来局部工作,要么通过将图像视为一个整体来全局工作。
如果您已经拥有基本矩阵,它将允许您校正图像,以便将两个图像中的对应点限制为一条线(理论上)。这有助于您使用更快的本地技术。
目前仍然没有解决对应问题的理想技术,但可能的方法可能属于以下类别:
- 手动选择:让一个人手动选择匹配点。
- 自定义标记:放置标记或使用您可以轻松识别的特定图案/颜色。
- 平方差之和:取一个点周围的一个区域,并在另一幅图像中找到最接近的整个匹配区域。
- 图割:一种基于图论优化的全局优化技术。
对于具体实现,您可以使用Google Scholar搜索当前文献。这是一篇比较各种技术的高引用论文:
A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms。
多视图重建
一旦你有了对应的点,你就可以使用对极几何理论进行三角测量,以找到点的 3D 坐标。
然后将针对每对连续图像重复整个立体重建(这意味着您需要对图像进行排序,或者至少知道哪些图像具有许多重叠点)。对于每一对,您将计算一个不同的基本矩阵。
当然,由于每个步骤中的噪音或不准确,您可能需要考虑如何以更全局的方式解决问题。例如,如果您有一系列围绕对象拍摄并形成循环的图像,则这提供了额外的约束,可用于使用诸如捆绑调整之类的方法来提高早期步骤的准确性。
如您所见,立体和多视图重建都远未解决问题,仍在积极研究中。您想以自动化方式做的事情越少,问题的定义就越明确,但即使在这些情况下,也需要相当多的理论才能开始。
备择方案
如果它在您想要做的限制范围内,我建议考虑使用专用硬件传感器(例如XBox 的 Kinect),而不是仅使用普通相机。这些传感器使用结构光、飞行时间或其他一些距离成像技术来生成深度图像,它们还可以将其与来自自己相机的颜色数据相结合。它们实际上为您解决了单视图重建问题,并且通常包括用于拼接/组合多个视图的库和工具。
对极几何参考
我对大多数理论的了解实际上很薄,所以我能做的最好的就是进一步为您提供一些希望有用的参考资料(按相关性排序):
我不确定所有这些有多大帮助,但希望它包含足够有用的术语和参考资料,以找到更多资源。