kinect深度数据随机跳变误差分析及修正算法研究

2014-09-17 14:40:02樊景超周国民
电脑知识与技术 2014年22期
关键词:滤波

樊景超 周国民

摘要:采用微软空间扫描设备kinect的测距数据会产生随机跳变误差现象。通过分析误差原因及实验验证了跳变误差随距离增加曲线上升的特点。为修正该误差设计了一个基于像素滤波技术的误差修正算法。在kinect有效距离内连续观测三个待测物的空间深度数据和滤波数据。经实验验证在使用10帧深度数据可以将跳变误差在1.5m以内的跳变误差控制在5mm以内;1.5~3m以内的随机跳变误差控制大部分在10mm以内;超过3m的随机误差均匀分布在25mm以内。

关键词:随机跳变;深度数据;滤波;kinect

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)22-5328-05

1 概述

三维空间深度数据在监控,机器人技术和医学等应用领域有很大潜力。目前阻碍这一应用的主要原因专业设备价格昂贵,入门级的低成本空间传感技术设备的引入是推广这一应用的关键[1]。微软于2010年推出体感设备kinect,该设备主要用于Xbox游戏中与用户进行自然交互,而不需要任何辅助设备[2]。然而 Kinect的数据捕获特性吸引了国外研究人员从其他领域[3-11]进行研究。国内研究人员也对kinect在医疗、教育、人体识别和空间建模等领域进行了相关研究[16-28]。

Kinect感应器能够同时捕捉深度和彩色图像在高达30 fps的帧速率的深度和颜色数据,其中包含约30万点的点云数据整合在每一帧。入门级设备低成本的代价是降低对空间数据精度的控制。Kinect设备的成功主要归功于其对空间深度数据的测量,然而其空间测量的主要设备发射器和接收器由于没有重合在一起导致获取的深度图像会产生两方面的误差一个是由于物体遮挡而无法令接受器接收反射数据而产生的深度图像黑洞即“伪影”现象;另一个是对于物体测距不稳定而产生随机跳变现象。前人的研究大多主要针对“伪影”的消除进行了很好的研究,而对于随机跳变现象的研究相对较少。为了实现传感器在应用程序中基于深度数据进行高精度控制,对随机跳变的误差分析和滤波研究是必要的。

本文首先介绍kinect深度测距的原理及其误差产生的原因,并对误差进行了测试,然后对跳变误差进行滤波研究,使得深度数据的误差可以控制在一定的精度范围内。

2 Kinect随机跳变误差现象及分析

Kinect是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字,其设备如图1所示。Kinect一共有三个摄像头,中间一个是RGB摄像头用来获取640*480的彩色图像,每秒钟最多获取30帧图像;两边的是深度传感器,左侧的是红外线发射器,右侧的是红外线接收器,用来检测玩家的相对位置。Kinect的两侧是一组四元麦克风阵列,用于生源定位和语音识别;下方还有一个内置马达的底座,可以调整俯仰角。

Kinect采集三维图像的光学部分主要包括两个部件:红外线发射器和红外线/VGA摄像头组。其工作原理[14]是,红外线发射器发出红外线覆盖整个Kinect的可视范围,摄像头组接收反射回光线来识别玩家的距离和特征。红外摄像头可以识别到的是物体的“深度场”(Depth Field),其中每一像素的颜色代表了那一点物体到摄像头平面的距离。如图2所示,是实验室内不同空间距离的物体的空间深度图。离摄像头近的物体呈浅色等,而离摄像头远的物体则呈暗灰色。

然而kinect获取的空间深度数据并不稳定,使用帧差法即将当前帧与前一帧深度数据在在有效取值(0.8~4米)的数据进行等值判断:如果深度数据没有变化在改坐标点使用蓝色显示,如果不等则用白色显示,其他区域用原值进行显示。如图3所示kinect的室内场景的空间深度数据出现了大量的白色噪声点,而这些白色噪声随着时序变换在不同位置随机出现,在连续观测下呈现跳动的视觉效果,这就是随机跳变现象。

