基于Kinect 机器的三维手势识别研究

2022-01-06 02:20飞,周
大科技 2022年3期
关键词:手势手部摄像头

庞 飞,周 婷

(东软睿驰汽车技术(沈阳)有限公司,辽宁 沈阳 110179)

0 引言

手势识别由于具有简单易学、种类多样、动作清晰等特点,是人机交互中非常直观而且非常自然的一种形式,从而使之成为近年以来人机交互[1-2]形式里对用户制约最小的识别方式。在车载、游戏等领域有着良好的应用前景。驾驶员在驾车的过程中,使用手势发出命令,不需要将视线偏离驾驶方向,使交通事故的发生率大大降低。本文主要以车载环境下的三维手势识别研究作为重点。

对于基于Kinect 取得深度图像然后进行手势识别目前已经有很多课题研究。本文通过Kinect 机器获得手的三维立体信息作为信息输入,对相邻手心计算其手中心坐标变换后的角度值,将其量化成16 个可观察状态,取得观察手势序列进而设置HMM 的各项参数,最后应用多维隐马尔科夫模型对输入信息进行识别,进而对手势进行识别。实验结果表明,本文提出的研究方法的识别率可达到97%,而且通过Kinect 取得手部的深度图像做手部图像分割时只有手与Kinect 摄像头之间的距离会对其造成影响,所以本文研究方法在背景的干扰下能达到较强的鲁棒性和较好的实时性。

1 基于Kinect 提取手部信息

1.1 Kinect 设备简介

Kinect 是由微软公司开发的一种周边设备,主要用于Xbox360 等主机。它是一款集图像识别,语音识别,社群互动等功能于一体的3D 体感设备[3]。Kinect 包含三个摄像头,RGB 摄像头位置中间,构成3D 结构光深度感应器的红外线发射器和红外线CMOS 摄像头则位于两侧。Kinect 不同于普通摄像头的是它具有CMOS,它利用这个红外传感器在不受周围光照的影响下感应周围环境并标注目标物的深度值。

1.2 Kinect 获取深度图像

Kinect 通过3D 结构光深度感应器来提取图像的深度,整个待检测的区域被红外发射器发射的红外光覆盖,同时深度图像由CMOS 接收反射光而取得。CMOS 取得的图像可以理解为一个“深度场”,这个图像中的每个像素值表示那点物体与摄像机之间的距离,越黑代表离摄像头越远,越白代表离摄像头越近。Kinect 最终获得一张深度图像来表示感知范围内物体的深度信息。

在提取深度数据时需要注意的是Kinect 受限于其硬件本身。对于近场手势的检测,手掌如果超过了50cm 的临界距离,则得不到有效的深度图像。

1.3 手部信息的提取

本文采用Kinect 取得深度图像,并对图像深度信息进行处理识别,不受背景光照等外部环境的影响,很大程度上提升了手势识别的鲁棒性。

有很多种方法都能在深度信息中提取手部。本文采用的方案实时性较好,即设定一个虚拟区域,此虚拟区域中认为手部与摄像头之间的距离最近,将深度图像进行二值化,将手部轮廓分离出来,然后再取均值得到手心的位置信息,从而进行手势跟踪。

为了方便用户做手势动作,本文将Kinect 机器置于电脑屏幕正前方,在距Kinect 正前方50~70cm 深度范围内,将本实验所用的17 寸(5:4)PC 机看做手势识别感应屏,即以PC 机屏幕的宽和高作为矩形虚拟区域,在此矩形虚拟区域内进行手势动作。Kinect 将此矩形区域进行坐标转换映射到RGB 彩色图像上,然后矩形区域内进行图像分割得到手部,最后基于多维HMM 进行手势样本训练和手势识别,并将识别结果在电脑上显示出来。

2 基于多维HMM 的手势识别

隐马尔科夫模型是一种用来描述随机状态序列的统计分析模型,应用马尔科夫链模拟状态序列如何变化,由观察序列对状态序列变化进行间接描述。

普通HMM 可以用λ=(S,V,A,B,π)表示,对于要检测的样本,在每个时间点上可观测输出都用一个数值表示。在Kinect 机器下,能够获取到的手势信息多于普通摄像机,因此可以采用多种可观测输出来刻画手的状态,那么每个时间点可生成多个可观测输出,这些数值可以组成一个向量。普通HMM 无法解决可观测输出是一个向量的情况,因此训练识别就需要需采用多维HMM。

