APP下载

基于Kinect的点云配准方法①

2021-03-19李若白陈金广

计算机系统应用 2021年3期
关键词:位姿准点尺度

李若白,陈金广

1(西安工程大学 计算机科学学院,西安 710048)

2(柯桥区西纺纺织产业创新研究院,绍兴 312030)

1 引言

利用点云数据对现实物体进行三维重建是计算机视觉领域的重要技术,已广泛应用于各行各业.Kinect[1]作为一款具有点云采集功能的设备,在文物数字化[2]、虚拟现实[3]、三维人体重建与测量[4]、逆向工程[5]等诸多领域都有应用.通过Kinect 对现实物体的表面进行多角度扫描,得到其点云数据,利用点云配准技术将不同角度的点云数据合并到统一的三维坐标系下,形成一个完整的点云数据集,从而可以得到该物体的三维数字模型.

点云配准是三维重建过程中的关键技术,目前常用的配准算法是Besl 等于1992年提出的迭代最近点(Iterative Closest Points,ICP)算法[6],该算法精度高、容易实现,但对目标点云和待配准点云的初始位置要求较高,并且在点云数量较大时,配准过程会消耗大量时间.为此,国内外研究人员在此算法的基础上进行了改进,提出了PICP (Probability ICP)[7]、MICP(Modified ICP)[8]和CICP (Cluster ICP)[9]等配准算法,这些算法虽然克服了ICP 算法的局限性,但是算法的普适性有所降低,并且对Kinect 实时采集的点云进行配准时具有较低的鲁棒性.Chen 等[10]和Zhao 等[11]提出了尺度迭代最近点 (Scaling Iterative Closest Point,SICP)算法,但在点云数量较大的情况下配准效率较低,同样不适合直接用来对Kinect 采集的原始点云进行配准.

针对上述问题,本文提出一种基于特征点法向量夹角的改进点云配准算法.该算法在点云配准之前对Kinect 采集得到的原始点云数据进行下采样和滤波处理,在保持点云的形态特征和空间信息不变的情况下,精简点云数量.在点云初始配准阶段,通过计算特征点法向量之间的夹角来调整待配准点云的位姿,使目标点云和待配准点云在空间的位姿保持一致.最后在点云精细配准阶段,使用迭代最近点配准算法完成两片点云的配准.

2 点云数据的获取与处理

2.1 使用Kinect 获取点云数据

Kinect是微软公司开发的一款获取3D 体感信息的设备,它由多阵列麦克风、RGB 彩色摄像头、红外摄像头和红外发射器组成,可应用于体感游戏、三维重建、虚拟试衣、文物保护等领域.Kinect 1.0 获取深度图像是基于Light Coding[12]技术,该技术是将红外线光均匀分布投射在被测物体和空间中,通过红外摄像头记录空间和物体上的每个散斑,在得到原始数据后,使用设备中的PS1080 芯片计算出具有深度信息的图像.Kinect 2.0 则是基于Time Of Flight (TOF)技术获取深度图像,TOF 技术是通过向目标发射连续的特定波长的红外光线脉冲,经过传感器接收待测物体传回的光信号,计算光线往返的飞行时间或相位差得到待测物体的3D 深度信息.相比于Kinect 1.0,采用了TOF技术的Kinect 2.0 获取深度图像的精度更高,被外界光影响的概率更低,针对环境光具有更强的抗干扰性,因此本文选用Kinect 2.0 采集点云数据.

为获取物体的点云数据,通常需要先获取物体的深度图像,然后将深度图像的二维图像信息根据式(1)和式(2)转换成三维点云数据.

式中,fx、fy、u0、v0为Kinect的内参,可通过相机标定求出;(u,v)为深度图像中的点;zc为物体到相机的距离;xw、yw、zw为世界坐标系中的坐标点,即点云坐标;R、T分别为3×3的旋转矩阵和3×1的平移矩阵,且[RT]=[I1].

2.2 点云的滤波处理

使用Kinect 获取的点云数量和设备的相机分辨率有关,尤其是Kinect 2.0,获取的每一帧深度图像中包含的点云数量通常在21 万左右.而且在采集点云的过程中,由于Kinect的精度、使用者的经验和环境因素等带来的影响,点云数据中会不可避免的出现噪声点,这将对点云配准的精度和效率带来直接影响,因此在点云配准前需要对Kinect 采集的原始点云数据进行下采样和滤波处理.

2.2.1 点云下采样

由于Kinect 获取的每一帧图像中包含的点云数量巨大,如果直接使用原始点云数据进行配准,会降低点云的配准效率,因此在点云配准前需对原始点云进行下采样处理,精简点云数量.此处使用体素化网格法[13]实现点云下采样,其步骤为:

(1)为原始点云创建三维体素栅格,体素大小由原始点云数量决定;

(2)计算三维体素栅格的重心点,并用距离重心点最近的点代替体素栅格内的其他点,删除剩余点;

