PCL中点云的超体素(SuperVoxel)
各位小伙伴們,有沒有發現PCL庫中已經集成了太多我們想實現的算法或者功能呢?所以這里組織一下學習小組針對PCL庫中實現的算法進行剖析與論文解讀,所以希望更多的小伙伴們參與進來,我們一起吃透PCL,歡迎私信或者聯系郵箱:dianyunpcl@163.com,或者聯系博主微信:920177957,歡迎交流和合作。
摘要
? ?
在圖像算法中,無監督的過分割是一種廣泛的預處理步驟,將圖像分割成具有相似屬性的像素區域,稱之為超像素分割,該方法減少了之后后期算法計算的的成本,并且信息損失最小,本文提出的是一種新的過分割算法,該算利用點云體素關系生成具有空間一致性的過分割,而不是在三維點云映射或者投影到了二維空間中進行處理。論文是在已經校準的RGB_D相機的數據集上進行試驗,并且與2D的處理速度相仿的條件下,保證了分割的高效。
分割算法介紹
分割算法目的是將圖像中的像素分成符合對象邊界有意義的區域,雖然這些方法最初只考慮圖像的底層信息,但是最近的語義分割方法大多是利用了高層的對象信息來幫助消除對象邊界的歧義,比如基于圖的方法,馬爾科夫隨機場(MRF)以及條件隨機場(CRF)。這些算法將圖像中的底層信息與對象級信息相結合而變得更為流行。雖然這些技術已經十分成熟,但是他們的缺點是,對這些圖像像素的計算成本隨著節點的數目的增加而急劇的上升,這以為這每個像素對應一個節點求解圖的方法變得十分困難,這就限制了他們在需要實時分割中的應用。
比較新的算法是,出現了一類速度明顯更快的超混合方法——簡單線性迭代聚類[1](SLIC)。這是一種迭代梯度上升算法,它采用局部k均值聚類方法,有效地找到超像素點,將像素點聚類在五維空間的顏色和像素位置。深度自適應Superpixels[2]最近將這種思想擴展到使用深度圖像,通過增加深度和點云的法向角的維度來擴展聚類空間。雖然DASP是有效的,并且給出了有希望的結果,但它沒有充分利用RGB+D數據,仍然停留在2.5D方法的類中,因為它沒有明確考慮三維連通性或幾何性質。
點云PCL庫中的超體分割是一種基于點云體素的連通性分段算法(Voxel Cloud Connectivity Segmentation VCC)應用在RGBD相機獲取的點云數據中,通過使用基于三維空間的播種的方法和使用顏色和幾何特征的約束來實現點云的局部約束與聚類。文章還清楚的說明了點云的超體分割與“超體素”沒有關系,超體素是二維算法簡單的擴展到三維,這種方法是不能應用在三維的無序的空間中的,只能在有規則的體素中起作用。
基于幾何約束超體素
點云體素連接性分割(VCCS)是一種從三維點云數據生成超像素和超體素的新方法。VCCS產生的超體素比最新的方法更符合物體邊界,同時該方法實時性更好。vcc使用k-means聚類的變體來生成其點的標記,有兩個重要的約束:
1.超體素簇的種子是通過分割三維空間而不是投影到圖像層面來實現的。這可以確保超體素是根據場景的幾何屬性均勻分布。
2,迭代聚類算法在考慮聚類點時,對被占用的體素進行嚴格的空間連通性。這意味著超體素不能在三維空間中連接不相交的邊界,即使它們在投影平面上是相連的。
接下來我們將描述相鄰體素是如何的有效計算,如何生成種子并進行濾波,并對特征和距離測度進行聚類,最后如何迭代聚類算法加強了空間連通性。
鄰接圖
鄰接性是該方法的一個關鍵步驟,這一步能夠確保各個超體素不會在空間中不相連的邊界上有交集,在體素化三維空間中,有三種相鄰的定義 6,18,26相鄰,他們分別共享一個面,面或者邊和定點,在本論文中主要是26個相鄰體素,這是算法的初始步驟,構建體素點云的鄰接圖,一般是通過KD樹來有效的實現,所有的26個相鄰體素的中心都一定要在根號3 * Rvoxle中,其中Rvoxel是指用于分割的體素分辨率,并且在該分辨率下講離散的元素稱之為體素。如此構建出來的鄰接圖在算法中能夠廣泛的使用。
晶體種子的生成與濾波
算法首先若干個種子點云,這個種子點云將用于初始化超體素,所以算法首先將空間點云劃分為一個具有選定分辨率Rseed的體素化網格,該Rseed的大小是明顯高于Rvoxel,其中種子分辨率與體素分辨率的關系如下圖:
Rseed確定超級體素之間的距離,而Rvoxel確定點云量化的分辨率。Rsearch用于確定是否有足夠數量的種子占用體素。
根據這個圖我們也可以理解初始種子的后選擇是如何被選擇出來的,通過選擇點云中最靠近我們種子體素中心的點作為種子候選點,并且我們知道一旦有了種子的候選對象,就必要要去除候選的噪聲點種子,為此算法為每個種子建立一個較小的搜索半徑Rsearch,用來刪除那些沒有被搜索半徑的一半覆蓋的點云種子,如圖的綠色部分,過濾后,我們將剩余的種子歸類為搜索體積中梯度最小的連接體素,其中的梯度計算公式:
一旦種子體素被選中,我們通過在特征空間中找到種子體素的中心和兩個體素內的連接鄰域來初始化超體素特征向量。
超體的特征和距離測度進行聚類
? ? ?VCCS超體素聚類是在39個維度上進行的:
其中前三者是空間坐標,L,a,b為顏色,FPFH是局部幾何特征點特征直方圖,FPFH是具有空間不變性的描述局部表面模型的特征,為了計算空間中的距離算法首先是規范化空間中的點的距離這個分量,并且該分量取決于種子的分辨率Rseed,?FPFH空間中的距離Df是使用直方圖相交核計算的[3]。這就引出了標準化距離D的方程式:
基于約束的迭代聚類(Flow Constrained Clustering)
迭代地將體素點云指定給超體素,顯著的區別在于我們在將像素指定給聚類時考慮連通性和流。一般過程如下:
(1)從距離點云簇中心最近的體素開始,我們向外流動到相鄰的體素,并使用方程4計算每個體素到超體素中心的距離。如果距離是該體素所看到的最小距離,則設置其標簽,并使用鄰接圖將其距離中心更遠的鄰居添加到該標簽的搜索隊列中。
(2)然后迭代下一個超級體素,這樣從中心向外的每一層都會同時考慮所有的超級體素。我們反復向外搜索,直到找到每個超級體素的搜索體積的邊緣(或者沒有更多的鄰居可以檢查),這相當于鄰接圖的廣度優先搜索,在深入搜索圖之前,我們檢查所有超級體素的相同級別。重要的是,需要避免了相鄰體素的邊,當我們到達一個超級體素的鄰接圖的所有葉節點或者在當前級別中搜索的節點都沒有設置為其標簽時,搜索就結束了。這個搜索過程下圖所示,與現有的相比有兩個重要優點。
?流約束聚類算法的搜索順序
1,由于算法只考慮相鄰的體素,因此超體素標簽不能跨越在三維空間中實際不接觸的對象邊界
2,超級體素標簽在三維空間中往往是連續的,因為標簽從每個超級體素的中心向外流動,在空間中以相同的速率擴展。
一旦所有超體素鄰接圖的搜索結束,我們就通過取其所有成分的平均值來更新每個超體素簇的中心。這是以迭代的方式完成的;要么直到集群中心穩定下來,要么進行固定次數的迭代。實驗中發現超體素在5次迭代之后是穩定的。
三維體素分割
所提出的方法直接作用于點云,它比在投影圖像平面上操作的現有方法有優勢。其中最重要的是能夠分割來自多種傳感器捕獲的點云數據,算法是具有通用性的。
總結與參考文獻
Voxel Cloud Connectivity Segmentation - Supervoxels for Point Clouds 文章中提到的超體(supervoxel)是一種集合,集合的元素是“體”。與體素濾波器中的體類似,其本質是一個個的小方塊。與之前提到的所有分割手段不同,超體聚類的目的并不是分割出某種特定物體,其對點云實施過分割(over segmentation),將場景點云化成很多小塊,并研究每個小塊之間的關系。比如在圖像分割中,像素聚類形成超像素,以超像素關系來理解圖像已經廣為研究。本質上這種方法是對局部的一種總結,紋理,材質,顏色類似的部分會被自動的分割成一塊,有利于后續識別工作。比如對人的識別,如果能將頭發,面部,四肢,軀干分開,則能更好的對各種姿態的人進行識別。
代碼實現部分可參考PCL庫中的分割模塊中的supervoxel_clustering類具體實現。
參考文獻:
(1)Slic superpixels compared to state-of-the-art? superpixel methods.?
(2)Depth-adaptive superpixels
(3)Histogram interp kernel for image classification
資源
三維點云論文及相關應用分享
【點云論文速讀】基于激光雷達的里程計及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重建與處理
[線上分享錄播]機器人力反饋遙操作技術及機器人視覺分享
[線上分享錄播]地面點云配準與機載點云航帶平差
點云PCL更多活動請查看:點云PCL活動之應屆生校招群
掃描下方微信視頻號二維碼可查看最新研究成果及相關開源方案的演示:
如果你對本文感興趣,請點擊“原文閱讀”獲取知識星球二維碼,務必按照“姓名+學校/公司+研究方向”備注加入免費知識星球,免費下載pdf文檔,和更多熱愛分享的小伙伴一起交流吧!
以上內容如有錯誤請留言評論,歡迎指正交流。如有侵權,請聯系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關注我們
讓我們一起分享一起學習吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關的領域。
分享及合作方式:可聯系微信“920177957”(需要按要求備注)聯系郵箱:dianyunpcl@163.com,歡迎企業來聯系公眾號展開合作。
點一下“在看”你會更好看耶
總結
以上是生活随笔為你收集整理的PCL中点云的超体素(SuperVoxel)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于地平面的单目视觉里程计绝对尺度估计
- 下一篇: Windows下PCL1.9.1配置(编