基於傳統方法點雲分割以及PCL中分割模塊

 
以前在微信公衆號中更新瞭如下幾個章節
1,如何學習PCL以及一些基礎的知識
2,PCL中IO口以及common模塊的介紹
3,PCL中經常使用的兩種數據結構KDtree以及Octree樹的介紹 
 
      三維點雲分割是將同屬性的點雲物體分割出來,以便於單獨對該點雲物體處理,可是因爲點雲數據是一種高冗餘度,且不均勻的數據結構,因此點雲分割具備必定挑戰性,點雲庫於(PCL)2011年推出以來,獲得行業普遍的應用,該庫包含了最早進的3D感知算法,幷包含了LIDAR和三維掃描儀的接口,這使得點雲庫PCL在機器人領域持續不斷的發展壯大起來。至今爲止已經更新到了1.9.1版本。在圖像分割中經常用到前景與背景的分割處理,而在點雲處理中,對於給定點雲數據,分割的目標是將具備類似特徵的點聚類成均勻區域,根據分割結果應用於各個方面的場景分析,通常的方法時根據輸入點雲的網格構建圖形,使用邊界線的法線,平滑度或者是凹凸性等信息進行聚類分割,在文章【1】中調查了分割的方法有:凹凸性分割,分水嶺分析,層次聚類,區域增加以及頻譜聚類。這些方法不只是應用圖像,也普遍的應用於點雲數據的分割。
      在計算機視覺中,2D圖像的分割是一個很經典的問題,而且已經有着十幾年的研究歷史,其中基於傳統的方法比較流行有Graph Cuts[2],包含了Normalized Cuts和Min Cuts 這些方法的思想一樣適應於3D點雲的分割,而且這部份內容在PCL中都已經開源。
 
點雲分割算法應該具備如下三種重要的屬性:
(1)好比樹木是具備與汽車相區別的特徵的,當點雲數據的特徵數量增長時,分割算法應該具備必定的魯棒性,可以學習如何自動的區分它們。
(2)其次分割應該可以根據其相鄰的信息推斷出稀疏點雲中這些點的屬性或者斷定出屬於哪一個標籤。
(3)分割算法應該能適用於不一樣的掃描器,即使是相同的場景在不一樣的掃描儀生成出的點雲也是具備不一樣的屬性的,而且產生點雲的質量以及稀疏性的也是不同的。
   
點雲分割的挑戰:
點雲數據雖然能夠肯定3D對象的形狀,大小和一些其餘屬性,可是3D點雲一般因爲傳感器的限制,數據是嘈雜稀疏且無序的,好比激光雷達線性和角速率的變化,點的採集密度也是不均勻的,此外點雲數據的表面形狀能夠是任意的,是沒有數據統計分佈呈現出來的。因此這就給點雲的分割帶來一系列的問題。
 
數據集介紹:
Example scenes of (a) Cornell RGBD dataset, (b) VMR-Oakland dataset, (c) KITTI dataset, and (d) Robotic 3D Scan Repository
如圖1 這些數據可分爲兩類:Kinect捕獲的室內數據集,以及由激光掃描儀(好比lidar)捕獲的室外數據集,將分割算法應用於這些公共數據集使研究者們更加的瞭解分割算法的優缺點
 
(1)Cornell RGBD數據集:該數據集具備52個標籤的具備RGB值的點雲的室內場景(24個標記爲辦公場景和28個標記的家庭場景)。使用RGBDSLAM [45]從原始RGB-D圖像建立點雲數據。該數據集由大約550個視圖組成,具備2495個標籤對應着27個種類的物體。
(2)VMR-Oakland數據集:該數據集是經過移動平臺從CMU園區收集的帶有標記點雲數據。使用激光掃描儀收集點雲並以文本格式保存,每行中寫入三個實值座標。而且提供訓練集,和測試集。
(3) KITTI數據集:該數據集包括由360°Velodyne激光掃描儀捕獲的大量無組織點雲數據。它是具備手動標記真值框的,如汽車,行人,電車,卡車和自行車等戶外的真值邊界框,用於訓練集。
(4)Robotic 3D Scan Repository: 該數據集爲室內和室外環境提供3D點雲數據集的集合。一些數據集包括熱量和顏色信息。這是3D點雲數據的巨大集合,不只可用於分割,還可用於不一樣其餘算法使用。可是,這些數據集還沒有標記,在將它們用做分割算法的輸入以前,多是須要預處理步驟。
 