2.1 多维隐马尔科夫模型训练

多维HMM 与普通HMM 相似,同样用λ=(S,V,A,B,π)来表示,唯一与普通HMM不同的是,当可观测输出维数为F时,输出概率分布矩阵B[bij(k)]是一个N×M×F的三维矩阵。

2.2 可观测输出设定

可观测输出是一个可以观察并测量的值,需要能够刻画出手势运动的轨迹,根据动作的可观测输出序列,可以判断出该动作是否是手势以及是何种手势。用来描述手势运动轨迹的量包括运动方向、位置、速度、加速度等。由于平移不变性和缩放不变性是手势识别的特点,可以用旋转来区分,运动方向是用来描述手势运动轨迹的最优选择。将整个360°的区域平均划分为相邻的16块,每一块分别对应1~16中的一个可观测输出数值,当相邻帧的运动方向落在某个区域时,该时刻的可观测输出就是该区域所对应的可观测输出数值。特别的,当相邻帧的运动距离过短时,可观测输出记为0。

为了对动态手势进行观测,需要处理连续视频的每一帧,手的位置在每帧当中都会产生变化。由于每一帧的时间间隔较短,所以连续帧之间手的相对位移量不会特别大,但也会有明显变化。因此可以取相邻帧之间手运动方向作为观测值。

在Kinect机器下,可以得到在任意时间手在空间中的三维信息,与普通摄像机相比,在保留了XOY平面信息的基础上,增加了XOZ平面和YOZ平面信息。因此可以取手在三个平面上的运动方向组成具有三个元素的一维可观测输出向量,用来进行训练和识别,在每个平面上获取可观测输出的方法和普通HMM相同。

3 实验结果与分析

3.1手势识别实验

本实验一共设计8种手势,包括上、下、左、右直线,顺、逆时针圆形,停止不动以及左右快速摇晃。

对于多维离散HMM,维数F的确定非常重要。数目太多会导致计算速度下降,并且对于手势的描述可能出现过拟合的情况;数目太少可能导致无法描述完整手势运动的所有信息。本文将手势运动分别投影到XOY面、YOZ面和ZOX面这三个平面,取得手势在三个平面上运动轨迹。由于三个平面是最少的能够不丢失信息的描述手势运动轨迹的平面,并且这三个平面分别正交,因此设定维数为能够在保证识别精读的情况下,最大的提升识别性能。

3.2实验结果分析

本文实验重复做以上8个动作若干次,通过Kinect机器可以得到手在运动过程中的三维信息。将所有这些手势坐标序列作为训练样本训练出8种手势的多维HMM,并根据8个手势的多维HMM计算出多维HMM阈值模型。测试过程中将所有样本都当作新的手势输入进去,各种手势识别率如表1所示。

表1 各种手势识别率

通过实验结果可以看出,根据Kinect机器得到的三维信息并运用多维HMM基本能够达到对手势进行识别的效果,对上、下、左、右直线,左右快速摇晃、顺时针圆形及逆时针圆形等手势基本都能准确识别,但对于停止不动手势的识别效果没有其他手势识别效果好,主要因为用户做静止的手势时,由于使用者本身的无意识抖动或者Kinect机器检测的误差,导致在产生误差的时间点,运动方向是随机的,并无规律可循,无法进行较好的识别,可尝试采用其他可观测输出计算方法或者采用其他模型对这一手势进行识别。

4结语

本文研究基于体感设备Kinect取得深度信息从而进行动态手势识别的方法,通过OpenCV对手部进行检测跟踪与分割等一系列预处理,采用多维HMM训练与识别手势轨迹,对手势运动轨迹的提取与分类进行改进。实验结果可以看出,基于HMM的手势识别方法更灵活,对三维动态手势有较高的识别率。

为了保障实时性和准确性,本文采用简易的动态手势进行测试,从而保证实时准确性。以后将生成一个完整多样的动态手势样本集来对本文的方法进行改进,,进而提高本研究的鲁棒性和推广性。

猜你喜欢
手势手部摄像头
浙江首试公路非现场执法新型摄像头
手部皮肤软组织缺损修复的皮瓣选择
摄像头连接器可提供360°视角图像
挑战!神秘手势
V字手势的由来
胜利的手势
谁是创意大玩家——创意手部彩绘
奔驰360°摄像头系统介绍
发生于手部的硬下疳一例
复明胶囊疑致手部肿痛1例