基于Kinect的手势交互课件应用系统的设计

2021-06-08 08:29马少斌张成文梁虎金
关键词:手部手势骨骼

马少斌,张成文,梁虎金

(1.兰州文理学院 数字媒体学院,甘肃 兰州 730010;2.兰州文理学院 VR技术研发与推广中心,甘肃 兰州 730010)

Kinect[1]是一个具有动态获取、影像辨识、麦克风输入、语音识别等功能的3D体感摄影机.它结合了视觉处理算法和三维定位功能,可以利用摄像头的高分辨率对三维坐标空间中的细微变动进行识别,同时其自带人体骨骼跟踪SDK,可以识别最多6位用户的人体骨骼并对他们进行1080 P的高清视屏录制.Kinect在红外传感器的配合之下,可以在昏暗的背景下精准识别用户动作,有效克服了光照条件对其应用范围的限制.因此,Kinect在教育教学[2]、交互游戏设计、虚拟现实等领域获得了广泛的应用.

Kinect设备提供3种类型的最初数据,即深度数据流、彩色视频流、原始音频数据[3],可分别应用于骨骼跟踪、动作识别、人脸识别、语音识别等.自古以来,手势是人类交流的重要辅助手段,不同的手势被赋予各种特定的含义,在教学、演讲中,利用这些特定含义的手势来控播课件将会为我们的工作带来极大的便利,因而手势识别逐渐成为人机交互领域的一个研究热点.

基于上述原因,本文在讨论Kinect深度图像及骨骼跟踪的理论基础上,重点研究基于深度图像的手势交互,并进行测试验证,最终应用于AR交互课件中[4].

1 基于深度成像的骨骼跟踪原理

首先,应用Kinect采集并分析深度数据.然后,经过特定处理,将人体目标从环境中提取出来并二值化.最后,以16位二进制数组成后续的信息数据计算人体部位的关节点,其过程如图1所示.

图1 Kinect获取的人物骨骼过程

1.1 深度图像获取

Kinect深度图像采用结构光编码(Light Coding)[5]技术,就是用光源照明给需要测量的空间编上码.“结构光”就是将光结构化,结构化的光可包括点结构光、线结构光和面结构光.点结构光测量法每次只投影一点;线结构光向物体投影一条线或者多条线;面结构光向物体投射平面几何图案,三种方法各有优缺点.面结构光识别法目前被广泛应用于人脸识别、医学、工业、航天等领域.Kinect采用的面结构光技术,就是由红外摄像头将光线投射到被拍摄物体上,因为被投射物体具有不同的深度区域,从而形成不同的图案,并将其换算成深度信息,就可以知道这个物体在什么位置了.

深度图像以16位二进制数据信息流表示,如以[0000 1000 1100 1110]为例,其中,后3位二进制数代表可以识别的人数,前13位为Kinect摄像头与目标物体之间的距离.目标物体距Kinect摄像头较远时,空间面积越大;目标物体距Kinect摄像头较近时,空间面积越小.因此,微软Kinect官方推荐舒适距离是1.2 m~3.5 m为佳.

1.2 骨骼跟踪

Kinect通过下面3个步骤将深度图像转化为骨骼图像[6].

第1步:将人像抽离出背景,由于背景的环境十分的复杂多样,这项工作难度很大.先看人像轮廓,再看细节,对深度图像的分辨率进行有序规格的扫描,使用分辨率级的检测方法利用Kinect对深度图像检查,辨别出人像的各个肢体结构,经过约定的字节编码,分割出被追踪的用户.

第2步:系统将用户抽离出来,采用人体特征值进行快速分类,识别出人体各部位,这一过程要做到快速和精准.

第3步:通过人体部位识别关节部位的21个点,通过对这些关节点的数据分析测量人体的实际位置.如图1(d)中骨骼跟踪关节点所示.

1.3 机器学习

Kinect系统自带深度学习算法[7],即Kinect骨骼跟踪机器学习技术,该技术获得2011年MacRobert Award工程创新大奖[1].人体的部位分为头部、躯干和四肢,Kinect通过“分类器”分析评估其特征变量.这是一个机器学习的过程,评估过程会随着不断扫描到的像素进行修正,从而判断是人体的哪个部位.

训练分类器特征公式如(1)所示,其中u和v是一对偏移向量,x是像素值,d1(x)是像素值在图像I中的深度值,1/d1(x)是偏移正规化,用来处理人体尺寸的缩放,也就是简化目标像素u和v的值.很显然,这些特征测量与像素周围区域的3D外形相关,用来说明手臂和腿之间的区别.

(1)

机器学习需要大量的数据,微软征集了大量不同着装、肤色、体型和身高的志愿者来训练数据.大量分析数据被编排成能够迅速决策识别人体各部位的决策树,众多决策树构成决策树森林,如图2所示.

图2 机器学习产出的“决策树”

1.4 手势识别

1.4.1 手势识别概述

