建设中,记录日常学习到的碎片,最后整理
什么是三维重建?
这里指的三维重建是基于对环境或者物体的一系列不同角度的照片,通过一系列的处理,获得环境或物体的三维模型。
三维模型的表示方式
点云(Point Clouds)、网格(Meshes)、体素(Voxels)、Patch Clouds、Layered Models、Depth maps等。
主要方法
比较常见的流程是:
提取图像特征(如SIFT、SURF等)->利用特征将图像计算图像之间的特征匹配->基于匹配的特征进行稀疏重建,得到各个图像的相机位姿和稀疏的特征点云(SfM)->基于相机位姿进行稠密重建,得到稠密点云(PMVS/CMVS)->基于点云重建网格、体素或者纹理
常用工具
image.png
VisualSFM是一个整合了特征提取、图像匹配、稀疏点云重建、稠密重建(需要单独下载CMVS/PMVS)的软件,由?开发,免费但不开源(不能用于商业用途)。基于一系列RGB图像,我们可以得到一个稠密的点云。
PMVS/CMVS用SFM的输出作为输入,利用稀疏的特征点云、图像和对应的相机位姿来重建稠密点云。这个算法由?开发,如果你的OpenCV是build without non commercial module,采用permissive BSD license,可以用于商业目的。PMVS指的是将大的点云合理地分割、重建、拼接的过程。
MeshLab是常用的点云、网格显示和处理软件,内置了很多3D重建算法,能够进行基于点云的网格重建、简化等。
COLMAP是一个开源的软件,采用New BSD license,因而可以用于商业目的。类似于VisualSFM的前半部分,COLMAP能够用于从图像中得到稀疏特征点云和相机位姿。如果有CUDA的话,COLMAP也能用于稠密点云重建和表面重建。
https://colmap.github.io
Bundler是稀疏重建工具,然而效果可能不如VisualSFM。
SfM(Structure from Motion)
SfM指的是给出
个固定的三维空间点的
张图像:
从
个对应关系
中估计出
个投影矩阵