Kinect的三角测量原理[12]如图4所示。图中b为基线距离,即红外投影仪与红外相机之问的距离,f为红外相机的焦距,Z为kinect光轴的方向。参考平面距离kinect平面的距离Zo为已知的,当红外投影仪将敗斑投射到参考平面附近的平面,该散斑在红外相机成像的时候相对于参考散斑在基线方向上会存在一定位置的漂移,所有散斑的漂移都可以通过一个简单的图像相关过程测得,这样就可以得到一幅视差图,然后对于空间中的任一点,其与kinect之间的距离就可以通过对应的视差获得。

以图中的目标点k为例,假设在参考平面上有一个物体,其表面上的O点处的散斑会被红外相机捕获,当该物体稍微位移一段距离后,红外相机中的散斑也会在基线方向位移一段距离d,这段距离就是k点对应的视差距离,从三角形的相似性,可以得出:

Kinect深度测量的精度指的是其空间分辨率,也就是其沿着光轴方向能够分辨出不同等级视差所需要的距离,其精度越高,所需要的距离越低。设分辨不同等级视差所需要的空间距离为[ΔZ],Z(do)是以量化视差测量值do为参数的深度函数,那么这个空间距离[ΔZ],就可以简单的用以相邻等级的量化视差测量值为参数的两个深度函数相互作差得到,结果如公式4所示。

式4中, [ΔZ]越小,说明kinect的精度越高,从式4中可以看出kinect的精度也是物体和kinect之间的距离的平方成反比的。kinect在工作的时候会存在深度测量值偏离平均值且空间分辨率越来越低的情况,这就是造成深度图像中深度值随时间跳变的主要原因[15]。

3 基于像素滤波的误差修正算法

3.1 基本原理

根据kinect深度数据随机跳变的特点,该文使用像素滤波进行去噪处理并检验去噪效果。像素滤波是典型的线性滤波算法,该算法将同一坐标位置的时序数据进行加权滤波并作为当前修正数据。该算法的实现方式是使用不同时刻的前后数据帧作为STL队列的一个元素,当队列元素个数少于设定值时数据帧只装入队列不进行运算,当元素个数大于设定值时则进行出栈入栈操作。由于同一帧深度数据包含的30万个数据点之间相互独立,因此使用多线程对30万个数据点进行并行计算。并行计算的内容是将不同数据帧在同一坐标位置的深度数据进行依次加权平均,最新的数据帧获得的权值最大。

3.2 实验方法与材料

实验材料有:Kinect for windows 设备一台,联系 Thinkstation 工作站一台(3.7G双核CPU,6GB内存),卷尺一个。在实验室内准备了使用果树树枝和防止苹果树叶和苹果果实(直径9cm)组装了一个观测目标,如图5所示。主要将苹果的中心点作为跟踪测量点,以5cm为间隔,不断拉大待测物体和kinect感应器之间的距离,从0.9m~3.9m连续记录待测目标的深度图像和深度数据。

实验方法:普通深度数据是一个只有深度值按坐标顺序排列的数据序列。为了便于程序查找,实验将坐标和深度值形成一个(X,Y,D)的字符串保持在文本文件中。根据苹果的深度图像的坐标点形成一个反向查找的坐标文件。程序根据反向查找的坐标文件读取到三个待测物的坐标值字符串,然后遍历文件夹中的文件,依次查找坐标的空间深度值,然后导入到excel文件中,再进行分析。

3.3 实验结果与分析

3.3.1 随机跳变误差

实验首先检测kinect测距数据是否正确,图6是三个待测物的空间测距随实验距离变化的统计表。从图中可以看出,三个待测物的kinect深度数据随着基座距离的不断增加呈线性增长,说明了kinect在0.8~4m这个有效区间内的深度值还是相对可靠的。

