发明名称 基于肤色与形态特征的动态手势识别方法
摘要 本发明公开了一种基于肤色与形态特征的动态手势识别方法,该方法为:采集视频图像,得到当前的视频帧;对采集到的视频帧作肤色阈值处理,得到肤色二值图像;将二值图像进行滤波降噪处理,提高图像质量;检测识别肤色二值图像中的人手部分;根据人手部分的重心位置信息识别手势的动作。本发明具有一下优点:(1)实时性好,响应时间短,可以应用到人机交互领域;(2)成本低廉,通过摄像头和计算机或DSP之类的处理设备即可组成;(3)稳定性好,对于手势的旋转、平移、变形,本算法都有较好的处理效果。本发明可应用于人机交互领域。
申请公布号 CN102880865A 申请公布日期 2013.01.16
申请号 CN201210372408.2 申请日期 2012.09.28
申请人 东南大学 发明人 路小波;江潇;曾维理;朱周;陈伍军
分类号 G06K9/00(2006.01)I;G06K9/54(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 32204 代理人 柏尚春
主权项 1.一种基于肤色与形态特征的动态手势识别方法,其特征在于:包括以下步骤:步骤1:初始化,并截取一帧M×N大小的彩色图像,记为S<sub>1</sub>,其中M和N为正整数,分别表示图像矩阵的行数和列数;步骤2:对图像S<sub>1</sub>作高斯滤波处理,其方法为:首先,确定高斯滤波器模板,二维高斯函数的表达式为:<maths num="0001"><![CDATA[<math><mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>e</mi><mrow><mo>-</mo><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac></mrow></msup></mrow></math>]]></maths>设定σ<sup>2</sup>和n,可以确定高斯模板权值,取<img file="FDA00002203717800012.GIF" wi="152" he="105" />和n=3,可以得到高斯模板:<maths num="0002"><![CDATA[<math><mrow><mi>G</mi><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其次,用模板G扫描图像S<sub>1</sub>中的每一个像素,经过滤波后的图像记为S<sub>2</sub>,S<sub>2</sub>中第i行第j列的像素点的值,记为<img file="FDA00002203717800014.GIF" wi="128" he="57" />,由图像S<sub>1</sub>中第i行第j列的像素值,记为V<sub>(i,j)</sub>,和其领域内的其他像素值经过加权平均后得到,公式如下:<maths num="0003"><![CDATA[<math><mrow><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><msub><mo>|</mo><msub><mi>S</mi><mn>2</mn></msub></msub><mo>=</mo><mi>G</mi><mfenced open='(' close=')'><mtable><mtr><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd><mtd><msub><mi>V</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>步骤3:将图像S<sub>2</sub>由RGB色彩空间转换为YCrCb色彩空间,具体方法为:将图像中第i行第j列的像素点记为(i,j),点(i,j)的RGB值分别记为R<sub>(i,j)</sub>,G<sub>(i,j)</sub>,B<sub>(i,j)</sub>,那么对应的YCrCb颜色空间的Y<sub>(i,j)</sub>,Cr<sub>(i,j)</sub>,Cb<sub>(i,j)</sub>值分别为:<maths num="0004"><![CDATA[<math><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>Y</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>=</mo><mn>0.299</mn><mo>*</mo><msub><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><mn>0.587</mn><mo>*</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><mn>0.114</mn><mo>*</mo><msub><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>Cr</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>=</mo><mo>-</mo><mn>0.147</mn><mo>*</mo><msub><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>-</mo><mn>0.289</mn><mo>*</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><mn>0.436</mn><mo>*</mo><msub><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>Cb</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>=</mo><mn>0.615</mn><mo>*</mo><msub><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>-</mo><mn>0.515</mn><mo>*</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>-</mo><mn>0.100</mn><mo>*</mo><msub><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub></mtd></mtr></mtable></mfenced></math>]]></maths>求出每个像素点的Y<sub>(i,j)</sub>,Cr<sub>(i,j)</sub>,Cb<sub>(i,j)</sub>值,得到YCrCb颜色空间的图像,记为S<sub>3</sub>;步骤4:对图像S<sub>3</sub>作阈值分割处理,其方法如下:人皮肤颜色在YCrCb颜色空间中的Cr和Cb分量分布近似于一个椭圆形,其分布可由以下公式得到:<maths num="0005"><![CDATA[<math><mrow><mfrac><msup><mi>x</mi><mn>2</mn></msup><msup><mi>a</mi><mn>2</mn></msup></mfrac><mo>+</mo><mfrac><msup><mi>y</mi><mn>2</mn></msup><msup><mi>b</mi><mn>2</mn></msup></mfrac><mo>=</mo><mi>K</mi></mrow></math>]]></maths>其中,a=25,b=14,x,y的值由由以下公式决定:x=25.6*(Cr<sub>(i,j)</sub>-109)-19.2*(Cb<sub>(i,j)</sub>-152)+51y=25.6*(Cr<sub>(i,j)</sub>-109)+19.2*(Cb<sub>(i,j)</sub>-152)+77根据求出的K的值,对图像S<sub>3</sub>进行肤色分割,对于点(i,j),计算出其K值,将K的值与拟合椭圆方程的右值比较,若K的值小,则说明点(i,j)在拟合椭圆中,属于肤色点;若K的值大,则说明点(i,j)部在拟合椭圆中,属于非肤色点,由于拟合椭圆方程和YCrCb中的Y分量也有关系,故对于不同的Y值采取不同的拟合值,将图像S<sub>3</sub>肤色分割后的图像记为S<sub>4</sub>,S<sub>4</sub>中像素点(i,j)的值记为V<sub>(i,j)</sub>,V<sub>(i,j)</sub>的值由以下阈值判决准则得到:<img file="FDA00002203717800022.GIF" wi="1064" he="136" /><img file="FDA00002203717800023.GIF" wi="1064" he="135" />执行阈值判决准则得到新的图像S<sub>4</sub>,其为二值图像,大小为M×N;步骤5:对图像S<sub>4</sub>作数字形态学处理,其方法如下:设3×3的结构元素B的取值为:<maths num="0006"><![CDATA[<math><mrow><mi>B</mi><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>首先,腐蚀图像,用结构元素B扫描图像S<sub>4</sub>中的每一个图像,将结构元素与其覆盖的二值图像做“与”操作,如果都为1,结果图像的该像素值为1,否则为0,将结果图像的值赋给S<sub>4</sub>;其次,膨胀图像,用结构元素B扫描图像S<sub>4</sub>中的每一个图像,将结构元素与其覆盖的二值图像做“与”操作,如果都为0,结果图像的该像素值为0,否则为1,将结果图像的值赋给S<sub>4</sub>;步骤6:从图像S<sub>4</sub>中检测人手肤色块;步骤7:检测手的动态运动信息。
地址 210096 江苏省南京市四牌楼2号