分割算法:
接下里將介紹五種傳統的分割算法:基於邊緣的方法,基於區域的方法,基於屬性的方法,基於模型的方法和基於圖優化的方法
                                                                                                       三維點雲分割方法的分類
(1)基於邊緣的方法
邊緣是描述點雲物體形狀的基本特徵,這種方法檢測點雲一些區域的邊界來獲取分割區域,這些方法的原理是定位出邊緣點的強度變化,論文【2】提出了一種邊緣檢測技術,經過計算梯度,檢測表面上單位法向量方向的變化來擬合線段。論文【3】是基於掃描線的分組進行快速分割,基於邊緣的方法雖然分割速度比較快可是準確度不能保證,由於邊緣對於噪聲和不均勻的或稀疏的點雲很是敏感。
(2)基於區域分割方法
基於區域的方法使用鄰域信息來將具備類似屬性的附近點歸類,以得到到分割區域,並區分出不一樣區域之間的差別性。 基於區域的方法比基於邊緣的方法更準確。 可是他們在分割過分或不足以及在如何準確肯定區域邊界方面存在問題。 研究者們將基於區域的方法分爲兩類:種子區域(或自下而上)方法和非種子區域(或自上而下)方法。
 
種子區域方法:基於種子的區域分割經過選擇多個種子點來開始作分割,從這些種子點爲起始點,經過添加種子的鄰域點的方式逐漸造成點雲區域,最初的算法是有論文【4】提出來,該算法主要包含了兩個步驟:(1)基於每一個點的曲率識別種子點,(2)根據預約標準,該標準能夠是點的類似度和點雲的表面的類似度來生長種子點。這種方法對噪聲點也很是敏感,而且耗時。但後續有不少基於這種方法的改進,好比對於激光雷達數據的區域增加的方法,提出了基於種子點的法向量和與生長平面的距離來生長種子點。
種子區域方法高度依賴於選定的種子點。不許確選擇種子點會影響分割過程,並可能致使分割不足或過分。選擇種子點以及控制生長過程是耗時的。分割結果可能對所選的兼容性閾值敏感。另外一個困難是決定是否在給定區域中添加點,由於這種方法對點雲的噪聲也很敏感。
 
非種子區域方法:這種方法時基於自上而下的方法。首先,全部點都分爲一個區域。而後細分過程開始將其劃分爲更小的區域。論文【5】使用這種方法指導聚類平面區域的過程,以重建建築物的完整幾何形狀。該工做引入了基於局部區域的置信率爲平面的分割方法。這種方法的侷限性在於它也會可能過分分割,而且在分割其餘對象(例如樹)時它不能很好地執行。非種子區域方法的主要困難是決定細分的位置和方式。這些方法的另外一個限制是它們須要大量的先驗知識(例如,對象模型,區域數量等),而後這些未知的先驗知識在複雜場景中一般是未知的。
(3)基於屬性的方法
該方法是居於點雲數據的屬性的一種魯棒性較好的分割方法,這種方法通常包括了兩個單獨的步驟(1)第一步,基於屬性的計算,在第二步,將根據計算點的屬性進行聚類,這種聚類方法通常能適應空間關係和點雲的各類屬性。最終將不一樣的屬性的點雲分割出來,可是這種方法侷限性在於他們高度依賴派生屬性的質量因此要求第一步可以精確的計算點雲數據的屬性,這樣纔會在第二步中根據屬性的類別分割出最佳的效果。論文【6】則是這種方法實現的,提出了一種基於特徵空間聚類分析方法,在該方法中,使用一種自適應斜率的鄰域系統導出法向量,使用點雲數據的屬性,例如距離,點密度,點在水平或者垂直方向的分佈,來定義測量點之間的領域,而後將每一個方向上的法向量的斜率和點鄰域的數據之差做爲聚類的屬性,這種方法能夠消除異常值和噪聲的影響,基於屬性的方法是將點雲分割相同屬性區域的高效方法,而且分割的結果靈活而準確。 然而,這些方法依賴於點之間鄰域的定義和點雲數據的點密度。 當處理大量輸入點的多維屬性時,這種方法的另外一個限制是比較耗時。
(4)基於模型的方法
該方法時基於幾何的形狀好比球形,圓錐,平面和圓柱形來對點雲進行分組,那麼根據這些幾個形狀,具備相同的數學表示的點將會被分割爲同一組點,論文【7】
中引入了一種衆所周知的算法RANSAC(RANdom SAmple Consensus),RANSAC是強大的模型,用於檢測直線,圓等數學特徵,這種應用極爲普遍且能夠認爲是模型擬合的最早進技術,在3D點雲的分割中須要改進的方法都是繼承了這種方法。基於模型的方法具備純粹的數學原理,快速且強大,具備異值性,這種方法的主要侷限性在於處理不一樣點雲是的不許確性。這種方法在點雲庫中已經實現了基於線,平面,圓等各類模型。
(5)基於圖優化的方法
基於圖優化的方法在機器人的應用中十分流行,衆所周知的方法是FH算法【7】,該方法簡單且高效,而且像Kruskal算法同樣用於在圖中查找最小生成樹。許多基於圖的方法的工做被投入到機率推理模型中,例如條件隨機場(CRF),使用CRF標記具備不一樣幾何表面基元的點的方法。基於圖優化的方法在複雜的城市環境中成功地分割點雲,具備接近實時的性能。爲了與其餘方法進行比較,基於圖形的方法能夠對點雲數據中的複雜場景進可是,這些方法一般沒法實時運行。其中一些可能須要離線訓練等步驟。
 
