知識儲備 PCL常用點雲分割算法整理

前言

由於需要對RGBD相機中,Depth採集到的圖像分割除物體,本文整理PCL官方集成的常用點雲分割算法。

官方點雲集中在擁有完整點雲時候的分割,而RGBD相機受限制於其視角,存在遮擋和無法觀測的區域,所以懷揣着該應用的母的來對官方几個常見分割算法做梳理。

 

所有算法來自於官方Tutorial,參考:

http://www.pointclouds.org/documentation/tutorials/

 

1、 Euclidean Cluster Extraction

http://www.pointclouds.org/documentation/tutorials/cluster_extraction.php#cluster-extraction

 

介紹

最爲簡單的一種,思路是將點雲中空間歐幾里得距離近的聚集到一起。

 

算法步驟

1、 對輸入的無序點雲創建Kd-tree表達 P。 實現快速搜索。

2、 設置空的聚類列表C,以及等待被檢查的點集Q

3、 對於P中的每個點 pi,進行下列步驟:

  • 將pi添加到當前點集Q
  • 對Q中的每個點pi,執行:
    • 搜索 pi爲中心,半徑爲d_th的球面內的所有點構造集合 P_k^i
    • 對P_k^i中每一個點 p_k^i ,若未處理過,加入到Q中
  • 當Q中所有點都被處理過,將Q加入聚類列表C,將Q重新置空。

4、當所有點pi都被處理時,算法終止。此時C中存放了所有聚類。

 

參數詳解

該方法設置 一個閾值:  d_th, 需要小於物體間距,大於同一物體點雲的最大間隔.

 

RGBD相機應用

經過改進實際可以只執行一次,即使用物體中心點做初始化。

 

 

2、Region growing segmentation

輸出的聚類點雲,彼此之間的特點在於都位於同樣平滑的表面。基於表面向量的比較。

 

算法過程

首先對點雲基於曲率排序。從最小曲率的點開始,因爲它一般在最平滑的地區,有利於減少分割的整體數量。

基於有序的點雲,可以開始區域增長:

  • 選中的點加入到點集seeds
  • 對每個seed點,尋找臨近點集
    • 每個臨近點與seed點比較法向量角度,小於閾值則添加到當前區域中
    • 之後,對每個臨近點測試曲率值,若曲率小於閾值,添加到seeds中
    • 當前seed從seeds中移除

若seeds空了說明算法一個區域增長完成,然後將從頭開始過程。

 

感受

與歐幾里得聚類類似。先做值排序。

 

參數

曲率閾值 - 影響多麼平滑的點會進入seeds

角度閾值 - 影響分割時,同一個聚類內的點法向量相似度

 

3、Color-based region growing segmentation

與2類似,只是使用顏色來增長。

應用過分割判斷,若一個聚類的數量小於閾值,則它將和最相近的其他聚類融合。

 

4、Min-Cut Based Segmentation

專門分割前後景。

 

算法過程

1、 對給定點雲構建圖,每個單獨點生成一個頂點,同時生成另外兩個頂點:source和sink。每個頂點用邊連接source和sink. 除此之外,每個頂點有邊連接最鄰近的點。

2、 算法對每條邊賦予權重。有三種不同權重:

  • Smooth cost: 點雲點之間的權重
    • 公式:   dist 代表點之間的距離。
  • Data cost: 包含前景和背景的懲罰。第一個是這些連接點雲點和source vertex的邊,是用戶指定的常值。第二個是連接sink節點的邊,由下式計算:
    • backgroundPenalty=(\frac{distanceToCenter}{radius}), distanceToCenter 是在horizontal plane下到期望物體中心的的距離。

    • 公式中的Radius 是輸入參數,可以粗略考慮爲從物體中心多遠距離沒有前景點(物體horizontal半徑)。 [ 物體大小? ]

3、 所有準備就緒後,執行最小cut的搜索。基於cut的分析,點雲被分割爲前景和後景點。

 

思考

用圖的模型綜合考慮兩個因素: 1) 平滑程度,點之間的距離 2)距離物體中心的懲罰。

該算法需要已知物體中心,可以用矩形框中心點結合 depth來獲得. radius的參數有點限制了,這豈不是物體先驗大小? 或者給一個室內物體整體大小的值。

是否會影響大小不一的物體?通用性如何? 看看論文。

 

更多參考:

http://gfx.cs.princeton.edu/pubs/Golovinskiy_2009_MBS/index.php

2009年 ICCV

論文中 automatic 版本效果還行。而PCL的實現需要手動指定 Radius. 捨棄.

5、 Conditional Euclidean Clustering

http://www.pointclouds.org/documentation/tutorials/conditional_euclidean_clustering.php#conditional-euclidean-clustering

 

介紹

實際上是前面提到的1-3的融合。

 

總結

各類算法都較爲成熟,但可能並不通用。而且基本針對的是完整點雲。

而RGBD相機由於其視角和遮擋的特殊性,需要額外對待。

目前看來針對物體分割,

  • 歐幾里得聚類反而是最簡單而最實用的。
  • 融合語義的Min-Cut算法也可以考慮。但目前尚不想加入物體大小先驗. 保持其通用性: 如玩具尺度不確定.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章