一种非接触式手势识别装置和识别方法与流程

文档序号:12461570阅读:393来源:国知局
一种非接触式手势识别装置和识别方法与流程

本发明属于手势识别技术领域,特别涉及一种非接触式的手势识别装置和识别方法。



背景技术:

在计算机科学中,手势识别是通过数学算法来识别人类手势的一个技术。手势识别可以来自人的身体各部位的运动,但一般是指脸部和手的运动。通常用于智能手机及智能眼镜、平板电脑中。

目前非接触手势识别技术主要分为以下三类:

1)基于模式匹配技术的二维静态手型识别。这种方式主要是依靠模式识别技术来实现。

2)基于微机视觉算法的二维手势识别技术。这种方式主要是依靠微机的图片处理技术。

3)基于更强的计算机视觉算法的三维手势识别技术。这种方式主要依靠图片处理,计算机视觉算法,机器学习等技术。

虽然上述方法在实际应用中比较广泛,但由于当前基于图片处理技术的硬件要求较高,传感器昂贵等因素,其在很多低成本应用场景中难以推广。

如专利申请201510796509.6公开了一种用于虚拟现实显示输出设备的手势识别方法及虚拟现实显示输出设备,识别方法包括:从第一摄像头获取第一视频,从第二摄像头获取第二视频;从所述第一视频中分离出关于第一视频中手图形的第一平面信息的第一平面手势,从所述第二视频中分离出关于第二视频中手图形的第二平面信息的第二平面手势;采用双目成像方式将所述第一平面信息和所述第二平面信息转换为空间信息,生成包括所述空间信息的空间手势;获取所述空间手势对应的执行指令;执行所述执行指令。该申请能够采用普通摄像头完成三维手势的识别。



技术实现要素:

基于此,因此本发明的首要目地是提供一种非接触式手势识别装置和识别方法,该装置及方法通过利用距离传感去探求低成本的非接触式手势识别系统应用,这样一方面满足了低成本、低功耗的要求;另一方面可以实现一些简单的非接触式手势交互,在通常的简易交互场景下完全可以满足。

本发明的另一个目地在于提供一种非接触式手势识别装置和识别方法,该装置及方法提高基于距离的非接触式手势手别的准确性、稳定性和实用性,且实现简便,成本低廉。

为实现上述目的,本发明的技术方案为:

一种非接触式手势识别装置,其特征在于该装置由传感器单元、控制模块和被控单元组成,其中,所述传感器单元包含有复数个传感器,所述传感器为距离传感器,且所述距离传感器呈阵列式排列。

进一步,所述传感器单元中复数排竖向排列的距离传感器,所述每排竖向排列的距离传感器之间的距离相等,相邻两排距离传感器之间距离为D,据此进行阀值的对比和判断。

所述控制模块由微控制器和发送命令模块组成,微处理器激励距离传感器获取响应以后,读响应进行相关处理后得到手势命令,最后通过发送命令模块向外发送,由被控单元接收相应信标,做相应响应。

基于此,通过上述手势识别装置实现了本发明的非接触式手势识别方法。该方法包括:

101、设定一个触发阈值(阀值1),该阈值是与距离大小有关的一个物理量;设定一个二级阈值(阀值2),该阈值用于丢弃随机干扰;

102、微控制器对距离传感器的数据信号进行转换,并获取每个传感器的距离数值;

103、依次检测并将所有距离传感器距离信息,若获得信息满足触发阈值要求条件,则认为是正确触发信号,进入数字信号处理流程;

104、根据给定的触发阈值,使用阈值判断法初步筛选出有效数据,分别存放,记忆上一次该有效数据对应的数据值,将两次数据值相减然后与二级阈值进行对比,如果大于二次阀值,则认为本次数据无效,丢弃无效数据,等待新的一笔数据到来,直至确认满足二级阀值的有效数据;

105、得到有效数据后,将其存入队列长度为N的缓存器,然后分别求出队列数据的和,丢去一个或多个最大值和最小值求其平均再赋值给有效数据。这样就实现了原始数据的加工,此步可进一步屏蔽某些随机数据;

106、由用户设置一个距离阈值称为TH1(阈值3),该阈值用于体现数据的位置特性;通过对阈值TH1的判断,并定义状态FLAG、GestureFlag、LeftCount、RightCount、GestureDetc,来对手的位置和方向进行精确的定位,以判断出左滑、右滑、左击和右击手势。

