发明内容
针对现有技术中存在的不足,本发明在复合窗口模板运算方法上进行了改进,提出了更为简洁实用、快速高效的指纹方向场计算方法。
为了达到上述目的,本发明提供如下技术方案:
一种基于复合窗口模板计算指纹方向场的快速实现方法,包括如下步骤:
步骤1:计算指纹图象I中每个像素点分别沿X,Y方向的梯度向量[gx(x,y),gy(x,y)]T,计算公式如下:
其中,
步骤2:依据步骤1计算出的每个像素点的梯度向量计算每个像素点的平方梯度向量[gsx(x,y),gsy(x,y)]T,计算公式如下:
步骤3:将指纹图象I划分为一系列互不重叠的大小为Win×Win的内层窗口;
步骤4:计算第一个内层窗口所对应的外层窗口中所有像素点的平方梯度向量之和,并将该值赋给内层窗口,从而得到图像中第一个内层窗口的块梯度向量,其中外层窗口与内层窗口具有共同的中心点,大小为Wout×Wout;
步骤5:根据第一个内层窗口的块梯度向量,通过下述公式依次计算第一列中余下的内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,为当前内层窗口的块梯度向量,[Gx,Gy]T up为与当前内层窗口相邻的上一个内层窗口的块梯度向量,为A区域内的所有像素点平方梯度向量之和,A区域大小为Win×Wout,为C区域内的所有像素点平方梯度向量之和,C区域大小为Win×Wout;所述A区域为上一个外层窗口中未与当前外层窗口重合的区域,所述C区域为当前外层窗口中未与上一个外层窗口重合的区域,所述上一个外层窗口与上一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述上一个内层窗口与当前内层窗口垂直方向相邻;
步骤6:根据第一列内层窗口的块梯度向量,计算通过下述公式依次计算每行余下的每个内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,[Gx,Gy]T left为与当前内层窗口相邻的前一个内层窗口的块梯度向量,为D区域内的所有像素点平方梯度向量之和,D区域大小为Wout×Win,为F区域内的所有像素点平方梯度向量之和,F区域大小为Wout×Win;所述D区域为前一个外层窗口中未与当前外层窗口重合的区域,所述F区域为当前外层窗口中未与前一个外层窗口重合的区域,所述前一个外层窗口与前一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述前一个内层窗口与当前内层窗口水平方向相邻;
步骤7:通过下述公式将每个内层窗口的块梯度向量转换为块方向θ:
所述的Win=3,Wout=31。
本发明还提供了另一种基于复合窗口模板计算指纹方向场的快速实现方法,包括如下步骤:
步骤1:计算指纹图象I中每个像素点分别沿X,Y方向的梯度向量[gx(x,y),gy(x,y)]T,计算公式如下:
其中,
步骤2:依据步骤1计算出的每个像素点的梯度向量计算每个像素点的平方梯度向量[gsx(x,y),gsy(x,y)]T,计算公式如下:
步骤3:将指纹图象I划分为一系列互不重叠的大小为Win×Win的内层窗口;
步骤4:计算第一个内层窗口所对应的外层窗口中所有像素点的平方梯度向量之和,并将该值赋给内层窗口,从而得到图像中第一个内层窗口的块梯度向量,其中外层窗口与内层窗口具有共同的中心点,大小为Wout×Wout;
步骤5:根据第一个内层窗口的块梯度向量,通过下述公式依次计算第一行中余下的内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,[Gx,Gy]T left为与当前内层窗口相邻的前一个内层窗口的块梯度向量,为D区域内的所有像素点平方梯度向量之和,D区域大小为Wout×Win,为F区域内的所有像素点平方梯度向量之和,F区域大小为Wout×Win;所述D区域为前一个外层窗口中未与当前外层窗口重合的区域,所述F区域为当前外层窗口中未与前一个外层窗口重合的区域,所述前一个外层窗口与前一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述前一个内层窗口与当前内层窗口相邻;
步骤6:根据第一行内层窗口的块梯度向量,计算通过下述公式依次计算每列余下的每个内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,[Gx,Gy]T up为与当前内层窗口相邻的上一个内层窗口的块梯度向量,为A区域内的所有像素点平方梯度向量之和,A区域大小为Win×Wout,为C区域内的所有像素点平方梯度向量之和,C区域大小为Win×Wout;所述A区域为上一个外层窗口中未与当前外层窗口重合的区域,所述C区域为当前外层窗口中未与上一个外层窗口重合的区域,所述上一个外层窗口与上一个内层窗口具有共同的中心点,所述当前外层窗口与当前内层窗口具有共同的中心点,所述上一个内层窗口与当前内层窗口相邻;
步骤7:通过下述公式将每个内层窗口的块梯度向量转换为块方向θ:
所述的Win=3,Wout=31。
本发明的优点在于:通过对内层窗口的块梯度向量算法的巧妙改进,充分利用外层窗口重叠区域的已有计算值,减少了运算量,能够使复合模板的运算速度提高3倍左右,大幅提高了运算效率,为指纹识别系统的实时响应提供了可能。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
复合窗口模板是将整幅图像分割成一系列大小相等、互不重叠、彼此相邻的内层窗口,每个内层窗口分配有具有共同中心点的外层窗口,这些外层窗口大小一致,在计算内层窗口的块梯度向量时,直接将其对应的外层窗口内所有像素点的梯度向量求和之后,赋值给内层窗口内的每个像素点。仔细分析之后,可以看出,每相邻的两个内层窗口,其对应的外层窗口有很大的重叠区域:如图3(a)所示,m,n为垂直方向相邻的两个内层窗口,B区域为m和n的重叠区域,A区域为m对应的外层窗口中未与n对应的外层窗口重合的区域,C区域为n对应的外层窗口中未与m对应的外层窗口重合的区域,m对应的外层窗口与m窗口具有共同的中心点,n对应的外层窗口与n窗口具有共同的中心点。因此,m对应的外层窗口由A,B区域构成,n对应的外层窗口由B,C区域构成。图3(b)给出的是水平相邻内层窗口的外层窗口重叠情况,其中i,j为水平方向相邻的两个内层窗口,E区域为i和j的重叠区域,D区域为i对应的外层窗口中未与j对应的外层窗口重合的区域,F区域为j对应的外层窗口中未与i对应的外层窗口重合的区域,其中i对应的外层窗口与i窗口具有共同的中心点,j对应的外层窗口与j窗口具有共同的中心点。因此,i对应的外层窗口由D,E区域构成,j对应的外层窗口由E,F区域构成。以往的复合模板运算方法中,重叠区域会被重复运算,如果我们能够利用重叠区域的已有计算值,运算速度较之原运算速度将大为提高。
具体地说,本发明包括如下步骤:
步骤1:计算指纹图象I中每个像素点分别沿X,Y方向的梯度向量[gx(x,y),gy(x,y)]T,计算公式如下:
其中,
步骤2:依据步骤1计算出的每个像素点的梯度向量计算每个像素点的平方梯度向量[gsx(x,y),gsy(x,y)]T,计算公式如下:
步骤3:将指纹图象I划分为一系列互不重叠的大小为Win×Win的内层窗口,本例中,Win=3。
步骤4:计算第一个内层窗口m所对应的外层窗口(A区域+B区域)中所有像素点的平方梯度向量之和,并将该值赋给内层窗口,从而得到图像中第一个内层窗口m的块梯度向量,其中外层窗口与内层窗口具有共同的中心点,大小为Wout×Wout,本例中Wout=31。
步骤5:根据第一个内层窗口m的块梯度向量,通过下述公式依次计算第一列中余下的内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,[Gx,Gy]T up为与当前内层窗口相邻的上方内层窗口的块梯度向量,为A区域内的所有像素点平方梯度向量之和,为C区域内的所有像素点平方梯度向量之和。以图3(a)为例,m窗口为第一个内层窗口,n窗口为同一列中(垂直方向上)紧邻在m窗口下方的内层窗口。从图中可以看出,利用第一个内层窗口m的块梯度向量——即m窗口所对应的外层窗口中所有像素点的平方梯度向量之和减去A区域的所有像素点的平方梯度向量之和,就能得到B区域的所有像素点的平方梯度向量之和,再加上C区域的所有像素点的平方梯度向量之和,能够算出B+C区域——即n窗口对应的外层窗口中所有像素点的平方梯度向量之和,从而得到内层窗口n的块梯度向量。按照上述方法,从而而下依次计算第一列中其余内层窗口的块梯度向量,直至计算出第一列中所有内层窗口的块梯度向量。以前在计算内层窗口n时,需要重新计算n对应的整个外层窗口区域内所有像素点的平方梯度向量之和,而现在,在计算出前一个窗口m的块梯度向量基础上,只需要计算A区域和C区域内像素点的平方梯度向量之和,由于内外窗口的尺寸相差较大,整个外层窗口的区域大小为31×31,而A区域和C区域的大小相同,均为3×31,A和C总面积远小于整个外层窗口的区域面积,因此采用本方法计算内层窗口块梯度向量的运算量大大减少,运算速度得到显著提高。本例中,我们自上而下依次计算第一列中内层窗口的块梯度向量,但必须指出,在实际应用中,根据需要,运算的方向也可能是自下而上的,只要是在垂直方向上利用本步骤的方法依次计算内层窗口的块梯度向量都应落入本发明的保护范围。
步骤6:根据第一列内层窗口的块梯度向量,计算通过下述公式依次计算每行余下的每个内层窗口的块梯度向量:
其中,[Gx,Gy]T为当前内层窗口的块梯度向量,[Gx,Gy]T left为与当前内层窗口相邻的左方内层窗口的块梯度向量,为D区域内的所有像素点平方梯度向量之和,为F区域内的所有像素点平方梯度向量之和。运算思路与步骤5相同,以图3(b)为例,假设i窗口为左方内层窗口,j窗口为同一行中紧邻在i窗口右侧的内层窗口。利用左方内层窗口i的块梯度向量——即i窗口所对应的外层窗口中所有像素点的平方梯度向量之和减去D区域的所有像素点的平方梯度向量之和,就能得到E区域的所有像素点的平方梯度向量之和,再加上F区域的所有像素点的平方梯度向量之和,能够算出E+F区域——即j窗口对应的外层窗口中所有像素点的平方梯度向量之和,从而得到内层窗口j的块梯度向量。按照上述方法,从左至右依次计算相邻内层窗口的块梯度向量,直至计算出所有内层窗口的块梯度向量。由于D区域和F区域的大小相同,均为31×3,远小于整个外层窗口31×31的区域面积,从而提高了运算速度。必须指出,在实际应用中,根据需要,计算每行内层窗口的运算的方向也可能是从右至左的,只要是在水平方向上利用本步骤的方法依次计算内层窗口的块梯度向量都应落入本发明的保护范围。
通过步骤5和步骤6,能够得到所有内层窗口的块梯度向量。
本发明中,先计算第一列内层窗口的块梯度向量,再计算各行内层窗口的块梯度向量,在实际应用中,上述步骤5和步骤6的顺序可以颠倒,即可以先计算第一行内层窗口的块梯度向量,再计算各列内层窗口的块梯度向量。
步骤7通过下述公式将每个内层窗口的块梯度向量转换为块方向θ:
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。