【具体实施方式】
下面结合具体的实施例及附图对技术方案进行详细的描述。
在一个实施例中,如图1所示,一种手语识别方法,包括以下步骤:
步骤S10,采集包含标记区域的图像。
本实施例中,标记区域是采集的图像中的一个区域,该区域可由交互设备形成。
具体的,在一个实施例中,交互设备可以是手持装置,可将手持装置的一部分或全部设定为指定的颜色或形状,采集手持装置的图像,图像中的手持装置中的该指定颜色或形状的部分形成标记区域。另外,交互设备还可以是带标记的手持装置,即在手持装置上附带指定颜色或形状的标记(如反光材料),采集手持装置的图像,图像中的手持装置上所附带的指定颜色或形状的标记形成标记区域。
在另一个实施例中,交互设备还可以是人体部位(例如人脸、手掌、手臂等),采集人体部位的图像,图像中的人体部位形成标记区域。另外,交互设备还可以是带标记的人体部位,即在人体部位上附带指定颜色或形状的标记(如反光材料),采集人体部位的图像时,图像中的该指定颜色或形状的标记形成标记区域。
步骤S20,识别标记区域的姿态。
具体的,对采集到的图像进行处理,提取图像中的标记区域,然后根据标记区域中的像素在构建的图像坐标系中的像素坐标产生标记区域的姿态。所谓姿态,是指标记区域在图像中所形成的姿势状态。进一步的,在二维图像中,姿态为二维图像中的标记区域与预设位置之间的角度,即姿态角;在三维图像中,姿态为二维图像中的标记区域与预设位置之间的多个姿态角所组成的矢量,即姿态向量。本发明中说的“标记区域产生的姿态”,“标记区域的姿态”、“姿态”都是指所述姿态,也就是不同实施例的姿态角与姿态向量。
步骤S30,生成姿态对应的控制指令。
本实施例中,预先设定标记区域的姿态与控制指令之间的映射关系,并将该映射关系存储在数据库中。在识别出标记区域的姿态后,可根据识别出的姿态从数据库中查找与姿态对应的控制指令。
步骤S40,将控制指令转换成自然语言信息。
自然语言信息即正常人容易理解的语言信息,如中文、英文、拉丁文等。可预先设置控制指令与自然语言信息的映射表,并存储在数据库中,然后通过在数据库中查询控制指令来获取与其对应的自然语言信息。
例如,预设的控制指令与自然语言信息的映射表可如表1所示:
表1
控制指令 |
自然语言信息 |
command_cir |
圆 |
command_heart |
爱 |
command_ok |
好的 |
...... |
...... |
以人体的手指作为交互设备,当用户的手指围成了一个圆,则对应生成了表示圆形的控制指令command_cir,然后在数据库中查询得到对应的自然语言信息为“圆”。当用户的手指围成一个心形时,则对应生成控制指令command_heart,然后在数据库中查询得到对应的自然语言信息为“爱”。当用户的食指和拇指之间相连,另外三根手指展开做出OK状时,则对应生成控制指令command_ok,然后在数据库中查询可得对应的自然语言信息为“好的”。
在一个实施例中,可将控制指令排列成控制指令序列,根据控制指令序列生成自然语言信息。
先通过每隔预设的采样间隔T执行步骤S10、步骤S20、步骤S30来生成多个控制指令。再将生成的控制指令按照生成的顺序排列成控制指令序列,并根据控制指令序列生成自然语言信息。
例如,采用用户的手指和手臂作为交互设备时,每隔0.1秒捕捉用户的手指和手臂的姿态,并生成控制指令用于标识该时刻的姿态。当在一定时间内生成了多个控制指令后,控制指令按照生成的顺序组成的序列则表示了用户的手指和手臂的运行轨迹。
进一步的,可计算控制指令序列的特征值,根据预设的特征值与自然语言信息的映射关系生成自然语言信息。
控制指令中包含用于表示姿态信息的姿态部分和用于表示该姿态在图像中的坐标信息的坐标部分。当以手指和手臂作为交互设备时,控制指令的姿态部分则可表示手指和手臂的姿态构成的形状或抽象的矢量图形,如五指展开状、手指围成的环状。控制指令的坐标部分则表示了手指或手臂围成的形状在图像上的位置。当图像为二维图像时,坐标为二维坐标。当图像为三维图像时,坐标为三维坐标。
特征值用于表示具有一定相似性的控制指令序列所共有的特征。可采用姿态特征值表示控制指令序列中的姿态部分的变化特征,采用坐标特征值表示控制指令序列中的坐标部分的变化特征。然后由姿态特征值和坐标特征值组成控制指令序列的特征值。
特征值与自然语言信息具有预设的映射关系。例如,可预先将特征值2(1F1L)对应自然语言“谢谢”。该特征值2(1F1L)基于控制指令序列的姿态部分的变化,表示由拇指伸直(由特征值中的1F表示)变成拇指弯曲(由特征值中的1L表示),并弯曲了两次(用括号乘以2表示)。可预先将特征值5F_y-down对应自然语言“按”。该特征值5F_y-down基于控制指令序列中的坐标部分的变化,表示手掌(由特征值中的5F表示)从上至下按压(由特征值中的y-down表示)。进一步的,先将控制指令序列中重复的控制指令去除,然后再计算控制指令序列的特征值。去除重复的控制指令可减少计算量。
进一步的,先将控制指令序列中与相邻控制指令差别大于阈值的控制指令去除,然后再计算控制指令序列的特征值。当预设的采样间隔较小时,若控制指令序列中的某个控制指令的姿态部分或坐标部分与相邻的控制指令差别大于阈值时,则判定该控制指令为错误的控制指令。错误指令将被过滤出控制指令序列,而不会被用于计算控制指令序列的特征值。
例如,用户采用手指作为输入装置时,若获取到的控制指令序列为:[3F(0,0),3F(1,0),3F(2,0),2F(3,0),3F(4,0),3F(5,0)]。其中姿态部分3F表示3根手指的姿态,2F表示2根手指的姿态,坐标部分(0,0)-(5,0)表示手指姿态处于捕获的图像中的坐标。该控制指令序列用于表示用户的三根手指水平平移形成的轨迹,每个控制指令都是该轨迹的采样点。其中,可能是由于用户在移动过程中,有手指并拢的情况,控制指令2F(3,0)与相邻的3F(2,0)、3F(4,0)在手指的数目(控制指令的姿态部分)上差距较大,因此被判定为错误的控制指令,且被移出控制指令序列。当某个控制指令与相邻的控制指令有较大差别时,通常是因为捕获了用户的不规范的手语手势,或者是由于交互设备在移动时被遮挡,不能完全获取其形状而造成。例如,聋哑手语中某些手势需要两手交替移动,在移动中,可能出现遮挡的情况,因此去掉与相邻控制指令差距大于阈值(形状不同或者坐标距离大于阈值)的控制指令,可以使得特征值计算的更加准确。
计算控制指令序列的特征值时,先计算控制指令序列中的控制指令的的姿态特征值,然后根据姿态特征值将控制指令序列分段,分段后的控制指令子序列中的控制指令具有相同姿态特征值。然后根据控制指令子序列中的控制指令的坐标部分描述的坐标的单调性、到图像中某一参考坐标的距离的方差来计算控制指令子序列的坐标特征值。然后将所有控制指令子序列的姿态特征值和坐标特征值整合成控制指令序列的特征值。
例如,以手指为交互装置,用户做出以下动作:
伸出一根手指从左至右平移,移到一定位置后伸展五指做四分之一圆周运动,最后定格,且弯曲食指和拇指,将食指和拇指指尖相碰形成OK状手势。
获取到的控制指令序列为:[1F(0,0),1F(1,0),1F(2,0),1F(3,0),5F(2.5,1.5),5F(1.5,2.5),5F(0,3),OK(0,3),OK(0,3),OK(0,3)]。其中1F为1根手指的姿态特征值,5F为5根手指的姿态特征值,OK表示OK状手势的姿态特征值,括号内数字表示姿态在图像中的坐标值。去掉重复的控制指令且与相邻的控制指令差异大于阈值的控制指令后,再根据姿态特征值的不同将控制指令序列分为三个子控制指令序列:
子序列1:[1F(0,0),1F(1,0),1F(2,0),1F(3,0)]。
子序列2:[5F(2.5,1.5),5F(1.5,2.5),5F(0,3)]。
子序列3:[OK(0,3)]。
子序列1的坐标特征值为x-right,x-right表示子序列1的坐标的单调性为横坐标递增(x轴),纵坐标不变(y轴)。子序列2的坐标特征值为q-cir,q-cir表示子序列2的坐标构成的轨迹到参考点坐标(0,0)的方差小于阈值,即轨迹为到圆心(0,0)的四分之一个圆。子序列3的坐标特征值为hold,即表示最后的定格姿态。
然后将子序列1、子序列2以及子序列3的姿态特征值和坐标特征值整合,得到控制指令序列的特征值为:1F_x-right5F_q-cirOK_hold。其中_和表示分隔符,用于区分姿态特征值和坐标特征值。
得到控制指令序列的特征值后,再根据预设的特征值与自然语言的映射关系获取与控制指令序列的特征值对应的自然语言。如上例中,1F_x-right5F_q-cirOK_hold对应的自然语言为“完美”,则用户做出的伸出一根手指从左至右平移,移到一定位置后伸展五指做四分之一圆周运动,最后定格,且弯曲食指和拇指,将食指和拇指指尖相碰形成OK状手势的手语即被转换成了自然语言“完美”。
需要说明的是,此处的手语并不限于标准的聋哑手语,也可以是用户自定义的手语。手语与自然语言的对应关系取决于预设的特征值与自然语言的映射关系。
进一步的,将控制指令排列成控制指令序列时,可将控制指令按照生成的顺序排列成队列,当检测到队列末尾有连续预设个数的相同的控制指令时,排列完毕,并根据队列生成控制指令序列。
预先设置缓存区,每当生成一个控制指令则将该控制指令按顺序存储到缓存区中,形成队列。同时,检测该缓存区,若队列末尾有连续预设个数的相同的控制指令时,如上例中的控制指令OK(0,3),队列排列完毕,然后从缓存区中取出该队列形成控制指令序列。
通过连续预设个数的相同的控制指令来截取控制指令序列,使得在区分多个手语手势(类似英语单词之间的停顿)时更加方便,从而避免了多手势时的错误识别。
在一个实施例中,将控制指令转换成自然语言信息之后,通过文本和/或音频的方式展示自然语言信息。
可通过显示屏将自然语言信息以文字的形式展示,也可以通过音频设备将自然语言信息播放出来。
例如,在将控制指令转化成自然语言信息之后,将自然语言信息编码,并向远程终端(手机、电脑、电视等)发该编码,远程终端接收到该编码后先将该编码解码成自然语言信息,然后通过显示屏以文本的形式显示该自然语言信息或者通过音频设备以语音的形式播放该自然语言信息。
通过文本和/或音频的方式展示自然语言信息,可以方便他人理解自然语言信息。将自然语言信息编码并通过电话网或互联网或电视网发送到远程终端,然后再由远程终端通过解码展示该自然语言信息,使得聋哑人可与不懂手语的正常人实现远程通话,从而方便了聋哑人与正常人的沟通。
如图2所示,在一个实施例中,所采集到的包含标记区域的图像为二维图像,上述步骤S20的具体过程包括:
步骤S202,提取图像中与预设颜色模型匹配的像素,对获取的像素进行连通域检测,提取检测得到的连通域中的标记区域。
具体的,可通过摄像机采集包含标记区域的图像,得到的图像为二维可见光图像。优选的,还可在摄像机的镜头前加入红外滤光片,用于滤去除红外波段的其他波段光线,则采集的图像为二维红外图像。由于可见光图像中,场景中的物体会对标记区域的识别形成干扰,而红外图像因滤除掉了可见光信息,干扰较少,因此二维红外图像更有利于提取标记区域。
本实施例中,预先建立颜色模型。例如标记区域的色彩为红色,则预先建立红色模型,该模型中像素的RGB值分量可在200到255之间,G、B分量可接近于零;获取采集的图像中满足该红色模型的RGB值的像素即为红色像素。另外,当采集的图像中由人体部位形成标记区域时,则可获取采集的图像中与预设肤色模型匹配的像素。对获取的像素进行连通域检测,得到多个连通域,连通域是若个连续的像素组成的集合。
本实施例中,由于标记区域的大小和形状应大致是固定不变的,在对获取的像素进行连通域检测时,可计算得到获取的像素中的所有连通域的周长和/或面积。具体的,连通域的周长可为连通域边界像素的个数,连通域的面积可为连通域中的全部像素的个数。进一步的,可将获取的连通域的周长和/或面积与预设标记区域的周长和/或面积进行对比,获取满足预设标记区域的周长和/或面积的连通域即为标记区域。优选的,还可将周长的平方与面积的比值作为判断准则,连通域的该比值满足预设标记区域的该比值,则该连通域为标记区域。
步骤S204,获取标记区域中的像素坐标,根据该像素坐标产生标记区域姿态。
具体的,在一个实施例中,如图3所示,交互设备包括手持部分和附着于手持部分的标记,其中,标记可为长条形状的反光材料,优选的,可以为椭圆或矩形形状。在其他实施例中,交互设备还可为人体部位,如脸、手掌、手臂等,则采集到的图像中的标记区域即为人体部位的区域。
本实施例中,标记区域为一个连续区域,则根据像素坐标产生标记区域的姿态的过程为:计算得到像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,根据特征向量产生标记区域的姿态,该标记区域的姿态为一个姿态角。
具体的,如图4所示,构建二维图像坐标系,对于该坐标系上的两个点A(u1,v1)和B(u2,v2),其形成的姿态角则为斜率的反正切,即arctan((v2-v1)/(u2-u1))。具体的,本实施例中,计算提取的标记区域中的像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,该特征向量的方向即为标记区域长轴所在直线的方向。如图4所示,标记区域长轴所在直线方向为A、B两点所在直线的方向,设特征向量为[dir_u,dir_v]T,其中,dir_u描述标记区域长轴的方向在u轴上的投影,其绝对值正比于从A指向B的向量在u坐标轴方向上的投影(即u2-u1);dir_v描述标记区域长轴的方向在v轴上的投影,其绝对值正比于从A指向B的向量在v坐标轴方向上的投影(即v2-v1)。若dir_u或dir_v小于0,则修正为[-dir_u,-dir_v]T,则标记区域的姿态角为:arctan(dir_v/dir_u)。
在另一个实施例中,标记区域包括第一连续区域和第二连续区域,则根据所述像素坐标产生标记区域的姿态的具体过程为:根据像素坐标计算第一连续区域的重心和第二连续区域的重心,根据第一连续区域的重心的像素坐标和第二连续区域的重心的像素坐标产生标记区域的姿态。具体的,在一个实施例中,交互设备包括手持部分和附着在手持部分的两个标记。如图5所示,标记为两个,分别附着在手持部分前端,标记的形状可以为椭圆形或矩形。优选的,标记可以为位于手持部位前端的两个圆点。如图6所示,可将标记设置在手持部分的两端。在其他实施例中,还可将标记设置在人体部位上,例如设置在人脸、手掌或手臂上。应当说明的是,所设置的两个标记可以大小、形状、颜色等特征上不一致。
本实施例中,提取的标记区域包括两个连续区域,分别为第一连续区域和第二连续区域。进一步的,根据像素坐标计算这两个连续区域的重心。具体的,计算连续区域中的全部像素坐标的平均值,所得到的像素坐标即为连续区域的重心。如图4所示,计算得到的两个连续区域的重心分别为A(u1,v1)和B(u2,v2),则标记区域的姿态角为斜率的反正切,即arctan((v2-v1)/(u2-u1))。
在另一个实施例中,所采集的图像可以为三维图像。具体的,可利用传统的立体视觉***(由两台空间位置已知的摄像机及相关数据处理设备组成)、结构光***(右一台摄像机、一台光源以及相关数据处理设备组成)或TOF(timeof flight,飞行时间)深度相机采集三维图像(即三维深度图像)。
本实施例中,如图7所示,步骤S20的具体过程包括:
步骤S210,对图像进行分割,提取该图像中的连通域,计算连通域的属性值,将连通域的属性值与预设的标记区域属性值进行对比,该标记区域为符合该预设的标记区域属性值的连通域。
具体的,当三维深度图像中两个相邻的像素深度相差小于预先设定的阈值时,例如5厘米,则认为两个像素连通,对整个图像进行连通域检测,可得到包含标记连通域的一系列连通域。
本实施例中,连通域的属性值包括连通域的尺寸和形状。具体的,计算连通域的尺寸/形状,与交互设备上的标记的尺寸/形状进行对比,得到符合标记的尺寸/形状的连通域即为标记区域的连通域(标记区域)。以矩形标记为例,即交互设备上的标记在采集的图像中为矩形,预先设定好标记的长度和宽度,计算连通域对应的物理区域的长度和宽度,该长度和宽度与标记的长度和宽度越接近,则连通域与标记区域越相似。
进一步的,计算连通域对应的物理区域的长度和宽度的过程如下:计算连通域像素的三维坐标的协方差矩阵,采用如下公式计算连通域对应的物理区域的长度和宽度:
其中,k为预先设定的系数,例如设为4,当λ为协方差矩阵最大特征值时,则l为连通域的长度,当λ为协方差矩阵第二大的特征值时,则l为连通域的宽度。
进一步的,还可预先设定矩形标记的长宽比,例如长宽比为2,则连通域对应的物理区域的长宽比越接近于预设设定的矩形标记的长宽比,则连通域与标记区域越相似,具体的,采用如下公式计算连通域对应的物理区域的长宽比:
其中,r为连通域的长宽比,λ
0为协方差矩阵的最大特征值,λ
1为协方差矩阵的第二大特征值。
步骤S220,获取标记区域中的像素坐标,根据该像素坐标产生标记区域的姿态。
具体的,本实施例中,标记区域的姿态为姿态向量。如图8所示,构建三维图像坐标系,该坐标系为右手坐标系。在该坐标系中,设空间向量OP,P在平面XOY的投影为p,则用极坐标表示向量OP的姿态向量为[α,θ]T,α为角XOp,即X轴到Op角,取值范围为0到360度,θ为角pOP,即OP与XOY平面的夹角,取值范围为-90度到90度。设该坐标系中的空间射线上的两点为A(x1,y1,z1)和B(x2,y2,z2),则这两点的姿态向量[α,θ]T可用如下公式唯一确定:
本实施例中,提取标记区域后,计算得到标记区域中的像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,并将该特征向量转换为姿态向量。具体的,设得到的姿态向量为[dir
x,dir
y,dir
z]
T,其中,dir
x表示两点在x轴方向上的距离,dir
y表示两点在y轴方向上的距离,dir
z表示两点在z轴方向上的距离。可认为该姿态向量描述的射线上有两个点,即(0,0,0)和
即射线从原点触发,指向(dir
x,dir
y,dir
z),则姿态角需满足上述公式(1)和(2),令上述公式(1)和(2)中的x1=0,y1=0,z1=0,x2=dir
x,y2=dir
y,z2=dir
z,即可得到姿态向量[α,θ]
T。
在一个实施例中,标记区域为一个连续区域,则根据像素坐标产生标记区域的姿态的过程为:计算得到像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,根据特征向量产生标记区域的姿态。如上所述,该标记区域的姿态为一个姿态向量。
在另一个实施例中,标记区域包括第一连续区域和第二连续区域,则根据所述像素坐标产生标记区域的姿态的具体过程为:根据像素坐标计算第一连续区域的重心和第二连续区域的重心,根据第一连续区域的重心的像素坐标和第二连续区域的重心的像素坐标计算标记区域的姿态。如图8所示,本实施例中,标记区域中的像素坐标为三维坐标,具体的,可根据计算得到的两个连续区域的重心的像素坐标产生标记区域的姿态,该姿态为一个姿态向量。
在一个实施例中,在识别标记区域的姿态的步骤之前还可包括:判断采集的图像为二维图像还是三维图像的步骤。具体的,若采集的图像为二维图像,则执行上述步骤S202至步骤S204,若采集的图像为三维图像,则执行上述步骤S210至S220。
如图9所示,在一个实施例中,上述步骤S30的具体过程包括:
步骤S302,获取当前帧图像中的该标记区域的姿态。
如上所述,步骤S302中获取的姿态可以是当前帧的二维图像中的标记区域的姿态(即姿态角),也可以是当前帧的三维深图像中的标记区域的姿态(即姿态向量)。本实施例中,预先设定了姿态与控制指令之间的映射关系。该姿态也可称为绝对姿态。
步骤S304,根据预设的姿态与控制指令之间的映射关系生成与该姿态对应的控制指令。
例如,控制指令为鼠标左键指令和右键指令。以二维图像为例,姿态角的取值范围为-180度到180度。可预先设定当前帧图像中的姿态角在(a,b)的范围内,则触发左键指令,当前帧图像中的姿态角在(c,d)的范围内,则触发右键指令。其中,a、b、c、d都为预先设定的角度,满足a<b,c<d,且集合[a,b]和集合[c,d]的交集为空。
另外,在三维图像中,所识别出的姿态包含两个姿态角,可以使用其中的一个姿态角来获取控制指令,也可以使用两个姿态角来获取控制指令。使用其中一个姿态角的方法原理与二维图像类似,在此则不再赘述。使用两个姿态角时,可设置若两个姿态角均在预先设定的指令触发范围内时,才触发控制指令。
如图10所示,在另一个实施例中,采集的包含标记区域的图像为图像序列,上述步骤S30的具体过程包括:
步骤S310,获取当前帧图像中的该标记区域的姿态与上一帧图像中的该标记区域的姿态之间的相对姿态。
本实施例中,可实时采集由多个包含标记区域的图像组成的图像序列。如上所述,步骤S310中获取的姿态可以是当前帧图像和上一帧图像中的标记区域的姿态角,也可以是当前帧图像和上一帧图像中的标记区域的姿态向量。当前帧图像中的姿态与上一帧图像中的姿态之间的相对姿态为两者的差值。
步骤S320,根据预设的相对姿态与控制指令之间的映射关系生成与该相对姿态对应的控制指令。
例如,以二维图像为例,相对姿态为相对姿态角,可预先设定当前帧图像的姿态角比上一帧的姿态角增加大于30度,即相对姿态角大于30度时,则触发鼠标的滚轮逆时针滚动的指令,当前帧图像的姿态角比上一帧的姿态角减少大于40度时,即相对姿态角小于-40度时,则触发鼠标的滚轮顺时针滚动的指令。三维图像的原理与其类似,在此则不再赘述。
在三维图像中,所识别出的姿态包含两个姿态角,可以使用其中的一个姿态角来获取控制指令,也可以使用两个姿态角来获取控制指令。使用其中一个姿态角的方法原理与二维图像类似,在此则不再赘述。使用两个姿态角时,可设置若两个姿态角变化均满足预设条件时,例如第一个姿态角变化大于预先设定的第一阈值,第二个姿态角变化大于预先设定的第二阈值,则触发控制指令。
在一个实施例中,如图11所示,一种控制浏览网页的***,包括图像采集模块10、姿态识别模块20、指令生成模块30和指令转换模块40,其中:
图像采集模块10用于采集包含标记区域的图像。
本实施例中,标记区域是采集的图像中的一个区域,该区域可由交互设备形成。具体的,在一个实施例中,交互设备可以是手持装置,可将手持装置的一部分或全部设定为指定的颜色或形状,采集手持装置的图像,图像中的手持装置中的该指定颜色或形状的部分形成标记区域。另外,交互设备还可以是带标记的手持装置,即在手持装置上附带指定颜色或形状的标记(如反光材料),采集手持装置的图像,图像中的手持装置上所附带的指定颜色或形状的标记形成标记区域。
在另一个实施例中,交互设备还可以是人体部位(例如人脸、手掌、手臂等),采集人体部位的图像,图像中的人体部位形成标记区域。另外,交互设备还可以是带标记的人体部位,即在人体部位上附带指定颜色或形状的标记(如反光材料),采集人体部位的图像时,图像中的该指定颜色或形状的标记形成标记区域。
姿态识别模块20用于识别标记区域的姿态。
具体的,对采集到的图像进行处理,提取图像中的标记区域,然后根据标记区域中的像素在构建的图像坐标系中的像素坐标获取标记区域的姿态。所谓姿态,是指标记区域在图像中所形成的姿势状态。进一步的,在二维图像中,姿态为二维图像中的标记区域与预设位置之间的角度,即姿态角;在三维图像中,姿态为二维图像中的标记区域与预设位置之间的多个姿态角所组成的矢量,即姿态向量。本发明中说的“标记区域产生的姿态”,“标记区域的姿态”都是指所述姿态,也就是不同实施例的姿态角与姿态向量。
指令生成模块30用于生成姿态对应的控制指令。
本实施例中,预先设定标记区域的姿态与控制指令之间的映射关系,并将该映射关系存储在数据库(图中未示出)中。在识别出标记区域的姿态后,指令生成模块30可用于根据姿态识别模块20识别出的姿态从数据库中查找与姿态对应的控制指令。
指令转换模块40,用于将控制指令转换成自然语言信息。
自然语言信息即正常人容易理解的语言信息,如中文、英文、拉丁文等。可预先设置控制指令与自然语言信息的映射表,并存储在数据库中,然后通过在数据库中查询控制指令来获取与其对应的自然语言信息。
例如,预设的控制指令与自然语言信息的映射表可如表2所示:
表2
控制指令 |
自然语言信息 |
command_cir |
圆 |
command_heart |
爱 |
command_ok |
好的 |
...... |
...... |
以人体的手指作为交互设备,当用户的手指围成了一个圆,则对应生成了表示圆形的控制指令command_cir,然后在数据库中查询得到对应的自然语言信息为“圆”。当用户的手指围成一个心形时,则对应生成控制指令command_heart,然后在数据库中查询得到对应的自然语言信息为“爱”。当用户的食指和拇指之间相连,另外三根手指展开做出OK状时,则对应生成控制指令command_ok,然后在数据库中查询可得对应的自然语言信息为“好的”。
在一个实施例中,指令转换模块40还可用于将控制指令排列成控制指令序列,根据控制指令序列生成自然语言信息。
可预设采样间隔T,每隔采样间隔T则生成多个控制指令,然后将生成的控制指令按照生成的顺序排列成控制指令序列,然后可根据控制指令序列生成自然语言信息。
例如,可采用用户的手指和手臂作为交互设备,然后每隔0.1秒捕捉用户的手指和手臂的姿态,并生成控制指令用于标识该时刻的姿态。当在一定时间内生成了多个控制指令后,控制指令按照生成的顺序组成的序列则表示了用户的手指和手臂的运行轨迹。
进一步的,指令转换模块40还可用于计算控制指令序列的特征值,根据预设的特征值与自然语言信息的映射关系生成自然语言信息。
控制指令中可包含两部分信息,一部分为用于表示姿态的信息姿态部分,另一部分则表示该姿态在图像中的坐标信息的坐标部分。当以手指和手臂作为交互设备时,控制指令的姿态部分则可表示手指和手臂的姿态构成的形状或抽象的矢量图形,如五指展开状、手指围成的环状。控制指令的坐标部分则表示了手指或手臂围成的形状在图像上的位置。当图像为二维图像时,坐标为二维坐标。当图像为三维图像时,坐标为三维坐标。
特征值用于表示具有一定相似性的控制指令序列所共有的特征。可采用姿态特征值表示控制指令序列中的姿态部分的变化特征,采用坐标特征值表示控制指令序列中的坐标部分的变化特征。然后由姿态特征值和坐标特征值组成控制指令序列的特征值。
特征值与自然语言信息具有预设的映射关系。例如,可预先将特征值2(1F1L)对应自然语言“谢谢”。该特征值2(1F1L)基于控制指令序列的姿态部分的变化,表示由拇指伸直(由特征值中的1F表示)变成拇指弯曲(由特征值中的1L表示),并弯曲了两次(用括号乘以2表示)。可预先将特征值5F_y-down对应自然语言“按”。该特征值5F_y-down基于控制指令序列中的坐标部分的变化,表示手掌(由特征值中的5F表示)从上至下按压(由特征值中的y-down表示)。
进一步的,指令转换模块40还用于先将控制指令序列中重复的控制指令去除,然后再计算控制指令序列的特征值。去除重复的控制指令可减少计算量。
进一步的,指令转换模块40还用于先将控制指令序列中与相邻控制指令差别大于阈值的控制指令去除,然后再计算控制指令序列的特征值。当预设的采样间隔较小时,若控制指令序列中的某个控制指令的姿态部分或坐标部分与相邻的控制指令差别大于阈值时,则判定该控制指令为错误的控制指令。错误指令将被过滤出控制指令序列,而不会被用于计算控制指令序列的特征值。
例如,用户采用手指作为输入装置时,若获取到的控制指令序列为:[3F(0,0),3F(1,0),3F(2,0),2F(3,0),3F(4,0),3F(5,0)]。其中姿态部分3F表示3根手指的姿态,2F表示2根手指的姿态,坐标部分(0,0)-(5,0)表示手指姿态处于捕获的图像中的坐标。该控制指令序列用于表示用户的三根手指水平平移形成的轨迹,每个控制指令都是该轨迹的采样点。其中,可能是由于用户在移动过程中,有手指并拢的情况,控制指令2F(3,0)与相邻的3F(2,0)、3F(4,0)在手指的数目(控制指令的姿态部分)上差距较大,因此被判定为错误的控制指令,且被移出控制指令序列。
当某个控制指令与相邻的控制指令有较大差别时,通常是因为捕获了用户的不规范的手语手势,或者是由于交互设备在移动时被遮挡,不能完全获取其形状而造成。例如,聋哑手语中某些手势需要两手交替移动,在移动中,可能出现遮挡的情况,因此去掉与相邻控制指令差距大于阈值(形状不同或者坐标距离大于阈值)的控制指令,可以使得特征值计算的更加准确。
计算控制指令序列的特征值时,指令转换模块40还用于计算控制指令序列中的控制指令的姿态特征值,然后根据姿态特征值将控制指令序列分段,分段后的控制指令子序列中的控制指令具有相同姿态特征值。然后根据控制指令子序列中的控制指令的坐标部分描述的坐标的单调性、到图像中某一参考坐标的距离的方差来计算控制指令子序列的坐标特征值。然后将所有控制指令子序列的姿态特征值和坐标特征值整合成控制指令序列的特征值。
例如,以手指为交互装置,用户做出以下动作:
伸出一根手指从左至右平移,移到一定位置后伸展五指做四分之一圆周运动,最后定格,且弯曲食指和拇指,将食指和拇指指尖相碰形成OK状手势。
获取到的控制指令序列为:[1F(0,0),1F(1,0),1F(2,0),1F(3,0),5F(2.5,1.5),5F(1.5,2.5),5F(0,3),OK(0,3),OK(0,3),OK(0,3)]。其中1F为1根手指的姿态特征值,5F为5根手指的姿态特征值,OK表示OK状手势的姿态特征值,括号内数字表示姿态在图像中的坐标值。去掉重复的控制指令且与相邻的控制指令差异大于阈值的控制指令后,可根据姿态特征值的不同将控制指令序列分为三个子控制指令序列:
子序列1:[1F(0,0),1F(1,0),1F(2,0),1F(3,0)]。
子序列2:[5F(2.5,1.5),5F(1.5,2.5),5F(0,3)]。
子序列3:[OK(0,3)]。
子序列1的坐标特征值为x-right,x-right表示子序列1的坐标的单调性为横坐标递增(x轴),纵坐标不变(y轴)。子序列2的坐标特征值为q-cir,q-cir表示子序列2的坐标构成的轨迹到参考点坐标(0,0)的方差小于阈值,即轨迹为到圆心(0,0)的四分之一个圆。子序列3的坐标特征值为hold,即表示最后的定格姿态。
然后指令转换模块40将子序列1、子序列2以及子序列3的姿态特征值和坐标特征值整合,得到控制指令序列的特征值为:1F_x-right5F_q-cirOK_hold。其中_和表示分隔符,用于区分姿态特征值和坐标特征值。
得到控制指令序列的特征值后,再根据预设的特征值与自然语言的映射关系获取与控制指令序列的特征值对应的自然语言。如上例中,1F_x-right5F_q-cirOK_hold对应的自然语言为“完美”,则用户做出的伸出一根手指从左至右平移,移到一定位置后伸展五指做四分之一圆周运动,最后定格,且弯曲食指和拇指,将食指和拇指指尖相碰形成OK状手势的手语即被转换成了自然语言“完美”。
需要说明的是,此处的手语并不限于标准的聋哑手语,也可以是用户自定义的手语。手语与自然语言的对应关系取决于预设的特征值与自然语言的映射关系。
进一步的,将控制指令排列成控制指令序列时,指令转换模块40还可用于将控制指令按照生成的顺序排列成队列,当检测到队列末尾有连续预设个数的相同的控制指令时,排列完毕,并根据队列生成控制指令序列。
预先设置缓存区,每当生成一个控制指令则将该控制指令按顺序存储到缓存区中,形成队列。同时,检测该缓存区,若队列末尾有连续预设个数的相同的控制指令时,如上例中的控制指令OK(0,3),队列排列完毕,然后从缓存区中取出该队列形成控制指令序列。
通过连续预设个数的相同的控制指令来截取控制指令序列,使得在区分多个手语手势(类似英语单词之间的停顿)时更加方便,从而避免了多手势时的错误识别。
在一个实施例中,如图16所示,手语识别***还包括信息展示模块50,用于在将控制指令转换成自然语言信息之后,通过文本和/或音频的方式展示自然语言信息。
信息展示模块50还用于通过显示屏将自然语言信息以文字的形式展示,也可以通过音频设备将自然语言信息播放出来。
例如,在将控制指令转化成自然语言信息之后,将自然语言信息编码,并向远程终端(手机、电脑、电视等)发该编码,远程终端接收到该编码后先将该编码解码成自然语言信息,然后通过显示屏以文本的形式显示该自然语言信息或者通过音频设备以语音的形式播放该自然语言信息。
通过文本和/或音频的方式展示自然语言信息,可以方便他人理解自然语言信息。将自然语言信息编码并通过电话网或互联网或电视网发送到远程终端,然后再由远程终端通过解码展示该自然语言信息,使得聋哑人可与不懂手语的正常人实现远程通话,从而方便了聋哑人与正常人的沟通。
如图12所示,在一个实施例中,图像采集模块10采集到的图像为二维图像,姿态识别模块20包括第一图像处理模块202和第一姿态产生模块204,其中:
第一图像处理模块202用于提取图像中与预设颜色模型匹配的像素,对获取的像素进行连通域检测,提取检测得到的连通域中的标记区域。
具体的,图像采集模块10可为摄像机,其采集得到的图像可为二维可见光图像。优选的,还可在摄像机的镜头前加入红外滤光片,用于滤去除红外波段的其他波段光线,则图像采集模块10采集的图像为二维红外图像。由于可见光图像中,场景中的物体会对标记区域的识别形成干扰,而红外图像因滤除掉了可见光信息,干扰较少,因此二维红外图像更有利于提取标记区域。
具体的,第一图像处理模块202用于预先建立颜色模型。例如标记区域的色彩为红色,则预先建立红色模型,该模型中像素的RGB值分量可在200到255之间,G、B分量可接近于零;第一图像处理模块202则用于获取帧图像中满足该红色模型的RGB值的像素即为红色像素。另外,当采集的图像中由人体部位形成标记区域时,第一图像处理模块202则用于获取图像中与预设肤色模型匹配的像素。第一图像处理模块202还用于对获取的像素进行连通域检测,得到多个连通域,连通域是若个连续的像素组成的集合。
本实施例中,由于标记区域的大小和形状应大致是固定不变的,第一图像处理模块202在对获取的像素进行连通域检测时,可计算得到获取的像素中的所有连通域的周长和/或面积。具体的,连通域的周长可为连通域边界像素的个数,连通域的面积可为连通域中的全部像素的个数。进一步的,第一图像处理模块202可用于将获取的连通域的周长和/或面积与预设标记区域的周长和/或面积进行对比,获取满足预设标记区域的周长和/或面积的连通域即为标记区域。优选的,第一图像处理模块202还可用于将周长的平方与面积的比值作为判断准则,连通域的该比值满足预设标记区域的该比值,则该连通域为标记区域。
第一姿态产生模块204用于获取标记区域中的像素坐标,根据该像素坐标产生标记区域的姿态。
本实施例中,标记区域产生的姿态为姿态角。在一个实施例中,标记区域为一个连续区域,则第一姿态产生模块204用于计算得到像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,根据特征向量产生标记区域的姿态,该标记区域的姿态为一个姿态角。
在另一个实施例中,标记区域包括第一连续区域和第二连续区域,则第一姿态产生模块204用于根据像素坐标计算第一连续区域的重心和第二连续区域的重心,根据第一连续区域的重心的像素坐标和第二连续区域的重心的像素坐标计算标记区域的姿态。具体的,计算连续区域中的全部像素坐标的平均值,所得到的像素坐标即为连续区域的重心。
在另一个实施例中,图像采集模块10采集到的图像为三维图像。具体的,图像采集模块10可采用传统的立体视觉***(由两台控制位置已知的摄像机及相关软件组成)、结构光***(右一台摄像机、一台光源以及相关软件组成)或TOF(time of flight,飞行时间)深度相机实现采集三维图像(即三维深度图像)。
本实施例中,如图13所示,姿态识别模块20包括第二图像处理模块210和第二姿态产生模块220,其中:
第二图像处理模块210用于对所述图像进行分割,提取图像中的连通域,并计算连通域的属性值,将连通域的属性值与预设的标记区域属性值进行对比,所述标记区域为符合所述预设的标记区域属性值的连通域。
具体的,第二图像处理模块210用于当三维图像中两个相邻的像素深度相差小于预先设定的阈值时,例如5厘米,则认为两个像素连通,对整个图像进行连通域检测,可得到包含标记连通域的一系列连通域。
本实施例中,连通域的属性值包括连通域的尺寸和形状。具体的,第二图像处理模块210用于计算连通域的尺寸/形状,与交互设备上的标记的尺寸/形状进行对比,得到符合标记的尺寸/形状的连通域即为标记区域的连通域(标记区域)。以矩形标记为例,即交互设备上的标记在采集的图像中为矩形,预先设定好标记的长度和宽度,第二图像处理模块210则用于计算连通域对应的物理区域的长度和宽度,该长度和宽度与标记的长度和宽度越接近,则连通域与标记区域越相似。
进一步的,第二图像处理模块210用于计算连通域对应的物理区域的长度和宽度的过程如下:计算连通域像素的三维坐标的协方差矩阵,采用如下公式计算连通域对应的物理区域的长度和宽度:其中,k为预先设定的系数,例如设为4,当λ为协方差矩阵最大特征值时,则l为连通域的长度,当λ为协方差矩阵第二大的特征值时,则l为连通域的宽度。
进一步的,第二图像处理模块210还可用于预先设定矩形标记的长宽比,例如长宽比为2,则连通域对应的物理区域的长宽比越接近于预设设定的矩形标记的长宽比,则连通域与标记区域越相似,具体的,属性匹配模块234用于采用如下公式计算连通域对应的物理区域的长宽比:
其中,r为连通域的长宽比,λ
0为协方差矩阵的最大特征值,λ
1为协方差矩阵的第二大特征值。
第二姿态产生模块220用于获取标记区域中的像素坐标,根据所述像素坐标产生标记区域的姿态。
本实施例中,标记区域的姿态为姿态向量。在一个实施例中,标记区域为一个连续区域,则第二姿态产生模块220用于计算得到像素坐标的协方差矩阵,获取协方差矩阵最大特征值对应的特征向量,根据特征向量产生标记区域的姿态。如上所述,该标记区域的姿态为一个姿态向量。
在另一个实施例中,标记区域包括第一连续区域和第二连续区域,则第二姿态产生模块220用于根据像素坐标计算第一连续区域的重心和第二连续区域的重心,根据第一连续区域的重心的像素坐标和第二连续区域的重心的像素坐标产生标记区域的姿态。本实施例中,标记区域中的像素坐标为三维坐标,具体的,可根据计算得到的两个连续区域的重心的像素坐标产生标记区域的姿态,该姿态为一个姿态向量。
在一个实施例中,姿态识别模块20还包括判断模块(图中未示出),用于判断采集的图像为二维图像还是三维图像。具体的,本实施例中,当判断模块判断到采集的图像为二维图像时,则通知第一图像处理模块202提取二维图像中的标记区域,进而通过第一姿态产生模块204产生该标记区域的姿态。当判断模块判断到采集的图像为二维图像时,则通知第二图像处理模块210提取三维图像中的标记区域,进而通过第二姿态产生模块220产生该标记区域的姿态。可以理解的,本实施例中,姿态识别模块20同时包括判断模块(图中未示出)、第一图像处理模块202、第一姿态产生模块204、第二图像处理模块210和第二姿态产生模块220。本实施例,既可通过二维图像识别标记区域的姿态,又可通过二维图像识别标记区域的姿态。
如图14所示,在一个实施例中,指令生成模块30包括第一姿态获取模块302和第一指令查找模块304,其中:
第一姿态获取模块302用于从姿态识别模块20中获取当前帧图像中的所述标记区域的姿态。
具体的,该姿态可以是当前帧的二维图像中的标记区域的姿态角,也可以是当前帧的三维深度图像中的标记区域的姿态向量。本实施例中,预先设定了姿态与控制指令之间的映射关系。该姿态也可称为绝对姿态。
第一指令查找模块304用于根据预设的姿态与控制指令之间的映射关系生成与所述姿态对应的控制指令。
本实施例中,所采集的包含标记区域的图像可以是图像序列。第一姿态获取模块302还用于从姿态识别模块20中获取当前帧图像中的标记区域的姿态与上一帧图像中的标记区域的姿态之间的相对姿态。第一指令查找模块304还用于根据预设的相对姿态与控制指令之间的映射关系生成与相对姿态对应的控制指令。
在另一个实施例中,所采集的包含标记区域的图像可以是图像序列。如图15所示,指令生成模块30包括第二姿态获取模块310和第二指令查找模块320,其中:
第二姿态获取模块用于从姿态识别模块20中获取当前帧图像中的标记区域的姿态与上一帧图像中的标记区域的姿态之间的相对姿态。
第二指令查找模块320用于根据预设的相对姿态与控制指令之间的映射关系生成与相对姿态对应的控制指令。
上述手语识别方法及***,根据采集到的包含标记区域的图像识别出标记区域所产生的姿态,并生成姿态对应的控制指令,然后将该控制指令转换成正常人容易理解的自然语言信息。由于通过获取肢体动作的图像来判断肢体动作的运动轨迹和姿态,因此,对整个肢体动作的过程均有记录,从而避免了因为缺乏传感器而漏掉某个动作或姿态的情况,从而提高了识别手语时的准确率。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。