一种基于最小二乘曲线拟合的指尖检测方法与流程

文档序号:17624112发布日期:2019-05-10 23:27阅读:460来源:国知局
一种基于最小二乘曲线拟合的指尖检测方法与流程

本发明涉及机器视觉领域,尤其是涉及一种基于最小二乘曲线拟合的指尖检测方法。



背景技术:

计算机应用技术的不断发展使得人机交互方式变得多样化,传统的人机交互方式如键盘、鼠标、触摸屏等,需要手动操纵硬件设备,稳定可靠,但使用不灵活。而新型的人机交互方式通过利用机器视觉、模式识别等相关技术,理解人的行为动作、语音所包含的指令,进而执行相应的操作,更加便捷和智能化。基于机器视觉的指尖检测解决了人机互动中指尖头信息的获取问题.

对于指尖检测,利用摄像头在采集手部图像后需要根据手部特征提取出手部区域,一般采用肤色、运动信息等来提取手部区域,然后进一步地利用凸包、梯度图、曲率等特征来进行指尖检测(张世征.几种轮廓曲率估计角点检测算法研究[d],重庆大学,2016.)。okaandsato(okak,satoy,koikeh.real-timetrackingofmultiplefingertipsandgesturerecognitionforaugmenteddeskinterfacesystems[c].proceedingsofthe5thieeeinternationalconferenceonautomaticfaceandgesturerecognition.losalamitos:ieeecomputersocietypress,2002:429-434.)用红外摄像头采集图像,通过阈值法分割得到可靠手部区域,将手指形状看做矩形和半圆形的组合,利用适当大小的圆为模板根据归一化相关性大小来定位指尖部位。daeholee(leedh,leesg.vision-basedfingeractionrecognitionbyangledetectionandcontouranalysis[j].etrijournal,33,3(2011-06-07),2011,33(3):415-422.)利用轮廓的弧长与弦误差寻找最优参数,根据轮廓k余弦曲率值的大小确定指尖位置。然而,为达到理想的指尖检测效果,现有技术中的大多数指尖检测算法只限于静态手势,当手部与摄像头距离发生改变,或手指弯曲形态发生变化时,无法准确有效地定位指尖。



技术实现要素:

发明目的:本发明的目的是提供一种基于最小二乘曲线拟合的指尖检测方法,该方法对非静态手势、当手部与摄像头距离发生改变,或手指弯曲形态发生变化时,均能准确有效地定位指尖,提高了机器视觉的便捷性和智能化。

技术方案:本发明所述基于最小二乘曲线拟合的指尖检测方法包括以下步骤:

步骤1:摄像头采集手部图像;

步骤2:在rgb空间进行肤色模型分割得到手部二值图像;

步骤3:提取分割后的手部二值图像轮廓,将手掌掌心正对摄像头,五指张开指尖朝上,从上往下用水平直线与轮廓相交,当交点个数为2时,两交点间的最大距离确定为手掌宽度;

步骤4:采用最小二乘法对轮廓点集中处的每个点邻近范围内的一段曲线进行曲线拟合,并将邻域内一定间隔的点到当前点所在曲线切线的距离累加和作为当前点处的曲率大小;设定阈值,当计算得到的当前点的曲率大于该阈值时,判定当前点为指尖点;

步骤5:进行指宽限定,将距离指尖点不同距离处,水平直线与轮廓相交得到的指宽进行比较,排除非指尖点。

进一步地,所述步骤2包括,图像r分量的像素值分别与图像g分量、b分量的像素值求差值,所得差值较小者大于5,并对分割后的手部区域进行两次形态学开运算操作,取卷积核半径为5。

进一步地,所述步骤3包括,提取手部外围轮廓,得到组成轮廓的点集,从组成轮廓点集的纵坐标最小值开始,取经过该纵坐标的水平直线,往下每隔5个像素取一条水平直线,计算直线与轮廓的交点个数;当交点数等于2时,计算两交点之间的长度,将所有长度的最大值记为手掌宽度dh,dh与图像宽度的比值记为dq。