以上將分割方法分爲五類。可是,通常來講,有兩種基本方法。第一種方法使用純數學模型和幾何推理技術,如區域增加或模型擬合,將線性和非線性模型擬合到點雲數據。這種方法容許快速運行時間能實現良好的結果。這種方法的侷限性在於在擬合物體時難以選擇模型的大小,對噪聲敏感而且在複雜場景中不能很好地工做。
 
第二種方法使用特徵描述子的方法從點雲數據中提取3D特徵,並使用機器學習技術來學習不一樣類別的對象類型,而後使用結果模型對所獲取的數據進行分類。在複雜場景中,機器學習技術將優於純粹基於幾何推理的技術。緣由是因爲噪聲,密度不均勻,點雲數據中的遮擋,很難找到並將複雜的幾何圖元擬合到物體上。雖然機器學習技術能夠提供更好的結果,但它們一般很慢而且依賴於特徵提取過程的結果。
以上的這些算法在PCL的都已經實現且都有現成的demo能夠查看效果。
 
 
如下將詳細的介紹PCL點雲中的分割模塊
該模塊是在以上基本模塊的基礎上進行的研究,好比如何將點雲數據構形成kdtree或者Octree結構使用FLANN(最近鄰搜索)的方式尋找點與周圍見之間的關係。
在PCL經常使用的聚類分割的類有如下幾種:
class   pcl::ConditionalEuclideanClustering< PointT >
該類實現了用於設定的條件的歐式聚類的分類算法
bool enforceIntensitySimilarity (const pcl::PointXYZI& point_a, const pcl::PointXYZI& point_b, float squared_distance)
{
if (fabs (point_a.intensity - point_b.intensity) < 0.1f)
return (true);
else
return (false);
}

// 以上是一個用於設定的基於點雲強度信息的田間也就是兩點的強度信息要求/ html

pcl::ConditionalEuclideanClustering<pcl::PointXYZI> cec (true);
cec.setInputCloud (cloud_in);
cec.setConditionFunction (&enforceIntensitySimilarity);  
// 此處將咱們的條件函數加入
cec.setClusterTolerance (0.09f);   //聚類所能接受程度
// Size constraints for the clusters:
cec.setMinClusterSize (5);   //聚類的大小設置
cec.setMaxClusterSize (30);
// The resulting clusters (an array of pointindices):
cec.segment (*clusters);
// The clusters that are too small or too large in size can also be extracted separately:
cec.getRemovedClusters (small_clusters, large_clusters);
 
class  pcl::CPCSegmentation< PointT >
對超體素圖進行分割的分割算法。 它使用局部凹度引發的平面切割進行遞歸分割。使用局部約束的有向RANSAC進行分割。
CPC分割與LCCP分割是繼承的關係 :具體論文能夠查看文獻
M. Schoeler, J. Papon, F. Woergoetter Constrained Planar Cuts - Object Partitioning for Point Clouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2015
 
