PCL(點雲庫)

PCL(點雲庫)

本詞條是多義詞,共5個義項
更多義項 ▼ 收起列表 ▲

PCL(Point Cloud Library)是在吸收了前人點雲相關研究基礎上建立起來的大型跨平台開源C++編程庫,它實現了大量點雲相關的通用算法和高效數據結構,涉及到點雲獲取、濾波、分割、配準、檢索、特徵提取、識別、追蹤、曲面重建、可視化等。支持多種作業系統平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式實時系統上運行。如果說OpenCV是2D信息獲取與處理的結晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權方式,可以免費進行商業和學術套用。

PCL起初是ROS(Robot Operating System)下由來自於慕尼黑工業大學(TUM - Technische Universität München)和史丹福大學(Stanford University)Radu博士等人維護和開發的開源項目,主要套用於機器人研究套用領域,隨著各個算法模組的積累,於2011年獨立出來,正式與全球3D信息獲取、處理的同行一起,組建了強大的開發維護團隊,以多所知名大學、研究所和相關硬體、軟體公司為主。截止目前,發展非常迅速,不斷有新的研究機構等加入,在Willow Garage, NVidia, Google (GSOC 2011), Toyota, Trimble, Urban Robotics, Honda Research Institute等多個全球知名公司的資金支持下,不斷提出新的開發計畫,代碼更新非常活躍,至今在不到一年的時間內從1.0版本已經發布到1.7.0版本。

基本介紹

  • 中文名:PCL
  • 外文名:Point Cloud Library
PCL的結構和內容
如圖PCL架構圖所示,對於3D點雲處理來說,PCL完全是一個的模組化的現代C++模板庫。其基於以下第三方庫:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,實現點雲相關的獲取、濾波、分割、配準、檢索、特徵提取、識別、追蹤、曲面重建、可視化等。
PCL利用OpenMP、GPU、CUDA等先進高性能計算技術,通過並行化提高程式實時性。K近鄰搜尋操作的構架是基於FLANN (Fast Library for Approximate Nearest Neighbors)所實現的,速度也是目前技術中最快的。PCL中的所有模組和算法都是通過Boost共享指針來傳送數據的,因而避免了多次複製系統中已存在的數據的需要,從0.6版本開始,PCL就已經被移入到Windows,MacOS和Linux系統,並且在Android系統也已經開始投入使用,這使得PCL的套用容易移植與多方發布。
PCL架構圖PCL架構圖
圖 PCL架構圖
從算法的角度,PCL是指納入了多種操作點雲數據的三維處理算法,其中包括:過濾,特徵估計,表面重建,模型擬合和分割,定位搜尋等。每一套算法都是通過基類進行劃分的,試圖把貫穿整個流水線處理技術的所有常見功能整合在一起,從而保持了整個算法實現過程中的緊湊和結構清晰,提高代碼的重用性、簡潔可讀。在PCL中一個處理管道的基本接口程式是:
創建處理對象:(例如過濾、特徵估計、分割等);
使用setInputCloud通過輸入點雲數據,處理模組;
設定算法相關參數;
調用計算(或過濾、分割等)得到輸出。
為了進一步簡化和開發,PCL被分成一系列較小的代碼庫,使其模組化,以便能夠單獨編譯使用提高可配置性,特別適用於嵌入式處理中:
libpcl filters:如採樣、去除離群點、特徵提取、擬合估計等數據實現過濾器;
libpcl features:實現多種三維特徵,如曲面法線、曲率、邊界點估計、矩不變數、主曲率,PFH和FPFH特徵,旋轉圖像、積分圖像,NARF描述子,RIFT,相對標準偏差,數據強度的篩選等等;
libpcl I/O:實現數據的輸入和輸出操作,例如點雲數據檔案(PCD)的讀寫;
libpcl segmentation:實現聚類提取,如通過採樣一致性方法對一系列參數模型(如平面、柱面、球面、直線等)進行模型擬合點雲分割提取,提取多邊形稜鏡內部點雲等等;
  • libpcl surface:實現表面重建技術,如格線重建、凸包重建、移動最小二乘法平滑等;
libpcl register:實現點雲配準方法,如ICP等;
libpclkeypoints:實現不同的關鍵點的提取方法,這可以用來作為預處理步驟,決定在哪兒提取特徵描述符;
libpcl range :實現支持不同點雲數據集生成的範圍圖像。
為了保證PCL中操作的正確性,上述提到的庫中的方法和類包含了單位和回歸測試。這套單元測試通常都是由專門的構建部門按需求編譯和驗證的。當某一部分測試失敗時,這些特定部分的各自作者就會立即被告知。這徹底地保證了代碼測試過程出現的任何變故,以及新功能或修改都不會破壞PCL中已經存在的代碼。

相關詞條

熱門詞條

聯絡我們