SFM方向开源软件COLMAP代码分析
作為目前最優的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仍然為離線處理模式,可以向在線處理模式發展。
?
?
總結
以上是生活随笔為你收集整理的SFM方向开源软件COLMAP代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaSE】Lambda表达式、接口
- 下一篇: 【Java】线程池、Lambda表达式