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