基於ICP算法點雲部分與整體的配準

pcl點雲庫提供了完整的icp算法,能完成點雲的配準,但是能找到的例子都是書上的demo:一個完整點雲,使用旋轉矩陣旋轉了一個角度,然後利用icp迭代了幾次可以實現完美的配準,這是因爲本來就是一個點雲,選點集座標都一樣, 這樣的例子沒有代表性,也解決不了實際的例子
我遇到的問題是這樣的:一個物體由掃描儀掃描後重採樣,重採樣的間距一定,造成前端和後端兩個部位的點雲密度與其他部位不同,點雲缺失,點雲後端只有一圈兩圈這樣的數據點,在應用分割算法的時候,這裏會出現分割不出來的情況,需要將後端這部分補全;思路就是將物體的後端重新掃描提取一部分,然後將這部分點雲配準回原點雲上去,實現整體與部分點雲的配準,然後再做重影消除,下采樣等算法處理,然後完成分割算法。
這裏分享一個在源代碼上稍作修改的方法,當然不能算是改進icp了
首先熟悉一下icp的原理
一個是source點雲一個是target點雲,實際就是求兩片點雲的旋轉矩陣、平移向量,構成一個目標函數,把source點雲能經過旋轉平移重合到target點雲上去;

知道原理之後,先來看圖一是targettarget
下圖爲source點雲
source
source點雲是重新掃描得到的,和target在一個座標系下如下圖左,俯視圖兩個點雲的關係是如圖左的。經過處理是粗配準了一下,如下圖右,明顯能看見不重合,造成了點雲的重影。
在這裏插入圖片描述
給target點雲一個特寫,能看到爲什麼要做配準,由於端部是缺少點的。
在這裏插入圖片描述
經過我算法的精配準如下圖,已經不存在重影的問題了
在這裏插入圖片描述
再給target點雲一個特寫,可以看到缺少的部位已經補全了
在這裏插入圖片描述
下面有個嚴重的問題就是這個點雲配準後還是有一定的重影問題,原因是掃描儀的誤差,配准算法的誤差等,畢竟這兩個點雲是分別掃描的,相當於兩個點雲點雲的數量級也不相同,所以多少還是有一些的誤差,下面就是要把這些誤差消除,又用到我另一個算法也是基於開源庫,在開源庫上稍作修改的算法。。。下次有時間再來更新吧。

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