计算机系统应用  2021, Vol. 30 Issue (3): 158-163   PDF    
基于Kinect的点云配准方法
李若白1,2, 陈金广1,2     
1. 西安工程大学 计算机科学学院, 西安 710048;
2. 柯桥区西纺纺织产业创新研究院, 绍兴 312030
摘要:Kinect采集的点云存在点云数量大、点云位置有误差, 直接使用迭代最近点(ICP)算法对点云进行配准时效率低. 针对该问题, 提出一种基于特征点法向量夹角的改进点云配准算法. 首先使用体素栅格对Kinect采集的原始点云进行下采样, 精简点云数量, 并使用滤波器移除离群点. 然后使用SIFT算法提取目标点云与待配准点云公共部分的特征点, 通过计算特征点法向量之间的夹角调整点云位姿, 完成点云的初始配准. 最后使用ICP算法完成点云的精细配准. 实验结果表明, 该算法与传统ICP算法相比, 在保证点云配准精度的同时, 能够提高点云的配准效率, 具有较高的适用性和鲁棒性.
关键词: Kinect    点云配准    法向量夹角    点云滤波    ICP算法    
Point Cloud Registration Method Based on Kinect
LI Ruo-Bai1,2, CHEN Jin-Guang1,2     
1. School of Computer Science, Xi’an Polytechnic University, Xi’an 710048, China;
2. Shaoxing Keqiao West-Tex Textile Industry Innovative Institute, Shaoxing 312030, China
Foundation item: Industry-University-Research Cooperation Innovation Project of Keqiao Textile Industry Innovation Research Institute (19KQYB24)
Abstract: The point clouds collected by Kinect have a large quantity and position errors, and it is inefficient to directly apply the Iterative Closest Point (ICP) algorithm to point cloud registration. To solve this problem, we propose an improved point cloud registration algorithm based on the angle between the normal vectors of feature points. First, the voxel grids are used to down sample the original point clouds collected by Kinect and reduce the number of point clouds and a filter is applied to remove the outliers. Then, the Scale Invariant Feature Transform (SIFT) algorithm is employed to extract the common feature points between the target point clouds and the point clouds to be registered, and the angle between the normal vectors of feature points is calculated to adjust the point cloud pose. Thus, the initial registration of the point clouds is completed. Finally, the ICP algorithm is applied to complete the fine registration of the point clouds. The experimental results show that compared with the traditional ICP algorithm, the proposed algorithm, while ensuring the registration accuracy, can improve the registration efficiency of point clouds and has high applicability and robustness.
Key words: Kinect     point cloud registration     method vector angle     point cloud filtering     ICP algorithm    

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)转换成三维点云数据.

