发明名称 一种手轮廓提取及定向算法
摘要 本发明公开了一种手轮廓提取及定向算法。传统手边缘提取算法得到的图像轮廓都很粗糙,无法满足手三维建模的要求。本发明依次包括如下步骤:图像平滑处理、Sobel算子提取手轮廓粗糙图像、找手轮廓粗糙图像中最长轮廓作为手轮廓、手朝向定位。本发明能够精确地提取图像中手的轮廓,去除图像上其他物体或是噪声的干扰,并对手指朝向在图像上定位。
申请公布号 CN105741263A 申请公布日期 2016.07.06
申请号 CN201610038144.5 申请日期 2016.01.20
申请人 杭州电子科技大学 发明人 张钰;徐伟斌;章田
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 一种手轮廓提取及定向算法,其特征在于:该方法依次包括如下步骤:图像平滑处理、Sobel算子提取手轮廓粗糙图像、找手轮廓粗糙图像中最长轮廓作为手轮廓、手朝向定位,具体如下:步骤1、对摄像机获取的原始图像进行图像平滑处理,获得预处理图像;图像平滑处理使用高斯平滑滤波,选取的5*5高斯掩膜如下:<maths num="0001"><math><![CDATA[<mrow><mfrac><mn>1</mn><mn>150</mn></mfrac><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>12</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>6</mn></mtd><mtd><mn>14</mn></mtd><mtd><mn>18</mn></mtd><mtd><mn>14</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>12</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000910411530000011.GIF" wi="699" he="499" /></maths>步骤2、对步骤一获得的预处理图像使用Sobel算子提取出手轮廓粗糙图像,手轮廓粗糙图像上的轮廓包括手轮廓和其它物体的轮廓,具体如下:记预处理图像为A,那么图像A上某一像素点的水平和垂直方向的梯度分别为:<maths num="0002"><math><![CDATA[<mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>G</mi><mi>x</mi></msub><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><mo>-</mo><mn>1</mn></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mn>2</mn></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mn>1</mn></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>*</mo><mi>A</mi></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>G</mi><mi>y</mi></msub><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><mo>-</mo><mn>1</mn></mrow></mtd><mtd><mrow><mo>-</mo><mn>2</mn></mrow></mtd><mtd><mrow><mo>-</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>*</mo><mi>A</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000910411530000012.GIF" wi="614" he="643" /></maths>则该像素点的梯度值<img file="FDA0000910411530000013.GIF" wi="432" he="122" />针对手的特征设置预设值,当某像素点的G值大于预设值时,就将该像素点作为手轮廓粗糙图像的一个边缘点;计算图像A上每一个像素点的梯度值,这样就得到了手轮廓粗糙图像;步骤3、将手轮廓粗糙图像中最长轮廓作为手的轮廓,并去除手轮廓粗糙图像中与手轮廓无关的点,具体如下:3.1:以手轮廓粗糙图像的左上角为起点按照从上到下、从左到右的顺序扫描每一个像素点直到找到一条轮廓上的像素点A1,该像素点满足要求q:该像素点作为3*3九宫格中心点时,周围的8个像素点仅有一个是轮廓上的像素点B1;3*3九宫格内包含三行像素点,每行包括三个像素点;3.2:将像素点A1作为轮廓的起始点,并记录下像素点A1的坐标;3.3:将像素点B1作为像素点A1的后继点,并且将像素点B1作为新的3*3九宫格的中心点,按照搜索路径P进行遍历,搜索路径P如下:从上往下、从左往右的顺序在当前3*3九宫格内选取除前一个3*3九宫格中心点外的第一个像素点C1,同时记录下当前3*3九宫格内除当前3*3九宫格中心点和前一个3*3九宫格中心点以外其余像素点的坐标以便按照搜索路径P回溯遍历这些点;对像素点C1和需要回溯遍历的点均按照搜索路径P进行遍历,每次遍历以遇到满足要求q的一个像素点为结束条件,并记录下该次遍历的像素点个数;这样便找出了以像素点A1为起始点的所有轮廓及每条轮廓的长度;3.4:继续按照从上到下、从左到右的顺序扫描出满足要求q的各条轮廓上的像素点,并对每个满足要求q的像素点重复步骤3.2~3.3;3.5:比较经步骤3.1~3.4得到的每条轮廓的像素点个数,像素点个数最多则长度最长,以长度最长的那一条轮廓作为手轮廓,去除手轮廓粗糙图像上除最长轮廓上的像素点以外的其它像素点,这样便得到了手轮廓精确图像;步骤4、设手轮廓的起始点为E(x<sub>0</sub>,y<sub>0</sub>),那么从E(x<sub>0</sub>,y<sub>0</sub>)开始沿手轮廓向后推移5个像素点记为F(x<sub>1</sub>,y<sub>1</sub>),线段EF的斜率为:<maths num="0003"><math><![CDATA[<mrow><msub><mi>k</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mn>1</mn></msub><mo>-</mo><msub><mi>y</mi><mn>0</mn></msub></mrow><mrow><msub><mi>x</mi><mn>1</mn></msub><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub></mrow></mfrac><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>&NotEqual;</mo><msub><mi>x</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000910411530000021.GIF" wi="599" he="155" /></maths>然后以F为参照点沿手轮廓向后推移5个点记为G(x<sub>2</sub>,y<sub>2</sub>),求出线段FG的斜率k<sub>2</sub>;依次类推,直到k<sub>i‑1</sub>*k<sub>i</sub>为负值时停止计算,并将此时的k<sub>i</sub>记为k<sub>n</sub>,其中,2≤i≤N,N为手轮廓上像素点的个数;取k<sub>1</sub>,k<sub>2</sub>,...,k<sub>n</sub>的平均值K作为手朝向的斜率,则手朝向与水平轴的夹角为:β=arctan K。
地址 310018 浙江省杭州市下沙高教园区2号大街