一种静态手势指尖检测方法与流程

文档序号:12040715阅读:478来源:国知局
一种静态手势指尖检测方法与流程
一种静态手势指尖检测方法所属技术领域本发明属于计算机视觉领域中的特定对象检测领域,尤其是涉及针对静态手势识别过程中的指尖检测方面。

背景技术:
计算机和互联网的普及使得人机交互成为日常生活的重要组成部分。随着计算机的处理能力越来越强,人们开始探索符合人类交流习惯的自然人机交互技术。现已广泛使用的人机交互设备有:键盘、鼠标、手写、触摸屏、扫描仪等。这些输入设备都存在一定的缺点和不足。首先,使用这些设备进行输入的习惯与人类本身的自然交流方式不一致,为了进行操作,人们被迫学习输入规则。另外,这些交互方式大都需要直接接触设备,不适合远距离操控以及一些特殊的工作环境。与之相比,基于视觉的手势输入方式有效地克服上述缺点。手势是人们与外界进行日常交流的方式之一,能够帮用户摆脱传统输入设备的束缚,提供一种更加自然和直观的交互方式,以及更逼真和便捷的交互体验。另外,随着普通摄像头成本的不断下降和在消费类电子产品和家电产品中的日益普及,以摄像头作为手势识别的输入设备非常合适。因此,基于计算机视觉的手势识别方法成为了实现新一代人机交互模式的主要研究内容[1]。手势识别的应用在虚拟现实、智能家居、机器人控制、健康医疗、手语识别等方面都有着广泛的应用前景。作为人手重要特征之一的指尖(fingertip),包含着丰富的信息。指尖的变化可以反映出手势的变化,如中国手语中在表示1、2、3、4等四个数字时,它们之间只有一个手指的差别,借助指尖检测就能比较容易地把它们区分开来。此外,当用手势来进行精细的操作时,指尖也能发挥其重要作用,例如手指书写系统[2]、虚拟鼠标/键盘系统[3]都会利用指尖的运动作为后续识别的基础,所以指尖检测是手势识别的关键。在基于手势识别的人机交互方面,尽管研究者已经做了大量的研究工作并取得了很多的研究成果,但基于视觉的指尖检测面临诸多困难。国内外研究者提出了各种解决方案。Oka等人[4]开发出了EnhancedDesk人机交互系统,他们首先利用红外摄像机来探测人体温度范围内的区域,锁定人手和手臂位置,在此基础上利用手臂的方向确定手的位置,然后在包含手的窗口中检测指尖。他们把手指看作是一个矩形和半圆形的组合,然后利用模板匹配来定位指尖。Argyros等人[5]设计了一个可以用于远程的、非接触的鼠标控制接口。他们首先利用贝叶斯分类器和在线自适应的颜色概率分布来检测和跟踪人手,然后分割出人手并获取轮廓数据,最后对轮廓数据进行曲率计算并确定指尖位置。Nguyen等人[6]利用立体摄像机获取的深度信息和肤色检测器来确定人手的位置,然后利用形态学操作算子来定位指尖。Kim等人[7]使用主动形状模型和椭圆方程来检测和跟踪指尖。Barrho等人[8]利用广义霍夫变换来检测指尖。指尖信息是绝大多数手势识别系统要使用的主要特征之一。指尖检测工作的难度主要体现在两个方面:(1)如何准确地将人手区域完整地提取出来;(2)选择合适的特征和方法来表达并检测指尖。为了到达理想的人手分割效果,大多数指尖检测算法都限制了检测的背景条件和光照条件,因此检测算法的使用范围是非常有限的。本