class  pcl::EuclideanClusterExtraction< PointT >
歐幾里得聚類提取是歐幾里得意義上的聚類獲取分割的點雲類。
此函數是常常用到的,在以前的例子中有屢次說起,在這裏就再也不去舉例說明。能夠查閱相關的博客內容
 
class  pcl::LabeledEuclideanClusterExtraction< PointT >
labeledeuclidenclusterextraction表示一個分段類,用於歐幾里得意義上的帶有標籤信息的聚類提取,
 
class  pcl::ExtractPolygonalPrismData< PointT >
ExtractPolygonalPrismData使用一組表示平面模型的點索引,並與給定的高度一塊兒生成三維多邊形棱柱。
而後使用多邊形棱柱分割位於其內部的全部點。
它的一個使用示例是提取位於一組三維邊界內的數據(例如,由平面支持的對象)。
double z_min = 0., z_max = 0.05; // we want the points above the plane, no farther than 5 cm from the surface
pcl::PointCloud<pcl::PointXYZ>::Ptr hull_points (new pcl::PointCloud<pcl::PointXYZ> ());
pcl::ConvexHull<pcl::PointXYZ> hull;
// hull.setDimension (2); // not necessarily needed, but we need to check the dimensionality of the output
hull.setInputCloud (cloud);
hull.reconstruct (hull_points);
if (hull.getDimension () == 2)
{
pcl::ExtractPolygonalPrismData<pcl::PointXYZ> prism;
prism.setInputCloud (point_cloud);
prism.setInputPlanarHull (hull_points);
prism.setHeightLimits (z_min, z_max);
prism.segment (cloud_indices);
}

 

class  pcl::GrabCut< PointT >
實現了GrabCut分割。
 
class  pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >
 
實現隨機行走的多標籤圖分割相關論文  Random Walks for Image Segmentation
 
class   pcl::LCCPSegmentation< PointT >

 

一種簡單的分割算法,將一個超體素圖分割成由凹邊界分隔的局部凸鏈接超體素組。相關論文 S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter Object Partitioning using Local Convexity In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2014
 
class  pcl::SACSegmentationFromNormals< PointT, PointNT >
結合點雲的數據表面的法向量使用RANSAC方法的分割
 
class  pcl::SeededHueSegmentation
class  pcl::SegmentDifferences< PointT >
SegmentDifferences獲取兩個空間對齊的點雲之間的差別,並返回它們之間在最大給定距離閾值下的差別。
 
class  pcl::SupervoxelClustering< PointT >
實現基於體素結構、法線和RGB值的超體素算法。具體論文以下
Voxel Cloud Connectivity Segmentation - Supervoxels from PointClouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2013
 
下一章節將具體介紹在PCL實現的基於模型的分割方法。
 
【1】A. Shamir, Segmentation and shape extraction of 3D boundary meshes (state of the art report), in Eurographics, 2006
【2】 B. Bhanu, S. Lee, C. Ho, and T. Henderson, Range data processing:Representation of surfaces by edges. In proc.int. Pattern recognition conf, 1896
【3】 X.Y. Jiang, H. Bunke, and U. Meier, Fast range image segmentation  using high-level segmentation primitives, In 3rd IEEE Workshop on Applications of Computer Vision, USA, 1996
【4】P.J. Besl, R.C. Jain, Segmentation through variable order surface fitting, IEEE Transaction on Pattern Analysis and Machine Intelligence 10, 1988.
【5】J. Chen, B. Chen, Architectural modeling from sparsely scanned range data. Int. J. Comput. Vision 78, 2008.
【6】S. Filin, N. Pfeifer, Segmentation of airborne data using a slope adaptive filter, ISPRS J. Photogramm. Remote Sens., vol. 60, pp. 71- 80, 2006.
【7】M. Fischler, R. Bolles, Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography, Communications of the ACM
【8】P.F. Felzenszwalb, D.P. Huttenlocher, Efficient Graph-Based Image Segmentation, International Journal of Computer Vision, 59(2), 2004.
 
以上就是所有內容,可能存在一些錯誤歡迎指示,並能夠發郵件交流,您能夠能夠關注微信公衆號。加入咱們翻譯小組或者加入經營微信公衆號羣,也加入技術交流羣與跟多的小夥伴一塊兒交流。
相關文章
相關標籤/搜索