基于Kinect的车载手势识别辅助系统设计

2017-03-18 06:34卢亚军李天松黄艳虎
电视技术 2017年2期
关键词:控件手势骨骼

卢亚军,李天松,黄艳虎

(桂林电子科技大学 信息与通信学院,广西 桂林 541004)

基于Kinect的车载手势识别辅助系统设计

卢亚军,李天松,黄艳虎

(桂林电子科技大学 信息与通信学院,广西 桂林 541004)

车联网作为战略性新兴产业中智能化汽车和物联网两大领域的重要交集,受到广泛关注。通过车联网、地理位置服务(Location Based Service)、手势感应三种技术的分析,将其整合成综合系统,实现手势操作在车载系统中的多媒体功能和地理位置服务。采用Kinect作为手势感应设备,建立WPF工程,设计界面并进行具体功能编程。通过百度LBS开发者平台提供的相关API进行数据调用,实现LBS服务。测试结果表明,系统具有功能多样、灵活方便的特点,具有良好的应用前景。

Kinect;车联网;手势识别;地理位置服务

信息领域正经历着由互联网到物联网的新一轮技术革命。车联网作为战略性新兴产业中物联网和智能化汽车两大领域的重要交集,受到国内外相关研究机构的高度重视[1]。车联网是装载在车辆上的电子标签通过无线识别等技术构建的一种特殊移动自组织网络。车联网通过车辆和道路之间进行有效的信息交互, 实现智能交通的管理和信息服务[2]。

随着汽车和公路的日益智能化,越来越多的汽车和路边基础设施装备了通信设备,整个车联网以及针对车联网的相关应用发展已经成为必然的趋势[3]。车联网可应用在紧急信息通告、避免交通事故发生、实时交通路况监测等多种方面。车联网不仅可以保证辅助驾驶[4],还可以为车主提供丰富的娱乐服务,如何实现车内设备的多功能化也是近来的研究热点。

同时,处理信息的方式也正在发生不断改变。虚拟现实技术成为人类处理信息的重要产物,并且带动着信息时代新的发展。手势识别作为一种重要的人机交互方式,受到了广泛关注。近年来,基于Kinect的开发应用成为人机交互领域的研究热点之一。 手势识别可以促进体感游戏、机器人控制、手语识别等诸多方面的应用发展[5]。

通过对车联网、LBS服务、手势感应三种技术的特点分析整合,各取其优,整合成综合系统,能够使用手势操作在车载系统进行操作,如音视频播放等,对于车外联网系统进一步完成信息交互、交通导航、卫星定位等服务功能。

1 设计总思路

车联网系统根据服务功能的不同大致可分为车内系统和车外系统。车内系统主要实现车内设备的操作,车外系统要联系到车外设备和空间,包括互联网的通信等。车内系统的功能包括音频播放、视频播放、照片查看、摄像功能,车外系统的功能包括导航定位、周边信息检索、地图查看、三维图显示、卫星图查看等。

Kinect硬件作为传感器采集信号,开发语言选用C#编程语言建立WPF工程,由XAML文件进行界面设计,CS文件进行算法设计和具体功能编程,这一切在PC端使用Windows7系统开发。联网部分交互端利用百度车联网API进行指定功能的调用,编写相关代码即可。

搭建好系统环境后,将所有功能操作集成到一个应用软件中,系统结构总图如图1所示。

图1 系统结构总图

2 Kinect开发

本系统用到的硬件主要是Kinect,它是一种能获取实时景深数据的3D体感摄影机。随着现代生活中的摄像头、重力传感器、指纹识别等各类传感器的广泛应用,虚拟现实技术有很大的发展空间。Kinect将这些技术加以融合,对于人机交互领域具有新的启示意义。

Kinect传感器设备可以搜集传输以下3种原始的数据信息(或称为数据流),分别为深度流、图像流、原始音频流,这3种方式收集的数据流信息又分别对应3种信息处理方式,即骨骼追踪、语音识别、身份识别。动作识别的基础是骨骼追踪,动作可以抽象理解为骨骼关节点的状态或运动序列。Kinect通过基于“像素级”的分析识别出人体部位,然后计算得到人体骨骼点,采集所有的骨骼点绘制“火柴人”。Kinect骨骼点分布图[5-6]如图2所示。

图2 Kinect骨骼点分布图

实现用手势感应操作系统,要对某个动作进行定义,然后触发相关的程序实现相应的功能。同时,骨骼数据流本身具有一定程度上的抖动,引起信号的噪声,所以要进行优化处理。一般从两个角度考虑:1)设计大的噪声阈值,使操作动作能够严格地区分识别出来;2)设计平滑降噪算法,对噪声压缩处理,使识别范围精确[7]。

例如,系统中将“左手与头部呈45度角”这个动作定义为退出动作,实现的步骤如下。

1)定义骨骼点

Skeleton[] allSkeleton = new Skeleton[6];//定义骨骼数据数组

SkeletonPointhandRight=s.Joints[JointType.HandRight].Position; //定义右手节点

