发明名称 基于复合窗口模板计算指纹方向场的快速实现方法
摘要 本发明提出了更为简洁实用、快速高效的基于复合窗口模板计算指纹方向场的实现方法,通过对内层窗口的块梯度向量算法的巧妙改进,充分利用外层窗口重叠区域的已有计算值,减少了运算量,能够使复合模板的运算速度提高3倍左右,大幅提高了运算效率,为指纹识别系统的实时响应提供了可能。
申请公布号 CN103632139B 申请公布日期 2016.09.28
申请号 CN201310591459.9 申请日期 2013.11.21
申请人 南京信息工程大学 发明人 梅园
分类号 G06K9/00(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 南京众联专利代理有限公司 32206 代理人 顾进;叶涓涓
主权项 一种基于复合窗口模板计算指纹方向场的快速实现方法,其特征在于,包括如下步骤:步骤1:计算指纹图象I中每个像素点分别沿X,Y方向的梯度向量[g<sub>x</sub>(x,y),g<sub>y</sub>(x,y)]<sup>T</sup>,计算公式如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msup><mrow><mo>&lsqb;</mo><msub><mi>g</mi><mi>x</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo><msub><mi>g</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mo>=</mo><msup><mrow><mo>&lsqb;</mo><mfrac><mrow><mo>&part;</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>&part;</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mo>;</mo></mrow>]]></math><img file="FDA0001005355160000011.GIF" wi="814" he="157" /></maths>其中,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><mfrac><mrow><mo>&part;</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mo>&part;</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mfrac><mrow><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001005355160000012.GIF" wi="796" he="269" /></maths>步骤2:依据步骤1计算出的每个像素点的梯度向量计算每个像素点的平方梯度向量[g<sub>sx</sub>(x,y),g<sub>sy</sub>(x,y)]<sup>T</sup>,计算公式如下:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>g</mi><mrow><mi>s</mi><mi>x</mi></mrow></msub><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mtd></mtr><mtr><mtd><msub><mi>g</mi><mrow><mi>s</mi><mi>y</mi></mrow></msub><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msubsup><mi>g</mi><mi>x</mi><mn>2</mn></msubsup><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>-</mo><msubsup><mi>g</mi><mi>y</mi><mn>2</mn></msubsup><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mtd></mtr><mtr><mtd><mn>2</mn><msub><mi>g</mi><mi>x</mi></msub><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><msub><mi>g</mi><mi>y</mi></msub><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001005355160000013.GIF" wi="774" he="158" /></maths>步骤3:将指纹图象I划分为一系列互不重叠的大小为W<sub>in</sub>×W<sub>in</sub>的内层窗口;步骤4:计算第一个内层窗口所对应的外层窗口中所有像素点的平方梯度向量之和,并将该值赋给内层窗口,从而得到图像中第一个内层窗口的块梯度向量,其中外层窗口与内层窗口具有共同的中心点,大小为W<sub>out</sub>×W<sub>out</sub>;步骤5:根据第一个内层窗口的块梯度向量,通过下述公式依次计算第一列中余下的内层窗口的块梯度向量:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msup><mrow><mo>&lsqb;</mo><msub><mi>G</mi><mi>x</mi></msub><mo>,</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mo>=</mo><msub><msup><mrow><mo>&lsqb;</mo><msub><mi>G</mi><mi>x</mi></msub><mo>,</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mrow><mi>u</mi><mi>p</mi></mrow></msub><mo>-</mo><msubsup><mrow><mo>&lsqb;</mo><msubsup><mi>G</mi><mi>x</mi><mi>X</mi></msubsup><mo>,</mo><msubsup><mi>G</mi><mi>y</mi><mi>X</mi></msubsup><mo>&rsqb;</mo></mrow><mi>A</mi><mi>T</mi></msubsup><mo>+</mo><msubsup><mrow><mo>&lsqb;</mo><msubsup><mi>G</mi><mi>x</mi><mi>Z</mi></msubsup><mo>,</mo><msubsup><mi>G</mi><mi>y</mi><mi>Z</mi></msubsup><mo>&rsqb;</mo></mrow><mi>C</mi><mi>T</mi></msubsup></mrow>]]></math><img file="FDA0001005355160000014.GIF" wi="1078" he="96" /></maths>其中,[G<sub>x</sub>,G<sub>y</sub>]<sup>T</sup>为当前内层窗口的块梯度向量,[G<sub>x</sub>,G<sub>y</sub>]<sup>T</sup><sub>up</sub>为与当前内层窗口相邻的上一个内层窗口的块梯度向量,<img file="FDA0001005355160000015.GIF" wi="229" he="94" />为A区域内的所有像素点平方梯度向量之和,A区域大小为W<sub>in</sub>×W<sub>out</sub>,<img file="FDA0001005355160000016.GIF" wi="219" he="95" />为C区域内的所有像素点平方梯度向量之和,C区域大小为W<sub>in</sub>×W<sub>out</sub>;所述A区域为上一个外层窗口中未与当前外层窗口重合的区域,所述C区域为当前外层窗口中未与上一个外层窗口重合的区域,所述上一个外层窗口与上一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述上一个内层窗口与当前内层窗口相邻;步骤6:根据第一列内层窗口的块梯度向量,计算通过下述公式依次计算每行余下的每个内层窗口的块梯度向量:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msup><mrow><mo>&lsqb;</mo><msub><mi>G</mi><mi>x</mi></msub><mo>,</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mo>=</mo><msub><msup><mrow><mo>&lsqb;</mo><msub><mi>G</mi><mi>x</mi></msub><mo>,</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&rsqb;</mo></mrow><mi>T</mi></msup><mrow><mi>l</mi><mi>e</mi><mi>f</mi><mi>t</mi></mrow></msub><mo>-</mo><msubsup><mrow><mo>&lsqb;</mo><msubsup><mi>G</mi><mi>x</mi><mi>X</mi></msubsup><mo>,</mo><msubsup><mi>G</mi><mi>y</mi><mi>X</mi></msubsup><mo>&rsqb;</mo></mrow><mi>D</mi><mi>T</mi></msubsup><mo>+</mo><msubsup><mrow><mo>&lsqb;</mo><msubsup><mi>G</mi><mi>x</mi><mi>Z</mi></msubsup><mo>,</mo><msubsup><mi>G</mi><mi>y</mi><mi>Z</mi></msubsup><mo>&rsqb;</mo></mrow><mi>F</mi><mi>T</mi></msubsup></mrow>]]></math><img file="FDA0001005355160000017.GIF" wi="1094" he="99" /></maths>其中,[G<sub>x</sub>,G<sub>y</sub>]<sup>T</sup>为当前内层窗口的块梯度向量,[G<sub>x</sub>,G<sub>y</sub>]<sup>T</sup><sub>left</sub>为与当前内层窗口相邻的前一个内层窗口的块梯度向量,<img file="FDA0001005355160000021.GIF" wi="230" he="87" />为D区域内的所有像素点平方梯度向量之和,D区域大小为W<sub>out</sub>×W<sub>in</sub>,<img file="FDA0001005355160000022.GIF" wi="221" he="94" />为F区域内的所有像素点平方梯度向量之和,F区域大小为W<sub>out</sub>×W<sub>in</sub>;所述D区域为前一个外层窗口中未与当前外层窗口重合的区域,所述F区域为当前外层窗口中未与前一个外层窗口重合的区域,所述前一个外层窗口与前一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述前一个内层窗口与当前内层窗口相邻;步骤7:通过下述公式将每个内层窗口的块梯度向量转换为块方向θ:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>&theta;</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>&pi;</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>G</mi><mi>y</mi></msub><msub><mi>G</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow></mrow></mtd><mtd><mrow><msub><mi>G</mi><mi>x</mi></msub><mo>&GreaterEqual;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>G</mi><mi>y</mi></msub><msub><mi>G</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>+</mo><mi>&pi;</mi></mrow></mtd><mtd><mrow><msub><mi>G</mi><mi>x</mi></msub><mo>&lt;</mo><mn>0</mn><mo>&cap;</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&GreaterEqual;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>G</mi><mi>y</mi></msub><msub><mi>G</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>-</mo><mi>&pi;</mi></mrow></mtd><mtd><mrow><msub><mi>G</mi><mi>x</mi></msub><mo>&lt;</mo><mn>0</mn><mo>&cap;</mo><msub><mi>G</mi><mi>y</mi></msub><mo>&lt;</mo><mn>0</mn></mrow></mtd></mtr></mtable></mfenced><mo>.</mo></mrow>]]></math><img file="FDA0001005355160000023.GIF" wi="822" he="414" /></maths>
地址 210044 江苏省南京市宁六路219号