三维重建
我们知道,照相机的原理是讲一个三维场景投影到二维平面。所谓三维重建,顾名思义就是从已有的二维图像中复原原始三维场景。
三维重建的原理大致如下:首先,通过多角度拍摄或者从视频中提取得到一组图像序列,将这些图像序列作为三维重建系统的输入。然后分析多个视角的图像,根据纹理特征提取出稀疏特征点(稀疏点云),通过这些特征点估计相机位置和参数。在得到相机参数并完成特征点匹配后,就可以获得更稠密的点云(这些点可以附带颜色,从远处看就像还原了物体本身一样,但从近处能明显看出它们只是一些点)。最后根据这些点重建物体表面,并进行纹理映射,就还原出三维场景和物体了。
目前,有不少开源的三维重建系统,下面这篇文章写出了各个系统的比较:https://leohope.com/解问题/2018/03/06/compare-re3d-system/
之前尝试用过PMVS-CMVS,后来发现使用的重建方法比较老,源文件已经很久没有更新和维护。而且它支持的输入有很大的局限性。最终,我选用了能够配套使用的完整库OpenMVG和OpenMVS(文档最规范详细),这两个系统虽然不是一个团队开发的,但却恰好一起完成了三维重建的整个流程。
OpenMVG和OpenMVS
常见的多视图三维重建管线:重建稀疏点