该方法分析基于距离感应的手势数据的距离、时间等物理特征,利用状态机方式,根据数据的方向特性等多重交叉验证,提高基于距离的非接触式手势手别的准确性、稳定性和实用性。

所述步骤105中,缓存器具有多个,每次得到的有效数据按照其位置存入对应的缓存器。

进一步,所述步骤106中,以两个相邻传感器数据为X1和X2,且X1代表左边传感器数据,X2代表右边传感器数据;手势的判断步骤为:

1061、获取的新的数据组,分别存在X1和X2中;

1062、分别将X1和X2与阈值TH1进行比较,并将大于阈值TH1的X1或X2的值设置为新阈值TH1;

具体地说,步骤1062中,比较X1和阈值TH1(阈值3)的大小,小于TH1则执行下一步,大于等于则将X1的值设置为TH1;

比较X2和阈值TH1的大小,小于阈值TH1则执行下一步,大于等于则将X2的阈值设置为TH1;

1063、重新将X1和X2与新阀值TH1进行对比,并据此检测FLAG标志位,判断手势;

进一步,该1063步骤中,判断是否X1小于阈值TH1的同时,X2也等于TH1;如果X1小于阈值TH1的同时X2等于TH1,那么再去检测是否FLAG标志位的值为RIGHT;如果FLAG的值为RIGHT,那么说明检测到了左滑手势,重置GestureFlag的值为LeftShift,并且设置GestureDetc为true,这说明正确检测到手势。并且在此处响应手势到来该做的动作,如发送控制命令,结束本次数据流刷新。

更进一步,该1063步骤中,判断是否X1小于TH1且X2等于TH1;如果X1小于TH1并且X2等于TH1,且FLAG的值为LEFT,不是则设置FLAG为LEFT,是则设置LeftCount自加一次,结束本次数据流刷新。

更进一步,该1063步骤中,重新判断是否X2小于阈值TH1的同时,X1也等于TH1;如果X2小于阈值TH1的同时X1等于TH1,则检测是否满足FLAG的值为LEFT,如果为真,则说明检测到右滑手势,执行右滑相关命令,结束循环。如果FLAG的值为RIGHT则RightCount++,即对变量进行自加一次,不为RIGHT则将FLAG值置为RIGHT,结束本次数据流刷新。

进一步,该1063步骤中,如果发现TH1大于X1并且TH1大于X2,如果为真则将LeftCount、RightCount的值清空,且把FLAG值设置为NONE,把GestureDetc值设置为FALSE;否则继续流程,判断GestureDetc是否为真,如果为true则将LeftCount、RightCount的值清空,且把FLAG值设置为NONE,把GestureDetc值设置为FALSE;否则继续判断是否满足LeftCount大于TH2(阈值4,即第4个阈值),如果满足,则说明检测到左击手势,响应左击手势相关动作,然后结束本次数据刷新。

更进一步,继续判断是否满足RightCount大于TH2;如果为真则说明检测到右击手势,这里应该执行相关命令,然后结束本次刷新;将LeftCount、RightCount的值清空,且把FLAG值设置为NONE,把GestureDetc值设置为FALSE。

所述阀值1、阀值2、阀值3、阀值4可依据用户的实际需求自行设定。

本发明利用距离传感去探求低成本的非接触式手势识别系统应用,这样,一方面满足了低成本、低功耗的要求;另一方面可以实现一些简单的非接触式手势交互,在通常的简易交互场景下完全可以满足。

本发明同时使用一种新的算法来实现左滑、右滑等手势的定义与识别及应用。

附图说明

图1是本发明所实施的结构示意图。

图2是本发明所实施传感器单元的结构示意图。

图3是本发明所实施一种传感器单元的具体构造图。

图4是本发明所实施手势判断的示意图。

图5是本发明所实施的控制流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,为本发明所实现非接触式手势识别装置的结构图,图中所示,该非接触式手势识别装置100由传感器单元101、控制模块102和控制模块103组成。

其中,结合图2、图3所示,传感器单元阵列式排列,传感器单元有101有传感器阵列106以及传感器组107组成。相邻两个传感之间距离为D(cm)。

控制模块102由微控制器104和发送命令模块105组成。微处理器激励距离传感器获取响应以后,读响应进行相关处理后得到手势命令,最后通过发送命令模块105向外发送,由被控模块接收相应信标,做相应响应。

