colmap是增量式sfm开源软件。相比于之前的sfm工作,colmap在选择最优初始图,选择最优更新图,三角化,BA,和迭代方面都有策略上的更新。本博文介绍其安装/编译方法。博主是先安装跑了下功能,再编译以阅读源码。
安装的软件是封装好的,无法看到源代码,但是可以很快很方便地用起来。先安装下来跑功能,有一个直观感受,看看效果如何。登入colmap官方GitHub:colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo (github.com)。滚动到“download”,下载Pre-Release版本,下面的词袋树可以不用下载。
可以先手动在目录下建立Project文件夹,一会儿存放工程,图片,和数据。在Project下再建立images文件夹存放图片,并把要进行sfm的图片拷进去。
点击"file">"new project"新建工程,工程是以.db存储的,同时select image上一步的图像文件夹,然后点击save完成工程建立
接下来直接进行特征提取Processin>feature extracting>extract
然后特征匹配,Processin>feature matching>run
接下来进行稀疏重建和稠密重建,导出点云用meshlab观看。
尽管官方推荐用vspkg编译Installation — COLMAP 3.8 documentation,但是博主发现这样编译出来也不方便用IDE学习阅读源代码。但是用vspkg编译可以很方便的编译安装ceres,boost等依赖库。这样只用最后编译colmap的时候使用cmake生成vs解决方案,就能阅读源代码了。因此先下载安装vcpkgGitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS
下载完成后打开终端运行 ./bootstrap-vcpkg.bat 进行vcpkg编译。接下来可以用vcpkg安装相关依赖库ceres,boost,glew,gflag等等。在vcpkg根目录下终端运行 如下代码进行安装这些依赖库 。因为安装过程vcpkg需要下载相关的库,所以最好能有一个。如果没有,可以手动下载然后拷贝到vcpkg/download目录下在install
vcpkg install cgal:x64-windows
vcpkg install freeimage:x64-windows
vcpkg install glew:x64-windows
vcpkg install boost:x64-windows
vcpkg install ceres[suitesparse,cxsparse]:x64-window
colmap, 在终端运行./vcpkg install colmap[cuda,tests]:x64-windows
在vcpkg/package下看到vcpkg自动下载编译了这些库/软件
在colmap_x64-windows/tools/colmap目录下可以找到colmap.exe,打开终端输入./colmap gui可以打开软件,说明编译好了
但是这样还是不方便阅读源代码。因此还要进行第三步,用cmake编译。
前面第二步主要是为了下载依赖库,这一步生成vs的解决方案以阅读源代码在vcpkg/download目录下找到之前用vcpkg自动下载的colmap安装包,也可以自己下载github上的的源代码colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo (github.com)。解压,建立一个build文件夹,然后用cmake编译。这里经常遇到bug,大概就是路径找不到,库找不到之类的。手动加上就好了。所有的依赖库已经用vcpkg自动下载了,集成在vcpkg/install目录下,vcpkg/package下也有,只不过个文件夹下组织的方式不一样,前者是集成了一个大库;后者是按各个子库分别安置的。
package目录下库按库分开 installed目录下的库是集成的
最后生成vs解决方案打开,生成ALLbuild,如果还有找不到库的bug,在vs里手动配置就好了。
给项目colmap exe main函数传参 gui:调试>命令参数>gui。然后运行,跑起来出现软件就算成功了。下一步就要开始解读代码了。