李务军,吴斌
(西南科技大学 信息工程学院,四川 绵阳 621000)
摘要:随着机器视觉理论的发展和硬件技术的进步,三维重建在生产、生活中的应用越来越广泛,基于Kinect传感器的三维重建得到广泛的应用。针对于现有的Kinect传感器获得的深度图像深度信息丢失的问题,提出了一种新的基于均值滤波的方法对深度图像进行去噪,并对深度图像进行预处理,获取三维点云,用迭代最近点(Iterative Closest Point, ICP)算法完成点云的精确配准,从而得到配准后物体表面三维点云,并完成物体的三维重建。
0引言
三维重建技术是人工智能、机器视觉和虚拟现实等领域的热点和难点,也是人类目前研究内容的重大难题之一。三维重建技术已经广泛用于生物医学成像、机器人遥操作系统、人机交互等领域。三维重建主要针对人机交互界面中重构出的虚拟场景,目前国内外对于现实场景的三维重建也有所研究[12]。
三维重建工作可以分为3个步骤。首先,通过对待构建物体的大量信息点坐标的检测来获取点云信息;其次,对于已获取的散乱点云进行预处理;最后,对于由不同方向得到的点云进行配准[3],使它们同处于同一世界坐标下。通过融合这些点云信息,就可对实际场景进行三维重构。
现有的三维重建技术可分为被动式技术和主动式技术。被动式技术利用自然光反射拍摄的图片,通过一系列算法计算得到物体的三维坐标,如structure from motion[4]和multi-view stereo[5]。主动式技术是直接测量物体的深度信息,如采用结构光的Kinect[6]和采用time of fliht技术的CamCube[7]。在本文中,将会根据Kinect传感器得到的深度图像,并以用户的视角来对真实场景进行三维重构。通过三维重建技术,可以在计算机中生成一个可交互的可视化系统,当用户在一个固定的摄像机前面移动时,就可以通过可视化系统观看到重构的三维场景,并且可以看到其自身所处的环境情况。这也是三维重构研究所要达到的效果。
1Kinect工作原理
1.1Kienct标定
Kinect是一种主动传感器,有3个镜头,中间镜头是RGB彩色摄像机,左右两边镜头分别是红外线发射器和红外线CMOS摄像机所构成的3D结构光深度信息感应器。
在使用Kinect的摄像头之前,需要先对其进行标定,包括对彩色摄像头和红外摄像头。通过标定可以获取Kinect摄像头的内外参数。在此次标定实验中,获取10幅标定所需要的图像数目,以获取更高的精度和更好的稳定性,拍摄到的深度图像和RGB图像如图1所示(此处只显示1幅)。
1.2图像坐标转换
真实世界坐标系与深度图像坐标系的示意图如图2所示。真实世界坐标系是以Kinect为坐标原点的右手坐标系。而在深度图像坐标系中,是以深度图像的原点作为坐标系原点的。因此,需要进行坐标转换,将深度图像的坐标系转换为以Kinect深度摄像机中心为原点的真实世界坐标系。
标定之后的Kinect摄像机,可以看做理想的针孔成像模型。根据Kinect的参数以及本文需要,设定彩色图像和深度图像的分辨率均为640×480。根据简单的相似三角形原理,得到转换之后的X、Y坐标分别为:
式中,X、Y分别为世界坐标中的横坐标和纵坐标,u、v分别为深度图像中的横坐标和纵坐标,Z为深度信息,f为标定后获取的焦距。
2三维重建
Kinect深度摄像头可以获取周围场景的深度信息,同时也可以得到三维场景的点云信息,继而重建出物体的三维表面模型,而不必接触物体。三维场景重构的流程如图3所示。
2.1噪声处理
在Kinect获取的深度图像中,有些像素值为0的点,是深度无法确定的点。这些点的存在会使得到的三维场景产生很大的空洞。所以为了避免大部分的空洞出现,需要对像素值为0的点进行处理。本文采用的方法为拍摄获取同一视角下的n幅图像Ii,对这些图像Ii(x,y)的相同像素点(x, y)取均值再取整,得到处理后的图像I(x,y),如式(3)所示,同时,在处理的过程中,如发现深度值为0(即深度值为随机值)的点数多于深度值不为0的点数,则视此点的深度值为随机值。
I(x,y)=avgi=1,2…nIi(x,y)(3)
本文选取n的值为10,即获取10幅相同视角下的深度图像进行处理,其结果如图4所示。
2.2预处理
由于Kinect设备本身原因或测量环境等带来的影响,Kinect摄像机获取的深度图像通常会产生一定的噪声,而这些噪声会对后面的计算有着较大的不利影响,因此首先需要对原始的深度图像进行去噪。
一般图像滤波可以用式(4)表示:
I′(x,y)=1wp∑i,j∈Ωw(i,j)*I(i,j)(4)
其中,I′(x,y)为滤波噪声后的图像;Ω为像素(x,y)的邻域范围;w(i,j)为滤波器在(x,y)点处的权值;wp是唯一化参数;I(i,j)是原图像。
对于双边滤波[8],其权值系数由空间域权值ws和图像灰度域权值wr组成,即w=ws×wr,其中:
式中,σs、σr为基于高斯函数的标准差,决定了双边滤波器的效果,限定了像素点的相对空间位置和灰度变化范围。
2.3点云配准
由于Kinect摄像头的视角不同,因此可获得不同视角下的深度图像,这时就需要对这些深度图像进行配准,使其能匹配到同一坐标系下。常用的配准方法为ICP算法[911],其可提高配准精度。
ICP算法为基于最小二乘法的最优匹配方法,通过不断迭代变换找到目标点集和参考点集的旋转矩阵R和平移向量t,使两片点云满足某种条件下的最优匹配。假设待匹配点云为P={pi}Npi=1和X={xi}Nxi=1,对点集P中的每个点pi,寻找其在点集X上的最近邻点作为对应点,假设P={pi}Npi=1的对应点集为Y={yi}Npi=1,点云配准就是寻找P和Y之间的最优变换关系,即寻找最小的旋转矩阵R和平移向量t,使目标函数f最小。
2.4点云精简
在完成上述步骤之后,会产生大量多余的点云特征点,直接对其操作进行三角化会消耗大量内存和时间,因此需要对点云信息进行精简。
本文采用降采样滤波器对点云进行滤波。通过一个边长约为1 cm的小立方格,将点云空间划分成多个等体积的小立方体。然后,将这些立方体中的点用该立方体的重心来取代,如式(8)所示:
x=1n∑xi
y=1n∑yi
z=1n∑zi (8)
如下图5所示,在立方体内部,所有点的信息都会被中间的黑色的点所代替。
3实验结果
本文使用C++编程和PCL库实现了依靠点云信息的三维场景重构。本文的实验环境为Kinect传感器及相关设备;操作系统为32位Microsoft Window7的台式计算机一台,处理器为Intel酷睿i53470M,主频为3.2 GHz,内存为4 GB,硬盘为1 TB。
在本文所述的实验中,用Kinect传感器获取周围场景的彩色图像和深度图像,对深度图像进行处理并修补孔洞。根据Kinect传感器标定结果得到三维点云信息,并通过ICP算法对点云信息进行精确配准,然后对其进行三角化从而得到三维场景,结果如图6所示。
4结论
本文基于Kinect传感器进行物体三维重建,通过Kinect传感器获取场景的彩色和深度图像,通过对深度图像去噪并进行预处理以及点云匹配等捕捉得到场景的精确三维点云,从而重建出场景的三维模型。实验表明,本文提出的方法得到的虚拟三维场景比较精确,可以看到其细节信息。但是,本文方法还需要进一步优化,以在提高精确性的同时降低处理时间,从而达到更好的实时效果。
参考文献
[1] CHU J, NIE C M.Multiview point clouds registration and stitching based on SIFT feature[C]. In Proc. Int. Conf. Computer Research and Development, Shanghai, China, 2011:274278.
[2] HENRY P, KRAININ M, HERBST E, et al. RGBD mapping: using depth cameras for dense 3D modeling of indoor environments[C]. In Proc. Int. Symp. Experimental Robotics, New Delhi, India, 2010,477491.
[3] 李怀泽.基于旋转平台的多视角三维重建[D].杭州:浙江大学,2013.
[4] DELLART F, SEITZ S M, THORPE C E, et al. Structure from motion without correspondence[C]. Proc of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2000:557564.
[5] SEITZ S M, CURLESS B, DIEBEL J, et al. A comparison and evaluation of multi-view stereo reconstruction algorithms[C]. Proc of IEEE Conference on Computer Vision and Pattern Recognition,2006:519526.
[6] NEWCOMBE R A, IZADI S, HILLIGES O, et al. KinectFusion: realtime dense surface mapping and tracking[C]. Proc of the 2011 10th IEEE Int. Symposium on Mixed and Augmented Reality, ISMAR ’11, Washington, DC, USA, 2011: 127136.
[7] LEJEUNE A, PIERARD S, VAN DROOGENBROECK M. A new jump edge detection method for 3D camera[C]. Proc of the 2011 International Conference on 3D Imaging(IC3D),2011:17.
[8] TOMASI C, MANDUCHI R. Bilateral filtering for gray and color images[C]. Proceedings of the Sixth International Conference on Computer Vision, 1998:839846.
[9] 贺永兴, 欧新良, 匡小兰. 邻域特征在点云配准中的应用[J]. 计算机应用, 2012, 32(3): 762765.
[10] 蒋成成, 胡同森, 周维. 一种改进的迭代最近点算法[J]. 计算机系统应用, 2009, 18(8):8487.
[11] 郭连朋, 陈向宁, 徐万鹏, 等. 基于kinect传感器的物体三维重建[J]. 四川兵工学报, 2014(11):119123.