SkeletonPointhandLeft=s.Joints[JointType.HandLeft].Position;

//定义左手节点

SkeletonPoint head=s.Joints[JointType.Head].Position;

//定义头部节点

SkeletonPointshouldCenter=s.Joints[JointType.ShoulderCenter].Position; //定义肩部节点

2)骨骼消抖

Smoothing = 0.5f; //平滑差值运算

Correction = 0.5f; //改正 纠正

Prediction = 0.5f; //改正修正值

JitterRadius = 0.05f; //极点半径

MaxDeviationRadius = 0.04f; //偏差半径

3)骨骼阈值

double escapeThreshhold = 0.5d; //偏差阈值为0.5 m

4)录像数据,分辨率640×480帧数30

This.sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640×480Fps30);

5)动作触发

bool IsEscape = head.Y-handLeft.Y>escapeThreshhold && ((handLeft.X-ead.X)*(handLeft.X-head.X)>(escapeThreshhold *escapeThreshhold)); //选择该触发动作为作为退出动作

Kinect的开发是通过Developer Toolkit Browser v1.8.0 (Kinect for Windows)软件进行的。Kinect for windows SDK提供了非常庞大具体的软件库和工具。Kinect传感器通过该软件库与应用层程序API进行交互,交互过程如图3所示。

图3 Kinect软件库与API交互过程

3 LBS服务的实现

车联网用户可以通过移动网络访问电子地图,同时对地图中添加数据层和兴趣点,也丰富了服务内容,用户可以方便地查询周边信息(餐饮、住宿、导航、路径等)来帮助自己做出更加合理可行的决策,这就是地理位置服务(Location Based Service)。通过调用HTTP API实现LBS应用服务器的功能。

LBS模块主要实现车外系统与互联网的交互,包括如下功能:地图查看(移动、放大、缩小),导航定位,3D全景图切换,关键字检索,热力图查看,卫星图切换。该功能主要通过html语言编写,通过调用百度LBS开发者平台提供的相关API实现数据的调用。

其中,关键字检索功能需要进行文本输入,但是对于手势感应来说较为困难。Kinect本身具有传声器阵列,使用语音输入再配以现成的语音识别软件可以较为轻易地实现,达到良好的演示效果。同时语音输入门槛低、执行效率高,对于不同文化的人都较为适用,大大降低了打字输入的工作量。

4 应用软件各模块实现

系统主界面模块主要完成系统的初始化功能,即启动传感器使其能够正常检测手势信号,同时设定良好的用户界面,将其余各模块的功能显示在主页面上供用户选择,并且实现相应的触发事件。系统初始化实现以下过程,首先判断是否连接,进而接收用户的深度流数据和骨骼流数据,同时外加Kinect控件追踪手势信息,流程图如图4所示。

图4 系统初始化流程图

系统主界面的界面设计,考虑到手势感应操作范围较大,所以采用WIN8的metro风格,界面区分度大,易于辨认和操作,设定中同时考虑应用的可扩展性,特意预留相应的板块接口,所以引入了翻页滚动操作。

音乐播放模块实现音频文件的播放操作,具备基本的播放器功能。音乐播放模块功能示意图如图5所示。音乐播放模块用到的主要布局控件有以下几个:1)KinectScrollViewer为滚动显示控件,通过握拳操作可以实现磁性连接,滑行滚动运行,从而很容易地观察歌曲曲目,选择时进行停留选择按键即可。2)Wrappanel为滑动轨道布局接口,将所需条目按一定顺序摆放在该布局下即可。3)ProgressBar为进度条显示控件,该控件可以用于显示当前进度,它会自动读取歌曲时长。

图5 音乐播放模块功能示意图

视频播放模块总的功能中基本与音频播放模块类似,代码实现主要将文件操作中的音频文件改成视频文件。利用控件Media Element可以实现基本的音频视频播放功能,可以注册相关的事件处理方法进行相应操作。在手势识别实现方面,调用工具箱中的控件如KinectRegion和KinectTitleButton等组件进行相关的替代操作,实现点击触发功能。

车载监视模块主要依托彩色摄像头的数据,实现车载情况的监视,并且定时间隔7 s抓拍图像,也可以实现自拍、帮拍等功能。该模块用到了对时间的操作,分别是读取用户时间和设定定时器实现相关动作。

图片查看模块中,对于手势感应的图片查看来说仍然以简便设计为主,尽可能地保留必要的功能。在此仅保留翻页操作即上一页、下一页、返回退出,分别用挥动左手、挥动右手、双手过顶实现。使用骨骼数据点定义触发动作实现,骨骼数据可以通过Image控件显示,从而节约了空间资源。

5 系统调试与测试

连接好Kinect,搭建环境、加载完成后,运行Developer Toolkit Browser v1.8.0 (Kinect for Windows)软件,骨骼显示调试界面如图6所示。

图6 骨骼显示调试界面图(截图)

