APP下载

基于多传感技术相融合的手势交互系统研究

2015-05-08曾文献

河北省科学院学报 2015年2期
关键词:角速度手势手臂

曾文献,赵 杨

(河北经贸大学,河北 石家庄 050061)

随着虚拟现实技术的日益成熟,模拟驾驶、虚拟旅游、太空漫步、机器人控制[1,2,3]等基于肢体语言的人机交互体验系统在娱乐、航空航天、智慧旅游等领域应用越来越广泛。手势作为人们与外界交流的一种方式,以其自然、直观、生动的特点被认为是虚拟环境与自然环境之间交互的最佳方式[4,5],因此手势交互技术成为当前人机交互技术研究的热点。然而,基于计算机视觉的手势识别无论是基于传统计算机视觉还是近几年来新发展的基于深度图像的方案由于受到背景、光照、遮挡物,以及距离摄像头远近等一系列不确定因素的影响,识别效率和准确性并不理想[6]。因此完全基于计算机视觉方式的手势识别的大范围应用受到限制。

近几年来,微机电系统(Microelectro Mechanical Systems)MEMS传感器以其价格低廉、耗电量低、封装体积小、采集灵敏度高的特点成为移动设备和可穿戴设备中的标准配置,它能够获取手部运动和旋转特征信息,其最大优点是不易受背景光照、遮挡等影响。但由于工作原理、材料和制作工艺等方面的缺陷,MEMS传感器信号存在较大的误差,且误差容易累积,造成特征失效。

因此,为了提高手势交互的准确性,笔者提出二者融合即基于深度图像和MEMS传感器融合的手势识别方法。相较于采用单一方式,该方法通过Kinect摄像头获取手部深度特征(三维形态),通过加速度传感器解算出手部运动信息,通过角速度传感器解算出手部旋转信息,将这些信息相互融合,将计算机视觉方法位移误差小和MEMS传感器抗环境干扰能力强的优势结合起来,识别手部运动轨迹,以实现和计算机进行交互手势交互。

1 手势交互系统处理流程设计

通过分析基于深度图像和MEMS传感器等各种手势识别技术适用环境的基础上,选取深1度信息、加速度信息、角速度信息作为手势识别的基础数据,设计了基于Kinect深度图像和MEMS加速度和角速度传感器相融合的手势轨迹识别模型,最终通过判断手臂的斜率和姿态,实现人机交互。本研究选取微软公司推出的Kinect体感设备获取深度图像,采用InvenSense公司MPU6050芯片作为加速度、角速度采集器件。手势交互系统处理流程如图1所示。

图1 手势交互系统处理流程

本系统想要获取手臂的方位、运动轨迹、旋转等姿态信息,以达到控制屏幕对象拾取、移动、旋转以及鼠标运动等人机交互功能,所以系统实时获取同一个手势的深度图像信息和MEMS传感器信号(加速度信息和角速度信息),对深度图像处理获取手臂的斜率信息及运动轨迹信息,对三轴加速度信息进行二次积分可得到手臂的位移信息,进而转换成手臂的位置信息,对角速度进行积分可以得到姿态角(手部旋转信息)。由深度图像信息和加速度信息融合,最终得到手臂的位置信息,以修正加速度传感器累积误差问题,用加速度信息计算出手臂旋转角度等姿态信息与角速度信息计算出来的手臂姿态角信息相融合,以修正陀螺仪漂移问题,深度图像信息和MEMS传感器信号互为补充,设计出环境自适应的融合模型。最终根据手部位置信息和旋转角信息实现人机交互。

2 基于深度图像的手势特征提取

基于深度图像信息的手势识别流程如图2所示。基于深度图像的手势特征提取过程由手势采集、深度图像预处理和手势特征提取三部分构成。手势采集采用Kinect体感设备,因此获取手势信息不受物体自身的颜色、纹理特征以及环境光线强弱的影响。深度图像预处理部分主要实现深度图像的二值化及平滑处理,以消除图像边沿的毛刺。手势识别部分包括区域分割、边沿检测、手势特许提取。

图2 基于深度图像的手势识别流程

2.1 手势信息采集

微软公司的Kinect深度图像采集设备,以每秒30帧的速度生成深度图像流,生成的手势深度图像大小为320*240,每个深度点16位。深度图像中的每一个像素点代表在深度感应摄像头的视野中,该特定的(x,y)坐标处物体到离摄像头平面最近的物体到该平面的距离(以毫米为单位)。Kinect中深度值最大为4096mm,0值通常表示深度不能确定,一般应该将0值过滤掉。微软建议在开发中使用1220mm-3810mm范围内的值。在进行后续深度图像处理之前,本文使用阈值方法过滤深度数据至1500mm-2000mm这一范围内。

图3 平滑算法示意图

2.2 深度图像预处理

