CN104102347A - 指尖定位方法及指尖定位终端 - Google Patents
指尖定位方法及指尖定位终端 Download PDFInfo
- Publication number
- CN104102347A CN104102347A CN201410325660.7A CN201410325660A CN104102347A CN 104102347 A CN104102347 A CN 104102347A CN 201410325660 A CN201410325660 A CN 201410325660A CN 104102347 A CN104102347 A CN 104102347A
- Authority
- CN
- China
- Prior art keywords
- point
- finger tip
- profile
- palm
- salient point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- User Interface Of Digital Computer (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种指尖定位方法,包括以下步骤:获取包含手势的手势图像;从手势图像中提取手掌轮廓;对手掌轮廓进行多边形逼近以获取轮廓凸包;依次判断所述轮廓凸包的各个凸点是否为指尖点。本发明指尖定位方法是通过对手掌轮廓进行多边形逼近来获取轮廓凸包,由于手势中的指尖通常会对应轮廓凸包中凸点的位置,因此,本发明指尖定位方法只需判断各个凸点是否为指尖点,减少了需要进行判断的指尖点的数量,从而减少了计算量,提高了运行速度,满足了实时的要求;同时,由于不需要对手掌轮廓上的边缘点进行曲率计算,从而提取的手掌轮廓允许存在一定的误差,进而降低了对提取的手掌轮廓的精密度的要求。本发明同时公开了一种指尖定位终端。
Description
技术领域
本发明涉及计算机图像处理及识别技术领域,更具体的涉及一种指尖定位方法及指尖定位终端。
背景技术
近年来,基于人手的智能人机交互技术由于其灵活、自然等特性占据着越来越重要的地位,通过手势对电子设备进行直接操作已经日趋成熟。相比传统需要接触硬件设备的技术手段,它更加接近于人机交互的核心理念,拥有着更良好的用户体验。而当中指尖的高自由和灵活性使其蕴含了相对其他部分更加丰富的内涵,指尖数目的变化,位置的变动可以映射为丰富的语义,在此基础上得以发展出一系列应用,如虚拟书写绘画、远程手势控制等等。而绝大部分的人机交互技术都会涉及到指尖的定位。
目前,常见的指尖定位方法如图1所示,包括如下步骤:自输入的手势图像中提取手掌轮廓;依序计算手掌轮廓边缘上相邻复数个点构成的曲率;通过设定边缘点曲率的阀值筛选出包含复数个类指尖点的集合;根据过滤条件从若干个类指尖点中确定指尖点。
然而,上述指尖定位方法需要从手掌轮廓的边缘取出大量的点进行曲率计算,从而对提取手掌轮廓精密度的要求很高,提取手掌轮廓时若稍有误差,上述指尖定位方法很容易误判指尖位置;同时,上述指尖定位方法必须取出大量的点进行曲率计算,使得计算量非常大,影响运行速度。
发明内容
本发明的目的在于提供一种指尖定位方法,以降低对肤色侦测的要求,减少计算量,提高运行速度。
为实现上述目的,本发明提供了一种指尖定位方法,包括以下步骤:
获取包含手势的手势图像;
从手势图像中提取手掌轮廓;
对所述手掌轮廓进行多边形逼近以获取轮廓凸包;
依次判断所述轮廓凸包的各个凸点是否为指尖点。
与现有技术相比,本发明指尖定位方法是通过对手掌轮廓进行多边形逼近来获取轮廓凸包,由于手势中的指尖通常会对应轮廓凸包中凸点的位置,因此,本发明指尖定位方法只需判断各个凸点是否为指尖点,减少了需要进行判断的指尖点的数量,从而减少了计算量,提高了运行速度,满足了实时的要求;同时,由于不需要对手掌轮廓上的边缘点进行曲率计算,从而提取的手掌轮廓允许存在一定的误差,进而降低了对手掌轮廓的精密度的要求。
较佳地,所述“依次判断所述轮廓凸包的各个凸点是否为指尖点”具体包括:
从所述手掌轮廓中提取手掌中心点的位置;
获取所述手掌轮廓的凸缺陷并根据所述凸缺陷提取所述手掌轮廓上多个凹点的位置;
根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的各个凸点是否为指尖点。
较佳地,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的各个凸点是否为指尖点”具体包括:
依次判断各所述凸点相邻的两个点是否为凹点,若判断结果为是,则所述凸点为指尖点。
较佳地,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的任一凸点是否为指尖点”具体包括:
计算所述凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;
判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,若判断结果为是,则所述凸点为指尖点。
较佳地,所述预设角度范围为0°至15°。
较佳地,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的任一凸点是否为指尖点”具体包括:
计算所述凸点到手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;
判断所述第一比值和所述第二比值是否均在预设比值范围内,若判断结果为是,则所述凸点为指尖点。
较佳地,所述预设比值范围为1.3至3.0。
较佳地,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的任一凸点是否为指尖点”具体包括:
计算所述凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;
判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,当判断结果为否时,所述凸点为非指尖点;
当判断结果为是时,计算所述凸点到所述手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;
判断所述第一比值和所述第二比值是否均在预设比值范围内,当判断结果为是时,所述凸点为指尖点,反之,所述凸点为非指尖点。
较佳地,所述预设角度范围为0°至15°,所述预设比值范围为1.3至3.0。
较佳地,所述“依次判断所述轮廓凸包的各个凸点是否为指尖点”之后还包括:
存储为指尖点的所述凸点的位置。
较佳地,所述“从所述手势图像中提取手掌轮廓”的方式具体为:
通过所述手势图像与背景图像相减提取所述手掌轮廓;或
通过肤色侦测从所述手势图像中提取所述手掌轮廓;或
通过超声波或红外线技术从所述手势图像中提取所述手掌轮廓。
较佳地,所述“通过肤色侦测从所述手势图像中提取所述手掌轮廓”包括以下步骤:
减小所述手势图像的亮度维度;
对所述手势图像的每一个维度进行阈值操作以得到二值图像;以及
对所述二值图像进行轮廓检索以得到手掌轮廓。
本发明还提供了一种指尖定位终端,包括:
摄像头,用于获取包含手势的手势图像;
手掌轮廓提取模块,用于从所述手势图像中提取手掌轮廓;
轮廓凸包获取模块,用于对所述手掌轮廓进行多边形逼近以获取轮廓凸包;以及
指尖识别定位模块,用于依次判断所述轮廓凸包的各个凸点是否为指尖点。
较佳地,所述指尖定位终端还包括:
手掌轮廓凹凸点识别模块,用于识别出所述轮廓凸包及所述手掌轮廓所包含的各个凹、凸点;
手掌中心点提取模块,用于识别并提取手掌中心点的位置。
较佳地,所述指尖识别定位模块具体包括:
凹点判断单元,用于依次判断与所述凸点相邻的两个点是否为凹点,若判断结果为是,则所述凸点为指尖点。
较佳地,所述指尖识别定位模块包括:
角度计算单元,用于计算所述凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;
角度判断单元,用于判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,若判断结果为是,则所述凸点为指尖点。
较佳地,所述预设角度范围为0°至15°。
较佳地,所述指尖识别定位模块包括:
比值计算单元,用于计算所述凸点到手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;
比值判断单元,用于判断所述第一比值和所述第二比值是否均在预设比值范围内,若判断结果为是,则所述凸点为指尖点。
较佳地,所述预设比值范围为1.3至3.0。
较佳地,所述指尖识别定位模块包括:
角度计算单元,用于计算所述凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;
角度判断单元,用于判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,当判断结果为否时,所述凸点为非指尖点;
比值计算单元,用于当判断结果为是时,计算所述凸点到所述手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;以及
比值判断单元,用于判断所述第一比值和所述第二比值是否均在预设比值范围内,当判断结果为是时,所述凸点为指尖点,反之,所述凸点为非指尖点。
较佳地,所述预设角度范围为0°至15°,所述预设比值范围为1.3至3.0。
较佳地,所述指尖定位终端还包括:
存储模块,用于存储为指尖点的所述凸点的位置。
较佳地,所述手掌轮廓提取模块从所述手势图像中提取手掌轮廓的方式具体为:
通过所述手势图像与背景图像相减提取所述手掌轮廓;或
通过肤色侦测从所述手势图像中提取所述手掌轮廓;或
通过超声波或红外线技术从所述手势图像中提取所述手掌轮廓。
较佳地,当通过肤色侦测从所述手势图像中提取所述手掌轮廓时,所述手掌轮廓提取模块包括:
亮度维度处理单元,用于减小所述手势图像的亮度维度;
二值化单元,用于接收所述亮度维度处理单元处理后的手势图像,并对所述手势图像的每一个维度进行阈值操作以得到二值图像;以及
手掌轮廓检索单元,用于对所述二值图像进行轮廓检索以得到手掌轮廓。
通过以下的描述并结合附图,本发明将变得更加清晰,这些附图用于解释本发明的实施例。
附图说明
图1为现有技术中指尖定位方法的流程图。
图2为本发明指尖定位方法一实施例的流程图。
图3为图2中手掌轮廓的示意图。
图4为图2中通过肤色侦测提取手掌轮廓的流程图。
图5为图2中通过图像分割提取手掌轮廓的流程图。
图6为本发明指尖定位方法另一实施例的流程图。
图7为图6中指尖定位方法的示意图。
图8为本发明指尖定位方法再一实施例的流程图。
图9为图8中指尖定位方法的示意图。
图10为本发明指尖定位方法再一实施例的流程图。
图11a为单个手指指示时一实施例的示意图。
图11b为两个手指指示时一实施例的示意图。
图11c为四个手指指示时一实施例的示意图。
图12为本发明指尖定位终端一实施例的结构框图。
图13为图12中手掌轮廓提取模块一实施例的结构框图。
图14为图12中指尖识别定位模块一实施例的结构框图。
图15为图12中指尖识别定位模块另一实施例的结构框图。
具体实施方式
现在参考附图描述本发明的实施例,附图中类似的元件标号代表类似的元件。
请参考图2,本发明指尖定位方法一实施例的流程图包括以下步骤:
步骤S101,获取包含手势的手势图像;具体的,可以通过摄像头拍照获取手势图像;
步骤S102,从手势图像中提取手掌轮廓,其中提取到的手掌轮廓如图3中实线所示;
具体的,从手势图像中提取手掌轮廓的方式有多种,可以通过超声波或红外线等技术提取、图像分割方式提取或肤色侦测方式提取。
本实施例中以通过肤色侦测提取手掌轮廓为例进行说明。具体的,通过肤色侦测提取手掌轮廓的具体过程如图4所示,包括以下步骤:
步骤S1021,减小手势图像的亮度维度,例如由RGB空间转换为YCrCb空间,具体的,可以通过opencv(即open Source Computer Vision Library)自带的cvCvtColor库函数进行空间转换;由于一般的图像都是基于RGB空间的,而在RGB空间里肤色受亮度影响非常大,从而肤色点很难从非肤色点中分离出来,即在RGB空间经过处理后,肤色点是离散的点,中间嵌有很多非肤色点,这为肤色区域标定(如手势区域)带来了困难;而YCrCb空间受亮度维度影响很小,因此把RGB转为YCrCb空间的话,可以忽略Y(亮度维度)的影响,肤色会产生很好的类聚,这样就把三维的空间降为二维的CrCb,肤色点会形成一定的形状,如:人脸的话会看到一个人脸的区域,手掌的话会看到一个手掌的形态,对处理模式识别很有好处。
步骤S1022,对经过空间转换得到的图像的每一个维度进行阈值操作以得到二值图像。
步骤S1023,对二值图像进行轮廓检索以得到手掌轮廓(如图3中实线所示);具体的,可以通过opencv中的函数cvFindContours实现轮廓的查找。
上述提取手掌轮廓的步骤可通过提取肤色轮廓(如通过肤色侦测实现)、超声波或红外线等技术及图像分割等方式完成,其中通过图像分割方式提取手掌轮廓如图5所示,包括以下步骤:获取背景图像;将包含手势的手势图像减去背景图像来得到手势目标对象;提取手部区域;确定指示手势的手指区域;确定指示手势的指尖区域。
步骤S103,对手掌轮廓进行多边形逼近以获取轮廓凸包,其中轮廓凸包如图3中虚线所示;具体的,可以先对手掌轮廓进行多边形逼近,使该手掌轮廓平整,然后计算该手掌轮廓的凸边形(即凸包),并以序列保存。其中轮廓的多边形逼近是指使用多边形来近似表示一个轮廓,通过多边形逼近可以减少轮廓的顶点数目。如以通过opencv实现上述步骤为例进行说明,可通过cvApproxPoly函数对手掌轮廓进行多边形逼近;通过cvConvexHull2函数计算出对应该手掌轮廓的一凸边形;通过cvConvexHull2函数获取该凸边形顶点的一顶点序列,如图3中顶点1、2、3、4、5、6、7的序列。
步骤S104,依次判断轮廓凸包的各个凸点是否为指尖点,如:依次判断图3中凸点1、2、3、4、5、6、7是否为指尖点;即只将轮廓凸包的凸点(即顶点)作为候选指尖点,然后对候选指尖点进行是否为指尖点的判断,从而大大减少了计算量。
与现有技术相比,本发明指尖定位方法是通过对手掌轮廓进行多边形逼近来获取轮廓凸包,由于手势中的指尖通常会对应轮廓凸包中凸点的位置,因此,本发明指尖定位方法只需判断各个凸点是否为指尖点,减少了需要进行判断的指尖点的数量,从而减少了计算量,提高了运行速度,满足了实时的要求;同时,由于不需要对手掌轮廓上的边缘点进行曲率计算,从而提取的手掌轮廓允许存在一定的误差,进而降低了对提取的手掌轮廓的精密度的要求。
具体的,在图1所示实施例中,当找到手掌轮廓上的凸点后,根据各凸点与凹点的几何关系来判断轮廓凸包的各个凸点是否为指尖点,具体可以是通过“判断与凸点左右相邻的两个点是否均为凹点,若判断结果为是,则该凸点为指尖点”这个判断标准来判断每一凸点是否为指尖点。当然,通过该方法判断前还需要获取手掌轮廓上各个凹点的位置。具体的,获取手掌轮廓上各个凹点可以通过获取手掌轮廓的凸缺陷(如图3中区域A、B、C、D、E、F所示)来实现。如以通过opencv实现上述步骤为例进行说明,可通过cvConvexityDefects函数分析该手掌轮廓的凸缺陷,进而获取一凹点序列。
然而,通过上述判断方法虽然可以快速找出指尖位置,但是其准确度较低,为了提高准确度,本发明还提供了通过各个凹、凸点之间的长度关系或角度关系来判断指尖点的方法,具体可参见图6至图10所示实施例。
请参考图6,本发明指尖定位方法另一实施例的流程图包括以下步骤:
步骤S201,获取包含手势的手势图像;具体的,可以通过摄像头拍照获取手势图像;
步骤S202,从手势图像中提取手掌轮廓;其中提取手掌轮廓的方式可参考图2至图5所示实施例,此处不再赘述。
步骤S203,对手掌轮廓进行多边形逼近以获取轮廓凸包;获取轮廓凸包的具体过程可参考图2至图3所示实施例,此处不再赘述。
步骤S204,识别并提取手掌中心点的位置;本实施例中手掌中心点(如图7中点0)定义为手掌部分最胖的点,即图像中属于手掌的像素与任意背景像素距离最大的像素点,具体的,首先计算得到每一个属于手掌的像素与背景像素最小的距离,保存为一组距离数组,然后根据距离数组,计算出数组中最大的值及其位置,该最大值对应的位置即为手掌中心点0的位置。以通过opencv函数实现上述步骤为例进行说明:可以通过cvDistTransform函数获取上述距离数组,通过cvMinMaxLoc函数计算出数组中最大的值以及其位置。更具体的,cvDistTransform函数用于使二值图像的每个输出像素被设成与输入像素中0像素最近的距离,显然,经cvDistTransform函数进行变换后,手掌轮廓边缘的值是0,非边缘的值是非0;cvMinMaxLoc函数用于找出图片或一组数据中的最大值和最小值的数据,以及最大值和最小值的位置。
需要说明的是,本实施例中提取手掌中心点的位置与获取轮廓凸包这两个步骤是并列的,对其先后顺序并没有限制,此处只是提供了一种顺序以便描述。
步骤S205,取第一个凸点;此处第一个凸点可以为轮廓凸包上的任一凸点;
步骤S206,计算该凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;具体的,如图7所示,本实施例中轮廓凸包上共有7个凸点(凸点用实心圆点表示),手掌轮廓共有6个凹点(凹点用空心圆点表示),下面以凸点2为例说明第一角度和第二角度,与凸点2相邻的两个凹点分别为凹点1’和凹点2’,则第一角度为∠1’02或∠2’02,记为∠a,第二角度为∠2’02或∠1’02,记为∠b(具体的,当第一角度为∠1’02时,第二角度为∠2’02,反之,当第一角度为∠2’02时,第二角度为∠1’02);同理可计算其他凸点与相邻的两个凹点在手掌中心点处所呈的角度。
需要注意的是,此处计算得到的第一角度和第二角度只有大小,没有方向,可以根据凸点、中心点0以及相邻的两个凹点的位置坐标进行计算得到。
步骤S207,判断第一角度和第二角度中的较小者是否在预设角度范围内,若判断结果为是,则该凸点为指尖点,执行步骤S208,反之,则该凸点为非指尖点,执行步骤S209;其中预设角度范围为0°至15°,即(0°,15°),预设角度范围是根据统计经验得出的数值,满足该条件的凸点可以判定为是指尖点,下面继续以凸点2为例进行说明,第一角度为∠a,第二角度为∠b,将第一角度和第二角度中的较小者记为∠c,判断∠c是否小于15°,若判断结果为是,则凸点2为指尖点,反之,则凸点2为非指尖点。
步骤S208,存储该凸点(即指尖点)的位置;本实施例中通过vector<CvPoint>函数对指尖点的位置进行存储,vector<CvPoint>函数不会限制存储内容的长度,因此定位出的指尖点均可以被存储。
步骤S209,判断该凸点是否为最后一个凸点,若判断结果为否,执行步骤S210,反之,执行步骤S211;
步骤S210,取下一个凸点,返回步骤S206;如当凸点2为第一个凸点时,凸点2的下一个凸点为凸点3,依此类推,当然,也可以以其他顺序判断各个凸点是否为指尖点。
步骤S211,退出,即完成了对一个手势图像的指尖定位。
上述步骤S205至步骤S211即为依次判断每个凸点是否为指尖点的具体过程,当某一凸点与相邻的两个凹点在手掌中心点0处所呈的角度中的较小者小于15°时,该凸点为指尖点。与现有技术相比,本发明指尖定位方法,通过对手掌轮廓进行多边形逼近来获取轮廓凸包,并将轮廓凸包的各个凸点作为候选指尖点,然后判断各个候选指尖点是否为指尖点,大大减少了候选指尖点的数量,从而相对图1所示现有技术中对手掌轮廓上的边缘点进行曲率计算来查找类指尖点,大大减少了计算量,提高了运行速度,满足了实时的要求;同时,本发明指尖定位方法直接检测每个凸点和凹点的几何关系(即角度关系)来确定指尖点(即进行指尖定位),而不需要对手掌轮廓上的边缘点进行曲率计算,从而即使两个手指间存在类似肤色的物体,也不会影响指尖的定位,进而降低了对提取到的手掌轮廓的要求,也即降低了对手掌轮廓的提取过程的要求;另外,由于对轮廓凸包上的每个凸点都进行判断,只要符合条件的凸点都被定位为指尖点,从而可以实现定位多个指尖点。
请参考图8,为本发明指尖定位方法再一实施例的流程图,包括以下步骤:
步骤S301,获取包含手势的手势图像;具体的,可以通过摄像头拍照获取手势图像;
步骤S302,从手势图像中提取手掌轮廓;其中提取手掌轮廓的方式可参考图2至图5所示实施例,此处不再赘述。
步骤S303,对手掌轮廓进行多边形逼近以获取轮廓凸包;获取轮廓凸包的具体过程可参考图2至图3所示实施例,此处不再赘述。
步骤S304,提取手掌中心点的位置;提取手掌中心点的位置具体过程可参考图6及图7所示实施例,此处不再赘述。
步骤S305,取第一个凸点;
步骤S306,计算该凸点到手掌中心点的距离分别与相邻的两个凹点到手掌中心点的距离的比值,分别记为第一比值和第二比值;
具体的,如图9所示,本实施例中轮廓凸包上共有7个凸点(凸点用实心圆点表示),手掌轮廓共有6个凹点(凹点用空心圆点表示),下面以凸点5为例说明第一比值和第二比值,与凸点5相邻的两个凹点分别为凹点4’和凹点5’,凸点5到手掌中心点0的距离为A1,凹点4’到手掌中心点0的距离为B1,凹点5’到手掌中心点0的距离为B2,则第一比值为A1/B1或A1/B2,记为P1,第二比值为A1/B2或A1/B1,记为P2(具体的,当第一比值为A1/B1时,第二比值为A1/B2,反之,当第一比值为A1/B2时,第二比值为A1/B1);同理可计算其他凸点到手掌中心点0的距离分别与相邻的两个凹点到手掌中心点0的距离的比值。
需要注意的是,此处计算得到的第一比值和第二比值只有大小,没有方向,可以根据凸点、中心点0以及相邻的两个凹点的位置坐标进行计算得到。
步骤S307,判断第一比值和第二比值是否均在预设比值范围内,若判断结果为是,则该凸点为指尖点,执行步骤S308,反之,则该凸点为非指尖点,执行步骤S309;其中预设比值范围为1.3至3.0,即(1.3,3.0),预设比值范围是根据统计经验得出的数值,满足该条件的凸点可以判定为是指尖点,下面继续以凸点5为例进行说明,判断第一比值P1和第二比值P2是否均大于1.3且小于3.0,若判断结果为是,则凸点5为指尖点,反之,则凸点5为非指尖点。
步骤S308,存储该凸点(即指尖点)的位置;
步骤S309,判断该凸点是否为最后一个凸点,若判断结果为否,执行步骤S310,反之,执行步骤S311;
步骤S310,取下一个凸点,返回步骤S306;如当凸点2为第一个凸点时,凸点2的下一个凸点为凸点3,依此类推,当然,也可以以其他顺序判断各个凸点是否为指尖点。
步骤S311,退出,即完成了对一个手势图像的指尖定位。
上述步骤S305至步骤S311即为依次判断每个凸点是否为指尖点的具体过程,当某一凸点到手掌中心点0的距离分别与相邻的两个凹点到手掌中心点0的距离的比值均大于1.3且小于3.0时,该凸点为指尖点。与现有技术相比,本发明指尖定位方法,通过对手掌轮廓进行多边形逼近来获取轮廓凸包,并将轮廓凸包的各个凸点作为候选指尖点,然后判断各个候选指尖点是否为指尖点,大大减少了候选指尖点的数量,从而相对图1所示现有技术中对手掌轮廓上的边缘点进行曲率计算来查找类指尖点,大大减少了计算量,提高了运行速度,满足了实时的要求;同时,本发明指尖定位方法直接检测每个凸点和凹点的到手掌中心点的长度关系来确定指尖点(即进行指尖定位),而不需要对手掌轮廓上的边缘点进行曲率计算,从而即使两个手指间存在类似肤色的物体,也不会影响指尖的定位,进而降低了对提取到的手掌轮廓的要求,也即降低了对手掌轮廓的提取过程的要求;另外,由于对轮廓凸包上的每个凸点都进行判断,只要符合条件的凸点都被定位为指尖点,从而可以实现定位多个指尖点。
需要注意的是,当轮廓凸包的某一凸点为指尖点时,该凸点可能同时满足多个条件,从而判断各个凸点是否为指尖点也可以从多方面进行,如图6、图8所示实施例分别是以角度、长度的标准来判断凸点是否为指尖点的。理论上,只要轮廓凸包(由手势图像分析得到)上的凸点满足如下2个条件:
(1)凸点与相邻的两个凹点在手掌中心点0处所呈的角度中的较小者小于15°;
(2)凸点到手掌中心点的距离与相邻的两个凹点到手掌的中心点的距离的比值均大于1.3且小于3.0;
就可以确定该凸点一定为指尖点,而当凸点只满足其中一個条件就将其判断为指尖点的准确性较低,下面实施例提供一种更为精确的判断凸点为指尖点的方法。
请参考图10,为本发明指尖定位方法再一实施例的流程图,包括以下步骤:
步骤S401,获取包含手势的手势图像;具体的,可以通过摄像头拍照获取手势图像;
步骤S402,从手势图像中提取手掌轮廓;其中提取手掌轮廓的方式可参考图2至图5所示实施例,此处不再赘述。
步骤S403,对手掌轮廓进行多边形逼近以获取轮廓凸包;获取轮廓凸包的具体过程可参考图2至图3所示实施例,此处不再赘述。
步骤S404,识别并提取手掌中心点的位置;提取手掌中心点的位置的具体过程可参考图6所示实施例,此处不再赘述。
步骤S405,取第一个凸点;此处第一个凸点可以为轮廓凸包上的任一凸点;
步骤S406,计算该凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度;
步骤S407,判断第一角度和第二角度中的较小者是否在预设角度范围内,若判断结果为是,执行步骤S408,反之,则该凸点为非指尖点,执行步骤S411;其中预设角度范围为0°至15°;
步骤S408,计算该凸点到手掌中心点的距离分别与相邻的两个凹点到手掌中心点的距离的比值,分别记为第一比值和第二比值;
步骤S409,判断第一比值和第二比值是否均在预设比值范围内,若判断结果为是,则该凸点为指尖点,执行步骤S410,反之,则该凸点为非指尖点,执行步骤S411;其中预设比值范围为1.3至3.0;
步骤S410,存储该凸点(即指尖点)的位置;
步骤S411,判断该凸点是否为最后一个凸点,若判断结果为否,执行步骤S412,反之,执行步骤S413;
步骤S412,取下一个凸点,返回步骤S406;
步骤S413,退出。
需要注意的是,上述各实施例仅以图3、7、9所示的手势为例进行了说明,而对于其他手势(如可以定位出单个指尖、两个指尖、三个指尖以及四个指尖等)没有进行详细描述,但本领域技术人员应当知道,本发明指尖定位方法可以对任意手势进行指尖定位。举例说明如下,当用户手势如图11a所示时,可以得到虚线所示轮廓凸包,之后判断轮廓凸包上的各个凸点可以得到凸点J为指尖点,从而实现对指尖点的定位;同理,当用户手势如图11b所示时,可以得到虚线所示轮廓凸包,之后判断轮廓凸包上的各个凸点可以得到凸点H、I为指尖点,当用户手势如图11c所示时,可以得到虚线所示轮廓凸包,之后判断轮廓凸包上的各个凸点可以得到凸点G、K、L、M为指尖点,从而实现对指尖点的定位。
请参考图12,为本发明指尖定位终端100一实施例的结构框图。如图12所示,指尖定位终端100包括摄像头10、手掌轮廓提取模块11、轮廓凸包获取模块12、手掌轮廓凹凸点识别模块13、手掌中心点提取模块14、指尖识别定位模块15和存储模块16。其中摄像头10用于获取包含手势的手势图像,手掌轮廓提取模块11用于从手势图像中提取手掌轮廓,轮廓凸包获取模块12用于对手掌轮廓进行多边形逼近以获取轮廓凸包,手掌轮廓凹凸点识别模块13用于识别出轮廓凸包所包含的各个凹、凸点,手掌中心点提取模块14用于识别并提取手掌中心点的位置,指尖识别定位模块15用于依次判断轮廓凸包的各个凸点是否为指尖点,存储模块16用于存储为指尖点的凸点的位置。
具体的,手掌轮廓提取模块11从手势图像中提取手掌轮廓的方式可以为:通过手势图像与背景图像相减提取手掌轮廓,或通过肤色侦测从手势图像中提取手掌轮廓,或通过超声波或红外线技术从手势图像中提取手掌轮廓。
更具体的,当通过肤色侦测从手势图像中提取手掌轮廓时,如图13所示,手掌轮廓提取模块11包括亮度维度处理单元110、二值化单元112以及手掌轮廓检索单元114,亮度维度处理单元110用于减小手势图像的亮度维度,如将手势图像由RGB空间转换为YCrCb空间,二值化单元112用于对经过空间转换得到的图像的每一个维度进行阈值操作以得到二值图像,手掌轮廓检索单元114,用于对二值图像进行轮廓检索以得到手掌轮廓。
其中,轮廓凸包获取模块12和手掌轮廓凹凸点识别模块13可以通过opencv等方式实现。下面以opencv为例进行说明,可通过cvApproxPoly函数对手掌轮廓进行多边形逼近;通过cvConvexHull2函数计算出对应该手掌轮廓的一凸边形;通过cvConvexHull2函数获取该凸边形顶点的一顶点序列;通过cvConvexityDefects函数分析该手掌轮廓的凸缺陷,进而获取一凹点序列。
对于手掌中心点提取模块14,本实施例中手掌中心点(如图7中点0)定义为手掌部分最胖的点,即图像中属于手掌的像素与任意背景像素距离最大的像素点,具体的,首先计算得到每一个属于手掌的像素与背景像素最小的距离,保存为一组距离数组,然后根据距离数组,计算出数组中最大的值及其位置,该最大值对应的位置即为手掌中心点0的位置。以通过opencv函数实现为例进行说明:可以通过cvDistTransform函数获取上述距离数组,通过cvMinMaxLoc函数计算出数组中最大的值以及其位置。更具体的,cvDistTransform函数用于使二值图像的每个输出像素被设成与输入像素中0像素最近的距离,显然,经cvDistTransform函数进行变换后,手掌轮廓边缘的值是0,非边缘的值是非0;cvMinMaxLoc函数用于找出图片或一组数据中的最大值和最小值的数据,以及最大值和最小值的位置。
对于指尖识别定位模块15,在一实施例中,指尖识别定位模块15包括凹点判断单元151(如图14所示),凹点判断单元151用于依次判断与凸点相邻的两个点是否为凹点,若判断结果为是,则该凸点为指尖点,反之,该凸点为非指尖点。需要说明的是,通过凹点判断单元151来确定指尖点虽然可以快速找出指尖位置,但是其准确度较低,为了提高准确度,指尖识别定位模块15还可以是通过各个凹、凸点之间的长度关系或角度关系来判断指尖点。具体的,在另一实施例中,指尖识别定位模块15包括角度计算单元150和角度判断单元152,角度计算单元150用于计算凸点与相邻的两个凹点在手掌中心点处所呈的角度,分别记为第一角度和第二角度,角度判断单元152用于判断第一角度和第二角度中的较小者是否在预设角度范围内,若判断结果为是,则凸点为指尖点,即通过角度判断凸点是否为指尖点;当然,在再一实施例中,指尖识别定位模块15还可以包括比值计算单元154和比值判断单元156,比值计算单元154用于计算凸点到手掌中心点的距离分别与相邻的两个凹点到手掌中心点的距离的比值,分别记为第一比值和第二比值,比值判断单元156用于判断第一比值和第二比值是否均在预设比值范围内,若判断结果为是,则凸点为指尖点,即通过比值判断凸点是否为指尖点;此外,指尖识别定位模块15还可以通过角度和比值同时进行识别,此时,指尖识别定位模块15包括上述的角度计算单元150、角度判断单元152、比值计算单元154以及比值判断单元156(如图15所示),区别在于,当角度判断单元152的判断结果为是时,不能确定该凸点为指尖点,还需要通过比值计算单元154和比值判断单元156进一步判断;当然,指尖识别定位模块15还可以同时包括凹点判断单元151、角度计算单元150、角度判断单元152、比值计算单元154以及比值判断单元156,在凹点判断单元151判断某一凸点为指尖点的情况下,继续通过角度计算单元150、角度判断单元152、比值计算单元154以及比值判断单元156做进一步的判断,以提高判断的准确性。上述预设角度范围为0°至15°,预设比值范围为1.3至3.0。
存储模块16,用于存储为指尖点的凸点的位置。本实施例中可以通过vector<CvPoint>函数对指尖点的位置进行存储,vector<CvPoint>函数不会限制存储内容的长度,因此定位出的指尖点均可以被存储。
从以上描述可以看出,本发明指尖定位方法是通过对手掌轮廓进行多边形逼近来获取轮廓凸包,由于手势中的指尖通常会对应轮廓凸包中凸点的位置,因此,本发明指尖定位方法只需判断各个凸点是否为指尖点,减少了需要进行判断的指尖点的数量,从而减少了计算量,提高了运行速度,满足了实时的要求;同时,由于不需要对手掌轮廓上的边缘点进行曲率计算,从而提取的手掌轮廓允许存在一定的误差,进而降低了对提取的手掌轮廓的精密度的要求。
以上结合最佳实施例对本发明进行了描述,但本发明并不局限于以上揭示的实施例,而应当涵盖各种根据本发明的本质进行的修改、等效组合。
Claims (16)
1.一种指尖定位方法,其特征在于,包括以下步骤:
获取包含手势的手势图像;
从所述手势图像中提取手掌轮廓;
对所述手掌轮廓进行多边形逼近以获取轮廓凸包;
依次判断所述轮廓凸包的各个凸点是否为指尖点。
2.如权利要求1所述的指尖定位方法,其特征在于,所述“从所述手势图像中提取手掌轮廓”的方式具体为:
通过所述手势图像与背景图像相减提取所述手掌轮廓;或
通过肤色侦测从所述手势图像中提取所述手掌轮廓;或
通过超声波或红外线技术从所述手势图像中提取所述手掌轮廓。
3.如权利要求2所述的指尖定位方法,其特征在于,所述“通过肤色侦测从所述手势图像中提取所述手掌轮廓”包括以下步骤:
减小所述手势图像的亮度维度;
对所述手势图像的每一个维度进行阈值操作,以得到二值图像;
对所述二值图像进行轮廓检索以得到手掌轮廓。
4.如权利要求1所述的指尖定位方法,其特征在于,所述“依次判断所述轮廓凸包的各个凸点是否为指尖点”具体包括:
从所述手掌轮廓中提取手掌中心点的位置;
获取所述手掌轮廓的凸缺陷并根据所述凸缺陷提取所述手掌轮廓上多个凹点的位置;
根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的各个凸点是否为指尖点。
5.如权利要求4所述的指尖定位方法,其特征在于,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的各个凸点是否为指尖点”具体包括:
依次判断各所述凸点相邻的两个点是否为凹点,若判断结果为是,则所述凸点为指尖点。
6.如权利要求4所述的指尖定位方法,其特征在于,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的任一凸点是否为指尖点”具体包括:
计算所述凸点与相邻的两个凹点在所述手掌中心点处所呈的角度,分别记为第一角度和第二角度;
判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,若判断结果为是,则所述凸点为指尖点。
7.如权利要求6所述的指尖定位方法,其特征在于,所述预设角度范围为0°至15°。
8.如权利要求4至7任一项所述的指尖定位方法,其特征在于,所述“根据各所述凸点与所述凹点的几何关系判断所述轮廓凸包的任一凸点是否为指尖点”具体包括:
计算所述凸点到所述手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;
判断所述第一比值和所述第二比值是否均在预设比值范围内,若判断结果为是,则所述凸点为指尖点。
9.如权利要求8所述的指尖定位方法,其特征在于,所述预设比值范围为1.3至3.0。
10.一种指尖定位终端,其特征在于,包括:
摄像头,用于获取包含手势的手势图像;
手掌轮廓提取模块,用于从所述手势图像中提取手掌轮廓;
轮廓凸包获取模块,用于对所述手掌轮廓进行多边形逼近以获取轮廓凸包;以及
指尖识别定位模块,用于依次判断所述轮廓凸包的各个凸点是否为指尖点。
11.如权利要求10所述的指尖定位终端,其特征在于,所述指尖定位终端还包括:
手掌轮廓凹凸点识别模块,用于识别出所述轮廓凸包及所述手掌轮廓所包含的各个凹、凸点;
手掌中心点提取模块,用于识别并提取手掌中心点的位置。
12.如权利要求11所述的指尖定位终端,其特征在于,所述指尖识别定位模块具体包括:
凹点判断单元,用于依次判断与所述凸点相邻的两个点是否为凹点,若判断结果为是,则所述凸点为指尖点。
13.如权利要求11所述的指尖定位终端,其特征在于,所述指尖识别定位模块具体包括:
角度计算单元,用于计算所述凸点与相邻的两个凹点在所述手掌中心点处所呈的角度,分别记为第一角度和第二角度;以及
角度判断单元,用于判断所述第一角度和所述第二角度中的较小者是否在预设角度范围内,若判断结果为是,则所述凸点为指尖点。
14.如权利要求11至13任一项所述的指尖定位终端,其特征在于,所述指尖识别定位模块包括:
比值计算单元,用于计算所述凸点到手掌中心点的距离分别与相邻的两个凹点到所述手掌中心点的距离的比值,分别记为第一比值和第二比值;以及
比值判断单元,用于判断所述第一比值和所述第二比值是否均在预设比值范围内,若判断结果为是,则所述凸点为指尖点。
15.如权利要求10所述的指尖定位终端,其特征在于,所述指尖定位终端还包括:
存储模块,用于存储为指尖点的所述凸点的位置。
16.如权利要求10所述的指尖定位终端,其特征在于,所述手掌轮廓提取模块包括:
亮度维度处理单元,用于减小所述手势图像的亮度维度;
二值化单元,用于接收所述亮度维度处理单元处理后的手势图像,并对所述手势图像的每一个维度进行阈值操作以得到二值图像;以及
手掌轮廓检索单元,用于对所述二值图像进行轮廓检索以得到所述手掌轮廓。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410325660.7A CN104102347A (zh) | 2014-07-09 | 2014-07-09 | 指尖定位方法及指尖定位终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410325660.7A CN104102347A (zh) | 2014-07-09 | 2014-07-09 | 指尖定位方法及指尖定位终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104102347A true CN104102347A (zh) | 2014-10-15 |
Family
ID=51670548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410325660.7A Pending CN104102347A (zh) | 2014-07-09 | 2014-07-09 | 指尖定位方法及指尖定位终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102347A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105472238A (zh) * | 2015-11-16 | 2016-04-06 | 联想(北京)有限公司 | 一种图像处理方法及电子设备 |
CN105825193A (zh) * | 2016-03-25 | 2016-08-03 | 乐视控股(北京)有限公司 | 手掌的掌心位置定位、手势识别方法、装置及智能终端 |
CN106909874A (zh) * | 2016-07-07 | 2017-06-30 | 湖南拓视觉信息技术有限公司 | 一种鼻尖定位方法和装置 |
CN106900601A (zh) * | 2017-02-09 | 2017-06-30 | 浙江大学 | 一种快速精准识别对虾图像虾头点与虾尾点的方法 |
CN106951861A (zh) * | 2017-03-20 | 2017-07-14 | 上海与德科技有限公司 | 超声波手势识别方法及装置 |
CN107066944A (zh) * | 2017-03-06 | 2017-08-18 | 北京聚爱聊网络科技有限公司 | 一种手指指根的定位方法及装置 |
CN107886387A (zh) * | 2016-09-30 | 2018-04-06 | 阿里巴巴集团控股有限公司 | 采用增强现实技术提供手掌装饰虚拟图像的实现方法及其装置 |
CN109914532A (zh) * | 2017-11-27 | 2019-06-21 | 仁宝电脑工业股份有限公司 | 智能供水方法及智能供水装置 |
CN109933190A (zh) * | 2019-02-02 | 2019-06-25 | 青岛小鸟看看科技有限公司 | 一种头戴显示设备及其交互方法 |
CN111563477A (zh) * | 2020-05-21 | 2020-08-21 | 苏州沃柯雷克智能系统有限公司 | 一种合格手部照片获取方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807114A (zh) * | 2010-04-02 | 2010-08-18 | 浙江大学 | 一种基于三维手势的自然交互方法 |
CN102053702A (zh) * | 2010-10-26 | 2011-05-11 | 南京航空航天大学 | 动态手势控制系统与方法 |
US20120062736A1 (en) * | 2010-09-13 | 2012-03-15 | Xiong Huaixin | Hand and indicating-point positioning method and hand gesture determining method used in human-computer interaction system |
CN103226387A (zh) * | 2013-04-07 | 2013-07-31 | 华南理工大学 | 基于Kinect的视频人手指尖定位方法 |
-
2014
- 2014-07-09 CN CN201410325660.7A patent/CN104102347A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807114A (zh) * | 2010-04-02 | 2010-08-18 | 浙江大学 | 一种基于三维手势的自然交互方法 |
US20120062736A1 (en) * | 2010-09-13 | 2012-03-15 | Xiong Huaixin | Hand and indicating-point positioning method and hand gesture determining method used in human-computer interaction system |
CN102053702A (zh) * | 2010-10-26 | 2011-05-11 | 南京航空航天大学 | 动态手势控制系统与方法 |
CN103226387A (zh) * | 2013-04-07 | 2013-07-31 | 华南理工大学 | 基于Kinect的视频人手指尖定位方法 |
Non-Patent Citations (1)
Title |
---|
郭康德等: "基于视觉技术的三维指尖跟踪算法", 《计算机研究与发展》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105472238A (zh) * | 2015-11-16 | 2016-04-06 | 联想(北京)有限公司 | 一种图像处理方法及电子设备 |
WO2017161778A1 (zh) * | 2016-03-25 | 2017-09-28 | 乐视控股(北京)有限公司 | 手掌的掌心位置定位、手势识别方法、装置及智能终端 |
CN105825193A (zh) * | 2016-03-25 | 2016-08-03 | 乐视控股(北京)有限公司 | 手掌的掌心位置定位、手势识别方法、装置及智能终端 |
CN106909874A (zh) * | 2016-07-07 | 2017-06-30 | 湖南拓视觉信息技术有限公司 | 一种鼻尖定位方法和装置 |
CN106909874B (zh) * | 2016-07-07 | 2019-08-30 | 湖南拓视觉信息技术有限公司 | 一种鼻尖定位方法和装置 |
CN107886387A (zh) * | 2016-09-30 | 2018-04-06 | 阿里巴巴集团控股有限公司 | 采用增强现实技术提供手掌装饰虚拟图像的实现方法及其装置 |
CN106900601A (zh) * | 2017-02-09 | 2017-06-30 | 浙江大学 | 一种快速精准识别对虾图像虾头点与虾尾点的方法 |
CN106900601B (zh) * | 2017-02-09 | 2020-04-17 | 浙江大学 | 一种快速精准识别对虾图像虾头点与虾尾点的方法 |
CN107066944A (zh) * | 2017-03-06 | 2017-08-18 | 北京聚爱聊网络科技有限公司 | 一种手指指根的定位方法及装置 |
CN106951861A (zh) * | 2017-03-20 | 2017-07-14 | 上海与德科技有限公司 | 超声波手势识别方法及装置 |
CN109914532A (zh) * | 2017-11-27 | 2019-06-21 | 仁宝电脑工业股份有限公司 | 智能供水方法及智能供水装置 |
CN109933190A (zh) * | 2019-02-02 | 2019-06-25 | 青岛小鸟看看科技有限公司 | 一种头戴显示设备及其交互方法 |
CN109933190B (zh) * | 2019-02-02 | 2022-07-19 | 青岛小鸟看看科技有限公司 | 一种头戴显示设备及其交互方法 |
CN111563477A (zh) * | 2020-05-21 | 2020-08-21 | 苏州沃柯雷克智能系统有限公司 | 一种合格手部照片获取方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102347A (zh) | 指尖定位方法及指尖定位终端 | |
CN111178250B (zh) | 物体识别定位方法、装置及终端设备 | |
CN105096377B (zh) | 一种图像处理方法和装置 | |
EP3514724B1 (en) | Depth map-based heuristic finger detection method | |
CN103226387B (zh) | 基于Kinect的视频人手指尖定位方法 | |
CN103941866B (zh) | 一种基于Kinect深度图像的三维手势识别方法 | |
EP2980755B1 (en) | Method for partitioning area, and inspection device | |
CN110232311A (zh) | 手部图像的分割方法、装置及计算机设备 | |
CN110796018B (zh) | 一种基于深度图像和彩色图像的手部运动识别方法 | |
CN103971102A (zh) | 基于手指轮廓和决策树的静态手势识别方法 | |
CN103984928A (zh) | 基于景深图像的手指手势识别方法 | |
CN103105924B (zh) | 人机交互方法和装置 | |
CN103294996A (zh) | 一种3d手势识别方法 | |
CN103598870A (zh) | 一种基于深度图像手势识别的视力检测方法 | |
CN111414837A (zh) | 手势识别方法、装置、计算机设备及存储介质 | |
CN109948450A (zh) | 一种基于图像的用户行为检测方法、装置和存储介质 | |
CN104049760A (zh) | 一种人机交互命令的获取方法及系统 | |
CN109933190B (zh) | 一种头戴显示设备及其交互方法 | |
CN105389541A (zh) | 指纹图像的识别方法及装置 | |
KR101089847B1 (ko) | 얼굴 인식을 위한 sift 알고리즘을 이용한 키포인트 매칭 시스템 및 방법 | |
CN106650628A (zh) | 一种基于三维k曲率的指尖检测方法 | |
CN109375833B (zh) | 一种触控指令的生成方法及设备 | |
CN109919128B (zh) | 控制指令的获取方法、装置及电子设备 | |
KR101967858B1 (ko) | 3d 깊이 이미지 기반 객체 분리 장치 및 그 방법 | |
KR20130128097A (ko) | 깊이 정보를 이용한 물체 인식 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141015 |