$ {Z_c}\left[ {\begin{array}{*{20}{c}} u\\ v\\ 1 \end{array}} \right]{\rm{ = }}\left[ {\begin{array}{*{20}{c}} {{f_x}}&0&{{u_0}}\\ 0&{{f_y}}&{{v_0}}\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{R}}&{{T}} \end{array}} \right]{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \left[ {\begin{array}{*{20}{c}} {{x_w}}\\ {{y_w}}\\ {{{\textit{z}}_w}}\\ 1 \end{array}} \right] $ (1)
$ \left\{ {\begin{array}{*{20}{l}} {{x_w} = {{\textit{z}}_c}(u - {u_0})/{f_x}}\\ {{y_w} = {{\textit{z}}_c}(v - {v_0})/{f_y}}\\ {{{\textit{z}}_w} = {{\textit{z}}_c}} \end{array}} \right. $ (2)

式中, fxfy $ {u_0}$ $ {v_0}$ 为Kinect的内参, 可通过相机标定求出; (u, v)为深度图像中的点; zc为物体到相机的距离; xwywzw为世界坐标系中的坐标点, 即点云坐标; RT分别为3×3的旋转矩阵和3×1的平移矩阵, 且[R T]=[I 1].

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, 并设定一个阈值 $ \tau {\kern 1pt} {\kern 1pt} {\kern 1pt} (\tau > 0)$ , 若 $ n > \tau \times 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, σ), 即:

$ L(x,y,\sigma ) = G(x,y,\sigma ) * I(x,y) $ (3)

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

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

$ D(x,y,\sigma ) = L(x,y,k\sigma ) - L(x,y,\sigma ) $ (4)
$ L(x,y,k\sigma ) - L(x,y,\sigma ) = I(x,y) * (G(x,y,k\sigma ) - G(x,y,\sigma )) $ (5)

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

$ D(X) = D + \frac{{\partial {D^{\rm{T}}}}}{{\partial X}}X + \frac{1}{2}{X^{\rm{T}}}\frac{{{\partial ^2}D}}{{\partial {X^2}}} $ (6)

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

$ \hat X = - \frac{{{\partial ^2}{D^{ - 1}}}}{{\partial {X^2}}}\frac{{\partial D}}{{\partial X}} $ (7)

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

$ D\left( {\hat X} \right) = D + \frac{1}{2}\frac{{\partial {D^{\rm{T}}}}}{{\partial X}}\hat X $ (8)

若极值点 $X = {(x,y,\sigma )^{\rm{T}}}$ 满足 $\left| {D\left( {\hat X} \right)} \right| \ge \psi$ , 则将该点保存为特征点, 其中 $ \psi $ 为极值点偏移量的阈值.

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

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

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

(1) 根据两片点云对应的特征点对计算其法向量 ${{{n}}_{pi}}$ ${{{n}}_{qj}}$ ;

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

$ \cos \left[ {\frac{{{{{n}}_{pi}} \cdot {{{n}}_{qj}}}}{{\left\| {{{{n}}_{pi}}} \right\| \cdot \left\| {{{{n}}_{qj}}} \right\|}}} \right] \ge \lambda $ (9)

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

3.2 点云精细配准

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

$ f({{R}} \cdot {{T}}) = \frac{1}{n}{\sum\limits_{i = 1}^n {\left\| {P_i^0 - \left( {Q_i^0 \cdot {{R}} + {{T}}} \right)} \right\|} ^2} $ (10)

式中, $ P_i^0$ $ Q_i^0$ 分别为初始配准获得的目标点云和待配准点云, RT分别为旋转矩阵和平移矩阵.

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算法对特征点进行提取与匹配时会出现一定的误差, 并耗费较多时间, 使点云配准的精度和效率均有所降低, 因此这也是该算法以后优化的方向, 并在此基础上融合多视角点云配准数据, 优化配准结果, 完成物体三维模型的重建.

参考文献
[1]
吴剑锋, 蒋濛婷, 马梦鑫, 等. 基于点云融合算法的Kinect三维重建技术及其应用研究. 计算机应用与软件, 2018, 35(8): 260-264. DOI:10.3969/j.issn.1000-386x.2018.08.047
[2]
舒欢. 三维重建和3D打印在兵马俑修复中的应用. 电子科学技术, 2017, 4(4): 160-163. DOI:10.16453/j.issn.2095-8595.2017.04.036
[3]
陆剑锋, 王正平, 金红军. 三维激光扫描与虚拟现实技术在城市景观中的应用. 激光杂志, 2019, 40(7): 174-178. DOI:10.14016/j.cnki.jgzz.2019.07.174
[4]
Xie HY, Zhong YQ. Structure-consistent customized virtual mannequin reconstruction from 3D scans based on optimization. Textile Research Journal, 2020, 90(7–8): 937-950. DOI:10.1177/0040517519883957
[5]
张德海, 李艳芹, 谢贵重, 等. 三维光学扫描技术逆向工程应用研究. 应用光学, 2015, 36(4): 519-525. DOI:10.5768/JAO201536.0401005
[6]
Besl PJ, Mckay ND. A method for registration of 3-D shapes. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1992, 14(2): 239-256. DOI:10.1109/34.121791
[7]
Du SY, Liu J, Zhang CJ, et al. Probability iterative closest point algorithm for m-D point set registration with noise . Neurocomputing, 2015, 157: 187-198. DOI:10.1016/j.neucom.2015.01.019
[8]
Marani R, Renò V, Nitti M, et al. A modified iterative closest point algorithm for 3D point cloud registration. Computer-Aided Civil and Infrastructure Engineering, 2016, 31(7): 515-534. DOI:10.1111/mice.12184
[9]
Tazir ML, Gokhool T, Checchin P, et al. CICP: Cluster iterative closest point for sparse-dense point cloud registration. Robotics and Autonomous Systems, 2018, 108: 66-86. DOI:10.1016/j.robot.2018.07.003
[10]
Chen ECS, McLeod AJ, Baxter JSH, et al. Registration of 3D shapes under anisotropic scaling: Anisotropic-scaled iterative closest point algorithm. International Journal of Computer Assisted Radiology and Surgery, 2015, 10(6): 867-878. DOI:10.1007/s11548-015-1199-9
[11]
Zhao L, Shen XK, Long X. Robust wrinkle-aware non-rigid registration for triangle meshes of hand with rich and dynamic details. Computers & Graphics, 2012, 36(5): 577-583. DOI:10.1016/j.cag.2012.03.035
[12]
Nitzan D, Brain AE, Duda RO. The measurement and use of registered reflectance and range data in scene analysis. Proceedings of the IEEE, 1977, 65(2): 206-220. DOI:10.1109/PROC.1977.10458
[13]
王欢, 汪同庆, 李阳. 利用Kinect深度信息的三维点云配准方法研究. 计算机工程与应用, 2016, 52(12): 153-157. DOI:10.3778/j.issn.1002-8331.1407-0506
[14]
马杰, 王旭娇, 马鹏飞, 等. 融合kd tree邻域查询的深度学习点云分类网络. 深圳大学学报(理工版), 2020, 37(1): 79-83.
[15]
Steder B, Rusu RB, Konolige K, et al. Point feature extraction on 3D range scans taking into account object boundaries. Proceedings of 2011 IEEE International Conference on Robotics and Automation. Shanghai, China. 2011. 2601–2608.
[16]
Rusu RB, Blodow N, Beetz M. Fast Point Feature Histograms (FPFH) for 3D registration. Proceedings of 2009 IEEE International Conference on Robotics and Automation. Kobe, Japan. 2009. 3212–3217.
[17]
Lowe DG. Distinctive image features from Scale-Invariant keypoints. International Journal of Computer Vision, 2004, 60(2): 91-110. DOI:10.1023/B:VISI.0000029664.99615.94
[18]
Sipiran I, Bustos B. A robust 3D interest points detector based on Harris operator. Proceedings of the 3rd Eurographics Conference on 3D Object Retrieval. Norrköping, Sweden. 2010. 7–14.
[19]
孙培芪, 卜俊洲, 陶庭叶, 等. 基于特征点法向量的点云配准算法. 测绘通报, 2019(8): 48-53. DOI:10.13474/j.cnki.11-2246.2019.0250
[20]
王金龙, 周志峰. 基于SIFT图像特征提取与FLANN匹配算法的研究. 计算机测量与控制, 2018, 26(2): 175-178. DOI:10.16526/j.cnki.11-4762/tp.2018.02.043
[21]
杨帆, 唐伟智, 吴昊. 改进迭代最近点算法的点云自动精配准. 遥感信息, 2018, 33(2): 40-45. DOI:10.3969/j.issn.1000-3177.2018.02.006