PCL—低層次視覺—點雲分割(RanSaC)


點雲分割

  點雲分割可謂點雲處理的精髓,也是三維圖像相對二維圖像最大優勢的體現。不過多插一句,自Niloy J Mitra教授的Global contrast based salient region detection出現,最優分割到底鹿死誰手還不好說。暫且不論他開掛的圖像處理算法,先安心做一個PCL吹~

  點雲分割的目的提取點雲中的不同物體,從而實現分而治之,突出重點,單獨處理的目的。而在現實點雲數據中,往往對場景中的物體有一定先驗知識。比如:桌面牆面多半是大平面,桌上的罐子應該是圓柱體,長方體的盒子可能是牛奶盒......對於復雜場景中的物體,其幾何外形可以歸結於簡單的幾何形狀。這為分割帶來了巨大的便利,因為簡單幾何形狀是可以用方程來描述的,或者說,可以用有限的參數來描述復雜的物體。而方程則代表的物體的拓撲抽象。於是,RanSaC算法可以很好的將此類物體分割出來。

RanSaC算法

  RanSaC算法(隨機采樣一致)原本是用於數據處理的一種經典算法,其作用是在大量噪聲情況下,提取物體中特定的成分。下圖是對RanSaC算法效果的說明。圖中有一些點顯然是滿足某條直線的,另外有一團點是純噪聲。目的是在大量噪聲的情況下找到直線方程,此時噪聲數據量是直線的3倍。

  如果用最小二乘法是無法得到這樣的效果的,直線大約會在圖中直線偏上一點。關於隨機采樣一致性算法的原理,在wiki百科上講的很清楚,甚至給出了偽代碼和matlab,C代碼。見網址https://en.wikipedia.org/wiki/RANSAC. 我想換一個不那么嚴肅或者說不那么學術的方式來解釋這個算法。

  實際上這個算法就是從一堆數據里挑出自己最心儀的數據。所謂心儀當然是有個標准(目標的形式:滿足直線方程?滿足圓方程?以及能容忍的誤差e)。平面中確定一條直線需要2點,確定一個圓則需要3點。隨機采樣算法,其實就和小女生找男朋友差不多。

  1. 從人群中隨便找個男生,看看他條件怎么樣,然后和他談戀愛,(平面中隨機找兩個點,擬合一條直線,並計算在容忍誤差e中有多少點滿足這條直線)
  2. 第二天,再重新找個男生,看看他條件怎么樣,和男朋友比比,如果更好就換新的(重新隨機選兩點,擬合直線,看看這條直線是不是能容忍更多的點,如果是則記此直線為結果)
  3. 第三天,重復第二天的行為(循環迭代)
  4. 終於到了某個年齡,和現在的男朋友結婚(迭代結束,記錄當前結果)

  顯然,如果一個女生按照上面的方法找男朋友,最后一定會嫁一個好的(我們會得到心儀的分割結果)。只要這個模型在直觀上存在,該算法就一定有機會把它找到。優點是噪聲可以分布的任意廣,噪聲可以遠大於模型信息。

  這個算法有兩個缺點,第一,必須先指定一個合適的容忍誤差e。第二,必須指定迭代次數作為收斂條件。

  綜合以上特性,本算法非常適合從雜亂點雲中檢測某些具有特殊外形的物體。

PCL中基於RanSaC的點雲分割方法

  PCL支持了大量幾何模型的RanSaC檢測,可以非常方便的對點雲進行分割。其調用方法如下:

  

  //創建一個模型參數對象,用於記錄結果
  pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
  //inliers表示誤差能容忍的點 記錄的是點雲的序號
  pcl::PointIndices::Ptr inliers (new pcl::PointIndices);
  // 創建一個分割器
  pcl::SACSegmentation<pcl::PointXYZ> seg;
  // Optional
  seg.setOptimizeCoefficients (true);
  // Mandatory-設置目標幾何形狀
  seg.setModelType (pcl::SACMODEL_PLANE);
  //分割方法:隨機采樣法
  seg.setMethodType (pcl::SAC_RANSAC);
  //設置誤差容忍范圍
  seg.setDistanceThreshold (0.01);
  //輸入點雲
  seg.setInputCloud (cloud);
  //分割點雲
  seg.segment (*inliers, *coefficients);

  除了平面以外,PCL幾乎支持所有的幾何形狀。作為點雲分割的基礎算法,RanSaC很強大且必收斂,可以作為機器人抓取,識別等后續任務的前處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM