CloudCompare基础教程(1)-介绍
CloudCompare是一個三維點云(網(wǎng)格)編輯和處理軟件。最初,它被設(shè)計用來對稠密的三維點云進行直接比較。它依賴于一種特定的八叉樹結(jié)構(gòu),在進行點云對比這類任務(wù)時具有出色的性能【1】。此外,由于大多數(shù)點云都是由地面激光掃描儀采集的,CloudCompare的目的是在一臺標準筆記本電腦上處理大規(guī)模的點云——通常超過1000萬個點云。在2005年后,cloudcompare就實現(xiàn)了點云和三角形網(wǎng)格之間的比較。隨后,許多其他點云處理算法(配準、重采樣、顏色/法線向量/尺度、統(tǒng)計計算、傳感器管理、交互式或自動分割等)以及顯示增強工具(自定義顏色漸變、顏色和法向量處理,校準圖像處理、OpenGL著色器、插件等)
例如在一臺帶有雙核處理器的筆記本電腦上,計算出300萬個點到14000個三角形網(wǎng)格的距離需要10秒(筆者理解:這里是指點云到模型的配準,出現(xiàn)的誤差通過顏色的不同可視化出差別)
CloudCompare二次開發(fā)編譯篇
點云與網(wǎng)格
由于CloudCompare的特定歷史,該軟件幾乎將所有的三維實體都視為點云數(shù)據(jù)進行處理。通常,三角形網(wǎng)格只是一個具有關(guān)聯(lián)拓撲的點云(網(wǎng)格頂點 the mesh vertices)(與每個三角形對應(yīng)的“連接”點的三元組)。這解釋了網(wǎng)格始終有一個名為“頂點”的點云作為同級或父級(取決于加載或生成它們的方式)。雖然CloudCompare允許用戶直接在網(wǎng)格結(jié)構(gòu)(即三角化點云)上應(yīng)用一些工具,但有些工具只能應(yīng)用于網(wǎng)格頂點。一開始可能有點令人難以理解,但我們不希望用戶忽略這一點:CloudCompare主要是一個點云處理軟件。當然,由于CloudCompare的目的是進行變化檢測(例如形變監(jiān)測),而且三角形網(wǎng)格是表示參考形狀(例如建筑物)的一種非常常見的方法,因此它非常有用,不能忽視。盡管如此,處理網(wǎng)格點云仍然是一個“次要”實例,尤其是CloudCompare能夠直接比較兩個點云,而不需要生成中間網(wǎng)格。
主要原因是:
- 三角化網(wǎng)格通常很難在真實場景中正確生成,尤其是在使用激光掃描儀(噪聲、可變密度等)掃描時 
- 由于ALS/TLS點云通常非常密集(且準確),我們已經(jīng)擁有了所需的所有信息。 
(筆者理解:這里說明了cloudcompare的定位是一款處理點云的軟件,盡管能處理mesh數(shù)據(jù),但是也只能處理mesh數(shù)據(jù)中頂點的點,并且是一款用于檢測形變的點云處理軟件)
CloudCompare技術(shù)上的優(yōu)勢
便攜性
CloudCompare是在C++中開發(fā)的。它目前是在Windows、Linux和Mac操作系統(tǒng)上編譯(感謝CMake)32位和64位體系結(jié)構(gòu)。
在存儲和速度之間進行權(quán)衡
以下是關(guān)于CloudCompare中所做技術(shù)選擇的一些細節(jié)(主要是為了實現(xiàn)加載盡可能多的點而不降低太多性能的目標,即在存儲和速度之間進行良好的權(quán)衡)
- 所有存儲值和大部分計算都使用32位浮點值完成 
- 防止對數(shù)組大小的任何限制(因為在32 位Windows上很難獲得大的連續(xù)內(nèi)存塊),我們使用一個自定義容器,自動將數(shù)據(jù)集分塊成小塊(每個塊64KB)。 
- 法向量(如果有)壓縮到16位(實際上是15位,因為量化1的工作方式) 
- CloudCompare中使用的特定八叉樹結(jié)構(gòu)需要恒定的每點內(nèi)存(即在32位操作系統(tǒng)上,每點8個字節(jié)—最大深度為10—在64位操作系統(tǒng)上為12個字節(jié)—最大深度為21!)。它基于三維點坐標的特定量化-一種Morton【2】排序方案-其中每個點在八叉樹網(wǎng)格和任何級別上的位置都由單個整數(shù)代碼表示。然后我們處理這些代碼以實現(xiàn)非常高效的最近鄰查詢操作。然而,盡管這種八叉樹結(jié)構(gòu)對于計算距離非常有效,但它不適合快速顯示( Level Of Detail (LOD) 等) 
基于以上平衡選擇的結(jié)果是CloudCompare每GB內(nèi)存可以存儲大約9000萬個空白點(只含有XYZ的意思)。如果添加RGB顏色、法線向量、單個尺度字段,并且需要計算八叉樹,則每GB最多可以加載3200萬個點。在一個64位操作系統(tǒng)上,你可以加載任意多個點(事實上多達40億)。但是,根據(jù)您的顯卡功能,顯示和交互性可能會因為這許多點而嚴重降低)。有了高端顯卡,你可以保持一個合理的幀速率高達1.5億個點。
參考文獻
1 http://en.wikipedia.org/wiki/Quantization
2 http://en.wikipedia.org/wiki/Z-order_curve
最近的進展
雖然該項目已于2004年在EDF研發(fā)部啟動,但直到2009年左右才在公共領(lǐng)域發(fā)布(根據(jù)GPL許可)。由于CloudCompare是開源項目,所以每個人都可以免費(也歡迎)擴展其功能。請不吝于提問和分享您的經(jīng)驗在論壇里【3】,并查看Github源代碼【4】。
許可證
CCLib庫(包含核心算法)的許可證是LGPL【5】版本2.0。
因此,CCLib可以集成到任何商業(yè)或非商業(yè)項目中。你只要和別人分享,就可以和作者一起修改代碼。
其他組件的許可證為GPL【6】(2.0版):
?qCC_db(數(shù)據(jù)庫)
?qCC_io(文件I/O庫)
?qCC_gl(基于OpenGL的3D顯示庫)
?CloudCompare和ccViewer(獨立應(yīng)用程序)
因此,只有與GPL兼容(即開源但不一定意味著免費)的項目可以使用這些組件。
最新版本的用戶文檔可在以下網(wǎng)址找到:
http://www.cloudcompare.org/doc/wiki/官方漢化步驟
http://www.cloudcompare.org/forum/viewtopic.php?f=3&t=1444
參考文獻
3 http://www.cloudcompare.org/forum
4 https://github.com/cloudcompare/trunk
5 http://www.gnu.org/licenses/lgpl-2.0.html
6 http://www.gnu.org/licenses/gpl-2.0.html
資源
三維點云論文及相關(guān)應(yīng)用分享
【點云論文速讀】基于激光雷達的里程計及3D點云地圖中的定位方法
3D目標檢測:MV3D-Net
三維點云分割綜述(上)
3D-MiniNet: 從點云中學習2D表示以實現(xiàn)快速有效的3D LIDAR語義分割(2020)
win下使用QT添加VTK插件實現(xiàn)點云可視化GUI
JSNet:3D點云的聯(lián)合實例和語義分割
大場景三維點云的語義分割綜述
PCL中outofcore模塊---基于核外八叉樹的大規(guī)模點云的顯示
基于局部凹凸性進行目標分割
基于三維卷積神經(jīng)網(wǎng)絡(luò)的點云標記
點云的超體素(SuperVoxel)
基于超點圖的大規(guī)模點云分割
更多文章可查看:點云學習歷史文章大匯總
SLAM及AR相關(guān)分享
【開源方案共享】ORB-SLAM3開源啦!
【論文速讀】AVP-SLAM:自動泊車系統(tǒng)中的語義SLAM
【點云論文速讀】StructSLAM:結(jié)構(gòu)化線特征SLAM
SLAM和AR綜述
常用的3D深度相機
AR設(shè)備單目視覺慣導(dǎo)SLAM算法綜述與評價
SLAM綜述(4)激光與視覺融合SLAM
Kimera實時重建的語義SLAM系統(tǒng)
SLAM綜述(3)-視覺與慣導(dǎo),視覺與深度學習SLAM
易擴展的SLAM框架-OpenVSLAM
高翔:非結(jié)構(gòu)化道路激光SLAM中的挑戰(zhàn)
SLAM綜述之Lidar SLAM
基于魚眼相機的SLAM方法介紹
往期線上分享錄播匯總
第一期B站錄播之三維模型檢索技術(shù)
第二期B站錄播之深度學習在3D場景中的應(yīng)用
第三期B站錄播之CMake進階學習
第四期B站錄播之點云物體及六自由度姿態(tài)估計
第五期B站錄播之點云深度學習語義分割拓展
第六期B站錄播之Pointnetlk解讀
[線上分享錄播]點云配準概述及其在激光SLAM中的應(yīng)用
[線上分享錄播]cloudcompare插件開發(fā)
[線上分享錄播]基于點云數(shù)據(jù)的?Mesh重建與處理
[線上分享錄播]機器人力反饋遙操作技術(shù)及機器人視覺分享
[線上分享錄播]地面點云配準與機載點云航帶平差
掃描下方微信視頻號二維碼可查看最新研究成果及相關(guān)開源方案的演示:
如果你對本文感興趣,請點擊“原文閱讀”獲取知識星球二維碼,務(wù)必按照“姓名+學校/公司+研究方向”備注加入免費知識星球,免費下載pdf文檔,和更多熱愛分享的小伙伴一起交流吧!
以上內(nèi)容如有錯誤請留言評論,歡迎指正交流。如有侵權(quán),請聯(lián)系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關(guān)注我們
讓我們一起分享一起學習吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關(guān)的領(lǐng)域。
分享及合作方式:群主微信“920177957”(需要按要求備注) 聯(lián)系郵箱:dianyunpcl@163.com,歡迎企業(yè)來聯(lián)系公眾號展開合作。
點一下“在看”你會更好看耶
總結(jié)
以上是生活随笔為你收集整理的CloudCompare基础教程(1)-介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Open3DGen:从RGB-D图像重建
- 下一篇: 在多变环境中长期定位和建图的通用框架