图7是三个待测物在不同测距上跳变误差的统计图表。通过采集10帧数据,然后获取最大、最小值的差值作为该待测物在当前距离下的跳变误差。通过图7可以直观的看出,三个待测物的随机跳变误差主要分布在三个区域:一个是X坐标轴上误差为0;第二个区域是中间随距离变化呈曲线上升态势。第三个区域是离散误差区域,误差相对较大,随着距离增加也成曲线上升态势。从统计图中可以看出:当距离在1m附近相对集中10mm以内;距离在1~2m范围内的误差主要集中在10mm上下的范围;在2m~3m范围的随机跳变误差主要集中10~20mm以内,但是零星的大误差开始出现;当距离超过3m时随机跳变误差已经超过30mm。整个统计图也体现了随机跳变的特点,说明kinect所采用的三角测量法可以保证深度数据一部分的测距稳定。

3.3.2 滤波效果

图8是统计像素滤波在不同距离(0,9~3,9m,间隔5cm)和不同帧数(4~18,间隔2) 情况下的随机跳变误差统计图表。图中X轴方向是基座到kinect平面的距离值,Y轴方向是像素滤波法参与运算的数据帧个数,Z轴方向是跳变误差的统计值,统计方法同上。通过图表可以直观的看出沿X轴方向随机跳变误差在滤波情况下误差缓慢增加,而沿Y轴方向随着帧数的增加,随机跳变误差不断降低,而且超过20mm的误差基本被过滤掉了。从统计图可以看出在使用10~14帧像素滤波对随机跳变误差过滤效果最好。

图9是三个待测物在不同测距上对跳变误差使用像素滤波(10帧数据)的统计图表。通过采集10帧数据,然后获取最大、最小值的差值作为该待测物在当前距离下的跳变误差。通过图9可以直观的看出:在1.5m以内的跳变误差控制在5mm以内;1.5~3m以内的随机跳变误差控制大部分在10mm以内;超过3m的随机误差均匀分布在25mm以内。

4 结束语

本文介绍了Kinect感应器获取的深度数据随机跳变现象的理论和实验验证,最后进行了滤波研究。实验证明kinect空间深度数据的随机跳变误差随着距离的增加呈曲线上升态势且误差较大。通过运用像素滤波法,参与运算的数据帧数在10~14帧时的滤波效果最好。

参考文献:

[1] Microsoft. Kinect. Available online: http://www.xbox.com/en-us/kinect/ (accessed on 14 December 2011).

[2] PrimeSense. Available online: http://www.primesense.com/ (accessed on 14 december 2011).

[3] Amit, B.Dagan, E. Gershom, K.Alon, L. Yinon, O.; Yaron, Y. Enhanced interactive gaming by blending full-body tracking and gesture animation. In roceedings of the ACM SIGGRAPH ASIA 2010 Sketches, Seoul, Korea, 15-18 December 2010.

[4] Andrew, D.W. Using a depth camera as a touch sensor. In Proceedings of the ACM International Conference on Interactive Tabletops and Surfaces, Saarbrucken, Germany, 7-10 November 2010.

[5] Chang, Y.J.;Chen, S.F. Huang, J.D. A Kinect-based system for physical habilitation: A pilot study for young adults with motor disabilities. Res. Dev. Disabil. 2011, 32, 2566-2570.

[6] Gottfried, J.M.;Fehr, J. Garbe, C.S. Computing range flow from multi-modal Kinect data. In Proceedings of the 7th International Symposium on Visual Computing, ISVC 2011, Las Vegas, NV, USA, 26-28 September 2011; Volume 6938, pp. 758-767.

[7] Stowers, J.; Hayes, M.; Bainbridge-Smith, A. Altitude control of a quadrotor helicopter using depth map from Microsoft Kinect sensor. In Proceedings of the IEEE International Conference on Mechatronics, ICM 2011, Istanbul, Turkey, 13-15 April 2011; pp. 358-362.

[8] Walker, B. Caroline, P. William, D.S. Using depth information to improve face detection. In Proceedings of the 6th International Conference on Human-Robot Interaction, Lausanne, Switzerland, 6-9 March 2011.

