https://github.com/834810071/myOpenMVS/ (部分中文注釋,還在完善中。。。)
稠密重建
1. 加載圖像 從Scene類中將image加載到DenseDepthMatData類中。
2. 選擇用於稠密重建的圖像,該圖像是否存在有效的鄰居視圖,用來計算深度信息。
("Multi-View Stereo for Community Photo Collections", Goesele, 2007) 對應於論文5.1 部分 代碼Scene.cpp 470行
3. 稠密重建估計。分為 a 處理圖像, b 估計深度圖,c 優化深度圖,d 存檔四步。
a 處理圖像:確定鄰居圖像 2 + MRF優化
b 估計深度圖:
("Accurate Multiple View 3D Reconstruction UsingPatch-Based Stereo for Large-Scale Scenes") 第3部分B Depth-Map Computation SceneDensify.cpp 659行
CGAL三角剖分 直接從空間轉換
c 優化深度圖:包括去除斑點和間隙插值。 Accurate, Dense, and Robust Multi-View Stereopsis 拓展
d 存檔:存儲到對應的dmap文件當中。
4. 稠密重建過濾。分為 a 過濾深度圖,b 調整深度圖。
a 過濾深度圖:使用置信度融合過濾
("Real-Time Visibility-Based Fusion of Depth Maps", Merrell, 2007) 4.2 SceneDensify.cpp 1044
b 調整深度圖:刪除舊的,保存新的。
5. 融合深度圖。a 遍歷Scene.image加載對應的圖像深度信息,b 融合深度圖
網格重建
1. 構建Delaunay tetrahedralization 四面體
2. 將alpha_vis(point)添加到圖中單元格的有向邊 “Multi-View Reconstruction Preserving Weakly-Supported Surfaces” 第2節 第4節
sigma σ 論文 "Exploiting Visibility Information in Surface Reconstruction to Preserve Weakly Supported Surfaces" 第3節 代碼 900行
三角化"Computational Geometry"第三章
a 計算四面體每條邊的權重 “Multi-View Reconstruction Preserving Weakly-Supported Surfaces” 4.2 代碼 905 - 1000行
b enforce t-edges for each point-camera pair with free-space support weights
對應論文 "Exploiting Visibility Information in Surface Reconstruction to Preserve Weakly Supported Surfaces" 公式6 代碼 1007 公式2
3. 圖割算法 運行Graph-cut並提取網格 " Robust and efficient surface reconstruction from range data " 第2節
網格紋理
1. 視圖選擇 "Let There Be Color! - Large-Scale Texturing of 3D Reconstructions " 4.2
bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThreshold) 梯度幅值 Data Term 論文第5, 6頁
最小化E(l) "Fast approximate energy minimization via graph cuts"
2.