由于服装褶皱、轻微震动等因素影响,Kinect深度图像往往存在边沿不平滑,给手势特征提取带来很大的误差,因此,需要进行平滑处理。简单的中值滤波、高斯滤波等平滑算法由于存在误差传递,导致越往后平滑处理失真概率越大,因此,设计一套简单的平滑算法,如图3所示,对将待平滑点(图中用 表示)周围9*5范围内选取5*5个点(图中用 表示),然后统计25个点里面有效点超过6个点,即认为该点需要平滑,设置其灰度值为255。但是,在后续对该点相邻点平滑处理时,使用该点的原值,这样就避免了因平滑算法导致误差传递叠加的问题。

为了简化手势特征提取算法,将平滑之后的灰度图像二值化,背景为黑色0,前景为白色255,灰度图像转化为黑白二值图像。二值化算法比较简单,这里就不详细描述了。

2.2 手势特征提取

2.2.1 区域分割与处理

区域分割算法首先要确定用户的基本位置,排除掉一些极端站姿的图像,算法建议用户尽可能站在画面中央,考虑到手势分布在人体1/3以上位置,设备初始安装时,使身高170cm的用户头顶映射到Kinect深度图像纵坐标70附近,用户纵向中心线在深度图像中的横坐标160±30位置,保证了绝大部分用户的手势都能包含在深度图像中。

为了判断用户站姿是否正确,本算法设计了基于分割块投影及面积的用户站姿合法判定方法,考虑到手势分布在图像的上部,所以本方法只考虑二值化图像上部300*160区域,将该区域按照10*10分割成30*16个小区域,每个区域按照水平和垂直两个方向投影,投影方法如图4所示,设二值图像中的任一点P(x,y),其中10≤x≤310,10≤y≤160,则在分割区域水平方向投影点P1(x,y),在垂直方向投影点P2(x,y)。水平方向投影用蓝色表示,竖直方向投影用绿色表示。

图5显示了二值图像经投影处理之后生成的水平和垂直两方向的投影图,从投影图中找出水平方向和垂直方向投影线的最大连通线的的长度,起始和终止点坐标,垂直方向投影连通线中的长度认为是头所在区域,然后以此线为依据,判断和它相交的水平投影连通线的长度分布图,判定是否是合法站姿,若合法,找出人身体所在的位置矩形,图中区域2即为该算法找到的人体区域。假设其左边沿x坐标为Xl,右边沿x坐标为Xr,以此区域为参照,左边(10,10)-(Xl-10,200)为左胳膊姿势区域,右边(Xr+10,10)-(300,200)为右胳膊姿势区域,图中区域1和区域3分别表示左右胳膊姿势区域。

图4 投影方法示意图

图5 区域分割示意图

2.2.2 手势特征提取

左右手的手势识别算法相近,仅处理方向不同,本文详细讨论左手姿势识别算法,读者可以根据这个算法修改成右手姿势识别算法。

由于手势检测通常用在手势实时控制等领域,因此,手势识别不能使用过于复杂的算法,本文提出了一种基于胳膊位置的中心线平均斜率算法,该算法时间复杂度是O(n),n为待检测区域内点的个数,满足实施控制的时间要求。算法的核心思想是计算手臂图像在水平方向和垂直方向上的中心点,所有水平方向的中心点构成水平中心曲线,所有垂直方向的中心点构成垂直中心曲线,最后计算这两条曲线的平均斜率,以确定手臂的姿势。

(1)水平和垂直中心线提取

图6简单描述中心曲线计算过程,图中 表示手臂姿势二值化图像中的有效图像信息点, 表示算法计算出的中心点。计算过程为:针对左手手势区域的左边沿点集(1,a)-(1,j)的每一个点,保持y轴的坐标值不变,x轴的坐标坐标值由最小1搜索到最大9,搜索手臂图像最大连续有效线段,如果最大长度线段存在多条,则选择离前面计算的最大长度最接近的那个线段,求出该最大长度线段的中点。例如图中b行的处理过程,第一个点(1,b)有效,后面一个点(2,b)无效,因此第一个有效线段长度(1,b)-(1,b)长度为1,继续往后搜索直到(7,b)点有效,再往后搜索,找到有效线段(7,b)-(9,b),长度为3,算法选取一行中最长的线段,因此选取线段(7,b)-(9,b),并且计算其中点(8,b)。用此算法对所有行进行处理,就得到了图中所有的中点集。以同样方法计算出该区域垂直中心曲线。手臂水平和垂直中心线提取如图7显示。

图6 水平中心线和垂直中心线计算方法

图7 手势图像的水平中心线和垂直中心线

(2)手部位置信息计算

经过对各类人群实测发现,手部长度占手臂长度的范围在23%~29%范围内,考虑到手指有弯曲等现象,取手部长度占手臂总长度的20%。根据手臂中心线位置,在图7所示左边区域和右边区域(红线框的区域)沿水平中心线从中间向左右两边延伸,分别选取左边区域最左端的20%区域和右边区域最右端的20%区域作为手部区域,并计算该区域的平均值,作为左右手部的位置信息。

3 基于MEMS传感器信号的手势轨迹识别

