在图像通信、遥感图像分析、医学成像诊断等应用领域,为了便于显示、观察或进行进一步的处理,常常需要对原始的数字图像进行特征提取(如边缘检测、边缘锐化)、噪声平滑滤波、几何校正等处理,这类图像处理技术称为图像的预处理。在实际应用中,空域滤波算法被广泛地应用于图像的预处理技术中。
空域滤波算法是图像增强技术的一种,直接对图像的象素进行处理,不需要进行变换。常见的滤波算子如锐化算子、高通算子、平滑算子等,可以完成图像的边缘提取、噪声去除等处理。这些滤波算子尽管功能不同,实现方法却都是类似的,都是通过模板卷积的方法来实现的。
VLSI技术的迅猛发展为数字图像实时处理技术提供了硬件基础,其中FPGA(现场可编程门阵列)的特点使其非常适用于数字图像处理。本文研究的就是在FPGA设计平台上设计硬件电路,实现数字图像的空域滤波算法。
1 数字图像空域滤波算法
数字图像空域滤波算法的实现步骤如图1所示,左边的部分是要处理的图像的某一部分,中间是对图像进行处理的3×3模板。
具体的处理步骤是:
将模板在图像上漫游,并将模板中心与图中某个象素位置重合;
将模板上的系数与模板下对应的象素相乘;
将所有的乘积相加。
把和(模板的输出响应)赋给图像中对应模板中心位置的象素。图1中所示是图像的一部分,S0~S8是象素点的灰度值,K0~K8是3×3的模板系数。用这个3×3模板来进行空域滤波的过程是:将模板中心点,即模板系数为K0的点所在位置,与图像中灰度值为S0的点重合,模板的输出响应R为:
R=K0*S0+K1*S1+…+K8*S8 (1)
这样增强后的图像在原来位置为(x,y)处的象素点的灰度值就由S0变为R。如果对图像中的每个象素点都这样进行模板操作,就可以得到增强后的图像在所有位置的新灰度值。如果在设计滤波器时给模板系数赋予不同的值,就可以得到不同的高通、低通效果。
本文采用的图像是256×256大小的灰度图像,滤波模板3×3大小。如何设计硬件电路来完成上述空域滤波算法,分析上述算法实现过程,可以得出结论,实现空域滤波算法可采用3个三阶的FIR滤波器+延时单元来描述。
2 FIR数字滤波器的FPGA设计
在设计实现空域滤波算法的3个三阶的FIR滤波器+延时单元的电路时,要考虑的主要问题是:如何缩短硬件电路设计时的关键路径以及提高系统的数据吞吐率。为解决这些实际的FPGA设计中的关键问题,在具体设计电路时,主要从以下几个方面进行考虑:
2.1 FIR数字滤波器与流水线结构
现代微处理器、数字信号处理器、高速数字系统设计中都广泛应用了流水线(Pipelining)技术,其核心设计思想是把一个周期内执行的逻辑操作分成几步较小的操作,在多个高速的时钟周期内完成。每一次逻辑小操作的结果都存储在寄存器中,被高速时钟同步,在下一流水线单元使用,因而是速度优化中最常用的技术之一,可以大大地提高数字系统的总体运行速度。
下面分析一下三阶的FIR滤波器的基本结构和采用了流水线技术后的FIR结构,以及FIR滤波器的数据广播结构。
三阶有限冲击响应(FIR)数字滤波器可以表示如下:
y(n)=ax(n)+bx(n-1)+cx(n-2) (2)
这个三阶的FIR滤波器实现的结构,如图2所示。
图2中,这种结构的FIR滤波器的关键路径(处理一个新样点的最小时间)由1个乘法器和2个加法器的时间来限定。如果采样周期小于这个最小时间的话,那么这种结构的FIR滤波器就不能满足要求。这时就要考虑流水技术。采用流水线技术可以缩短关键路径,如图3所示。
在流水线结构的FIR滤波器中,启动当前的迭代计算时,节点2的加法器正在完成前次迭代结果的计算。因此,这时的关键路径由1个乘法器和2个加法器的时间缩短为1个乘法器和1个加法器的时间。
采用在结构中适当插入流水线锁存器来减小关键路径长度的流水技术时,锁存器的插入并不是随意的。当把数据流图切开时,数据方向要一致向前。这样加入的流水线,才不会影响功能。图3中,插入流水线锁存器时,就是沿着结构中数据流的正向,在上下两个路径均加入了锁存器,这样FIR滤波器的逻辑才不会混乱。一种结构的速度(时钟周期),通常由任意两个锁存器之间、一个输入与一个锁存器间、一个锁存器与一个输出间或输入与输出间路径中最长的路径限定。流水线锁存器可以有效地缩短最长路径。
除了以上两种FIR滤波结构外,还有一种数据广播结构的FIR数字滤波器,这种结构通过转置结构来缩短关键路径,同时不需要引入任何的流水线锁存器。具体的改造方法是:改变输入和输出;颠倒信号流程的方向;由一个分支来取代加法器,反之亦然。数据广播结构的FIR数字滤波器如图4所示。
在这种结构中,数据不是存储下来,而是同时广播到所有的乘法器。这种结构的关键路径和图3中插人流水线锁存器的FIR滤波器结构的关键路径一样。但是对输入不需要额外的移位寄存器,对部分积的和也不需要额外的流水线就能达到很高的通过率。这就是FIR滤波器数据广播结构的优点。
本文在设计空域滤波算法电路时,就是分别采取了以上介绍的3种不同的FIR数字滤波器结构形式。
2.2 乘法器模块的硬件设计
从式(1)的模板运算表达式和式(2)的FIR滤波器表达式可以看出,完成模板运算和实现FIR数字滤波还有一个重要的环节,就是乘法运算。乘法器模块是影响空域滤波算法的运算速度的关键模块之一。
乘法运算基本上可以分为两步:一是求出所有的基本乘积项,二是将所有的基本乘积项相加。因此,要设计快速的乘法器电路模块,就要针对这两步进行改进,一方面要减少部分积的数目,同时另一方面要提高部分积求和阵列的累加速度。因此,为了加快乘法器模块的运算速度,在设计乘法器电路时,特别考虑到了采用基4-BOOTH算法来减少部分和的数目,同时采用Wallace Tree减少阵列乘法器中部分积加法阵列的进位传输延迟,加快整个加法阵列的运算速度。
基4-BOOTH算法的基本原理是对乘数进行编码,根据编码表来产生部分积,一次只考虑3位:本位、相邻高位、相邻低位。Wallace Tree比较规则,易于布局布线,这种方法不是直接将所有的部分积完全的一对一地相加,而是采用将各个部分积中具有相同权重的数据位相加合并。通常采用全加器(Full Adder)来完成相同权重的位相加。采用一位全加器,那么Wallace树的每一层,就可以将部分积的向量数目按照3:2的比例缩减。也可以采用2个全加器,来获得4:2的缩减比例。本文中采用3:2计数器(全加器)来进行部分和缩减,这样当部分积的数目很多时,采用Wallace Tree乘法器来缩减部分和速度很快。
3 仿真综合结果
第2节介绍了本文中在FPGA平台上设计实现数字图像空域滤波算法的高速数字滤波器FIR的过程,其中主要考虑的是缩短关键路径、提高数据吞吐率。本节给出仿真和综合后的结果比较表。本文中,测试图像选用的是256×256大小、8 b的灰度图像,设计软件是XILINX公司的ISE集成综合开发环境,仿真工具是Modelsim SE 5.8b,综合工具是ISE自带的综合软件XST,实现芯片是XILINX公司的XC2V1000。仿真、综合结果表明,设计电路完全符合要求。
下面给出根据上述不同的FIR滤波结构设计的,用于实现空域滤波算法的3种电路结构的综合结果比较表。
从表1可以看出:从资源占用角度看,结构三的等效门数最多,结构二的最少。从延时/最大频率可以看出,结构一最好。
3种结构的结构时延比较数据,如表2所示。
4 结 语
本文论述了数字图像空域滤波算法以及FIR滤波器的基本设计方法,在对关键路径分析的基础上,引入流水线设计提高运算速度,提出了滤波器的3种设计结构,给出了滤波器的设计过程,通过仿真和综合结果可以看出,有效地节省了硬件资源,大大减小了硬件体积,增加了系统的可靠性。