为测试Kinect手势识别功能,进行了大量的实验和调整。对影响手势识别精度的光照因素进行了分析和实验对比,旨在验证本系统手势识别效果。实验中对环境光照条件进行改变,粗略地模拟实际应用中,白天晴天车内、白天阴雨天车内、夜晚车内灯开启、黑夜车内灯关闭(路上有路灯)4种应用环境,利用照度测量仪测量照度,其他条件保持理想不变,测试手势识别成功率。从表1(不同光照条件下手势识别成功率对比)中可以看出,前3种应用环境手势识别成功率基本达到使用要求。

表1 不同光照条件下手势识别成功率对比

照度范围/lx模拟应用环境实验次数识别成功次数成功率/%700~800昼-晴天车内504794100~200昼-阴天车内50448840~60夜-车内灯开5039785~15夜-车内灯关5000

另外,系统界面和多媒体功能方面,打开应用软件主界面,可以通过手势感应进行功能选择。经测试,能够实现预期的音频播放、视频播放、照片查看、摄像拍照、LBS服务等功能。图7为应用软件主界面测试效果图,图8为LBS功能界面测试效果图。系统能够通过麦克风语音输入的方式,获得要搜索的地点信息,然后通过手势,实现进一步的扩大、缩小功能。系统基本能够实现预期的功能,达到良好的试验效果。

图7 应用软件主界面测试效果图(截图)

图8 LBS功能界面测试效果图(截图)

6 总结

经过整合调试,可以达到目标效果,通过手势感应实现相应功能。可以脱离一定的设备,比如鼠标、数据手套、键盘等,让人体完全发挥其输入功能,人机交互更加方便快捷。界面显示部分采用Metro风格,既方便手势传感操作,又可以明显显示,而且这种显示可以方便地应用到各种显示设备上。相对于其他利用键盘等输入方式的车载电子设备,本设计利用手势识别输入能够为用户带来更方便的体验。同时,为Kinect在车联网等多领域的实际应用打下基础。

在有些方面还有待完善,手势感应实时操作仍存在一定的误差和延时。另外,由于LBS对个人权限的部分限制,目前实现的LBS服务功能还不是非常丰富。

[1] 刘小洋,伍民友. 车联网:物联网在城市交通网络中的应用[J]. 计算机应用,2012(4):900-904.

[2] GERLA M, LEE E K, PAU G, et al. Internet of vehicles: from intelligent grid to autonomous cars and vehicular clouds[C]//Proc.2014 IEEE World Forum on Internet of Things (WF-IoT). [S.l.]:IEEE, 2014: 241-246.

[3] 程刚,郭达. 车联网现状与发展研究[J]. 移动通信,2011(17): 23-26.

[4] 何蔚.面向物理网时代的车联网研究与实践[M].北京:科学出版社,2013.

[5] 余涛.Kinect应用开发实战:用最自然的方式与机器对话[M].北京:机械工业出版社,2013.

[6] 陈翰雄,黄雅云,刘宇,等. 基于Kinect的空中手势跟踪识别的研究与实现[J]. 电视技术,2015, 39(21): 91-94.

[7] 吴国斌,李斌,阎骥洲. Kinect人机交互开发实战[M].北京:人民邮电出版社,2013

卢亚军(1991— ),女,硕士生,主研计算机控制与应用、无线定位技术;

李天松(1975— ),硕士生导师,主研无线定位、通信和导航等方面;

黄艳虎(1991— ),硕士生,主研通信网络、室内可见光定位技术。

责任编辑:薛 京

Design of gesture recognition aided system in vehicle network

LU Yajun , LI Tiansong , HUANG Yanhu

(SchoolofInformationandCommunication,GuilinUniversityofElectronicandTechnology,GuangxiGuilin541004,China)

The Internet of vehicles, as an important intersection of the Internet of things and intelligent vehicles, attracts lots of attention. By analyzing and integrating three kinds of technologies, the based service location service, gesture sensing technology and the Internet of vehicles, the integrated system can be used to realize the multimedia function and the location service in the vehicle system. Using Kinect as a gesture sensing equipment, after the establishment of WPF engineering, the design of interface and specific functional programming, the design is achieved. To achieve LBS services, the relevant API provided the LBS developer platform is used to call the data. Test results show that the system is functional, flexible and practical with a good application prospect.

Kinect; Internet of vehicle; gesture sense; LBS

卢亚军,李天松,黄艳虎.基于Kinect的车载手势识别辅助系统设计[J]. 电视技术,2017,41(2):50-53. LU Y J , LI T S , HUANG Y H. Design of gesture recognition aided system in vehicle network [J]. Video engineering,2017,41(2):50-53.

TN368.2

B

10.16280/j.videoe.2017.02.011

广西高校科学技术研究项目(KY2015ZD042);桂林电子科技大学研究生教育创新计划资助项目(YJCXS201520);桂林电子科技大学创新训练计划资助项目(20151059512)

2016-03-13

猜你喜欢
控件手势骨骼
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
挑战!神秘手势
V字手势的由来
关于.net控件数组的探讨
骨骼和肌肉
胜利的手势
ASP.NET服务器端验证控件的使用
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
骨骼是如何生长的