主权项 |
一种静态手势指尖检测方法,包括下列步骤:(1)进行手势区域分割,从输入的彩色图像中分割出手势区域GEST;(2)考察手势区域内各点的坐标,分别用ROW<sub>top</sub>、ROW<sub>bottom</sub>、COL<sub>left</sub>和COL<sub>right</sub>表示各点坐标中最上方和最下方的行序号,以及最左方和最右方的列序号,并按照下面四式分别计算GEST的上投影值P<sub>top</sub>,下投影值P<sub>bottom</sub>,左投影值P<sub>left</sub>和右投影值P<sub>right</sub>:<img file="FDA0001009091440000011.GIF" wi="558" he="116" /><maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>b</mi><mi>o</mi><mi>t</mi><mi>t</mi><mi>o</mi><mi>m</mi></mrow></msub><mo>=</mo><munderover><mo>Σ</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mi>G</mi><mi>E</mi><mi>S</mi><mi>T</mi><mrow><mo>(</mo><msub><mi>ROW</mi><mrow><mi>b</mi><mi>o</mi><mi>t</mi><mi>t</mi><mi>o</mi><mi>m</mi></mrow></msub><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0001009091440000012.GIF" wi="677" he="129" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>l</mi><mi>e</mi><mi>f</mi><mi>t</mi></mrow></msub><mo>=</mo><munderover><mo>Σ</mo><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><mi>G</mi><mi>E</mi><mi>S</mi><mi>T</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><msub><mi>COL</mi><mrow><mi>l</mi><mi>e</mi><mi>f</mi><mi>t</mi></mrow></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0001009091440000013.GIF" wi="581" he="127" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>r</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></msub><mo>=</mo><munderover><mo>Σ</mo><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><mi>G</mi><mi>E</mi><mi>S</mi><mi>T</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><msub><mi>COL</mi><mrow><mi>r</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0001009091440000014.GIF" wi="621" he="129" /></maths>式中,m=1,2,…,M表示输入图像的行序号,n=1,2,…,N表示图像的列序号,M和N分别表示图像的高度和宽度;(3)计算上述四个投影值的最大值P<sub>max</sub>=max{P<sub>top</sub>,P<sub>bottom</sub>,P<sub>right</sub>,P<sub>left</sub>};(4)判断确定手腕在手势区域所在的方位,用LABEL进行标注,即有<img file="FDA0001009091440000015.GIF" wi="678" he="304" />其中,LABEL={1,2,3,4}分别表示手腕位于手势区域上、下、左、右四种情况;(5)计算手势区域的重心,记为(C<sub>x</sub>,C<sub>y</sub>);(6)以(C<sub>x</sub>,C<sub>y</sub>)为圆心,做半径为r的同心圆CIR(r),用AREA1(r)表示CIR(r)包含的像素数,计算CIR(r)与GEST的交集区域所含的像素数AREA2(r),计算AREA1(r)和AREA2(r)的比值,与固定阈值TH<sub>1</sub>进行比较,确定满足所述比值大于固定阈值TH<sub>1</sub>的r的最大值,记为r<sub>max</sub>;(7)根据手腕所处的不同方位,分下面四种情况进行处理,得到手区域二值图,用HAND表示:i)LABEL=1,手腕在图像下方情况:考察GEST中纵坐标大于的C<sub>y</sub>的像素点,计算各点与手势重心(C<sub>x</sub>,C<sub>y</sub>)的距离d,将满足d>r<sub>max</sub>的点看作是手腕区域,并去除;ii)LABEL=2,手腕在图像上方情况:考察GEST中纵坐标小于的C<sub>y</sub>的像素点,计算各点与手势重心(C<sub>x</sub>,C<sub>y</sub>)的距离d,将满足d>r<sub>max</sub>的点看作是手腕区域,并去除;iii)LABEL=3,手腕在图像左侧情况:考察GEST中横坐标小于的C<sub>y</sub>的像素点,计算各点与手势重心(C<sub>x</sub>,C<sub>y</sub>)的距离d,将满足d>r<sub>max</sub>的点看作是手腕区域,并去除;iv)LABEL=4,手腕在图像右侧情况:考察GEST中横坐标大于的C<sub>y</sub>的像素点,计算各点与手势重心(C<sub>x</sub>,C<sub>y</sub>)的距离d,将满足d>r<sub>max</sub>的点看作是手腕区域,并去除;(8)提取手区域二值图HAND的外轮廓,用BOUND(k)表示,k=1,2,…,K,K表示轮廓上点的总数,k为轮廓上各点按照某个方向排序的序号;(9)计算距离:计算BOUND(k)与手势重心(C<sub>x</sub>,C<sub>y</sub>)的距离,用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)各点,并与r<sub>max</sub>进行比较,如果满足PEAK(p)与r<sub>max</sub>的比值大于特定阈值TH<sub>2</sub>,则将该p点判定为指尖点;检测到的指尖点集用FING(q)表示。 |