虚拟鼠标驱动装置、用于虚拟鼠标的手势识别方法及设备与流程

文档序号:18641780发布日期:2019-09-11 23:29阅读:393来源:国知局
虚拟鼠标驱动装置、用于虚拟鼠标的手势识别方法及设备与流程
本发明涉及人机交互
技术领域
,特别是涉及一种虚拟鼠标驱动装置、用于虚拟鼠标的手势识别方法及设备。
背景技术
:随着互联网技术的飞速发展,计算机日益普及,已经成为人们生活和工作中必不可缺的一部分。鼠标是人们与计算机进行“沟通和交流”的主要途径,现今的许多计算机上都会配备鼠标,用户只需按下鼠标按键或移动鼠标,即可在计算机上输入不同的指令,从而实现对计算机上的应用程序进行控制。相关技术中,鼠标上设置有多个按键,计算机的屏幕上设置有作为鼠标映射对象的光标。当鼠标移动时,计算机屏幕上的光标会与鼠标移动相同的轨迹,且当鼠标检测到按键被触发时,光标会根据按键的触发方式执行一系列诸如对象选择、对象覆盖等操作。在实现本发明的过程中,发明人发现相关技术至少存在以下问题:用户在使用鼠标时,需要长时间采用同一姿势握持鼠标,容易导致用户产生诸如腕管综合征等病症,对用户的手部造成伤害,用户粘度较低。技术实现要素:有鉴于此,本发明提供了一种虚拟鼠标驱动装置、用于虚拟鼠标的手势识别方法及设备,主要目的在于解决目前长时间采用同一姿势握持鼠标,容易导致用户产生诸如腕管综合征等病症,对用户的手部造成伤害,用户粘度较低的问题。依据本发明第一方面,提供了一种虚拟鼠标驱动装置,所述虚拟鼠标驱动装置包括:背景辅助模块、光栅模块、图像处理模块和事件处理模块;所述背景辅助模块规定了用户手部的放置位置,包括手势识别区域;所述光栅模块设置于所述背景辅助模块左右边缘的上方,生成多条红外线,当检测到所述多条红外线阻断或联通时,产生红外变化值,并将所述红外变化值传输至所述事件处理模块;所述图像处理模块采集所述背景辅助模块完整的多个图像数据,对所述多个图像数据进行识别,得到手部运动变化值和手势识别区域,并将所述手部运动变化值和所述手势识别区域传输至所述事件处理模块;所述事件处理模块与所述光栅模块和所述图像处理模块连接,接收所述光栅模块返回的红外变化值,并接收所述图像处理模块返回的手部运动变化值和所述手势识别区域,将所述红外变化值和所述手部运动变化值作为运动参数,根据所述运动参数和所述手势识别区域,确定及触发目标事件。在另一个实施例中,所述光栅模块包括:多个基础对射单元和单片机;所述多个基础对射单元生成所述多条红外线;所述单片机与所述事件处理模块相连,当检测到所述多条红外线中任一红外线被阻断,生成所述阻断信号作为红外变化值,当检测到所述多条红外线中被阻断的红外线联通时,生成所述联通信号作为红外变化值,并将所述红外变化值传输至所述事件处理模块。在另一个实施例中,所述多个基础对射单元中每个基础对射单元均包括红外发射单元和红外接收单元;所述红外发射单元设置于所述背景辅助模块的左边缘或右边缘的上方,所述红外发射单元的发射口与所述红外接收单元相对,向所述红外接收单元发射红外线;所述红外接收单元设置于所述背景辅助模块与所述红外发射单元相对边缘的上方,所述红外接收单元的接收口与所述红外发射单元相对,接收所述红外发射单元发射的红外线。在另一个实施例中,所述图像处理模块包括图像采集单元和图像处理单元;所述图像采集单元采集所述背景辅助模块完整的所述多个图像数据;所述图像处理单元接收所述图像采集单元返回的所述多个图像数据,采用漫水填充算法在所述多个图像数据中识别所述手势识别区域,采用光流算法对所述多个图像数据的像素值变化进行追踪,确定所述像素值的像素运动方向和像素运动分量,将所述像素运动方向和所述像素运动分量作为所述手部运动变化值,并将所述手部运动变化值和所述手势识别区域传输至所述事件处理模块。依据本发明第二方面,提供了一种用于虚拟鼠标的手势识别方法,所述方法包括:图像处理模块采集背景辅助模块的多个图像数据,所述背景辅助模块上存在光栅模块生成的多条红外线;当检测到所述用户手部开始运动时,所述光栅模块和所述图像处理模块对所述多个图像数据进行识别,得到运动参数和手势识别区域,并将所述运动参数和所述手势识别区域传输至事件处理模块,所述运动参数至少包括手部运动变化值或红外变化值中的一种或两种;所述事件处理模块根据所述运动参数和所述手势识别区域确定目标事件,并触发所述目标事件。在另一个实施例中,得到所述手势识别区域,包括:所述图像处理模块采集多个图像数据,对于所述多个图像数据中的每个图像数据,定义所述图像数据中背景辅助模块的至少一个角点坐标;所述图像处理模块采用漫水填充算法对所述至少一个角点坐标进行处理,获取所述至少一个角点坐标的漫水图像;所述图像处理模块根据结果阀值对所述至少一个角点坐标的漫水图像进行过滤,在所述至少一个角点坐标的漫水图像中提取目标漫水图像,所述目标漫水图像符合所述结果阀值的标准;所述图像处理模块对所述目标漫水图像进行调整,得到所述手势识别区域。在另一个实施例中,得到运动参数,包括:当检测到所述用户手部开始运动时,所述图像处理模块获取所述多个图像数据的像素值,采用光流算法对所述像素值的变化进行追踪,确定所述像素值的像素运动方向和像素运动分量,将所述像素运动方向和所述像素运动分量作为所述手部运动变化值;和/或,所述光栅模块对所述多条红外线的当前状态进行检测,确定所述多条红外线的红外当前值,并获取所述多条红外线的红外原始值,根据所述多条红外线中所述红外当前值与所述红外原始值不同的红外线,生成所述红外变化值;所述图像处理模块和/或所述光栅模块将所述手部运动变化值和/或所述红外变化值作为所述运动参数。在另一个实施例中,所述根据所述多条红外线中所述红外当前值与所述红外原始值不同的红外线,生成所述红外变化值,包括:对于所述多条红外线中的任一条红外线,所述光栅模块将所述红外线的红外当前值与红外原始值进行比对;如果所述红外当前值为阻断状态,所述红外原始值为联通状态,则生成阻断信号作为所述红外变化值;如果所述红外当前值为联通状态,所述红外原始值为阻断状态,则生成联通信号作为所述红外变化值。在另一个实施例中,所述事件处理模块根据所述运动参数和所述手势识别区域确定目标事件,并触发所述目标事件,包括:当所述手部运动变化值中的像素运动分量大于等于所述预设阀值时,所述事件处理模块确定所述目标事件为移动事件,控制所述用户手部在终端上的映射体由当前位置向所述手指运动方向指示的方向移动指定距离,所述映射体用于在所述终端上执行所述用户手部请求执行的操作,所述指定距离的取值根据所述手部运动变化值中像素运动分量生成;和/或,所述事件处理模块统计所述红外变化值的变化个数,确定所述变化个数对应的点击事件为所述目标事件,控制所述映射体在当前位置按照所述目标事件的指示执行目标操作。依据本发明第三方面,提供了一种设备,包括存储器和处理器,所述存储器存储有程序,所述处理器执行所述程序时实现上述第二方面所述方法的步骤。借由上述技术方案,本发明提供的一种虚拟鼠标驱动装置、基于光栅的手势识别方法及设备,与目前使用实体鼠标实现人机交互的方式相比,本发明通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害,提高了用户粘度。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1a示出了本发明实施例提供的一种虚拟鼠标驱动装置的结构示意图;图1b示出了本发明实施例提供的一种虚拟鼠标驱动装置的结构示意图;图2a示出了本发明实施例提供的一种用于虚拟鼠标的手势识别方法流程示意图;图2b示出了本发明实施例提供的一种用于虚拟鼠标的手势识别方法示意图;图2c示出了本发明实施例提供的一种用于虚拟鼠标的手势识别方法示意图;图2d示出了本发明实施例提供的一种用于虚拟鼠标的手势识别方法流程示意图;图3示出了本发明实施例提供的一种设备的装置结构示意图。具体实施方式下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。本发明实施例提供了一种虚拟鼠标驱动装置,可以通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,达到了无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害,提高了用户粘度的目的,如图1a所示,该虚拟鼠标驱动装置包括:背景辅助模块101、光栅模块102、图像处理模块103和事件处理模块104,图1b为该虚拟鼠标驱动装置的俯视图。其中,背景辅助模块101置于桌面;光栅模块102设置于背景辅助模块101的左右边缘的上方,与事件处理模块104相连;图像处理模块与事件处理模块104相连;事件处理模块104可以设置在终端中,或者也可为图1a所示的一个独立的装置,与光栅模块102和图像处理模块103连接,用于接收光栅模块102和图像处理模块103传输的数据,同时也与终端连接,用于在终端中触发目标事件。本发明实施例对事件处理模块的设置方式不进行具体限定。在实际应用的过程中,为了支撑图像处理模块103设置在背景辅助模块101的正上方,虚拟鼠标驱动装置中还包括底座105。背景辅助模块101背景辅助模块101的实质为一块鼠标垫,规定了用户手部的放置位置,其中包括手势识别区域,以便光栅模块102可以附着其上,且还可以指示图像处理模块103的采集位置。通常来说,为了便于图像处理模块103对采集到的图像数据进行识别,背景辅助模块101的颜色为全色,且不与用户的手部颜色相同,例如,可以采用全黑色、全蓝色等颜色的鼠标垫作为背景辅助模块101。本发明对背景辅助模块101的实际颜色不进行具体限定。用户可将手自然的放在背景辅助模块101上,采用用户最舒适的手势放置即可。需要说明的是,在用户使用过程中,用户手部的方向并不是固定的,用户可以根据当前自身所处的位置将手部以是任意角度放置在背景辅助模块101上。光栅模块102光栅模块102包括多个基础对射单元和单片机,多个基础对射单元采用水平排列的方式设置于背景辅助模块101的边缘。多个基础对射单元可紧贴于背景辅助模块101的边缘,或者可以与背景辅助模块101的边缘保持一定的距离,也即悬于背景辅助模块101的边缘,保证多个基础对射单元生成的多条红外线可检测到用户手部的动作。其中,多个基础对射单元中每个基础对射单元均包括红外发射单元和红外接收单元,红外发射单元和红外接收单元分别设置于背景辅助模块101的两侧边缘,是一一对应的,且红外发射单元的发射口与红外接收单元的接收口是相对的,用以产生多条红外线,图1a中虚线部分即为多条红外线。如果红外发射单元位于背景辅助模块101的左边缘,则红外接收单元位于背景辅助模块101的右边缘;如果红外发射单元位于背景辅助模块101的右边缘,则红外接收单元位于背景辅助模块101的左边缘。单片机用于实时检测多条红外线的变化,可以设置在每个基础对射单元的红外接收单元上,且与事件处理模块104相连,这样,单片机便可以根据红外接收单元是否接收到红外发射单元发射的红外线来确定红外线是被阻断还是被联通。由于红外线是像手电筒一样漫射出光线,所以检测每对红外发射单元和红外接收单元间的红外线是否有阻挡时,需要按顺序依次同时驱动每对红外发射单元和红外接收单元。具体地,首先,在接通多个基础对射单元时,按照顺序接通首个红外发射单元,在首个红外发射单元发射红外线的同时,接通首个红外接收单元,检测生成的红外线是否被阻断。因为其他红外发射单元和红外接收单元尚未启动,所以即使有被红外线照射,也不会有信号,使得并不会由于红外线的漫射性而造成识别错误。随后,依次执行其他红外发射单元和红外接收单元的接通以及检测红外线是否被阻断。单片机可按照指定频从首个基础对射单元扫描至最后一个基础对射单元,从而检测红外线是否发生阻断以及是否发生联通。当检测到多条红外线中任一红外线被阻断,单片机生成阻断信号作为红外变化值,当检测到多条红外线中被阻断的红外线联通时,单片机生成联通信号作为红外变化值,并将红外变化值传输至事件处理模块104。在实际应用的过程中,多个基础对射单元还可以发出红外激光,并基于红外激光实现上述生成红外变化值的过程。其中,由于红外激光具有高方向性、光束发散度小的特点,使得红外接收单元可以直接接收对应的红外发射单元发出的激光,并不会发生识别其他红外接收单元发出的激光的情况,因此,在接通红外发射单元和红外接收单元时,可以同时接通红外发射单元和红外接收单元,而无需依次接通红外发射单元和红外接收单元,并由单片机判断红外激光是否被阻断即可。本发明实施例中举例说明了生成红外线以及红外激光的情况,而在实际应用的过程中,还可以采用其他具有红外线以及红外激光特性的光束,本发明实施例对此不进行具体限定。图像处理模块103图像处理模块103用于采集背景辅助模块101完整的多个图像数据,通过对多个图像数据进行识别,得到手部运动变化值和手势识别区域,并将手部运动变化值和手势识别区域传输至事件处理模块104。图像处理模块的位置为可有效识别手部运动的位置,不限于背景辅助模块101的正上方、前方、左方以及右方。其中,图像处理模块103包括图像采集单元和图像处理单元。图像采集单元用于采集背景辅助模块完整的多个图像数据,实质为一摄像头,摄像头的像素可以为多种,低像素或者高像素的摄像头均可以满足本发明的需求。图像处理单元用于接收图像采集单元返回的多个图像数据,采用漫水填充算法在多个图像数据中识别手势识别区域,采用光流算法对多个图像数据的像素值的变化进行追踪,确定像素值的像素运动方向和像素运动分量,将像素运动方向和像素运动分量作为手部运动变化值,并将手部运动变化值和手势识别区域传输至事件处理模块104。需要说明的是,图像处理模块103与背景辅助模块101之间的距离可以根据场景的不同任意调整,还可以根据图像采集单元的焦距来确定,保证获取到的图像数据清晰可见即可。在实际应用的过程中,考虑到夜晚虚拟鼠标装置所处的环境较为黑暗,会对图像数据的辨识度造成影响,可在图像采集单元周围镶嵌多个led(lightemittingdiode,发光二极管)灯,从而保证周围环境的光线充足。在实际应用的过程中,图像处理模块103中的图像处理单元还可以单独作为一个模块运行在计算机设备上,或者还可以以采用外接的方法以外接设备的形式运行,本发明实施例对图像处理单元的设置位置及设置方法不进行具体限定。事件处理模块104事件处理模块104用于接收光栅模块102返回的红外变化值,并接收图像处理模块103返回的手部运动变化值和手势识别区域,将红外变化值和手部运动变化值作为运动参数,根据运动参数和手势识别区域,确定及触发目标事件。本发明实施例提供的虚拟鼠标驱动装置,通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害,提高了用户粘度。本发明实施例提供了一种用于虚拟鼠标的手势识别方法,可以通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,达到了无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害,提高了用户粘度的目的,如图2a所示,该方法包括:201、图像处理模块采集背景辅助模块的多个图像数据,当检测到用户手部开始运动时,图像处理模块对多个图像数据进行识别,得到手势识别区域,并将手势识别区域传输至事件处理模块。发明人认识到,长时间使用实体鼠标时,用户握持实体鼠标的手需要长时间保持同一个姿势,用户手部很多周围神经在长时间的压迫下很容易发生病变,也即产生鼠标手,因此,本发明提供一种基于光栅的手势识别方法,将实体鼠标省略,用户只需做出相应的手势即可实现与终端之间的人机交互。由于传统采用模型训练以及机器学习等方法对手势进行识别的难度较高,误差较大,且考虑到手部图像在不同的光照条件下,颜色值可能不同,以及不同人种的手部颜色不同问题,还需要预定义大量的肤色取值算法,因此,为了保证对用户的手势识别精确且快速,本发明中设置有背景辅助模块,用背景辅助模块来规划用户做出手势的位置,使得可以在该背景辅助模块上识别到用户手部,以便后续对用户手部的手势进行识别来触发相应的事件。图像处理模块中设置有图像采集单元,图像采集单元会持续的对背景辅助模块的位置进行完整的图像采集,持续生成多个图像数据,当用户手部放到背景辅助模块上时,图像采集单元采集到的图像数据上便会出现用户手部,此时,便可以通过对多个图像数据进行识别,来确定手势识别区域。对于多个图像数据中的每个图像数据,图像数据的具体识别过程如下:由于背景辅助模块的颜色与用户手部的颜色是不同的,相比于背景辅助模块来说,用户手部是活跃的,具有不定性,直接通过对用户手部的颜色进行识别很可能是不准确的,因此,当图像处理模块采集到图像数据后,便可以采用opencv(opensourcecomputervisionlibrary,开源计算机视觉库)中的漫水填充算法(floodfill)对图像数据进行识别,通过漫水填充算法对图像数据进行的处理,在图像数据中得到手势识别区域。需要说明的是,漫水填充算法是对每一帧图像数据进行处理的,对于每一帧图像数据均采用漫水填充算法进行识别。由于用户将手部移动到背景辅助模块角点的概率较低,因此,首先,对于多个图像数据中的每个图像数据,图像处理模块定义图像数据中背景辅助模块的至少一个角点坐标,并采用漫水填充算法对至少一个角点坐标进行处理,获取至少一个角点坐标的漫水图像,也即将至少一个角点坐标作为漫水填充算法像素种子点。需要说明的是,在实际应用的过程中,在普通光照条件下,只取一个角点坐标,获得的手部图像可能不是最准确的,因此,通常来说会取4个角点坐标。本发明实施例对取得的角点坐标的个数不进行具体限定。随后,定义一个用于对至少一个角点坐标的漫水图像进行筛选的结果阀值,根据结果阀值对至少一个角点坐标的漫水图像进行过滤,在至少一个角点坐标的漫水图像中提取目标漫水图像,也即可用、清晰且准确的漫水图像作为目标漫水图像。最后,对目标漫水图像进行调整,得到手势识别区域,使得在确定手势识别区域的过程中,不会受到用户的手部饰品、指甲颜色等外界因素的影响,保证识别的准确性。实质上,得到的手势识别区域为一张二值化图像,用于描述用户手部当前的手部状态以及用户手部当前的位置坐标。其中,对目标漫水图像进行的调整可以包括对目标漫水图像的膨胀调整、腐蚀调整以及取反调整等。参见图2b即为通过上述过程得到的手势识别区域。需要说明的是,图2b所示的手势识别区域是对像素为160*120的图像数据进行处理得到的,由于对像素为160*120的图像数据进行识别的效率较好,不会对响应速度造成影响,因此,通常都会采集像素为160*120的图像数据。而在实际应用的过程中,采集的图像数据的像素还可为640*480,对像素为640*480的图像数据进行识别得到的手势识别区域参见图2c所示,与像素为160*120的图像数据得到的手势识别区域相比更加的清晰圆滑。本发明实施例对采集到的图像数据的像素不进行具体限定。在通过漫水填充算法得到了完整的手部识别区域后,图像处理模块将手势识别区域传输至事件处理模块,以便事件处理模块后续根据得到的手部识别区域来判断当前手指状态。具体地,可以判断当前是食指前伸还是中指前伸还是食指、中指、无名指前伸等,也即判断当前用户的手部有哪些手指存在动作。202、光栅模块对多个图像数据进行识别,得到运动参数,并将运动参数传输至事件处理模块。在本发明实施例中,图片处理模块中的图片采集单元是持续的采集图像数据的,因此,当相邻两张图像数据中手势识别区域的位置发生变化时,就可以确定检测到用户手部开始运动了,此时,便需要对多个图像数据的手势进行识别,按照手势来触发相应的事件。其中,由于采用图像处理模块传输给事件处理模块的手势识别区域仅能表达出用户手部的前伸、收缩等状态,而不能体现出诸如手指单击、手指双击等手部在垂直方向上的变化,因此,本发明的背景辅助模块上设置有光栅模块,由光栅模块产生多条红外线,当用户手部在垂直方向上发生变化时,通过红外线的阻断与断开可以实现对用户手部在垂直方向上的手势的识别。这样,当检测到用户手部开始运动时,光栅模块与图像处理模块会同时开始对多个图像数据的识别工作,由光栅模块识别用户手部在垂直方向的手势,由图像处理模块识别用户手部在水平方向的手势,并将识别到的数据作为运动参数传输给事件处理模块,以便事件处理模块可以根据运动参数触发相应的目标事件。具体地,图像处理模块对用户手部在水平方向上的手势进行识别得到的数据采用手部运动变化值来体现,进而在后续根据手部运动变化值来控制计算机设备上的映射体进行移动。用户手部在水平方向上移动时,涉及到的数据可以概括为方向和距离,当检测到用户手部开始运动时,图像处理模块获取多个图像数据中相邻两帧图像数据的像素值,对像素值进行去燥点处理,采用光流算法对像素值的变化进行追踪,根据各个像素运动分量的不同的像素运动方向,放入对应的像限(也即不同的分区)中,求出各像限的运动分量,并通过比对决断出其中一像限为目的像限,求出该像限运动分量,将像素运动方向和像素运动分量作为手部运动变化值。其中,在执行光流算法对像素值的变化进行追踪时,可以采用opencv中的calcopticalflowfarneback函数实现。由于用户手部可能会移动手部主体或者手指,移动手指还可以区别为移动几根手指以及每根手指的移动方向和移动距离,因此,图像处理模块在生成手部运动变化值时,可以标注上哪些像素运动方向和像素运动分量具体属于哪一根手指以及哪一个部位,使得事件处理模块在接收到手部运动变化值时,可以清楚的识别到用户手部每一个位置的详细运动情况,进而触发准确的目标事件。本发明对确定像素值的像素运动方向和像素运动分量的方式不进行具体限定。其中,为了保证图像识别的准确定,图像处理模块识别的图像数据通常为灰度图。需要说明的是,如果根据光流算法确定用户的手掌并没有移动,只有手指进行滑动,则可以通过漫水填充算法获得的手部识别区域来固定一个小窗口,由图像采集单元提取小窗口内的图像,然后应用光流算法对提取的图像进行识别,判断手指是否移动,从而缩短识别手指移动的过程,无需再对整个手部进行识别。而当确定用户已经移动了整个手掌时,该小窗口失效,等下次手掌静止且只有手指移动时,重新获取小窗口。例如,如果食指、中指进行上下滑动(手掌未动),光栅变化,于是用提取小窗口给光流算法算移动距离和方向。另外,在基于光流算法对用户手部的动作进行识别时,还可以将漫水填充算法得到的手部坐标映射在图像数据中,进而在图像数据中提取兴趣区域,并采用光流算法对兴趣区域进行识别,从而缩短光流算法的识别过程,提高识别效率。本发明对光流算法的识别对象不进行具体限定。具体地,光栅模块对用户手部在垂直方向上的手势进行识别得到的数据采用红外变化值来体现。用户手部在垂直方向上移动时涉及到的数据可以概括为移动次数和移动对象,当检测到用户手部开始运动时,光栅模块对多条红外线的当前状态进行检测,确定多条红外线的红外当前值,并获取多条红外线的红外原始值,根据多条红外线中红外当前值与红外原始值不同的红外线,生成红外变化值。对于多条红外线中的每条红外线,具体识别过程为:光栅模块将红外线的红外当前值与红外原始值进行比对,如果红外当前值为阻断状态,红外原始值为联通状态,则生成阻断信号作为红外变化值;如果红外当前值为联通状态,红外原始值为阻断状态,则生成联通信号作为红外变化值。需要说明的是,由于不同手指的所处位置是不同的,且长短也是不同的,因此,在生成阻断信号和联通信号时,可以将阻断信号和联通信号标注上是根据哪一个手指生成的,以便事件处理模块可以根据红外变化值中的信号具体确定哪一个手指发生了移动。通过上述过程,图像处理模块和光栅模块便可以分别获取到手部运动变化值和红外变化值,这时,便可以将手部运动变化值和红外变化值都作为运动参数传输给事件处理模块,由事件处理模块根据运动参数来触发目标事件。需要说明的是,在实际应用的过程中,用户手部的动作可能仅是水平方向的动作或垂直方向的动作,使得只有图像处理模块或光栅模块中的某一个模块可以采集到运动参数,因此,图像处理模块和光栅模块并不是一定要同时采集到运动参数的,只要任一模块采集到运动参数,即可将运动参数传输给事件处理模块进行处理,也即运动参数可为手部运动变化值或红外变化值中的一种或两种。203、事件处理模块根据运动参数和手势识别区域确定目标事件,并触发目标事件。在本发明实施例中,当事件处理模块接收到光栅模块和图像处理模块传输的运动参数和手势识别区域后,便可以根据运动参数和手势识别区域确定对应的目标事件,进而触发目标事件。其中,由于运动参数会包括手部运动变化值或红外变化值中的一种或两种,因此,事件处理模块会采用下述两种方式,分别根据手部运动变化值和红外变化值确定不同的目标事件进行触发。方式一、根据手部运动变化值确定目标事件。手部运动变化值中包括像素运动分量,像素运动分量指示了用户手部的移动距离,考虑到用户有时可能会下意识的移动微小的距离,这些动作并不是用户主观意识的移动,这种微小距离的移动不足以实现用户与终端之间的交互,因此,事件处理模块中设置有预设阀值,在根据手部运动变化值确定目标事件时,只有手部运动变化值大于了预设阀值,才确定可以触发目标事件,进而继续确定目标事件,否则视为用户手部处于静止状态,不触发目标事件。具体地,由于用户手部在终端上会以响应体的形式体现在屏幕上,也即屏幕上设置有光标,因此,当手部运动变化值中的像素运动分量大于等于预设阀值时,事件处理模块确定目标事件为移动事件,控制用户手部在终端上的映射体由当前位置向手指运动方向指示的方向移动指定距离。其中,指定距离是根据手部运动变化值中的像素运动分量生成的,具体方法为:获取放大系数,将该像素运动分量乘以放大系数,从而得到指定距离。另外,考虑到用户的手部并不会保持匀速运动的状态,因此,在用户的手部快速运动时,需要模拟鼠标加速度运动,也即根据用户手部在固定时间段内的运动分量,算出用户手部的移动速度,并采用分段函数,对已经生成的指定距离进行调整。通常来说,分段函数为移动速度乘以移动倍率,本发明对分段函数的内容不进行具体限定。在实际应用的过程中,由于用户手部是可以区分手指与手部,为了使用户基于手势实现的操作更加的多样化,可以设置移动不同的手指或者移动多根手指或者移动手部可以执行更加复杂的操作,详情参见下述表1。需要说明的是,表1中仅是一些举例说明的目标事件,在实际的应用中,本发明涉及的目标事件并不局限于表1中的例子,本发明实施例对涉及的目标事件的事件数量以及目标事件的具体内容不进行限定。表1其中,如果食、中指执行点击,需要食、中指同时抬起放下;如果食、中指执行滑动,需要食、中指同时滑动。另外,由于用户手部做出手势是需要时间的,使得图像处理模块返回的手部运动变化值很可能是描述用户手部做手势的过程的,也即描述用户手部中间状态的。例如,用户手部的手掌自然放置,大拇指为初始态,当要改变为食指、中指、无名指和小指的状态时,需要执行的动作为大拇指保持不动,其他指头由蜷缩改为自然伸直,则其他指头由蜷缩改为自然伸直的过程即为中间状态,中间状态不能触发任何目标事件。具体参见下述两种情况:第一种、当用户手部的手指向下滑动时,事件处理模块也会实时通过对手部运动变化值的检测确定了目标事件为移动事件,且控制映射体在屏幕上移动。但是,当用户手部移动到握拳状态时,映射体可能还没移到用户想要的位置,这时,用户手部的手指抬起、前伸、放下的过程即为中间状态,此时事件处理模块不移动映射体,当用户手部的手指再向下滑动时,事件处理模块也会实时继续移动映射体。第二种、当用户手部的手指向上滑动时,事件处理模块也会实时通过对手部运动变化值的检测确定了目标事件为移动事件,且控制映射体在屏幕上移动。但是,当用户手部移动到手指伸直状态时,映射体可能还没移到用户想要的位置,这时,用户手部的手指抬起、收缩、放下的过程即为中间状态,此时事件处理模块不移动映射体,当用户手部的手指再向上滑动时,事件处理模块也会实时继续移动映射体。在实际应用的过程中,事件处理模块中还可以定义滑动事件、放大事件和缩小事件,也即当事件处理模块检测到用户手部的手指离开背景辅助模块后,一定的速率向上、下、左、右方向移动,相应对应触发滑动事件,实现对应方向的滑动动作;或,当事件处理模块检测到用户手部的两根手指之间的间距发生变化,相对应触发放大事件和缩小事件,实现识别手指执行放大缩小动作。方式二、根据红外变化值确定目标事件。红外变化值记录了手指在移动的过程中对多条红外线进行的阻断以及联通,通过识别红外线的变化个数以及变化方式可以确定用户使用手势点击了多少次、每次点击的间隔以及采用哪根手指点击。因此,事件处理模块统计红外变化值的变化个数,确定变化个数对应的点击事件为目标事件,控制映射体在当前位置按照目标事件的指示执行目标操作。其中,目标操作可为点击操作、滚动操作、滑动操作、放大操作以及缩小操作等。例如,假设红外变化值中包括了一个阻断信号和一个联通信号,则可以确定用户单击了一次,此时,可以将单击事件作为目标事件进行触发。也即以右手食指自然放置举例,多条红外线从左边往右边照射,在限定的时间范围内,事件处理模块通过识别红外变化值确定食指抬起、放下,则代表一次点击事件,将点击事件作为目标事件触发一次;在限定的时间,事件处理模块通过识别红外变化值确定食指抬起、放下、抬起、放下,则代表一次双击事件,将双击事件作为目标事件触发一次。同理,其他手指自然放置,事件处理模块通过识别红外变化值确定其他手指同时抬起、放下,则代表一次点击事件,还可以根据手指不同个数,触发不同事件,详情参见下述表2。需要说明的是,表2中仅是一些举例说明的输出的事件,在实际的应用中,本发明涉及的事件并不局限于表1中的例子,本发明实施例对涉及事件的事件数量以及事件的具体内容不进行限定。表2手指个数单/双击输出食指单击右键单击事件食指双击右键双击事件食、中指单击左键事件食、中指双击待定需要说明的是,手势对应的事件是可以由用户自行设置的,事件处理模块将用户设置的手势与事件的对应关系存储在相关的表格内即可。事件是可以基于用户在背景辅助模块上的各种手势设置的,可基于用户的优选项设置手势与事件之间的对应关系。上述步骤201至步骤203中所示的过程,参见图2d,简单可以概括为:虚拟鼠标驱动装置捕获光栅标志位,并捕获图像数据,确定用户是否将手部放置于鼠标垫,当确定了用户将手部放置在鼠标垫时,对用户手部的手部轮廓进行识别,确定用户手部的运动参数;当确定了用户手部未放在鼠标垫时,保持当前的捕获状态。随后,根据运动参数确定用户手部的手掌是否移动,且将当前用户手部的状态作为前帧状态进行存储。如果确定手掌移动,则将移动事件作为目标事件进行触发;如果确定手掌未移动,则对用户手部的手部轮廓进行识别,判断用户手部的手指是否移动。如果确定手指移动,则将移动事件作为目标事件进行触发;如果确定手指未移动,则根据运动参数确定用户手部的手指是否点击;如果确定手指点击,则将点击事件作为目标事件进行触发;如果确定手指未点击,则保持当前状态即可。通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害。本发明提供的方法,通过光栅模块和图像处理模块,对用户手部在背景辅助模块上的各种手势及操作进行识别,实现了基于手部的操作就可以对终端进行控制,无需依赖实体鼠标,将用户由于长时间握持实体鼠标而患病的风险降到最低,避免对用户的手部造成伤害,提高了用户粘度。在示例性实施例中,参见图3,还提供了一种设备,该设备300包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的用于虚拟鼠标的手势识别方法。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的用于虚拟鼠标的手势识别方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1