(3)遍历原始点云中所有点并重复执行步骤(1)和步骤(2),得到下采样处理后的点云.

2.2.2 移除离群点

通常在使用Kinect 采集点云数据时,因为设备和测量误差会产生稀疏的离群点,如果不将离群点移除,则会影响点云配准的精度.此处通过计算一个点的邻域范围内K 近邻的邻域平均距离来移除离群点,其步骤如下:

(1)使用kd-tree 算法[14]对点云数据集进行搜索,寻找数据集中每个目标点的邻域范围内K个点作为临近点;

(2)计算目标点与临近点的平均值n和标准差m,并设定一个阈值 τ(τ>0),若n>τ×m,则该点为离群点,并将其从点云数据集中移除.

3 改进的点云配准算法

ICP 算法虽然具有比较高的配准精度,但该算法对目标点云和待配准点云的初始位姿要求较高,并且需要对两片点云公共部分的特征点进行逐一匹配,这将增大点云配准的耗时.因此,对点云配准算法进行改进:在点云初始配准阶段,通过计算两片点云对应的特征点法向量之间的夹角来调整待配准点云的初始位姿,在此基础上使用ICP 算法完成点云的精细配准.

3.1 点云初始配准

3.1.1 特征点的提取与匹配

特征点是点云数据集中具有稳定性、区别性和代表性的点集,其数量相比于原始点云的数量少很多,在点云配准、曲面重建和三维人体测量研究中具有重要作用.特征点提取算法比较多,如NARF(Normal Aligned Radial Feature)算法[15]、快速点特征直方图(Fast Point Feature Histograms,FPFH)算法[16]、尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)算法[17]、Harris 算法[18]等.SIFT 算法针对点云的平移、旋转、缩放等具有尺度不变性[19],对Kinect 采集的点云适用性高,因此本文使用SIFT 算法提取点云特征点.

SIFT 算法的原理可理解为:对每个相邻尺度之间的图像进行相减,得到差分高斯金字塔图像,然后对其进行泰勒展开,从而定位出特征点的精确位置.

一个尺度可变高斯函数G(x,y,σ)与原图像I(x,y)进行卷积运算,得到该图像在不同尺度下的尺度空间L(x,y,σ),即:

式中,σ为尺度空间因子,(x,y)为图像的像素坐标.

相邻尺度图像之间相减可以得到高斯差分算子D(x,y,σ),用来对尺度图像中的极值点进行检测:

式中,k为表示不同尺度图像的一个常量.尺度图像中的极值点组成了特征点,通过拟合三维曲面可以确定特征点的坐标和尺度,同时去除不稳定、对比度低的特征点.利用差分高斯 (DoG)函数对空间尺度进行泰勒展开,以筛选特征点,展开式如下:

式中,X=(x,y,σ)T,对式(6)进行求导,并令其等于0,就可以得到特征点的精确坐标:

将式(7)带入式(6),化简可得:

若极值点X=(x,y,σ)T满足则将该点保存为特征点,其中 ψ为极值点偏移量的阈值.

使用SIFT 算法将目标点云和待配准点云公共重叠部分的特征点提取之后,需要对两片点云的特征点进行匹配,此处通过计算特征点的最近欧氏距离来确定对应的特征点集.设目标点云的特征点集为Pf={p1,p2,…,pi},待配准点云的特征点集为Qf={q1,q2,…,qj},针对特征点集Pf中一点pi,使用快速最近邻搜索(FLANN)算法[20]查找特征点集Qf中与该点欧式距离最近的一点qj,得到两片点云对应的特征点对(pi,qj).

3.1.2 基于特征点法向量夹角调整点云位姿

由于使用ICP 算法进行点云配准时对目标点云P和待配准点云Q的初始位姿有较高要求,因此在点云初始配准阶段通过计算两片点云的特征点法向量之间的夹角来调整待配准点云的位姿,算法流程如下:

(1)根据两片点云对应的特征点对计算其法向量npi和nqj;

(2)计算对应法向量之间夹角的余弦值,并与预设的阈值λ进行比较,计算式如下:

(3)如果式(9)不成立,则通过反余弦函数计算法向量之间夹角的角度θ,根据该角度估计待配准点云的刚体变换矩阵,调整待配准点云的位姿,重复步骤(2)和步骤(3),直到式(9)成立.

3.2 点云精细配准

经过点云的初始配准,目标点云和待配准点云已经得到了比较理想的位姿状态,在此基础上使用ICP算法完成两片点云的精细配准.ICP 算法是通过目标点云和待配准点云之间的几何关系来计算相应的变换参数,从而确定对应的旋转矩阵和平移矩阵并应用于待配准点云,得到变换位置后新的待配准点云,不断重复上述过程,直到满足所需的收敛条件,即满足目标函数最小[21]时,便可完成点云的精细配准.目标函数如下式:

式中,、分别为初始配准获得的目标点云和待配准点云,R、T分别为旋转矩阵和平移矩阵.

4 实验结果与分析