[9] Benavidez, P. Jamshidi, M. Mobile robot navigation and target tracking system. In Proceedings of the 6th International Conference on System of Systems Engineering: SoSE in Cloud Computing, Smart Grid, and Cyber Security, SoSE 2011, Albuquerque, NM, USA, 2011; pp. 299-304.

[10] Raptis, M.Kirovski, D. Hoppe, H. Real-time classification of dance gestures from skeleton animation. In Proceedings of the 10th Annual ACM SIGGRAPH/Eurographics Symposium on Computer Animation, SCA 2011, Vancouver, BC, Canada, 5-7 August 2011. pp. 147-156.

[11] Riche, N.; Mancas, M.; Gosselin, B.; Dutoit, T. 3D Saliency for abnormal motion selection: The role of the depth map. In Proceedings of the 8th International Conference on Computer Vision Systems, ICVS 2011, Sophia Antipolis, France, 20-22 September 2011; Volume 6962, pp. 143-152.

[12] Kourosh Khoshelham. Accuracy and Resolution of Kinect Depth Data for Indoor Mapping Applications. Sensors 2012, 12, 1437-1454.

[13] 吴国斌.Kinect人机交互开发实践[M].北京:人民邮电出版社,2013:4-5.

[14] 余涛.kinect应用开发实践[M].北京:机械工业出版社,2012:41-45.

[15] 赵旭.kinect深度图像修复技术研究[D].大连:大连理工大学,2013.

[16] 宋宏泉.虚拟现实技术在现代医学教育中的应用[J].齐齐哈尔医学院学报,2006,8(27):984-985.

[17] 陈晨,王亚平,刘小鸿,等.基于kinect体感系统的虚拟现实技术在医学教育中的可行性初探[J].中国医学教育技术,2012,6(26):667-670.

[18] 吕开阳.kinect体感技术在动物外科实验教学中的应用及展望[J].中国医学教育技术,2012,2(26):171-173.

[19] 黄康全,陈碧金,等.kinect在视频会议系统中的应用[J].广西大学学报:自然科学版,2011,36:308-314. (下转第5349页)

(上接第5332页)

[20] 韩旭.应用kinect的人体行为识别方法研究与系统设计[D].济南:山东大学,2013.

[21] 邓小园.基于kinect运动捕捉的高尔夫挥杆分析与辅助训练系统的研制[D].北京:北京邮电大学,2013:7-9.

[22] 杨林.基于kinect的人体目标检测与跟踪[D].大连:大连海事大学,2013:8-15.

[23] 马庆.基于Kinect的实时人体动画合成及重定向技术研究[D].杭州:浙江工业大学,2012:11-15.

[24] 杨晓敏,张奇志,周亚丽.基于kinect深度信息的人体运动跟踪算法[J].北京信息科技大学学报,2013,1(28):33-36.

[25] 魏尚.基于kinect深度图像的三维人脸识别技术研究[D].天津:天津师范大学,2012.

[26] 杨景旭.利用kinect估计人体头部姿态[D].南京:南京理工大学,2012.

[27] 丁友东,吴学纯.基于kinect的人体对象视频自动分割[J].电子测量技术,2013(4):48-50.

[28] 黄露丹,严利民.基于kinect深度数据的人物检测[J].计算机技术与发展,2013,4(23):121-124.

猜你喜欢
滤波
基于混合滤波LBP和PCA的掌纹识别
测控技术(2018年2期)2018-12-09 09:00:34
一种改进Unscented粒子滤波及其应用研究
测控技术(2018年3期)2018-11-25 09:45:32
一种新的InSAR干涉相位滤波方法
基于自适应Kalman滤波的改进PSO算法
RTS平滑滤波在事后姿态确定中的应用
应用于MEMS_SINS/GPS组合导航系统的H_∞容错滤波算法
基于线性正则变换的 LMS 自适应滤波
遥测遥控(2015年2期)2015-04-23 08:15:18
基于四元数互补滤波的无人机姿态解算
基于随机加权估计的Sage自适应滤波及其在导航中的应用
基于LS—M滤波的动力平滑定轨