[PCL] 点云配准(1)
由于点云的不完整,旋转错位、平移错位等,使得要得到的完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视角得到的点集合并到统一的坐标系下形成一个完整的点云,然后就可以方便进行可视化的操作,这就是点云数据的配准。点云的配准有手动配准、依赖仪器的配准和自动配准,点云的自动配准技术是通过一定的算法或者统计学规律利用计算机计算两块点云之间错位,从而达到两块点云自动配准的效果,其实质就是把不同的坐标系中测得到的数据点云进行坐标系的变换,以得到整体的数据模型,问题的关键是如何让得到坐标变换的参数R(旋转矩阵)和T(平移向量),使得两视角下测得的三维数据经坐标变换后的距离最小,目前配准算法按照过程可以分为整体配准和局部配准。PCL中有单独的配准模块,实现了配准相关的基础数据结构,和经典的配准算法如ICP。
PCL中实现配准算法以及相关的概念
两两配准的简介:一对点云数据集的配准问题是两两配准(pairwise registration)。通常通过应用一个估计得到的表示平移和选装的4*4刚体变换矩阵来使得一个点云的数据集精确的与另一个点云数据集(目标数据集)进行完美的配准。
具体的实现步骤:
- 首先从两个数据集中按照同样的关键点选取的标准,提取关键点。
- 对选择所有的关键点分别计算其特征描述子。
- 结合特征描述子在两个数据集中的坐标位置,以两者之间的特征和位置的相似度为基础,来估算它们的对应关系,初步的估计对应点对。
- 假设数据是有噪声,除去对配准有影响的错误的对应点对。
- 利用剩余的正确的对应关系来估算刚体变换,完整配准。
对应估计(correspondences estimation)
假设我们已经得到由来给你此扫描的点云数据获得的两组特征向量,在此基础基础上,我们必须找到,相似特征再确定数据的重叠部分,然后才能进行配准,根据特征的类型PCL使用不同的方法来搜索特征之间的对应关系。
使用点匹配时,使用点的XYZ的坐标作为特征值,针对有序点云和无序点云数据的不同的处理策略:
- 穷举配准(brute force matching)
- kd——数最近邻查询(FLANN)
- 在有序点云数据的图像空间中查找
- 在无序点云数据的索引空间中查找
对应关系的去除(correspondence rejection)
由于噪声的影响,通常并不是所有估计的对应关系都是正确的,由于错误的对应关系对于最终的刚体变换矩阵的估算会产生负面的影响,所以必须去除它们,可以采用随机采样一致性估计,或者其他方法剔除错误的对应关系,最终使用对应关系数量只使用一定比例的对应关系,这样既能提高变换矩阵的估计精度也可以提高配准点的速度。
变换矩阵的估算(transormation estimation)
估算对应矩阵的步骤如下
- 在对应关系的基础上评估一些错误的度量标准。
- 在摄像机位姿(运动估算)和最小化错误度量标准下估算一个刚体变换。
- 优化点的结构。
- 使用刚体变换把源旋转/平移到与目标所在的同一坐标系下,用所有点的一个子集或者关键点运算一个内部的ICP循环。
- 进行迭代,直到符合收敛性判断标准为止。
迭代最近点算法(Iterative CLosest Point简称ICP算法)
ICP算法对待拼接的2片点云,首先根据一定的准则确立对应点集P与Q,确定对应点对的个数,然后通过最小乘法迭代计算最优的坐标变换,即旋转矩阵R和平移矢量t,使得误差函数最小,ICP处理流程分为四个主要的步骤:
- 对原始点云数据进行采样
- 确定初始对应点集
- 去除错误对应点对
- 坐标变换的求解
应用实例
1. 利用SURF特征检测算子进行点云配准和实现全景点云拼接:源码
效果:
2. 基于IPC点云配准:源码
效果:
可以从试验结果看得出变换后的点云只是在x轴的值增加了固定的值0.7,然后由这目标点云与源点云计算出它的转换矩阵,明显可以看出最后一行的x值为0.7。