基于MEMS传感器信号的手势轨迹识别流程如图8所示。

图8 基于MEMS传感器信号的手势轨迹识别流程

3.1 手势信号采集

用于手势信号采集的MPU6050芯片为全球首例整合性6轴运动处理组件DMP,相较于多组件方案,免除了组合陀螺仪与加速器时间差的问题,可以减轻外围微处理器的工作负担且避免了繁琐的滤波和数据融合。同时,角速度和角速度量程可控。本文选取角速度量程为±1000°/sec(dps),加速度量程为±4g,加速度输出速率1kHz,角速度输出速率为8kHz,外部读的速度超过输出速率没有意义,读到的都是不变值。若开启数字低通滤波功能,则降为1kHz。可准确追踪快速与慢速动作,数据传输采用IIC,最高传输速度达400kHz。

3.2 去噪

本文加速度和角速度信号去噪采用卡尔曼滤波算法,卡尔曼滤波器使用一个已知控制输入系统的动态模型,结合来自传感器的多个连续测量值,它以“预测—实测—修正”的顺序递推,采用反馈递归控制的方式使估计均方误差最小化,计算出更接近真实状态的估算值,该状态值比测量值更接近真实状态值,能够有效地消除系统中的漂移等干扰信号。

假设Q代表过程噪声的协方差,R代表测量噪声的协方差,P代表误差协方差,Hk代表k时刻的测量值。首先建立预测模型,根据惯性的原理本文选取加速度不变即预测值等于上一次的经卡尔曼滤波算法的最优值即公式(1):

接下来,根据前一个时刻的误差协方差Pk-1|k-1尝试估计先验误差协方差Pk|k-1,其定义为:

计算卡尔曼增益:

计算卡尔曼估计的最优值:

最后更新误差协方差P:

3.3 手部位置及旋转角度信息计算

将滤波后的加速度进行二次积分得到位移信息,对角速度一次积分得到当前时刻的角度,即手势的姿态。积分模型如公式(6)所示:

由于本文中读取加速度和角速度的速度为1kHz,因此计算过程中去t=0.001s。

4 环境自适应多信号融合模型

上面已经通过深度图像处理得到手臂的位置信息,通过加速度信息得到手臂的位置信息,由角速度信息得到手臂的旋转姿态信息,三种信息融合计算出最终结果。融合模型如公式(7)所示,其中R表示最终结果,P表示图像处理后的结果,G表示加速度信号处理结果,k表示P的可信度。

系数k取值如图9所示。

由于深度图像的采集主要受到遮挡物的影响,因此本文根据信号的可信度设计了融合模型。当在没有遮挡物时,本文选取k=0.8;当有遮挡物时,根据遮挡面积所占的百分比选取k的值。判断有无遮挡物的方法是统计深度图像中有效像素点在整幅画面中的比例。其中x轴表示深度图像应用环境,当检测不到手臂信息时,x=0,当检测到手臂信息时,x表示手臂水平中心线在图7描述区域中的水平长度,手部信息在整个手臂中的比例,此值为经验值,经实测各种体型、身高的人得到的综合系数。w取35%,i取40%,z取90%,y取95%。这样,当深度图像无效时,自动使用加速度信息,如果深度图像有效,则位置信息相对精确,所以主要采用深度图像信息作为位置特征。

经试验测试,我们获得了比较准确的手臂轨迹信息和姿态信息,利用该信息可以实现良好的人机交互,表明该方法的准确性和效率都很高,能够达到人机交互实时性及准确性的要求。

图9 系数k取值范围示意图

[1] ZHANG Jian-jie,LIN Hao,ZHAO Ming-guo.A fast algorithm for hand gesture recognition using relief[C]//Proc of the 6th International Conference on Fuzzy Systems and Knowledge Discovery.2009:8-12.

[2] KAO M C,LI T H S.Design and implementation of interaction system between humanoid robot and human hand gesture[C]//Proc of SICE Annual Conference.[S.I.]:IEEE Press.2010:1616-1621.

[3] 刘江华,程君实,陈佳品.基于视觉的动态手势识别及其在仿人机器人交互中的应用[J].机器人,2002,24(3):197-216.

[4] 陈一民,张云华.基于手势识别的机器人人机交互技术研究[J].机器人,2009,31(4):351-356.

[5] 刘博,张奇志,周亚丽.类人足球机器人球识别方法的研究[J].北京信息科技大学学报,2010,25(3):75-79.

[6] 潘建生.浅谈手势识别 在人机交互中的应用[J].电脑知识与技术,2011,35(7):9216-9218.

猜你喜欢

角速度手势手臂
手臂上的抓痕
挑战!神秘手势
V字手势的由来
圆周运动角速度测量方法赏析
胜利的手势
半捷联雷达导引头视线角速度提取
完美的手臂
基于构架点头角速度的轨道垂向长波不平顺在线检测
一种无角速度信息的挠性航天器姿态控制方法
大树为什么有那么多手臂