为了便于表述,本文只分析其中两个相邻超声波传感器检测得来数据,三个及其以上可以此类推。那么对于这个拥有三个超声波器件的阵列而言,我们首先需要固定器件,由于两个超声波传感器靠的太近容易引起干扰并综合考虑手势动作的空间轨迹因素等。作为参考,将相邻两个传感器之间的距离设置为D cm。如图2、图3所示。结构特性决定了采集到的距离数据的一些位置特性。

如图4示。当手从其中两个传感器上方移动时,实际上,相对某个参考点而言。距离d1和d2是同时变化的。并且选定参考点后,两点变化依赖关系可以相互推导。

其数据分别用X1和X2来表示。当X1>=TH0(阈值1)且X2>=TH0时,才认为是有效数据。这里初步筛选出有效数据,分别存放在X1和X2中。记忆上一次X1和X2的值分别为X1’和X2’,如果X1-X1’>TH0’(阈值2)或者X2-X2’>TH0’,则认为本次数据无效。丢弃无效数据,等待新的一笔数据到来。

得到X1和X2后,假定设置队列长度为N的缓存器Q1和Q2,每次得数据X1和X2,都将其分别入列。丢弃队列中的一个或多个最大值和最小值,然后分别求出队列数据的和,求其平均再赋值给X1和X2。这样就实现了进一步防随机干扰滤波处理。

如图5示,通过以下步骤来实现手势的识别。这是本方法的核心算法流程。以两个相邻传感器数据为X1和X2,且X1代表左边传感器数据,X2代表右边传感器数据。

201、获取的新的数据组,分别存在X1和X2中。

202、比较X1和阈值TH1(阈值3)的大小,小于TH1则跳到步骤204。

203、将X1的置设置为TH1。这相当于重置了X1的值。

204、比较X2和阈值TH1的大小,小于阈值TH1则跳到步骤206。

205、将X2的阈值设置为TH1。这相当于重置了X2的值。

206、判断是否X1小于阈值TH1的同时,X2也等于TH1;如果X1小于阈值TH1的同时X2等于TH1,否则跳至步骤208,那么再去检测是否FLAG标志位的值为RIGHT。如果FLAG的值为RIGHT,那么说明检测到了左滑手势,重置GestureFlag的值为LeftShift。并且设置GestureDetc为true,这说明正确检测到手势。并且在此处响应手势到来该做的动作,如发送控制命令,结束本次数据流刷新。

207、判断是否X1小于TH1且X2等于TH1。如果X1小于TH1并且X2等于TH1且FLAG的值为LEFT,不是则设置FLAG为LEFT,是则设置LeftCount自加一次,结束本次数据流刷新。否则跳至步骤208。

208、重新判断是否X2小于阈值TH1的同时,X1也等于TH1;如果X2小于阈值TH1的同时X1等于TH1,否则跳至步骤213。是则检测是否满足FLAG的值为RIGHT,如果为真,说明检测到了右滑手势,执行相应右滑命令,结束本次循环。,如果FLAG的值为RIGHT,则RightCount++,即对变量进行自加一次。否则将FLAG值置为RIGHT。结束本次数据流刷新。

209、这说明检测到右滑手势,此时需置GestureFlag的值为RightShift,并且将GestureDetc标志设置为True然后将FLAG的值设置为NONE。此时应当将右滑手势处理命令或代码放在此处以方便实时响应动作。然后结束本次数据刷新。

210、继续判断,如果发现TH1大于X1并且TH1大于X2。如果为真则转至步骤213。否则继续流程。

211、此时需判断GestureDetc是否为真,如果为true则转至步骤13。否则继续判断是否满足LeftCount大于TH2(阈值4)。如果满足,则说明检测到左击手势,这里需要响应左击手势相关动作。然后结束本次数据刷新。否则继续流程。

212、继续判断是否满足RightCount大于TH2。如果为真则说明检测到右击手势,这里应该执行相关命令。然后结束本次刷新。转至步骤213。

213、将LeftCount、RightCount的值清空,且把FLAG值设置为NONE,把GestureDetc值设置为FALSE。

为了提高手势识别的准确性以及更多手势。本算法还适用于多个距离传感器阵列的情况。对于多个传感器阵列,只需将其两两处理即可。

本发明利用距离传感去探求低成本的非接触式手势识别系统应用,这样,一方面满足了低成本、低功耗的要求;另一方面可以实现一些简单的非接触式手势交互,在通常的简易交互场景下完全可以满足。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1