APP下载

实时三维重建算法的实现
——基于Kinect与单目视觉SLAM的三维重建

2014-08-05夏文玲顾照鹏杨唐胜

计算机工程与应用 2014年24期
关键词:单目光流三维重建

夏文玲,顾照鹏,杨唐胜

1.湖南大学 电气与信息工程学院,长沙 410000

2.北京大学深圳研究院 信息工程学院,广东 深圳 518000

实时三维重建算法的实现
——基于Kinect与单目视觉SLAM的三维重建

夏文玲1,顾照鹏2,杨唐胜2

1.湖南大学 电气与信息工程学院,长沙 410000

2.北京大学深圳研究院 信息工程学院,广东 深圳 518000

1 引言

基于视觉的三维重建技术,是指利用数字摄像机作为图像传感器,综合运用图像处理、视觉计算等技术进行非接触三维测量,用计算机程序获取物体的三维信息[1]。在计算机内生成物体三维表示主要有两类方法,一类是利用几何建模软件,如3DMAX、Maya、AutoCAD、UG等,另一类则是通过一定的手段获取真实物体的几何形状,主要包括数据获取、预处理、点云拼接和特征分析等步骤。

目前在单目视觉的同步定位与地图创建(Monocular Simultaneous Location and Mapping,MonoSLAM)系统中[2],3D场景深度信息的获取是十分困难的,Davison研究团队推出反向深度算法获取深度信息[3],而采用深度相机主动获取场景中的深度信息,在很大程度上降低了该算法的复杂度。目前深度相机主要分为两类,一类是TOF相机,一类即为Kinect(Kinect for Xbox 360)[4]。Kinect是由微软开发的应用于Xbox 360主机的周边设备。在基于Kinect实现的RGB-D摄像机SLAM系统研究方面,Nikolas利用Kinect提供的RGB-D相机实现了一个实时的视觉SLAM系统,并将这一系统集成到ROS(Robot Operating System)中[5]。Henry等利用Kinect实现了一个交互的实时三维重建系统RGB-D Mapping[6-7],该系统不进行实时的ICP[8]配准,而是根据用户需要,选取不同的关键帧进行配准,其重建出的点云能很好地与建筑物俯视图相吻合,但该系统实际运行速度不高,未进行ICP配准运行帧率为5 frame/s,而进行ICP配准后单帧处理时间至少需要500 ms。微软研究院的Kinect-Fusion系统给出了一种基于GPU并计算的实时的定位与重建系统,实现了动态场景的增强现实应用,该系统利用GPU实现了实时ICP配准,并同步生成环境地图的三维表面[9-10]。

由于ICP算法计算复杂度高,而利用GPU加速的ICP算法对于硬件要求较高,制约了其使用范围。由于目前的单目视觉SLAM算法的实时性和准确性都有一定保证,因此本文设计一种基于扩展卡尔曼滤波(EKF)的单目视觉SLAM与Kinect的室内环境实时三维重建方法,并与基于光流跟踪算法(Kanade Lucas Tomasi,KLT)[11]与Kinect实现的三维重建方法相比较,实验结果证明该方法具有实时性好,一致性强等优点。

2 Kinect工作原理

Kinect有三个镜头,中间的镜头是RGB彩色摄影机,左右两边镜头分别为红外线发射器和红外CMOS摄影机所构成的3D结构光深度感应器。Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。

2.1 Kinect红外摄像机坐标系下深度的计算

Kinect利用红外激光投影和红外摄像机组成一组红外结构光视觉设备,计算空间点相对于红外摄像机的深度,如图1所示为其原理图。首先由红外激光投影机向环境中投影红外随机点结构光,然后利用红外摄像机进行接收,并在每一像素周围的±64像素范围内,利用9×9或者7×7的图像patch,利用NCC(Normalized Cross Correlation)对图像随机点进行匹配,获得原始视差,进而利用红外相机的内参数以及基线长度获得环境三维点在红外相机下的深度信息,如公式(1)所示:

