谭雅斯+张建敏
摘要: RGB-D相机,例如微软的Kinect是一种比较新的传感器系统,它可以在得到RGB图像的同时得到每个像素的深度信息。这篇文章利用RGB-D相机获得的三维点云,提出一种基于投影图像获取匹配点加速ICP迭代的点云拼接的方法,解决由于计算机显存的限制,普通PC机上不能一次性获得较大模型的情况。并实验证明了这种拼接算法的可能性。这些模型可以运用到农机的真实感三维交互,虚拟现实,增强现实三维模型逆向工程等多个领域。
关键词:RGB-D传感器;相机标定;KinectFusion;SURF;RANSAC
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)28-0256-04
Abstract: RGB-D cameras are novel sensing systems that capture RGB images along with per-pixel depth information. In this paper we use RGB-D cameras to acquire 3D Point cloud model and propose a projected image based matching point searching method to accelerate ICP iteration in point clouds registration, and solved the GPU memory limitations which unable to get a large model point cloud model in one-time on an ordinary PC. The experimental results proved the possibility of this algorithm. These models can be applied to the agricultural realistic 3D model interaction, virtual reality, augmented reality and 3D model reverse engineering.
Key words: RGB-D sensor; Camera Calibration; KinectFusion; SURF; RANSAC; ICP
1 引言
1.1 RGB-D相机
沉浸式虚拟现实体验很重要的一个任务就是建立丰富真实感的三维模型。RGB-D相机就是一种传感器系统,它可以在得到RGB图像的同时得到每个像素的深度信息。我们采用的kinect2.0[1]主要采用飞行时间[2.3]法获得大量像素的深度值估计。近些年来广泛被计算机视觉团队用于研究使用,实际上RGB-D相机系统主要的发展动力与应用在于电脑游戏与家庭娱乐设备。
图1,2,3显示了RGB-D相机的采样图,它在三维重建里有几个明显的缺陷:深度图距离有限制,(一般大于0.5m小于5m),估计的深度图噪声明显,相比专业三维扫描仪的视角比较小(小于60°)。这篇文章中我们将介绍基于RGB-D相机获得的三维点云,提出一种彩色点云拼接的方法。
1.2点云拼接
拼接方法中最广泛应用的是由Paul.J.等人提出的迭代最近点(Iterative Closest Point-ICP)算法[4],由于它需要于一个初始位置,步骤将拼接分为粗拼接和精确拼接。对于比较大规模的点云,粗拼接一般用三点法或多点法获得点云的初始位置,精确拼接则使用最短距离匹配对应点的ICP算法,迭代直至误差范围之内。实践证明该算法一定程度上是解决拼接问题的有效方法,它通过迭代点的距离和变换使两片点云之间的距离均方误差最小。该算法的关键技术是快速查找最近点,较好的初始位置定位和求解变换。对点云建立KD树的话,可以加快对应点对的查找,人工判断若干个点也可以使得点云具有较好的初始位置。现在的配准算法大多都是基于此基础上进行改进的。ICP算法研究改进的主要目标是解决优化两个问题:良好的初始值和在迭代过程的精确的对应关系。确立正确对应点,剔除噪声点对也是改进的关键。此外,如何提高对应点对的搜索效率也很重要。
2 算法基础
实时的三维重建算法是近几年虚拟现实领域的研究热点,在众多算法中, NewCombe[5]和Izadi[6]提出的KinectFusion实现实时重建,提出利用截断符号距离函数算法(TSDF)[7]来表达三维场景,其基本原理是首先利用传感器采集得到的深度图,彩色图和深度相机标定的相机参数,用ICP[2]快速投影算法配准。KinectFusion算法有如下问题,(1)设定的三维网格的大小限制内存,从而影响场景的尺度。(2)大量的计算依赖于GPU(Graphic Processing Unit)并行计算。
本算法主要分成四个阶段,第一阶段:利用Kinecfusion获取有重叠区域的两次单帧三维点云,分别以此两帧为起始帧移动kinect获得更大模型,共计四个模型。第二阶段:利用相机标定确定相机内参矩阵,使用内参矩阵投影两次单帧三维点云成RGB图像。第三阶段:对二维图像预处理,利用surf算法快速获得两次投影的二维图像对应点,并利用改进的RANSAC剔除错配。第四阶段:利用二维图像的对应信息返回投影之前三维点的对应信息,给ICP算法一个很好的初始值迭代求解最优变换矩阵应用到两个大模型,从而得到拼接以后的模型。
2.1相机标定
为了标定相机,需要拍摄三维场景中坐标已知的一组。然后,必须确定这些点在图像中的位置。显然,为了得到精确的结果,我们需要观察多个点。事实上为了求解方程需要至少五对对应点。来求解以下方程的内参与外参数:
一种方法是拍摄由许多已知点组成的场景。为了方便也可以从不同角度多次拍摄一组点。Opencv使用棋盘图来生成一组三维点,每个点都位于方块的角点处。由于这是平面图案,我们可以假设棋盘位于Z=0的平面上,而X轴和Y轴与网络对齐。标定的过程中,我们从不同视角展示棋盘图案。Opencv提供自动检测棋盘中角点的函数。需要提供一幅图像以及棋盘的尺寸(水平方向及垂直方向内部角点的个数)该函数返回棋盘角点在图像中的位置。同时有用于在棋盘图像上绘制检测到角点的函数,通过直线依次将他们相连,连接角点的直线展示了角点在向量中的顺序。为了标定相机,我们需要同属输入图像点以及对应的3D点。标定过程封装在Camera Calibrator中。如前所述,只要我们将坐标系放置于棋盘上,那么角点的3D坐标可以轻易确定。利用这些对应关系可计算标定参数。10-20幅棋盘图像便足够,但是它们必须是不同距离不同视角进行拍摄。由于透镜的影响实际上应考虑相机畸变参数,Opencv考虑到这种情况,也提供了校正畸变的函数。
2.2投影与特征匹配
我们利用获得的参数与公式(2)得到二维的投影坐标(图4),和每个像素的RGB值,农机三维模型投影成的二维图片如(图5)所示。为了提高图像的质量,增加正确匹配特征点个数,我们使用了Telea在2004年提出的基于快速行进的修复算法[7]对图像进行修补。并且使用surf[8]算法寻找图像特征点(图6),然后是使用RANSAC[9]剔除错配。
成比例调整fx,fy可沿Z轴调整移动投影面。但并不是投影越大越好,因为读入的是离散点云,点云总数确定,投影图越大获得的图越稀疏,并不利于后面使用surf算法寻找图像特征点。我们测试了垂直与光轴的几个平行投影面的投影图匹配效果如图7所示。从左至右fx,fy依次减小。错误匹配是因为fx,fy太大造成修补算法插值过多,影响到图片精度,随着匹配点的减少正确率越来越高,但匹配点过少也不利于ICP迭代求解旋转矩阵。通过优先寻找周围四个像素,剔除空洞点的方法可以解决投影到二维图像是亚像素级的问题。
2.3获得良好ICP初始位置迭代求解
基于Paul.J.的ICP点云拼接改进算法是假设有两片点云和P和Q具有相似重叠部分,通过之前步骤二维像素与三维点具有对应关系,所以P中的特征点可以直接对应到Q中的则m=n。对于P=RQ+T,优化问题即是求解非线性最小二乘问题:
步骤如下:
1) 初始化旋转矩阵 为单位阵,平移矩阵 (为零矩阵。
2) 利用公式(4)(5)求出点集P、Q的质心。
3) 根据公式(6)(7)求出点集P、Q相对于各自质心的平移量,得到新点集、
4) 利用公式(8)求出两个新点集的3x3协方差矩阵H.
5) 对H矩阵进行奇异值分解,其中矩阵D是一个对角矩阵,
6) 定义矩阵 如果rank(H)>1,则可以得到第j次迭代时,平移矩阵
7) 由于对应点的选取基于二维图像对应点。误差很小,因此大大减小的原始ICP迭代次数,很快使得误差最小,迭代结束。实验性拼接结果如图8所示.
8) 性拼接结果如图8所示。
3 结语
本文提供了一种彩色点云基于RGB信息投影至二维得以拼接的方法。速度的提高主要是相对于建立KD树的方法加速了正确匹配点寻找过程。不过该算法也存在以下缺陷:1)模型必须带有颜色;2)模型必须完整,否则投影照片大部分空;3)模型相交处纹理丰富,纹理信息的丰富程度主要取决于深度图与彩色相机的合并对齐图,如果该模型没有纹理信息或者纹理信息比较单一(纯白色的墙面),可能会影响拼接效果。硬件上深度相机的精度也影响到了模型的匹配的准确度。相信从软硬件上同时提高,该算法的效果会更加鲁棒。
参考文献:
[1] Microsoft.http://www.xbox.com/en-US/kinect,2010.
[2] Canesta.http://www.canesta.com/.
[3] Mesa Imaging.http://www.mesa-imaging.ch/.
[4] P. J. Besl and N. D. McKay. A method for registration of 3D shapes. IEEE Trans. Pattern Anal. Mach. Intell., 14:239–256,February1992.
[5] S. Izadi, D. Kim, O. Hilliges, D. Molyneaux, R. A. Newcombe, P. Kohli, S. Shotton, J. Hodges, D. Freeman, A. J. Davison, and A. Fitzgibbon. KinectFusion: Real-time 3D reconstruction and inter action using a moving depth camera. In Symposiumon UserInterface Software and Technology (UIST), 2011.
[6] R. A. Newcombe et al. KinectFusion: Real-time dense surface mapping and tracking.
[7] An Image Inpainting Technique Based on the Fast Marching Method.《Journal of Graphics Tools》,2004,9(1):23-34
[8] H Bay,T Tuytelaars,LV Gool.SURF: Speeded Up Robust Features, Computer Vision & ImageUnderstanding》,2006,110(3):404-417.
[9] M. Fischler and R. Bolles, Random sample consensus: A paradigm for model fitting with application to image analysis and automated cartography, Comm. Assoc. Comp. Mach.24, 1981:381-395.
[10] 朱笑笑,曹其新,杨扬,等. 一种改进的KinectFusion三维重构算法[J].机器人,2014(2):129-136.