基于ICP算法点云部分与整体的配准

pcl点云库提供了完整的icp算法,能完成点云的配准,但是能找到的例子都是书上的demo:一个完整点云,使用旋转矩阵旋转了一个角度,然后利用icp迭代了几次可以实现完美的配准,这是因为本来就是一个点云,选点集座标都一样, 这样的例子没有代表性,也解决不了实际的例子
我遇到的问题是这样的:一个物体由扫描仪扫描后重采样,重采样的间距一定,造成前端和后端两个部位的点云密度与其他部位不同,点云缺失,点云后端只有一圈两圈这样的数据点,在应用分割算法的时候,这里会出现分割不出来的情况,需要将后端这部分补全;思路就是将物体的后端重新扫描提取一部分,然后将这部分点云配准回原点云上去,实现整体与部分点云的配准,然后再做重影消除,下采样等算法处理,然后完成分割算法。
这里分享一个在源代码上稍作修改的方法,当然不能算是改进icp了
首先熟悉一下icp的原理
一个是source点云一个是target点云,实际就是求两片点云的旋转矩阵、平移向量,构成一个目标函数,把source点云能经过旋转平移重合到target点云上去;

知道原理之后,先来看图一是targettarget
下图为source点云
source
source点云是重新扫描得到的,和target在一个座标系下如下图左,俯视图两个点云的关系是如图左的。经过处理是粗配准了一下,如下图右,明显能看见不重合,造成了点云的重影。
在这里插入图片描述
给target点云一个特写,能看到为什么要做配准,由于端部是缺少点的。
在这里插入图片描述
经过我算法的精配准如下图,已经不存在重影的问题了
在这里插入图片描述
再给target点云一个特写,可以看到缺少的部位已经补全了
在这里插入图片描述
下面有个严重的问题就是这个点云配准后还是有一定的重影问题,原因是扫描仪的误差,配准算法的误差等,毕竟这两个点云是分别扫描的,相当于两个点云点云的数量级也不相同,所以多少还是有一些的误差,下面就是要把这些误差消除,又用到我另一个算法也是基于开源库,在开源库上稍作修改的算法。。。下次有时间再来更新吧。

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