进一步地,所述步骤4包括,用最小二乘法拟合手指上端曲线,取轮廓上的当前点(xi,yi)和其两侧各两个点(xi-2l,yi-2l)、(xi-l,yi-l)、(xi+l,yi+l)、(xi+2l,yi+2l)共5个点来拟合二次多项式曲线,并将点(xi-2l,yi-2l)、(xi-l,yi-l)、(xi+l,yi+l)、(xi+2l,yi+2l)到当前点所在曲线的切线的距离累加和大小作为曲率值,当曲率值大于240*dq时,判定当前点为类指尖点。

进一步地,轮廓上的当前点(xi,yi)和其两侧各两个点(xi-2l,yi-2l)、(xi-l,yi-l)、(xi+l,yi+l)、(xi+2l,yi+2l)的选取方法为:由步骤3得到组成轮廓的点数为coupointsize,从轮廓上的0到coupointsize-1个点,每个点分别向其两侧取与该点间隔点数为l=60*dq、2l=120*dq的两个点。

进一步地,所述步骤5包括,由所述步骤4计算出的类指尖点是指尖处很多点的集合,取横、纵坐标中间值的点(xi,yi)作为指尖中心点,计算曲线上该点的切线,记(xi-l,yi-l)到指尖中心点的距离为w,分别计算与中心点切线的距离为w、1.25w、1.5w、2w的直线与轮廓相交得到的指宽d0、d1、d2、d3,令dm为d0、d1、d2、d3的平均值,d0、d1、d2、d3相邻两宽度值间的差值记为δd1,δd2,δd3,满足以下条件时评定当前指尖中心点为指尖点:

有益效果:与现有技术相比,本发明具有以下显著优点:本发明采用最小二乘曲线拟合的方法对指尖进行检测,检测精度较高,检测结果不受手部与摄像头距离发生改变的影响,对非静态手势、当手部与摄像头距离发生改变,或手指弯曲形态发生变化时,均能准确有效地定位指尖,大大提高了机器视觉的便捷性和智能化,有较高的鲁棒性。

附图说明

图1为本发明指尖检测方法的流程图;

图2为初始化时手指向上计算手掌宽度的示意图;

图3为选取轮廓上进行曲线拟合的点的位置示意图;

图4为手部正常形态时指尖检测效果图;

图5为手部发生弯曲变化时指尖检测效果图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

如图1所示,基于最小二乘曲线拟合的指尖检测方法包括以下步骤:

步骤1,手掌正对摄像头,采集图像;

步骤2,在rgb空间(r:red红;g:green绿;b:blue蓝)中进行肤色模型分割得到手部二值图像;

步骤3,提取分割后的手部二值图像轮廓,在程序开始时,将手掌掌心正对摄像头,五指张开指尖朝上,从上往下用水平直线与轮廓相交,根据交点个数计算得到手掌宽度;

步骤4,采用最小二乘法对轮廓点集中处的每个点邻近范围内的一段曲线进行曲线拟合,并将附近其余点到当前点所在曲线切线的距离累加和作为曲率大小;

步骤5,设定阈值,若当前点两侧点到切线的距离的累加和大于该阈值,判定为指尖点,并通过限定指宽大小,排除手臂等其他位置。

步骤1中,人距离摄像头距离在0.5到1米处采集图像。

步骤2中,通过下式提取出肤色信息,即得到目标手部区域:

式中,rt、gt、bt分别代表图像的红、绿、蓝分量的像素值大小,x、y表示互相垂直的两个方向上的坐标。ε是一个预设的固定值,文中令ε=5,ε过大会导致肤色信息不全,过小则会引入过多噪声。并为了平滑手部边缘不平处,对分割后的手部二值图像采用两次形态学开运算操作,卷积核大小为5。

