这篇博文主要介绍多视角三维重建的实用工具COLMAP。为了让读者更快确定此文是否为自己想找的内容,我先用简单几句话来描述此文做的事情: 假设我们针对一个物体(人)采集了多个(假设60个)视角的照片,希望用COLMAP实现:(1)通过不同视角之间的特征匹配算出每个视角的相机位资(内外参);(2) 对物体进行初步的稀疏重建,完成多视角数据的可视化(详见图3)。
参考链接:(官方)
Github: https://github.com/colmap/colmap
Tutorial: https://colmap.github.io/

随着NeRF在新视角合成的爆火,多视角三维重建迎来了两年多的蓬勃发展。

                                                                           图1 NeRF渲染新视角
如图1所示,我们轻而易举可以采集到某一物体的多视角图像。由简单的多视几何原理可知, 单视角视图与三维物体之间可以通过相机内外参数的计算进行映射。
废话不多说,我们先得到多视角的图像:

                                                                            图2 多视角乐高积木
如果光看图片,哪张图片属于哪个视角其实是不直观的。而且没有相机参数将它们之间联系起来。这个时候就可以用到COLMAP了。COLMAP工具效果如图3:

                                                  图3 COLMAP多视角视图相机位姿计算与可视化
根据图3,我们可以看出多个视图的观测点分别处于哪个三维位置。这样比较容易看采样的疏密程度等等,便于debug。同时,我们可以算出每个视点的相机位姿,可以做进一步重建之用(如NeRF)。
现在我把如何从一组图片中得到图3结果的步骤描述一下:
(1)打开COLMAP界面,点击Reconstruction->Automatic reconstruction,得到下列输入框:

                                                                                图4 COLMAP操作图

(2) 在图4的对话框中,选定一个workspace路径(可自定义),再明确图像路径(存放多视角图像的路径)。然后把Dense model的对勾去掉,点击Run即可。完成这一步操作后,COLMAP会在workspace路径下生成一个 database.db文件。如果这步完成没得到图3结果,可继续做进行第(3)步;
(3)左上角点击 File->New Project,选定database为第(2)步生成出的 database.db,选定images为图像路径。点击save即可。

然后点击左上角运行。即可得到图3结果。