空域滤波算法是图像增强技术的一种,直接对图像的象素进行处理,不需要进行变换。常见的滤波算子如锐化算子、高通算子、平滑算子等,可以完成图像的边缘提取、噪声去除等处理。这些滤波算子尽管功能不同,实现方法却都是类似的,都是通过模板卷积的方法来实现的。
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滤波器数据广播结构的优点。
0