为验证上述算法在点云配准中的有效性和可行性,使用Stanford Bunny 点云模型和Kinect 采集的点云数据模型分别进行3 次实验,并与传统的ICP 算法进行比较.实验在Intel core i5-4210U CPU @ 1.70 GHz~2.40 GHz、8 GB RAM、Windows 10 64 位专业版操作系统、Visual Studio 2019 开发平台、PCL 1.8.1 版本、Kinect for Windows SDK V2.0 环境下进行,C++作为编程语言.图1为实验2和实验3的算法流程图.

实验1 使用经典的Stanford Bunny 点云模型作为素材,以验证本文算法的可行性,实验结果如图2所示.实验使用不同角度下的点云模型进行配准,目标点云和待配准点云分别如图2(a)、图2(b)所示.使用传统ICP算法和使用本文算法对两片点云进行配准,实验结果如图2(c)、图2(d)所示.由图2(c)可知,直接使用ICP算法对Stanford Bunny 点云模型进行配准后,两片点云出现了错位,没有完全拼接在一起.使用改进后的算法对点云模型进行配准后的效果较好,由图2(d)可以看出,两片点云重合效果和配准后的姿态均好于图2(c).

图1 算法流程图

图2 Stanford Bunny 点云模型配准

实验2 使用Kinect 采集人体上半身的点云数据作为实验素材,以验证本文算法针对Kinect 采集的点云数据进行配准时的有效性,实验结果如图3所示.其中目标点云是被测人体位于Kinect 正前方采集得到,如图3(a),待配准点云是将Kinect 旋转15°采集得到的,如图3(b).图3(c)、图3(d)是分别使用传统ICP 算法和本文算法得到的实验结果,从实验结果可以看到,使用传统ICP 算法配准后的效果明显较差,特别是胳膊,没有完全重合,使用本文算法的配准效果有了明显改善,两片点云完全重合.

图3 Kinect 采集的人体模型配准

实验3 通过对室内复杂场景的点云模型进行配准以验证本文算法的普适性.使用Kinect 对室内复杂场景的点云数据进行不同角度的采集作为目标点云和待配准点云,如图4(a)、图4(b)所示.图4(c)、图4(d)分别为使用传统ICP 算法和使用本文算法进行点云配准的结果,由实验结果可知,本文算法在点云配准效果上好于传统ICP 算法,如图4(d),室内的场景均完全重合.但使用传统ICP 算法配准后效果较差,如图4(c),两片点云出现错位,配准精度较低.

考虑到Kinect 采集的点云数据中包含有大量噪声点,会影响点云配准的精度,所以本文在配准前对点云进行了噪声滤波处理.为提高点云配准的效率,本文在保证点云数据中所包含的形状特征与空间结构信息不变的情况下,使用体积为1 cm3的体素栅格对采集的点云数据进行下采样,精简点云数量.在点云初始配准阶段,本文通过计算特征点法向量间的夹角来调整待配准点云的初始位姿,提高其初始位姿精度,从而可以减少传统 ICP 算法中目标点云与待配准点云对应旋转矩阵的计算量,以此来减少点云配准算法的迭代次数,同时能够降低算法的运算复杂度,减少配准时间.

图4 Kinect 采集的室内场景模型配准

将点云配准用时和均方误差作为点云配准效果的评价标准,如表1所示,本文算法在点云配准中的耗时相较于传统ICP 算法明显减少,均方误差也优于传统ICP 算法.比如对复杂场景进行配准时,本文算法比传统ICP 算法用时减少了18.205 s,配准效率提高了约29%,均方误差降低了0.177,配准精度提高了约19%.由此可见本文算法在一定程度上能够减少配准用时,提高点云配准精度.

表1 两种配准算法性能比较

5 结语

为解决Kinect 采集的点云数据配准效率低的问题,提出了一种基于特征点法向量夹角的改进点云配准算法,该算法通过精简点云数量和计算特征点法向量间的夹角来调整点云初始位姿,以减少配准算法的迭代次数,从而达到提高点云配准效率的目的.实验结果表明,本文提出的算法在保证Kinect 采集的物体点云形状特征不变的情况下,能够减少点云数量,提高点云配准精度和效率.但本文算法在对不同维度的多视角点云进行配准时,使用SIFT 算法对特征点进行提取与匹配时会出现一定的误差,并耗费较多时间,使点云配准的精度和效率均有所降低,因此这也是该算法以后优化的方向,并在此基础上融合多视角点云配准数据,优化配准结果,完成物体三维模型的重建.

猜你喜欢

位姿准点尺度
环境史衰败论叙事的正误及其评判尺度
基于PLC的六自由度焊接机器人手臂设计与应用
基于位置依赖的密集融合的6D位姿估计方法
准点
曲柄摇杆机构的动力学仿真
准点率前十,日本机场占五席
JAL获得世界航空公司准点率三冠王
以长时间尺度看世界
9
圆锥曲线“准点”的又几个性质