技术实现要素:
受到国家自然科学基金(No.61002030)项目资助。参考文献:[1]姜晓恒.基于凸包分析的实时指尖检测系统.天津大学,2013.[2]杨端端,金连文,尹俊勋,”手指书写汉字识别系统中的指尖检测方法”,华南理工大学学报(自然科学版),2007,35(1):58-63[3]DuH,CharbonE.“3Dhandmodelfittingforvirtualkeyboardsystem”,ProceedingsoftheEighthIEEEWorkshoponApplicationsofComputerVision,2007[4]OkaK,SatoY,KoikeH,“real-timetrackingofmultiplefingertipsandgesturerecognitionforaugmenteddeskinterfacesystems”,ProceedingsofInternationalConferenceonAutomaticFaceandGestureRecognition,2002,429-434[5]ArgyrosAA,LourakisMIA,“Vision-basedinterpretationofhandgesturesforremotecontrolofacomputermouse”,InternationalConferenceonHuman-ComputerInteraction,LNCS3979,2006,40-51[6]NguyenDD,PhamTC,JeonJW,“Fingertipdetectionwithmorphologyandgeometriccalculation”,InternationalConferenceonIntelligentRobotsandSystems,St.Louis,MO,USA,2009,1460-1465[7]KimS,ParkYJ,LimK.M.etal.,“Fingertipsdetectionandtrackingbasedonactiveshapemodelsandanellipse”,Fukuoka,Japan,IEEERegion10Conference,TENCON,2010,1-6[8]BarrhoJ,AdamM,KienckeU,“FingerlocalizationandclassificationinimagesbasedongeneralizedHoughtransformandprobabilisticmodels”,InternationalConferenceonControl,Automation,RoboticsandVision,2006.1–6[9]DeDiosJ,GarciaN.“FacedetectionbasedonanewcolorspaceYCgCr”,ProceedingsofInternationalConferenceonImageProcessing,2003,2:909-912.发明内容本发明的目的是,克服现有技术的上述不足,提出一种适用于彩色静态手势图像指尖检测的方法,可以快速准确地检测并定位手势图像中的指尖区域。本发明的技术方案如下:一种静态手势指尖检测方法,包括下列步骤:1)进行手势区域分割,从输入的彩色图像中分割出手势区域GEST;2)考察手势区域内各点的坐标,分别用ROWtop、ROWbottom、COLleft和COLright表示各点坐标中最上方和最下方的行序号,以及最左方和最右方的列序号,并按照下面四式分别计算GEST的上投影值Ptop,下投影值Pbottom,左投影值Pleft和右投影值Pright:式中,m=1,2,...,M表示输入图像的行序号,n=1,2,...,N表示图像的列序号,M和N分别表示图像的高度和宽度;3)计算上述四个投影值的最大值Pmax=max{Ptop,Pbottom,Pright,Pleft};4)判断确定手腕在手势区域所在的方位,用LABEL进行标注,即有其中,LABEL={1,2,3,4}分别表示手腕位于手势区域上、下、左、右四种情况。5)计算手势区域的重心,记为(Cx,Cy);6)以(Cx,Cy)为圆心,做半径为r的同心圆CIR(r),用AREA1(r)表示CIR(r)包含的像素数,计算CIR(r)与GEST的交集区域所含的像素数AREA2(r),计算AREA1(r)和AREA2(r)的比值,与固定阈值TH1进行比较,确定满足所述比值大于固定阈值TH1的r的最大值,记为rmax:7)根据手腕所处的不同方位,分下面四种情况进行处理,得到手区域二值图,用HAND表示:a)LABEL=1,手腕在图像下方情况:考察GEST中纵坐标大于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除;b)LABEL=2,手腕在图像上方情况:考察GEST中纵坐标小于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除;c)LABEL=3,手腕在图像左侧情况:考察GEST中横坐标小于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除;d)LABEL=4,手腕在图像右侧情况:考察GEST中横坐标大于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除;8)提取手区域二值图HAND的外轮廓,用BOUND(k)表示,k=1,2,...,K,K表示轮廓上点的总数,k为轮廓上各点按照某个方向排序的序号;9)计算距离:计算BOUND(k)与手势重心(Cx,Cy)的距离,用DIST(k)表示;10)平滑处理:用长度为5的模板对DIST(k)进行平滑处理,所用模板为MASK=[0.1,0.2,0.4,0.2,0.1],中间位置的系数0.4与DIST(k)对齐,平滑结果用SDIST(k)表示;11)检测极大值点,用PEAK(p)表示检测到的极大值点集;12)考察PEAK(p)各点,并与rmax进行比较,如果满足PEAK(p)与rmax的比值大于特定阈值TH2,则将该点判定为指尖点。检测到的指尖点集用FING(q)表示;其中的步骤(1),可采用下面的手势区域分割方法:(1)对于输入的彩色图像,进行空间转换,得到YCgCr空间彩色图像;(2)选用Cg和Cr通道,结合下式得到肤色区域二值图,用SKIN(x,y)表示:(3)用数学形态学膨胀算子对二值图SKIN(x,y)进行闭合处理,连接断裂部分,选用半径为2个像素的碟形结构算子;(4)填充各连通区域内部的空洞;(5)计算各连通区域内像素点的面积,将面积最大的连通区域判为手势区域,去除其它区域,得到手势图像二值图GEST表示。其中的步骤(11)中,对于SDIST(k),如果满足:SDIST(k)=max{SDIST(k-15),...,SDIST(k),...,SDIST(k+15)},则可将SDIST(k)判为极大值点。本发明面向彩色静态手势图像,根据手指的肤色和形状特征,结合形态学操作和投影分析,实现指尖区域的快速检测和定位。采用Windows7SP1系统下的matlab2013a作为实验仿真平台。实验所用手势图像均来自自拍图像,共6组,每组图像包括10幅图像,分别代表手语中的0~9十种数字的9种情况,如图3所示。图像分辨率为800×600,每一幅图像的平均处理速度约在0.2秒左右。采用人工方式判断各手势图像中指尖的数目和位置。所提算法中用到的两个固定阈值的取值为:TH1=0.66,TH2=1.5。实验结果表明,总的检测率达到了96%以上,证明了所提算法的有效性。图4给出了部分实验结果,检测到的指尖区域用“O”标出。附图说明图1本发明的流程框图。图2半径为2的碟形算子图3为中国手语中1~9各数字的表示示意图。图4为部分实验结果图。左侧的一组图为视频截图,右侧的一组图为采用本发明的方法检测得到的手指指尖检测结果二值图。具体实施方式下面结合附图和实施例对本发明进行说明。本发明包括三个主要步骤:手势区域分割、手腕区域去除和指尖定位。首先,利用肤色模型从输入的彩色图像中分割出手势区域;然后检测手势区域重心,判断手腕方位,去除手腕区域;最后,提取手区域轮廓,结合手指形状特征,检测并定位各指尖区域。图1给出了所提方法的框图。1手势区域分割文献[9]证明肤色在YCgCr颜色空间比在YCbCr颜色空间具有更好的聚类性。所提方法采用YCgCr颜色空间用于肤色检测,具体算法如下。肤色区域检测算法:1)使用下式,将RGB空间到YCgCr空间的转换公式如下:Y=16+0.2568×R+0.5041×G+0.0979×BCg=128-0.3180×R+0.4392×G-0.1212×B(1)Cr=128+0.4392×R-0.3678×G-0.0714×B其中R、G、B和Y、Cg、Cr的取值都在[0,255]之间。2)选用Cg和Cr通道,结合下式得到肤色区域二值图,用SKIN表示:检测到的肤色区域可能存在干扰。一种情况是类似肤色的区域所引起的误检。另一种情况是肤色区域内部的干扰区域,如戒指、手表等物品,这会导致检测到的肤色区域中出现空洞。结合形态学操作,对肤色区域进行验证,具体算法如下手势区域验证算法:3)用数学形态学膨胀算子对二值图SKIN进行闭合(close)处理,连接断裂部分。选用半径为2个像素的碟形结构算子,具体形状如图2所示。4)填充各连通区域内部的空洞。5)计算各连通区域内像素点的面积(区域内所含像素数)。将面积最大的连通区域判为手势区域,去除其它区域。经上述步骤处理后得到手势图像二值图,用GEST表示。2手腕区域去除手势区域可划分为三部分,即手指(fingertip)区域、手掌(palm)区域和手腕(wrist)区域。手指区域和手掌区域是区分不同手势的关键。相比而言,手腕区域对手势表达没有明显用处,相反,它的存在有可能对手势识别构成干扰。因此,有必要去除手腕区域。所提手腕区域去除方法包括手腕方位确认和手腕区域去除两个步骤,详细过程如下:手腕方位判定算法:1)确定手势区域的空间位置。考察手势区域内各点的坐标,分别用ROWtop、ROWbottom、COLleft和COLright表示各点坐标中最上方和最下方的行序号,以及最左方和最右方的列序号。2)使用式(3)~式(6),计算GEST在行序号为Rtop和Rbottom的的上投影值Ptop,下投影值Pbottom,:,以及列序号为Cleft和Cright的左投影值Pleft和右投影值Pright式中,m=1,2,...,M表示输入图像的行序号,n=1,2,...,N表示图像的列序号,M和N分别表示图像的宽度和高度。计算上述四个投影值的最大值,用Pmax表示,即有Pmax=max{Ptop,Pbottom,Pright,Pleft}(7)3)使用下式判断确定手腕在手势区域所在的方位,用LABEL进行标注,即有其中,LABEL={1,2,3,4}分别表示手腕位于手势区域上、下、左、右四种情况。手腕区域去除算法:4)计算掌心定位:采用式(9)和式(10),计算手势区域的重心,记为(Cx,Cy);5)最小半径确定:以为(Cx,Cy)中心,做半径为r的同心圆,用CIR(r)表示。用AREA1(r)表示CIR(r)包含的像素数。计算CIR(r)与GEST的交集区域所含的像素数,用AREA2(r)表示,计算AREA1(r)和AREA2(r)的比值,与固定阈值TH1进行比较。将确定满足下述条件的r的最大值,记为rmax。即有:6)手腕去除:根据手腕所处的不同方位,分情况进行处理:i)LABEL=1,手腕在图像下方情况:考察GEST中纵坐标大于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除。ii)LABEL=2,手腕在图像上方情况:考察GEST中纵坐标小于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除。iii)LABEL=3,手腕在图像左侧情况:考察GEST中横坐标小于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除。iv)LABEL=4,手腕在图像右侧情况:考察GEST中横坐标大于的Cy的像素点,计算各点与手势重心(Cx,Cy)的距离d,将满足d>rmax的点看作是手腕区域,并去除。经上述步骤处理后得到手区域二值图,用HAND表示。3指尖定位指尖定位算法1)提取手区域外轮廓:采用“8-连通”定义,提取HAND的外轮廓,用BOUND(k)表示,k=1,2,...,K,K表示轮廓上点的总数。轮廓上各点按照逆时针方向排序。为计算方便,当LABEL=1时,将纵坐标最大的点(对应最下方的点)作为轮廓点序列的起始点,即BOUND(1);当LABEL=2时,将纵坐标最小的点(对应最上方的点)作为轮廓点序列的起始点;当LABEL=3时,将横坐标最小的点(对应最左侧的点)作为轮廓点序列的起始点;当LABEL=4时,将横坐标最大的点(对应最右侧的点)作为轮廓点序列的起始点。2)计算距离:计算BOUND(k)与手势重心(Cx,Cy)的距离,用DIST(k)表示。3)平滑处理:用长度为5的模板对DIST(k)进行平滑处理,所用模板为MASK=[0.1,0.2,0.4,0.2,0.1],中间位置的系数0.4与DIST(k)对齐,平滑结果用SDIST(k)表示,即有4)检测极大值点:对于SDIST(k),如果满足:SDIST(k)=max{SDIST(k-15),...,SDIST(k),...,SDIST(k+15)}(13)则将SDIST(k)判为极大值点,用PEAK(p)表示检测到的极大值点集。5)定位指尖点:考察PEAK(p)各点,如果满足:TH2---(14)]]>则将该点判定为指尖点。检测到的指尖点集用FING(q)表示。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1