具体实施方式
如图1所示,在一个实施例中,一种人机交互方法,包括如下步骤:
步骤S110,采集标记的图像。
本实施例中,标记是指定颜色和/或形状的物体。进一步的,标记可以为指定颜色和/或形状的反光材料。优选的,如图2所示,标记201为外部覆盖着反光材料的环状物体,可根据手掌的大小进行调整,以便于标记套入手掌时能够与手掌相匹配。进一步的,套在手掌中的环状标记包括长条形的带子以及与带子连接的延伸部。具体的,长条形的带子可首尾相接形成可调整大小的环状结构,延伸部贴设于带子外侧;此外,延伸部也可以是设置于带子外侧的凸起。
对套设于手掌上的标记进行图像拍摄得到包含标记的图像,进而对用户手掌所附带的标记进行识别。在其它实施例中,标记还可以是人体的某一部位,例如,手掌中的某一区域。
步骤S130,识别出标记的位置和长度。
本实施例中,在采集的图像中进行检测识别出标记所在的位置和长度。具体的,标记的位置实质为标记的重心位置,表现三维坐标的形式,即预先设定三维坐标系,用于对标记进行定位以及确定标记的长度。
所设定的三维坐标系可以显示屏幕的中心为坐标原点,例如,如图3所示,三维坐标系以图像采集装置所在平面为XY平面。
进一步的,用户带动套设在手掌中的标记进行移动等操控动作时所处的区域为操作区域,与图像采集模块所在的平面,该平面垂直于视线,即剪切面。虚拟屏是与剪切面平行,并且与用户相对的一个虚拟平面。将用户在操作区域中标记的重心投影至虚拟屏中所得到的位置即为标记的位置,依此类推,通过投影的方式得到标记的长度,由于用户的手掌以及套设于手掌上的标记是曲面的,通过投影所得到的位置和长度有效地减小了处理的复杂度,又保证了处理的精确度。
步骤S150,根据标记的位置和长度产生控制指令。
本实施例中,通过标记的位置以及长度来确定用户所进行的操作,进而产生相应的控制指令。控制指令包括了按住指令和松开指令,例如,按住某一应用程序图标;或者按住某一应用程序图标时松开的操作。
步骤S170,响应控制指令。
本实施例中,将产生的控制指令显示在显示设备中,例如,控制指令为某一应用程序图标的按住指令,则对于显示设备而言该应用程序图标上将显示为手形图标的按住效果。显示设备包括CRT(Cathode Ray Tube)显示器、LED(LightEmitting Diode)显示器、液晶显示器(Liquid Crystal Display,简称LCD)、投影仪以及3D液晶显示器等。
如图4所示,在另一个实施例中,上述人机交互方法还包括如下步骤:
步骤S210,确定虚拟屏的中心位置。
本实施例中,在识别标记的位置和长度,产生控制指令之前,需确定中心位置,进而按照中心位置形成三维坐标系以及用户的操作区域。虚拟屏是与用户相对的平面,设置于三维坐标系中,用于为用户提供可操作区域。
具体地,虚拟屏中心位置的确定可以通过识别用户的晃动动作得到相应的位置,将得到的位置作业虚拟屏的中心位置。此外,根据需要以及用户习惯,虚拟屏中心位置的确定还可以通过其它动作实现。例如,识别用户的旋转动作,判断旋转动作中标记的旋转角度是否达到预设角度,若是,则根据标记的旋转角度得到中心位置。又例如,用于实现中心位置确定的动作可以是用户将左手遮挡于右手面前,附带了标记的右手在左手手掌上划一道线,此时,将无法识别到标记,得到一段未识别到标记的识别结果,进而根据与这一段识别结果首尾相邻的标识的位置确定虚拟屏的中心位置。用于实现中心位置确定的动作还可是其它形式,在此不再赘述。
如图5所示,在一个实施例中,上述步骤S210的具体过程包括:
步骤S211,检测标记的图像,从图像中识别出晃动动作。
本实施例中,对采集得到的多个图像进行检测,得到标记的位置,进而根据连续的位置变化识别出用户的晃动动作,通过用户的晃动动作触发中心位置的设定以及虚拟屏的初始化。具体的,晃动动作可以是用户手掌中附带的掌带若干次连续的反方向移动,例如,用户的手掌带动掌带向左移动后向右移动,然后再向左移动,产生左右左方向上的晃动动作。依此类推,晃动动作还可以是右左右方向上的晃动动作,左右左右方向上的晃动动作以及上下上方向上的晃动动作等。
如图6所示,在一个实施例中,上述步骤S211的具体过程包括:
步骤S2111,以当前帧为起始提取预设帧数的图像序列。
本实施例中,持续采集标记的图像,得到包含多帧标记的图像的图像序列,该图像序列是按照采集时间对多帧标记的图像进行依次存储的,当前帧的标记的图像即为当前时刻最后采集到的标记的图像。
以当前帧为起始,在图像序列中向前提取预设帧数的标记的图像。优选的实施例中,预设帧数为15帧。
步骤S2112,检测图像序列中的标记之间的位移是否大于位移极值,且位移之间的方向相反,若是,则进入步骤S2113,若否,则结束。
本实施例中,标记之间的位移是提取的图像序列中得到的两个标记的位置所形成的位移,用于表示用户带动标记进行移动的距离和方向。若位移之间的方向相反,则说明用户带动标记沿某一方向移动之后又向相反的方向移动。
在优选的实施例中,位移极值为30毫米。假设用户的晃动动作为水平方向上连续三次反向移动,例如,用户的手掌带动标记向左水平移动后向右水平移动,然后再向左水平移动。此时,在提取的图像序列中,标记的位置之间将会检测到三个达到位移极值的位移,在这三个位移中,第一个标记的位置较前一个标记的位置向左移动了一定距离,第二个标记的位置较第一个标记的位置向右移动了一定距离,而第三个标记的位置较第二个标记的位置向左移动了一定距离,并且X轴坐标上的位移均大于Y轴坐标上的位移以及Z轴坐标上的位移。
步骤S2113,获取相应标记的位置产生时间。
步骤S2114,判断检测得到的位移数量是否达到预设数量,若是,则进入步骤S2115,若否,则结束。
本实施例中,若存在若干个相互之间方向相反的位移,则说明用户带动标记进行了若干次反向移动。在优选的实施例中,预设数量为3次。
步骤S2115,进一步判断起始时间和终止时间的时间间隔是否小于时间距离,若是,则进入步骤S2116,若否,则结束。
本实施例中,在获取的多个位置产生时间中提取起始时间和终止时间,进而得到产生检测得到的位移所耗费的时间。若判断到起始时间和终止时间之间的时间间隔小于时间距离,则说明产生若干个位移的动作为晃动动作。
步骤S2116,判定发生晃动动作。
本实施例中,判定发生晃动动作之后,若在预设的时间限值内再次判定发生晃动动作,则忽略判定的晃动动作,以避免用户晃动次数过多,频繁地根据晃动动作变换中心位置。例如,该预设的时间限值为1秒。
步骤S213,获取晃动动作的停留位置,将停留位置设置在虚拟屏的中心位置。
本实施例中,识别出用户的晃动动作之后,获取晃动动作的停留位置,该停留位置为三维坐标的形式,将停留位置作为虚拟屏的中心位置。
步骤S230,按照中心位置进行初始化形成三维立体屏幕,虚拟屏为三维立体屏幕中的平面。
本实施例中,按照中心位置形成与用户相对设置的虚拟屏,中心位置即为虚拟屏的中心,进而将虚拟屏向显示屏幕的方向延伸形成三维立体屏幕。在优选的实施例中,虚拟屏的宽度为250毫米,高度为186毫米。
步骤S250,建立虚拟屏中标记的位置和显示屏幕中像素值之间的映射关系。
本实施例中,按照虚拟屏与显示屏幕之间的比例关系将标记的位置折算为显示屏幕中的像素值,将标记的位置与折算得到的像素值相关联,建立映射关系。
例如,虚拟屏的大小为250毫米×186毫米,显示屏幕的大小为1280×720个像素,则显示屏幕的中心为从左数640个像素,从上往下数第360个像素,相应地,标记在虚拟屏中每移动1毫米,则相当于在显示屏幕中移动1280/250≈4个像素点。
进一步的,中心位置为(x0,y0,z0),显示屏幕的中心像素值为(640,360)。标记在虚拟屏中移动到(x1,y1,z1)时,对应的像素值为(x2,y2),其中,x2=640+(x1-x0*1280/250),并且若x2<0,则将x2设置为0,若x2>1280,则将x2设置为1280;y2=360-(y1-y0)*720/186,并且若y2<0,则将y2设置为0,若y2>720,则将y2设置为720。以上均以毫米为单位进行计算,并且显示屏幕中纵向排列的像素值正方向是与虚拟屏中Y坐标轴的正方向相反的。
如图7所示,在一个实施例中,上述步骤S150的具体过程包括:
步骤S 151,判断标记的长度是否小于长度限值,若是,则进入步骤S152,若否,则进入步骤S153。
本实施例中,标记为长条形的掌带,将套在用户的手掌中。随着用户手掌的握下和松开,标记的长度将会发生变化。如图8所示,若判断到标记的长度小于长度限值,则说明用户握下手掌,产生显示屏幕中的按住指令,若判断到标记的长度并没有小于长度限值,则说明用户松开手掌,相应的,显示屏幕中的按住指令将会变换为松开指令。
步骤S152,产生显示屏幕中的按住指令。
步骤S153,产生显示屏幕中的松开指令。
如图9所示,在另一个实施例中,上述步骤S150的具体过程包括:
步骤S155,获取标记的识别距离,并提取识别距离对应的距离长度值。
本实施例中,标记的识别距离是采集标记的图像时标记和图像采集装置之间的距离。随着识别距离的逐渐变小,采集的标记的图像中,标记逐渐变大,标记的长度也变长;而随着识别距离的逐渐变小,采集的标记的图像中,标记逐渐变小,标记的长度也随之变小,因此,需屏蔽识别距离的影响,使用户在距离图像采集装置无论远近如何均可以操控自如。
预先对标记的长度进行采样,得到每一识别距离下标记的长度,该标记的长度即为距离长度值。每一识别距离下标记的长度是在松开手掌的前提下采集标记的图像,并从这一图像中识别得到的。将得到的距离长度值与识别距离相关联,建立距离长度值与识别距离之间的映射关系。
在识别出标记的位置和长度之后还需要获取标记的识别距离,将从距离长度值与识别距离之间的映射关系中提取出获取的识别距离所对应的距离长度值。
步骤S156,判断标记的长度是否小于距离长度值的缩小值,若是,则进入步骤S157,若否,则进入步骤S158。
本实施例中,距离长度值的缩小值是在某一标记的识别距离下手掌处于握下状态时得到的标记的长度,在手掌从松开状态变换为握下状态时标记的长度将大致由距离长度值变换为距离长度的缩小值。在优选的实施例中,缩小值为距离长度值的二分之一。将缩小值设定为距离长度值的二分之一将有效地避免用户手掌发生偏移而未正对图像采集装置时标记的长度稍微变小而被误认为用户手掌处于握下状态,提高了判断的精确度。
处于松开状态下标记的长度是接近于识别距离所对应的距离长度值的,并且必定不会小于距离长度值的缩小值。因此,对识别得到的标记的长度进行判断,若判断到标记的长度小于距离长度值的缩小值,则说明用户的手掌处于松开状态,进而产生显示屏幕的松开指令;若判断到标记的长度大于或等于距离长度值的缩小值,则说明用户的手掌处于握住状态,进而产生显示屏幕的按住指令。
步骤S157,产生显示屏幕的按住指令。
步骤S158,产生显示屏幕的松开指令。
如图10所示,在一个实施例中,上述步骤S170的具体过程包括:
步骤S171,根据映射关系得到标记在显示屏幕中的像素值。
本实施例中,根据虚拟屏中标记的位置和显示屏幕中像素值之间的映射关系得到标记在显示屏幕中的像素值,实现标记位置到像素值的转换。
步骤S173,按照标记在显示屏幕中的像素值显示控制指令对应的图标。
本实施例中,根据控制指令的不同,显示屏幕中展示的图标也各不相同。例如,如图11所示,控制指令为某一应用程序图标的按住指令,此时,将模拟鼠标按住应用程序图标的场景,在显示屏幕中显示手形图案的图标,该手形图案中的手形是处于握下状态的;如图12所示,控制指令为应用程序图标的松开指令,从应用程序图标的按住指令变为松开指令,此时,在显示屏幕中显示手形图案中手形为松开状态的图标。
显示屏幕中的图标是与虚拟屏上的标记对应的,例如,在虚拟屏的中心位置握下手掌所识别到的标记将与显示屏幕的中心位置手形图案中手形处于握下状态的图标对应。在其它实施例中,图标还可以是光标、指针等形式。
如图13所示,在另一个实施例中,上述步骤S171之前还包括如下步骤:
步骤S175,根据标记的长度得到长度变化值。
本实施例中,分别从相邻的两帧采集得到的图像中获取标记的长度,并通过标记的长度之间的差值得到长度变化值。
步骤S176,判断长度变化值是否小于阈值,若否,则进入步骤S177,若是,则返回步骤S175。
本实施例中,若判断到长度变化值达到了阈值,则说明用户当前正在握下手掌的可能性非常高,在用户握下手掌的过程中标记极可能从手心向手掌外侧偏移,进而造成标记的位置发生偏移,此时,将判断长度变化值是否超出了阈值,若是,则说明标记已经从手心向手掌外侧偏移,标记的位置发生了偏移,此时,需屏蔽标记的位置发生的偏移对显示屏幕中图标所对应的像素值产生影响,此时,将重新调整虚拟屏的中心位置。在优选的实施例中,阈值为标记的识别距离所对应的距离长度值的四分之一。
进一步的,在用户从握下手掌的状态松开手掌时,在相邻两帧标记的图像中得到的长度变化值也极可能产生较为剧烈的变化,此时也将进入步骤S177中进行标记的位置调整。
步骤S177,根据标记的位置得到位置变化值。
本实施例中,在当前帧标记的图像中标记的位置为(x1,y1,z1),而前一帧标记的图标中标记的位置为(x0,y0,z0),在X坐标轴上的位置变化值为x1-x0,在Y坐标轴上的位置变化值为y1-y0。
步骤S178,按照位置变化值调整虚拟屏中标记的位置。
本实施例中,重新设置虚拟屏的中心位置,以使标记虽然从手心向手掌外侧偏移时与标记对应的图标在显示屏幕中的位置没有发生变化,忽略标记发生的偏移所造成的影响。按照位置变化值进行调整所得到的标记的位置中,X坐标轴上的坐标值为x+x1-x0,Y坐标轴上的坐标值为y+y1-y0,其中,(x,y)为调整前标记在X坐标轴和Y坐标轴上的坐标。
在另一个实施例中,上述人机交互系统还包括:识别出标记的面积,并判断标记的面积是否大于面积限值,若是,则进行操控界面的回退。
本实施例中,标记中与手背对应的反光材料的长度和面积均大于与手掌心对应的反光材料,用户的手掌心由面向图像采集装置的位置进行翻转,变为手背面向图像采集装置,反光材料的面积也由小变大,因此,在发生了翻转动作之后,将会使得标记的面积大于面积限值,此时,将退出当前操控界面,返回上一层操控界面或退出操控界面。
如图14所示,在一个实施例中,一种人机交互系统包括图像采集模块110、识别模块130、处理模块150以及响应模块170。
图像采集模块110,用于采集标记的图像。
本实施例中,标记是指定颜色和/或形状的物体。进一步的,标记可以为指定颜色和/或形状的反光材料。优选的,标记为外部覆盖着有反光材料的环状物体,可根据手掌的大小进行调整,以便于标记套入手掌时能够与手掌相匹配。进一步的,套在手掌中的环状标记包括长条形的带子以及与带子连接的延伸部。具体的,长条形的带子可首尾相接形成可调整大小的环状结构,延伸部贴设于带子外侧;此外,延伸部也可以是设置于带子外侧的凸起。
对套设于手掌上的标记进行图像拍摄得到包含标记的图像,进而对用户手掌所附带的标记进行识别。在其它实施例中,标记还可以是人体的某一部位,例如,手掌中的某一区域。
识别模块130,用于识别出标记的位置和长度。
本实施例中,识别模块130在采集的图像中进行检测识别出标记所在的位置和长度。具体的,标记的位置实质为标记的重心位置,表现三维坐标的形式,即预先设定三维坐标系,用于对标记进行定位以及确定标记的长度。
进一步的,用户带动套设在手掌中的标记进行移动等操控动作时所处的区域为操作区域,与图像采集模块所在的平面,该平面垂直于视线,即剪切面。虚拟屏是与剪切面平行,并且与用户相对的一个虚拟平面。识别模块130将用户在操作区域中标记的重心投影至虚拟屏中所得到的位置即为标记的位置,依此类推,通过投影的方式得到标记的长度,由于用户的手掌以及套设于手掌上的标记是曲面的,通过投影所得到的位置和长度有效地减小了处理的复杂度,又保证了处理的精确度。
处理模块150,用于根据标记的位置和长度产生控制指令。
本实施例中,处理模块150通过标记的位置以及长度来确定用户所进行的操作,进而产生相应的控制指令。控制指令包括了按住指令和松开指令,例如,按住某一应用程序图标;或者按住某一应用程序图标时松开的操作。
响应模块170,用于响应控制指令。
本实施例中,响应模块170将产生的控制指令显示在显示屏幕中,例如,控制指令为某一应用程序图标的按住指令,则响应模块的显示屏幕中该应用程序图标上将显示为手形图标的按住效果。响应模块包括CRT显示器、LED显示器、液晶显示器、投影仪以及3D液晶显示器等,可与图像采集模块110集成为一体。
如图15所示,在另一个实施例中,上述人机交互系统还包括初始模块210以及映射模块230。
上述识别模块130还用于确定虚拟屏的中心位置。
本实施例中,在识别标记的位置和长度,产生控制指令之前,需识别模块130确定中心位置,进而按照中心位置形成三维坐标系以及用户的操作区域。虚拟屏是与用户相对的平面,设置于三维坐标系中,用于为用户提供可操作区域。
具体地,虚拟屏中心位置的确定可以是识别模块130通过识别用户的晃动动作得到相应的位置,将得到的位置作业虚拟屏的中心位置。此外,根据需要以及用户习惯,虚拟屏中心位置的确定还可以通过其它动作实现。例如,识别模块130识别用户的旋转动作,判断旋转动作中标记的旋转角度是否达到预设角度,若是,则根据标记的旋转角度得到中心位置。又例如,用于实现中心位置确定的动作可以是用户将左手遮挡于右手面前,附带了标记的右手在左手手掌上划一道线,此时,识别模块130将无法识别到标记,得到一段未识别到标记的识别结果,进而根据与这一段识别结果首尾相邻的标识的位置确定虚拟屏的中心位置。用于实现中心位置确定的动作还可是其它形式,在此不再赘述。
如图16所示,在一个实施例中,上述识别模块130包括动作检测单元131以及位置获取单元133。
动作检测单元131,用于检测标记的图像,从图像中识别出晃动动作。
本实施例中,对采集得到的多个图像进行检测,得到标记的位置,进而动作检测单元131根据连续的位置变化识别出用户的晃动动作,通过用户的晃动动作触发中心位置的设定以及虚拟屏的初始化。具体的,晃动动作可以是用户手掌中附带的掌带的若干次连续的反方向移动,例如,用户的手掌带动掌带向左移动后向右移动,然后再向左移动,产生左右左方向上的晃动动作。依此类推,晃动动作还可以是右左右方向上的晃动动作,左右左右方向上的晃动动作以及上下上方向上的晃动动作等。
如图17所示,在一个实施例中,上述动作检测单元131包括图像序列提取单元1311、标记判断单元1313、位移处理单元1315以及动作判定单元1317。
图像序列提取单元1311,用于以当前帧为起始提取预设帧数的图像序列。
本实施例中,持续采集标记的图像,得到包含多帧标记的图像的图像序列,该图像序列是按照采集时间对多帧标记的图像进行依次存储的,当前帧的标记的图像即为当前时刻最后采集到的标记的图像。
图像序列提取单元1311以当前帧为起始,在图像序列中向前提取预设帧数的标记的图像。优选的实施例中,预设帧数为15帧。
标记判断单元1313,用于检测图像序列中标记之间的位移是否大于位移极值,且位移之间的方向相反,若是,则获取相应标记的位置产生时间,若否,则停止执行。
本实施例中,标记之间的位移是提取的图像序列中得到的两个标记的位置所形成的位移,用于表示用户带动标记进行移动的距离和方向。若位移之间的方向相反,则说明用户带动标记沿某一方向移动之后又向相反的方向移动。
在优选的实施例中,位移极值为30毫米。假设用户的晃动动作为水平方向上连续三次反向移动,例如,用户的手掌带动标记向左水平移动后向右水平移动,然后再向左水平移动。此时,在提取的图像序列中,标记的位置之间将会检测到三个达到位移极值的位移,在这三个位移中,第一个标记的位置较前一个标记的位置向左移动了一定距离,第二个标记的位置较第一个标记的位置向右移动了一定距离,而第三个标记的位置较第二个标记的位置向左移动了一定距离,并且X轴坐标上的位移均大于Y轴坐标上的位移以及Z轴坐标上的位移。
位移处理单元1315,用于判断检测得到的位移数量是否达到预设数量,若是,则从位置产生时间中提取起始时间和终止时间。
本实施例中,若位移处理单元1315判断到存在若干个相互之间方向相反的位移,则说明用户带动标记进行了若干次反向移动。在优选的实施例中,预设数量为3次。
动作判定单元1317,用于判断起始时间和终止时间的时间间隔是否小于时间距离,若是,则判定发生晃动动作,若否,则停止执行。
本实施例中,在获取的多个位置产生时间中提取起始时间和终止时间,进而得到产生检测得到的位移所耗费的时间。若动作判定单元1317判断到起始时间和终止时间之间的时间间隔小于时间距离,则说明产生若干个位移的动作为晃动动作。判定发生晃动动作之后,若在预设的时间限值内再次判定发生晃动动作,则忽略判定的晃动动作,以避免用户晃动次数过多,频繁地根据晃动动作变换中心位置。例如,该预设的时间限值为1秒。
位置获取单元133,用于获取晃动动作的停留位置,将停留位置设置为虚拟屏的中心位置。
本实施例中,识别出用户的晃动动作之后,位置获取单元133获取晃动动作的停留位置,该停留位置为三维坐标的形式,可以是标记的重心,将停留位置作为虚拟屏的中心位置。
初始模块210,用于按照中心位置进行初始化形成三维立体屏幕,虚拟屏为三维立体屏幕中的平面。
本实施例中,初始模块210按照中心位置形成与用户相对设置的虚拟屏,中心位置即为虚拟屏的中心,进而将虚拟屏向显示屏幕的方向延伸形成三维立体屏幕。在优选的实施例中,虚拟屏的宽度为250毫米,高度为186毫米。
映射模块230,用于建立虚拟屏中标记的位置和显示屏幕中像素值之间的映射关系。
本实施例中,映射模块230按照虚拟屏与显示屏幕之间的比例关系将标记的位置折算为显示屏幕中的像素值,将标记的位置与折算得到的像素值相关联,建立映射关系。
在另一个实施例中,上述处理模块150还用于判断标记的长度是否小于长度限值,若是,则产生显示屏幕中的按住指令,若否,则产生显示屏幕中的松开指令。
本实施例中,标记为长条形的掌带,将套在用户的手掌中。随着用户手掌的握下和松开,标记的长度将会发生变化。若处理模块150判断到标记的长度小于长度限值,则说明用户握下手掌,产生显示屏幕中的按住指令,若判断到标记的长度并没有小于长度限值,则说明用户松开手掌,相应的,显示屏幕中的按住指令将会变换为松开指令。
如图18所示,在一个实施例中,上述处理模块150包括距离处理单元151以及长度判断单元153。
距离处理单元151,用于获取标记的识别距离,并提取识别距离对应的距离长度值。
本实施例中,标记的识别距离是采集标记的图像时标记和图像采集装置之间的距离。随着识别距离的逐渐变小,采集的标记的图像中,标记逐渐变大,标记的长度也变长;而随着识别距离的逐渐变小,采集的标记的图像中,标记逐渐变小,标记的长度也随之变小,因此,需屏蔽识别距离的影响,使用户在距离图像采集装置无论远近如何均可以操控自如。
预先对标记的长度进行采样,得到每一识别距离下标记的长度,该标记的长度即为距离长度值。每一识别距离下标记的长度是在松开手掌的前提下采集标记的图像,并从这一图像中识别得到的。将得到的距离长度值与识别距离相关联,建立距离长度值与识别距离之间的映射关系。
在识别出标记的位置和长度之后还需距离处理单元151获取标记的识别距离,将从距离长度值与识别距离之间的映射关系中提取出获取的识别距离所对应的距离长度值。
长度判断单元153,用于判断标记的长度是否小于距离长度值的缩小值,若是,则产生显示屏幕的按住指令,若否,则产生显示屏幕中的松开指令。
本实施例中,距离长度值的缩小值是在某一标记的识别距离下手掌处于握下状态时得到的标记的长度,在手掌从松开状态变换为握下状态时标记的长度将大致由距离长度值变换为距离长度的缩小值。在优选的实施例中,缩小值为距离长度值的二分之一。将缩小值设定为距离长度值的二分之一将有效地避免用户手掌发生偏移而未正对图像采集装置时标记的长度稍微变小而被误认为用户手掌处于握下状态,提高了判断的精确度。
处于松开状态下标记的长度是接近于识别距离所对应的距离长度值的,并且必定不会小于距离长度值的缩小值。因此,长度判断单元153对识别得到的标记的长度进行判断,若判断到标记的长度小于距离长度值的缩小值,则说明用户的手掌处于松开状态,进而产生显示屏幕的松开指令;若判断到标记的长度大于或等于距离长度值的缩小值,则说明用户的手掌处于握住状态,进而产生显示屏幕的按住指令。
如图19所示,在一个实施例中,上述响应模块170包括坐标获取单元171以及显示单元173。
坐标获取单元171,用于根据映射关系得到标记在显示屏幕中的像素值。
本实施例中,坐标获取单元171根据虚拟屏中标记的位置和显示屏幕中像素值之间的映射关系得到标记在显示屏幕中的像素值,实现标记位置到像素值的转换。
显示单元173,用于按照标记在显示屏幕中的像素值显示控制指令对应的图标。
本实施例中,根据控制指令的不同,显示屏幕中展示的图标也各不相同。显示屏幕中的图标是与虚拟屏上的标记对应的,例如,在虚拟屏的中心位置握下手掌所识别到的标记将与显示屏幕的中心位置手形图案中手形处于握下状态的图标对应。在其它实施例中,图标还可以是光标、指针等形式
如图20所示,在一个实施例中,上述响应模块还包括变化获取单元175、变化判断单元176以及调整单元177。
变化获取单元175,用于根据标记的长度得到长度变化值。
本实施例中,变化获取单元175分别从相邻的两帧采集得到的图像中获取标记的长度,并通过标记的长度之间的差值得到长度变化值。
变化判断单元176,用于判断长度变化值是否小于阈值,若否,则根据标记的位置得到位置变化值。
本实施例中,变化判断单元176若判断到长度变化值达到了阈值,则说明用户当前正在握下手掌的可能性非常高,在用户握下手掌的过程中标记极可能从手心向手掌外侧偏移,进而造成标记的位置发生偏移,此时,将判断长度变化值是否超出了阈值,若是,则说明标记已经从手心向手掌外侧偏移,标记的位置发生了偏移,此时,需屏蔽标记的位置发生的偏移对显示屏幕中图标所对应的像素值产生影响,此时,将重新调整虚拟屏的中心位置。在优选的实施例中,阈值为标记的识别距离所对应的距离长度值的四分之一。
进一步的,在用户从握下手掌的状态松开手掌时,在相邻两帧标记的图像中得到的长度变化值也极可能产生较为剧烈的变化,此时也将通知调整单元177进行标记的位置调整。
在当前帧标记的图像中标记的位置为(x1,y1,z1),而前一帧标记的图标中标记的位置为(x0,y0,z0),在X坐标轴上的位置变化值为x1-x0,在Y坐标轴上的位置变化值为y1-y0。
调整单元177,用于按照位置变化值调整虚拟屏中标记的位置。
本实施例中,调整单元177重新设置虚拟屏的中心位置,以使标记虽然从手心向手掌外侧偏移时与标记对应的图标在显示屏幕中的位置没有发生变化,忽略标记发生的偏移所造成的影响。按照位置变化值进行调整所得到的标记的位置中,X坐标轴上的坐标值为x+x1-x0,Y坐标轴上的坐标值为y+y1-y0,其中,(x,y)为调整前标记在X坐标轴和Y坐标轴上的坐标。
在另一个实施例中,上述人机交互系统,识别模块130还用于识别出标记的面积。
处理模块150还用于判断标记的面积是否大于面积限值,若是,则通知响应模块170,若否,则结束。
响应模块170还用于进行操控界面的回退。
本实施例中,标记中与手背对应的反光材料的长度和面积均大于与手掌心对应的反光材料,用户的手掌心由面向图像采集装置的位置进行翻转,变为手背面向图像采集装置,反光材料的面积也由小变大,因此,在发生了翻转动作之后,将会使得标记的面积大于面积限值,此时,将退出当前操控界面,返回上一层操控界面或退出操控界面。
上述人机交互方法和系统中,用户通过标记在显示屏幕前方进行操控,通过识别得到的标记的位置和长度产生相应的控制指令,进而对控制指令进行响应,并在响应模块显示,以对用户的操控进行反馈,用户使用的标记不需要借助于电源,这将使得用户能够使用标记进行随意地操作,提高了使用的灵活性。上述人机交互方法和系统中,用户使用标记在模拟出的虚拟屏上进行操控,产生相应的控制指令,不需要借助有源的交互设备就能实现人机交互,提高了一种新型的人机交互方式,操作简单,大大地提高了用户的体验效果。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。