(3)上兩篇介紹了關于歐幾裡德分割,條件分割,最小分割法等等還有之前就有用RANSAC法的分割方法,這一篇是關于區域生成的分割法,
區 域生長的基本 思想是: 将具有相似性的像素集合起來構成區域。首先對每個需要分割的區域找出一個種子像素作為生長的起點,然後将種子像素周圍鄰域中與種子有相同或相似性質的像素 (根據事先确定的生長或相似準則來确定)合并到種子像素所在的區域中。而新的像素繼續作為種子向四周生長,直到再沒有滿足條件的像素可以包括進來,一個區 域就生長而成了。
區域生長算法直覺感覺上和歐幾裡德算法相差不大,都是從一個點出發,最終占領整個被分割區域,歐幾裡德算法是通過距離遠近,對于普通點雲的區域生長,其可由法線、曲率估計算法獲得其法線和曲率值。通過法線和曲率來判斷某點是否屬于該類。
算法的主要思想是:首先依據點的曲率值對點進行排序,之是以排序是因為,區域生長算法是從曲率最小的點開始生長的,這個點就是初始種子點,初始種子點所在的區域即為最平滑的區域,從最平滑的區域開始生長可減少分割片段的總數,提高效率,設定一空的種子點序列和空的聚類區域,選好初始種子後,将其加入到種子點序列中,并搜尋鄰域點,對每一個鄰域點,比較鄰域點的法線與目前種子點的法線之間的夾角,小于平滑閥值的将目前點加入到目前區域,然後檢測每一個鄰域點的曲率值,小于曲率閥值的加入到種子點序列中,删除目前的種子點,循環執行以上步驟,直到種子序列為空,
其算法可以總結為:
種子周圍的臨近點和種子點雲相比較
法線的方向是否足夠相近
曲率是否足夠小
如果滿足1,2則該點可用做種子點
如果隻滿足1,則歸類而不做種
從某個種子出發,其“子種子”不再出現則一類聚集完成
類的規模既不能太大也不能太小
顯然,上述算法是針對小曲率變化面設計的。尤其适合對連續階梯平面進行分割:比如SLAM算法所獲得的建築走廊。
那麼就看一下代碼的效果
看一下結果

原始點雲
區域生成後的點雲
(4)基于顔色的區域生長分割法
除了普通點雲之外,還有一種特殊的點雲,成為RGB點雲。顯而易見,這種點雲除了結構資訊之外,還存在顔色資訊。将物體通過顔色分類,是人類在辨認果實的 過程中進化出的能力,顔色資訊可以很好的将複雜場景中的特殊物體分割出來。比如Xbox Kinect就可以輕松的捕捉顔色點雲。基于顔色的區域生長分割原理上和基于曲率,法線的分割方法是一緻的。隻不過比較目标換成了顔色,去掉了點雲規模上 限的限制。可以認為,同一個顔色且挨得近,是一類的可能性很大,不需要上限來限制。是以這種方式比較适合用于室内場景分割。尤其是複雜室内場景,顔色分割 可以輕松的将連續的場景點雲變成不同的物體。哪怕是高低不平的地面,沒法用采樣一緻分割器抽掉,顔色分割算法同樣能完成分割任務。
算法分為兩步:
(1)分割,目前種子點和領域點之間色差小于色差閥值的視為一個聚類
(2)合并,聚類之間的色差小于色差閥值和并為一個聚類,且目前聚類中點的數量小于聚類點數量的與最近的聚類合并在一起
檢視代碼
恩 就這樣實際應用就是調參數,
-------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------