步骤3中,提取手部外围轮廓,得到组成轮廓的点集,由轮廓点纵坐标最小值开始,得到该纵坐标的水平直线,后每隔距离d向下的水平直线与手部轮廓相交,当交点个数大于2时,表明该水平直线还处于手指上端;水平直线继续向下,当交点个数为2时,计算两交点之间的距离,记为手掌宽度dh,如图2所示。图像宽度为300,dh与图像宽度的比值记为dq。

步骤4中,由步骤3得到组成轮廓的点数为coupointsize,从0到coupointsize-1的点分别计算用最小二乘法计算拟合抛物线的方程,考虑到若以每个点都参与曲线的拟合,计算复杂度过高,时间开销过大,而且数据点过多,造成过拟合使得效果变差,指尖点不凸显,因此只采用5个点来拟合手指上端部分。

从轮廓的0到coupointsize-1个点,每个点分别从其两侧取间隔点数为l=60*dq、2l=120*dq的点,共5个点进行拟合曲线。

根据手指指尖形状与二次多项式形状相似的特点,采用二次多项式拟合曲线。设拟合多项式为y=a0+a1x+a2x2,由于手指在图像中的方向是任意的,难以建立x与y的位置关系,故通过分别计算弧长s与x,s与y的函数方程,来间接确定y与x的位置关系。

假设点(xi+j,yi+j)为待计算任意点的坐标,弧长为si+j,j∈(-2l,-l,0,l,2l),(xi,yi)为当前点的坐标,当前弧长记为si=0。则

因此,要求一个函数x(si+j)与所给数据点{(si+j,xi+j),j∈(-2l,-l,0,l,2l)}拟合,使误差平方和最小,就是要在向量空间中找到一个函数x(si+j)。

一般将向量空间中的基向量取为:弧长s与x的拟合函数设为同理可设弧长s与y的拟合函数为:

其中,α=(α0,α1,α2)和β=(β0,β1,β2)为拟合系数。要使误差平方和最小,即为求多元函数中的极小点(α0,α1,α2)的问题。

将式的两边分别对α0,α1,α2求一阶导数,并使导数为0,得:

其中,d0、d1、d2是为了简化表达而引入的中间变量,且

由x(si)=xi,si=0知,α0=xi,为求α1,α2,取上式矩阵方程组中的后两个方程得:

为简化表达,取中间变量a11、a12、a22、d、ex、fx,且令

由此得同理可求得β1,β2。

对指尖点切线方程的计算:

对x(s)和y(s)分别对s求导,可得到在某坐标点处的切线向量,由x(s)=α0+α1s+α2s2得,因此同理得因此得点(xi,yi)处的切线向量(α1,β1)。

设点(xi,yi)处的切线方程为:

(α1=0时,x1=xi;β1=0时,y1=yi)

其中x1、y1分别为沿x、y方向上的变量。

确定曲率值大小:

点(xi+j,yi+j)到切线上的距离为

距离累加和为:

上式中,容易会误将手指间凹谷检测为指尖,由于指尖切线始终相对处于轮廓点的上方,故将绝对值符号去掉可以排除指间凹谷点。为避免手掌与摄像头之间距离变化时造成距离不准,设定s=240*dq。

若xi为当前检测到的指尖点,实际检测到的是许多的指尖点聚类,取其中间点作为指尖点,将检测到相邻的轮廓点取横纵坐标等于中间值的点作为指尖点。

步骤5中,为进一步排除手臂其他形状尖锐处误检测为指尖,利用指宽信息来进一步排除。(xi,yi)是指尖中心点的坐标,由前式已得到(xi,yi)处切线点的方程,计算(xi-l,yi-l)到切线的距离w,并将(xi-l,yi-l)与轮廓交点的长度记为指宽d0,接下来分别计算与指尖切线平行距离为1.25w,1.5w,2w处直线与轮廓相交得到的指宽分别为d1,d2,d3。然后计算d0,d1,d2,d3相邻两宽度值间的差值,记d1-d0的值为δd1,d2-d1的值为δd2,d3-d2为δd3,dm为d0,d1,d2,d3的平均值,当δd1,δd2,δd3满足以下约束条件时,判定(xi,yi)为指尖点:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1