Kinect摄像头可以基于人体全身骨骼识别,使用深度摄像头消除背景及光线造成的影响,使用图形识别算法提供数据信息,捕获到用户的手势动作,并将这些手势动作转换为控制方式.手势定义、手势检测、特征提取及分类识别是体感手势识别中最重要的部分.通过静态手势与动态手势的有效结合,把摄像头中将识别到的手势从视频中甄别出来,通过预处理,提供给系统调用.并且,采用手势分割算法把分离出的手势先进行单独保存,然后提取出手势特征值,最后,应用分类算法来判断手势类别.

手势识别算法[8-11]的研究与改进主要是针对算法优化[9]和特征值提取研究[8,10,11]方面,可以有效识别数字0~9的10种手势,如图3所示.

图3 0~9 10种数字手势

1.4.2 手势分隔与特征提取

依据AR可视化交互教学系统[4]要求,需要对AR课件进行手势控制,且满足演讲习惯,无需10种复杂的“数字手势”,就可满足对课件播放控制需求.根据人们日常做手势时, 用右手高于头部来“控制焦点”;左手高于头部来执行“锁定”;双手握拳低于头部来代表“开始”;双手展开低于头部来代表“退出”;右手向左方向挥动表示“下一页”;左手向右方向挥动表示“上一页”等,如图4所示.

图4 部分手势交互深度图像

在实际应用中,图4所表示的部分手势基本能满足对课件的控制需求,图4(e)~图4(h)分别代表了两种动态手势,这在增强现实中非常重要,可以对三维虚拟空间中的虚拟物品进行旋转、放大、缩小等操作,适当的动态手势可以使操作更加灵活自如,比如双臂向前向后伸展.

Kinect采集到手部区域的深度值大都处于同一范围内,利用深度阈值法提取手部区域的深度数据.按照所采集到人体数据的最小深度值Dmin和深度阈值T的方法,就可分割出手部区域.手部区域深度图像的提取公式如(2)所示.其中,H(B,G,R)为提取的手部区域像素值;S(B,G,R)为人体像素值,其他区域为0;d为摄像头到人体轮廓每个像素的距离.根据深度阈值法,对分割出的手部区域进行二维空间的投影,重建二维图像.

(2)

2 实验设计与分析

本文以Kinect V2及Microsoft Kinect SDK V2.0为实验平台.Kinect for Windows SDK引用后添加控件,打开Main Windows.xaml文件,添加Image控件,命名为using Microsoft.Kinect,定义对象为Kinect Sensor Kinect.初始化设备后进行RGB图像获取、深度图像处理等,过程不再赘述,重点讨论有关骨骼追踪事件.

手部追踪技术和手势识别技术虽为不同的两个概念,但其方法基本一致.首先需要建立可追踪手部运动的类库,这些类之间通过相互调用来实现用户手势所在位置的管理.微软提供的Kinect SDK并没有包含手势识别引擎,需要开发者自定义手势.手势识别引擎有基于算法、基于神经网络和基于手势样本库3种基本方法.本案例中采用第一种比较简单的方法来完成实验,这种算法通过一个二值型对象来判定某一手势是否符合预定的手势并将其加入类库.通过对算法的扩展及相关参数的调整,能够满足我们对普通课件的播放控制,手势识别算法设计如图5和图6所示.后续将在此基础上增加新的手势识别算法并将其加入类库中,以满足AR课件对更多控制的需求.

图6 动态手势识别算法流程

图5 静态手势识别算法流程

双手旋转幻灯片图片的实验效果如图7所示.图7(a)为手部动作和图片的起始状态;图7(b)表示手势做旋转“势”后,图片也随之旋转的效果.

图7 旋转手势

旋转手势识别的核心算法在Handle Gesture Tracking方法中,并通过Kinect Cursor Manager中的Update Cursor方法和Kinect中的骨骼追踪事件绑定,这样就可以将获得的新坐标点添加到集合中去.对新添加的坐标点首先进行位置判断,即新加入的点是否以手势开始位置为参考点;其次进行时间判断,即检查手势开始时间和当前时间的差是否大于阈值.鉴于Kinect摄像头分辨率等技术的局限性,目前只能对手势进行追踪和识别.随着硬件设备性能的不断提高能够获取更好的深度影像数据,则可以实现对手指的追踪和识别,使实验达到更高精准度和更高自然性.

3 结语

在现代社会中,使用课件教学、演讲非常普遍.但演讲者却要不断地点击鼠标、键盘或者一些其它的手持设备来完成课件的翻页、演示等功能.本文完成了基于Kinect的手势交互课件应用系统的设计,并在普通课件中进行了功能验证,实验结果表明,本方法实现课件播控能提高播控的准确率和灵活性,从而为基于AR交互课件的控播奠定基础,系统扩展后可以应用于课堂教学、学术交流、商务演讲等众多领域.下一步我们将研究增强现实手势识别交互技术在AR视觉系统、同步系统、多机交互系统等领域的应用,提高交互技术的灵活性和广泛性.

猜你喜欢
手部手势骨骼
手部皮肤软组织缺损修复的皮瓣选择
尺动脉腕上皮支逆行岛状皮瓣修复手部皮肤软组织缺损
封闭负压吸引技术联合游离股前外侧穿支皮瓣修复手部大面积软组织缺损
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
挑战!神秘手势
胜利的手势
认手势说数字
骨骼是如何生长的
神奇的骨骼