背景技术
指纹识别技术的原理是利用人体的指纹特征对个体身份进行区分和鉴定。指纹识别技术包括指纹采集技术、指纹特征提取技术和指纹特征匹配技术三大部分。其中指纹特征提取技术的原理是对指纹图像的整体特征和细节特征进行提取、鉴别。其分析的对象包括纹形特征和特征点的分布、类型,以及一组或多组特征点之间的平面几何关系。特征点的平面几何关系表现为某两个特征点之间的距离等,或者某三个或更多特征点之间组成的多边形的几何特性。不论是特征点的单体特征,还是特征点的组合特征,都是指纹特征的组成部分。把这些指纹特征用数字模板的形式表示出来,就实现了一个指纹特征提取的过程。
指纹图像处理过程中需要各种滤波,在目前公知的一些算法,滤波占总处理时间的75%以上。滤波均使用各种模板做卷积运算,如果能有效的提高滤波的性能即提高卷积的速度,整体指纹特征提取的性能会有明显的提升。
目前公知的指纹特征提取的技术中,涉及到滤波部分,基本采用软件算法实现。指纹图像是以2进制的方式存储,一个像素占用1个字节,一副完整的指纹图像的数据量一般为100KB左右。根据卷积的原理,计算1个点的9*9的卷积需要运行81次乘法,80次加法,从RAM中取数192次,采用软件算法实现一副100KB大小的图像的9*9卷积需要8294400次乘法,819200次加法,19660800次取数,运算量非常巨大,处理速度很慢。为了克服这一困难,需要从嵌入式芯片的架构上加以改进,在尽量不增加硬件资源的前提下,提高嵌入式芯片处理指纹的特征提取算法的效率,进而提高指纹算法的整体性能。
软件算法实现指纹的特征提取,需要处理器不断的读取指纹数据参与运算,造成CPU需要的指令烦多,效率低,运算时间长;为了提高软件算法的性能,目前常采用的方法是提高处理器的速度,增大指纹算法的内存空间等,但是这些改变对应到硬件性能的提高经常对应的是嵌入式芯片开发成本的增加。
公知的软件实现的方法如图1所示,指纹图像存储在存储器中,特征提取中滤波是主要的操作步骤,滤波中最重要的是卷积的操作步骤,图2勾画出卷积在嵌入式处理器中常用的操作流程,从流程图上可以看出,完成一对9*9的卷积运算,需要循环“步骤③到步骤⑤”81次,再加上每次流程中的其他步骤,这是一个非常低效的流程。
图2中的步骤②和步骤⑧涉及到卷积乘法运算的取操作数(乘法的乘数和被乘数),公知的嵌入式系统在卷积运算的开始阶段先读取存储器中的数据到数据缓存,CPU然后读取数据缓存的数据执行乘法运算,之后再需要获取执行乘法运算的操作数的时候,CPU会先判断操作数是否在数据缓存中,如果在则CPU会立即读取执行乘法运算,否则会从系统总线挂接的存储器中读取需要的数据到数据缓存中,然后CPU再从数据缓存中取数后执行乘法运算,上述的取数操作这是个比较复杂的过程,虽然这个流程中的大部分的动作是由嵌入式的硬件来完成,但是所需要的时间仍然不会减少,所以对整体卷积运算的效率有比较大的影响;步骤3涉及到的是乘法运算,在普通的嵌入式处理中,因为很少自带卷积需要的16*16的乘法器,经常要消耗上百个机器周期。
发明内容
本发明的目的正是要解决上述技术存在的不足,而提供一种嵌入式指纹特征提取加速方法。
本发明解决其技术问题采用的技术方案:这种嵌入式指纹特征提取加速方法,步骤如下:指纹数据存储在系统总线下的存储器模块中,该指纹数据直接通过总线“直接访问控制总线”传送到数据缓存中;数据缓存分成4块BANK,卷积操作的时候占用BANK0~BANK2,卷积操作完成之后释放出这些空间作为正常的数据缓存使用;处理器通过设置辅助寄存器来实现对卷积的控制,存放在数据缓存中的指纹数据直接送到处理器中运算,卷积运算的结果存储在扩展的内核寄存器中,随时供处理器调用。
作为优选,所述数据缓存的结构是单口的RAM或采用双口的RAM。
作为优选,所述的指纹数据占用2个BANK空间,BANK0 和BANK1的数据是由指纹数据块组成;存储器中的数据流到卷积运算有2个通道,通道1实现存储器中的数据BANK1参与卷积运算,通道2实现存储器中的数据BANK0参与卷积运算,当通道1中的数据参与卷积运算的时候,可同时执行存储器中的指纹数据存储到BANK0中,通道1中的数据卷积运算结束之后,可立即执行通道2的数据的卷积运算,同时可执行存储器中的指纹数据存储到BANK1中,按照上述方法轮流操作。
作为优选,所述处理器采用Cordis 5+可配置的处理器,内嵌双16位乘加器MACDW用于卷积运算,每个机器周期完成2对16位*16位的乘法运算,并能计算出前后两次乘法运算的和。
作为优选,所述Cordis 5+处理器流水线对指令缓存和数据缓存是一个机器周期,对扩展辅助寄存器和扩展内核寄存器的访问周期是一个机器周期,数据缓存的访问时间是1个机器周期。
本发明与现有技术相比,有益的效果是:
1、卷积的操作数通过数据直接访问控制传输到数据缓存中,效率高;
2、一个机器周期内可以完成2对16位*16位数据的乘加运算;以9X9的卷积为例,完成81个16位*16位的数据乘法和加法运算只要41个机器周期,因为采用了乒乓操作,取数需要的时间几乎忽略,以实现一副100KB大小的图像的9*9卷积来计算,平均计算每个点的卷积计算时间非常接近于41个机器周期;
3、卷积运算完成之后占用的数据缓存释放出来,仍可作为普通的数据缓存使用。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
本发明所述的这种嵌入式指纹特征提取加速方法,步骤如下:指纹数据存储在系统总线下的存储器模块中(可以是SDRAM等存储体),该指纹数据可以不经过系统总线而是直接通过总线“直接访问控制总线”传送到数据缓存中;“直接访问控制总线”的总线传输效率能达到4 Bytes / 机器周期(存储器的不同,效率也会不同)。数据缓存分成4块BANK,数据缓存的结构是单口的RAM或采用双口的RAM,卷积操作的时候占用BANK0~BANK2,卷积操作完成之后释放出这些空间作为正常的数据缓存使用;处理器通过设置辅助寄存器来实现对卷积的控制,存放在数据缓存中的指纹数据直接送到处理器中运算,卷积运算的结果存储在扩展的内核寄存器中,随时供处理器调用。
所述处理器采用Cordis 5+可配置的处理器,内嵌双16位乘加器MACDW用于卷积运算,每个机器周期不仅可以完成2对16位*16位的乘法运算,还可以计算出前后两次乘法运算的和。Cordis 5+处理器流水线对指令缓存和数据缓存是一个机器周期,对扩展辅助寄存器和扩展内核寄存器的访问周期是一个机器周期,数据缓存的访问时间是1个机器周期。
如图3所示,所述的指纹数据占用2个BANK空间,目的是方便乒乓操作,提高卷积的效率,进而提高整体指纹拼接的效率。BANK0 和BANK1的数据是由指纹数据块组成,指纹数据块是由多个M*N Bytes的帧数据组成(M 和N根据指纹算法的不同与所变化),上图中涉及到的LINEn(n=0,1,2…)是一个256 Bytes数据组。
如图4所示,此图中的卷积运算要调用处理器的MACDW单元,此图描述了卷积运算的数据走势,图中表明存储器中的数据流到卷积运算有2个通道,通道1 :存储器中的数据BANK1参与卷积运算;通道2 :存储器中的数据BANK0参与卷积运算;此数据流采用2通道的目标是为了实现乒乓操作,当通道1中的数据参与卷积运算的时候,可同时执行存储器中的指纹数据存储到BANK0中,通道1中的数据卷积运算结束之后,可立即执行通道2的数据的卷积运算,同时可执行存储器中的指纹数据存储到BANK1中,按照上述方法轮流操作,这样即可加快卷积的运算速度。
卷积相关设置了五组寄存器
卷积控制寄存器(Convolution_Ctrl)(bit0~31)
u Bit 0 : 卷积使能控制位
u Bit 1 : 中断使能
u Bit 2 : 中断状态位 (写1清中断)
u Bit[7:3] : 保留位
u Bit [15:8] : 卷积循环次数计算器
u Others : 保留位
卷积运算的参数配置寄存器(Convolution_Cfg)(bit0~31)
u Bit [15:0]:指纹图像帧的宽度
u Bit [31:16]:指纹图像帧的长度
卷积运算的卷积算子(Bank2)的数据存储起始地址(Convolution_Para)(bit0~31)
u Bit [31:0]:卷积算子数据的起始地址
卷积运算的指纹数据(Bank1)存储起始地址(Convolution_Table1)(bit0~31)
u Bit [31:0]:卷积算子数据的起始地址
卷积运算的指纹数据(Bank0)存储起始地址(Convolution_Table0)(bit0~31)
u Bit [31:0]:卷积算子数据的起始地址
存储器和数据缓存之间的数据直接访问控制设置了三组寄存器
数据直接访问控制寄存器(Dma_Ctrl)(bit0~31)
u Bit 0 : 直接访问传输使能
u Bit 1 : 传输开始控制位 ; 写1:传输开始
u Bit [3:2] : 传输类型控制位 00 :byte 传输 ;01 : word 传输 ;10 :双字传输
u Bit[4] : 传输状态位
u Bit[7:5] : 保留位
u Bit [15:8] :传输数据量计数器
u Bit[31:16] : 保留位
数据直接访问数据源头(存储器)起始地址(Dma_Ori_Addr)
u Bit [31:0] :源地址的起始地址
数据直接访问数据目的(存储器)起始地址(Dma_Des_Addr)
u Bit [31:0] :目的地址的起始地址
图5描述了本发明技术方案整体特征提取过程中的卷积处理的软硬件操作流程。
术语解释:
※CPU :中央处理器
※SOC :片上系统,片上系统内部包含CPU,存储器,控制器接口等资源
※卷积运算相关概念
卷积运算算子:矩阵方块,该矩阵与图像中对应的图像模块做乘加运算,指纹特征提取中运用到的卷积算子的每个点对应16Bit的2进制存储信息。
卷积运算:可以看作加全求和的过程,选取图像中和“卷积运算算子”同样大小的子图像和“卷积运算算子”做相对应的乘加运算。
例如:卷积运算算子是:G[5X5]
G[0] = { 1, 2, 4, 2, 1}
G[1] = { 2, 4, 8, 4, 2}
G[2] = { 4, 8, 16, 8, 4}
G[3] = { 2, 4, 8, 4, 2}
G[4] = { 1, 2, 4, 2, 1}
图像中选取一块和“卷积运算算子”同样大小的图像: F[5X5]
F[0] = { 5, 2, 4, 6, 1}
F[1] = { 2, 8, 8, 7, 2}
F[2] = { 9, 12, 16, 1, 4}
F[3] = { 2, 2, 8, 2, 2}
F[4] = { 6, 2, 10, 2, 1}
卷积运算:G[5X5] * F[5X5] =
G[00]*F[00] + G[01]*F[01] + G[02]*F[02] + G[03]*F[03] + G[04]*F[04]
+ G[10]*F[10] + G[11]*F[11] + G[12]*F[12] + G[13]*F[13] + G[14]*F[14]
+ G[20]*F[20] + G[21]*F[21] + G[22]*F[22] + G[23]*F[23] + G[24]*F[24]
+ G[30]*F[30] + G[31]*F[31] + G[32]*F[32] + G[33]*F[33] + G[34]*F[34]
+ G[40]*F[40] + G[41]*F[41] + G[42]*F[42] + G[43]*F[43] + G[44]*F[44]
因为指纹算法的特征提取中涉及到的卷积的算子每个点的存储是16位2进制信息,所以对应卷积需要的乘法也是源操作数是16位的乘法。
※SDRAM : 同步动态随机存储器
※RAM :随即存取存储器
※硬件资源:寄存器,与门,或门,异或门等。
※乘法资源:有些CPU内部会包含一些DSP的相关指令,比如16位的乘法器,本文中出现的乘法资源就是指双16位的乘加器,文中出现的MACDW就是一种双16位的乘加器
※扩展辅助寄存器(aux_reg):本文专指cordis 5+ 处理器中扩展的辅助寄存器,此类寄存器和内核紧密相联,处理器对其读写访问只需要1个系统周期
※ 扩展内核寄存器 : 本文专指 cordis 5+ 处理器中扩展的内核寄存器,这些寄存器可以直接参与内核的ALU运算
※ 数据缓存 :嵌入式芯片中的系统架构中一般会有带数据缓存,数据缓存是介于处理器和内存之间的临时数据存储器,一般容量比较小,但是数据访问速度快,当处理器需要大量的访问系统总线下挂接的数据内存的时候,处理器会根据数据缓存中存储的数据状况决定是否需要每次都访问内存,如果内存中的数据已经在数据缓存中会直接读取数据缓存中的数据
※ 指令缓存 : 指令缓存的位置和作用基本等同于数据缓存,不同之处是指令缓存是用来存储指令代码的
※ DMA : 存储器直接访问
※ Cordis 5+ : 32位的精简指令处理器,采用哈佛结构,有5级流水线
※ DSP处理器 :也称数字信号处理器, 是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法
※ 流水线 :处理群内核的控制由流水线来完成,一般有5级,分别是 取指 译码 访问 执行 写回 ,处理器不同,流水线会略有差别,流水的级数也会不一样,处理器的流水线设计的好坏对处理器的性能有很大的影响。
※ 乒乓操作 : 是一种处理数据流的技巧;输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1” 在第2个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1个周期数据通过“输出数据选择单元”的选择,送到 “数据流运算处理模块”进行运算处理;在第3个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
※ 指纹图像采集之后以2进制的形式存储。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。