其中ZIR为深度值,b为基线长度,fIR为红外摄像机的焦距,d为视差。红外摄像机的内参数矩阵KIR:

(fuIR,fvIR)为红外摄像机焦距,(u0IR,v0IR)为红外摄像机主点坐标。

图1 Kinect原理图

2.2 彩色摄像机坐标下的坐标计算

Kinect的RGB摄像头采集到的是环境的彩色图像,RGB摄像头的内参数矩阵为KRGB:

上式中(fuRGB,fvRGB)为RGB摄像机焦距,(u0RGB,v0RGB)为RGB摄像机光心。IR摄像机与RGB摄像机的刚体变化TRGB-IR=[RRGB-IR,tRGB-IR]。

对于空间中的一点P,其在彩色摄像机坐标下的三维坐标计算流程如图2所示,由Kinect获得P点的视差d,根据式(1)计算得到P点的深度ZIR,进一步通过红外摄像机内参数获得P点在红外摄像机下的三维坐标:

通过IR摄像机与RGB摄像机的旋转平移关系得到P点在RGB摄像机坐标下的三维坐标,最后引入RGB摄像机内参数计算得到图像坐标(uRGB,vRGB)。

图2 RGB摄像机坐标下的空间点坐标计算流程

3 基于Kinect的单目视觉EKF-SLAM框架

在视觉SLAM系统中,摄像机的状态xc由世界坐标系下摄像机坐标位置rT、旋转四元数qT、线速度vT、角速度ωT组成:

地图特征状态向量由特征点的三维世界坐标组成:

摄像机状态向量和特征点状态向量组成SLAM系统状态向量:本文中SLAM系统中采用匀速模型作为过程模型,得到相机状态预测方程[12]:

其中[nv,nω]T为过程噪声。

空间任何一点P在图像上的成像位置可以用针孔模型近似表示,如图3所示。即任何点P在图像上的投影位置 p,为光心O与P点的连线OP与图像平面的交点,有如下关系式:

其中(x,y)为P点在成像平面下的坐标,(XC,YC,ZC)为空间点P在摄像机坐标下的坐标。

图3 针孔成像模型

本文中使用的是特征地图,观测量由一组成功匹配的地图特征点的图像坐标组成:

其中n表示匹配成功的特征点数目,Ci=(uivi)T为第i个特征点的图像坐标。引入测量噪声ηi得到测量方

(fufv)为Kinect彩色摄像机焦距,(u0v0)为Kinect彩色摄像机光心,R、t为彩色摄像机的外参数,(xicyiczic)T为特征点在摄像机坐标下的三维坐标,XW为特征点在世界坐标系下的坐标。

利用Kinect获得特征点在彩色摄像机坐标下的三维坐标,根据当前SLAM输出摄像机位姿(rt,qt)初始化特征点在世界坐标系下的三维位置。设新增特征点为 fn+1,其对应在Kinect彩色摄像机下的坐标估计和方差为:

其中σxRGB,σyRGB,σzRGB为Kinect的输出转换到彩色摄像机坐标下的三个方向的标准差。新增特征点之前的系统状态向量和协方差分别为 x和P,则新增特征点 fn+1之后系统状态变为:

整个系统流程图如图4所示,在定位过程中,若当前彩色摄像机可见重建点云总数小于设定阈值(像素总数的2/3),就利用当前彩色摄像机SLAM算法得到的外参数Tcw=[Rcw,tcw]将彩色摄像机下的三维点云调整到世界坐标系下,并加入重建点云中。否则认为场景变化不大,不对重建点云进行调整。

4 实验及结果分析

图4 系统流程图

本文实验场景为办公室,使用深度摄像机Kinect,RGB相机图像分辨率为640×480。使用Fast角点检测算法[13],特征描述子为11×11的图像Patch。本文程序基于VS2010的C++实现上述算法,所有实验都是在Intel双核2.93 GHz CPU的计算机上运行。为了验证本文方法的实时性和稳定性,手持Kinect在场景中进行自由运动采集数据,并在系统运行时实时地利用EKF-SLAM算法计算出摄像机位置和姿态,运动轨迹如图5所示,实时三维重建实验结果如图6所示。

