作为目前最优的SFM开源软件COLMAP(离线处理模式),其详细介绍可参考:http://colmap.github.io/ ,编译源码后运行程序界面如下:
其稀疏重建数据处理流程为:
1)“File->Project",设置工程目录以及导入待处理数据集;
2)”Processing->Feature extraction/Feature matching",对导入的数据集进行特征提取与匹配;
3)“Reconstructin->Start reconstruction",进行增量式重建。
重建示例:
源码分析:
下载下来的源码位于colmap-3.5/src路径下,包括下图所示几个子文件夹:
base/util文件夹下除提供最基本的数据缓存存储格式定义外还有整个SFM流程中的最底层操作,其中最关键的是correspondence_graph的建立,对于后续的最优初始化图像对的选取以及Next best view selection;特征提取与匹配的基本操作在feature文件夹下,增量式重建的最基本操作在sfm文件夹下,光束法平差的最基本操作在optim文件夹下,controllers文件夹下涉及对最底层增量式重建和光束法平差操作的进一步封装,其下的”automatic_reconstruction"将前面分析的三步数据处理流程合并,一键式重建,ui文件夹与软件界面相关。
流程伪代码表示:
详细的函数实现总结如下(列出了源码中主要步骤涉及到的主要函数,函数实现的功能就是函数名表示的含义。具体参数变量定义见源码):
以上函数涉及到很多的参数选项设置,针对上面的三个数据处理流程,涉及到的选项设置如下(具体见源码,这里只是提取汇总):
发展趋势:
SFM相比于vSLAM,其重建速度略慢,但精度较高。COLMAP仍然为离线处理模式,可以向在线处理模式发展。