使用影象進行三維重建,colmap應該是比較常使用的軟體,因為是開源的,所以也可以根據自己需求獲取很多中間資料,實現一些小功能。它整合了sfm和mvs兩個部分,所以輸入影象後,可直接進行影象匹配->稀疏重建->稠密重建->網格重建,一套流程。並且提供圖形化介面,因此之前很多的重建實驗都用它完成。個人感覺其重建效果還是比較理想的,且比opensfm,openmvg等工具使用起來更方便。
一般就colmap gui開啟圖形化介面就行。除非是需要某些特殊的中間結果,需要使用到命令列。
介面比較簡介,先建立新資料集,選擇影象資料夾,然後在processing中按順序選特徵提取,特徵匹配。
如果是相機拍的影象,可以選擇從exif提取相機引數,其他情況下讓它自己估計乙個就行,在之後的過程會自動更正。
matching這個階段很重要,匹配方式不同會對最終結果影響很大,要根據實際情況選擇合適的匹配方式。圖形介面特徵匹配有以下幾種方式——
exhaustive——官方文件中說明exhaustive耗時最長,因為所有影象都會兩兩匹配,但理論上效果最好。但在實際操作過程中發現很多時候這種方式耗時長而且效果也不好,尤其是當場景很相似時會集中在一團,例如建築的四個面都很像,這時匹配後會認為只拍到了乙個面,其他三面都重建不出來。
spatial——這種方式是利用了地理位置資訊,也就是每張影象必須自帶位置資訊,例如gps。這種方式需要設定在多大範圍內進行匹配,因此需要事先知道大概重建場景大小,以便選擇合適引數。
custom——這種就是自定義。一開始我覺得這種方式很傻,不智慧型,所以從沒用過。但是在試了前面幾種方法,效果還是不理想,懷疑人生的時候,我發現可以自己去定義哪幾張影象匹配哪幾張不匹配,最後簡直有奇效!!!所以這種方式適合很清楚自己的資料是怎麼來的,有一定先驗後去制定匹配方式。總之這幾種方式都各有優劣,按照實際情況選擇就行。
hierachical——這好像是只有命令列才有的匹配方式,圖形介面還沒有加上去。這是針對大場景,影象數量很多時,會自動分成幾個部分平行計算,最後拼在一起。然而試了下貌似效果並不是很理想,github上也說會在後續改進,目前只是乙個初步的功能。
reconstruction->start reconstruction就行了,引數設定我一般沒咋變,重建完後就可以看到介面顯示紅色的相機位姿和稀疏的點雲,這一步為止就是sfm的步驟。如果效果很不好,則重新考慮匹配方式。
reconstruction->dense reconstruction,這之後就是mvs的內容了,也是計算量大,耗時最長的步驟。選擇輸出資料夾後,按順序undistortion對每個影象去畸,stereo(這一步耗時很長)三角測量計算每個畫素的深度,fusion將所有點雲融合,這就可以得到稠密的點雲了,mvs的內容也就結束了。重建後的點雲在colmap視覺化還不錯,用meshlab顯示的話效果不佳。
在這之後還可用poisson進行mesh重建,得到有顏色的mesh模型。或者delaunay得到沒有紋理的mesh模型。個人感覺delaunay的質量會好一些。
最後值得一提的是,colmap重建出的模型,紋理很一般。在看它的原始碼時發現,它對紋理就沒有過多的計算,比較簡單粗暴,因此視覺化效果一般,後續可能用其他紋理對映方法改善效果。但幾何重建這一塊已經不錯了,對比許多商業軟體也不輸。
opencv三維重建 三維重建 SLAM相關
wayne cvpr2020 oral 立體視覺cost volume構建新方法,效能soa,視訊記憶體和執行時間大幅降低 雙目立體視差圖進行三維點雲重建 opencv3.4.1 pcl1.8 用vs opencv3.1從雙目立體視差圖中重建三維點雲 使用opencv以及pcl將2d影象轉換為3d點...
三維重建方法
三維重建技術就是要在計算機中真實地重建出該物體表面的三維虛擬模型,構建乙個物體完整的三維模型,大致可以分為三步 1.利用攝像機等影象採集裝置對物體的點雲資料從各個角度釆集,單個攝像機只能對物體的乙個角度進行拍攝,要獲得物體表面完整資訊,需要從多個角度對物體拍攝 2.將第一步獲得的各視角點雲資料變換到...
OpenCV實現SfM(二) 雙目三維重建
目錄 在三維重建前,我們先研究一下同一點在兩個相機中的像的關係。假設在世界座標系中有一點 p 座標為 x 它在1相機中的像為x1 在2相機中的像為x2 注意x1 和x2 為齊次座標,最後乙個元素是1 如下圖。到兩個相機像面的垂直距離分別為s1 和s2 且這兩個相機具有相同的內參矩陣 k 與世界座標系...