图5 运动轨迹

图6 不同视角下基于Kinect与单目视觉SLAM的三维重建结果

利用光流跟踪算法可以快速获取相邻帧之间的特征点匹配,由于Kinect可以得到图像特征点相应的深度信息,从而可以得到相邻帧之间三维点的匹配关系。基于已获得的三维点匹配结果后,优化相邻帧之间的刚体变换参数。在上述相同的环境条件以及处理方式下,利用Fast角点检测,将重建点云投影到彩色摄像机下,当可见点云总数小于设定阈值(像素总数的2/3),将当前的三维点云调整到世界坐标系下,并加入重建点云中。这样就得到了基于光流跟踪与Kinect的三维重建结果,如图7所示。由于随着特征点数目的增多,视觉SLAM算法的时间复杂度会逐渐增大,本文实验中SLAM算法检测到的特征点数目限制在100以内。此时帧率为30 frame/s。而基于Kinect与光流跟踪的三维重建算法由于KTL光流跟踪的运算量较大,帧率只能达到15 frame/s。

图7 基于光流跟踪与Kinect的三维重建结果

基于上述实验,选择环境中21×14.85的黑色方格和电脑两个物体,查看它们在两种方法下的三维重建细节图对比,由Kinect的RGB相机拍摄的真实场景的图片,如图8所示。

图8 三维重建细节图对比

如图8所示,(a)、(c)为基于SLAM的三维重建结果细节图,(b)、(d)为基于光流跟踪的三维重建细节图,(e)、(f)为由RGB相机拍摄的真实场景的图片,由图8明显看出(b)中坐标产生了偏移,(d)中细节出现匹配错误;(a)与(c)没有较大的误差。

基于上述实验结果,可以看出基于Kinect与单目视觉SLAM算法实现的三维重建方法在保证系统实时运行的前提下,不同帧加入的点云匹配之间,没有出现较大的不一致现象。而基于光流跟踪与Kinect的三维重建方法中,由于光流匹配中存在着错误匹配,并且光流跟踪没有考虑到Loop-Closure问题,因此得到的三维重建有漂移现象,出现了重建结果错误的情况。

5 结束语

本文针对基于Kinect与单目视觉SLAM的三维重建展开研究,并与基于Kinect与光流跟踪算法结果进行比较,实验结果表明该方法具有实时性好,一致性强等优点,在一定程度上提高了地图重建点云的精度。目前由于Kinect自身精度的原因,本文方法主要用在室内场景的实时三维重建。在未来的工作中,将在现有工作的基础上,在算法实现、系统集成、室外环境的三维重建算法等方面开展进一步的研究。

[1]佟帅,徐晓刚,易成涛,等.基于视觉的三维重建技术综述[J].计算机应用研究,2011,28(7):2012-2015.

[2]顾照鹏,董秋雷.基于部分惯性传感器信息的单目视觉的同步定位与地图创建方法[J].计算机辅助设计与图形学学报,2012,24(2).

[3]Civera J,Davison A J.Inverse depth parametrization for monocular SLAM[J].IEEE Transactions on Robotics,2008,24(5):932-945.

[4]王奎,安平,张兆杨,等.Kinect深度图像快速修复算法[J].上海大学学报,2012,18(5).

[5]Engelhard N,Endres F,hess J,et al.Real-time 3D visual SLAM with a hand-held RGB-D camera[C]//Proceedings of the RGB-D Workshop on 3D Perception in Robotics at the European Robotics Forum,2011.

[6]Henry P,Krainin M,Herbst E,et al.RGB-D Mapping:using depth cameras for dense 3D modeling of indoor environments[C]//Proceedings of the 12th International Symposium on Experimental Robotics(ISER),2010.

[7]Du H,Henry P,Ren X,et al.Interactive 3D modeling of indoor environments with a consumer depth camera[C]// Proceedings of the 13th International Conference on Ubiquitous Computing,2011:75-84.

[8]Besl P J,McKay N D.A method for registration of 3-D shapes[J].IEEE Trans on Pattern Analysis and Machine Intelligence,1992,14(2):239-256.

[9]Izadi S,Newcombe R A,Kim D,et al.KinectFusion:realtime dynamic 3D surface reconstruction and interaction[C]// Proceedings of Association for Computing Machinery’s Special Interest Group on Computer Graphics and Interactive Techniques(ACM SIGGRAPH 2011),2011.

[10]Izadi S,Kim D,Hilliges O,et al.KinectFusion:real-time 3D reconstruction and interaction using a moving depth camera[C]//Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology,2011:559-568.

[11]Lucas B D,Kanade T.An iterative image registration technique with an application to stereo vision[C]//International Joint Conference on Artificial Intelligence,1981:674-675.

[12]Montiel J M M,Civera J,Davison A J.Unified inverse depth parametrization for monocular SLAM[C]//Proceedings of Robotics:Science and Systems,2006.

[13]Rosten E,Porter R,Drummond T.Faster and better:a machine learning approach to corner detection[J].IEEE Trans on Pattern Analysis and Machine Intelligence,2010,32.

XIA Wenling1,GU Zhaopeng2,YANG Tangsheng2

1.College of Electrical and Information Engineering,Hunan University,Changsha 410000,China
2.School of Computer and Information Engineering,Peking University Shenzhen Graduate School,Shenzhen,Guangdong 518000,China

As an important branch of the computer vision technology,the 3-D reconstruction techniques based on the Monocular vision get more and more attention,for it’s simple,low cost and easy to implement.This paper launches a study on the algorithm of the SLAM(Simultaneous Localization and Mapping)by introducing the RGB-D camera Kinect to obtain the depth information of the 3D scene.An algorithm of the 3-D reconstruction based on the Kinect and monocular vision SLAM is achieved.

monocular vision;3-D reconstruction;Simultaneous Localization and Mapping(SLAM);Kinect

作为计算机视觉技术的一个重要分支,基于单目视觉的三维重建技术以其要求简单、成本低廉、易于实现等优点,得到了越来越多的关注。在室内环境下就智能机器人的同步定位以及环境地图创建(SLAM)算法展开了研究,引入RGB-D相机Kinect直接获取3D场景的深度信息,实现了一种基于单目视觉SLAM与Kinect的实时三维重建方法。

单目视觉;三维重建;同步定位以及环境地图创建;Kinect

A

TP391

10.3778/j.issn.1002-8331.1301-0306

XIA Wenling,GU Zhaopeng,YANG Tangsheng.Real-time 3-D reconstruction algorithm based on Kinect and MonoSLAM.Computer Engineering and Applications,2014,50(24):199-203.

中国医学科学研究院北京协和医院“863”计划(No.754214019)。

夏文玲(1987—),女,硕士研究生,主要研究方向为计算机视觉导航与定位、嵌入式系统;顾照鹏(1981—),男,博士研究生,讲师,主要研究方向为基于视觉的实时定位系统;杨唐胜(1967—),男,博士研究生,副教授,主要研究方向为智能算法、智能仪器。E-mail:xia1234zhao@126.com

2013-01-28

2013-04-11

1002-8331(2014)24-0199-05

CNKI网络优先出版:2013-05-13,http∶//www.cnki.net/kcms/detail/11.2127.TP.20130513.1601.003.html

◎信号处理◎

猜你喜欢

单目光流三维重建
利用掩膜和单应矩阵提高LK光流追踪效果
基于Mimics的CT三维重建应用分析
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
单目SLAM直线匹配增强平面发现方法
基于关系图的无人机影像三维重建
基于CAD模型的单目六自由度位姿测量
三维重建结合3D打印技术在腔镜甲状腺手术中的临床应用
多排螺旋CT三维重建在颌面部美容中的应用
一种改进的基于全局最小能量泛函光流算法
融合光流速度场与背景差分的自适应背景更新方法