摘要:在数字技术极大 发展 的今天,利用硬件处理图像可以获得比纯软件处理高的多的速度。由于fpga具有可重复编程,开发成本低,可迅速向asic转型等优点,越来越多的图像处理算法被应用到fpga中。为此,本文提出了一种基于fpga的数字图像带通滤波器。文中首先分析了xilinx virtex ii器件的优点,然后具体讨论了带通滤波器的实现。结果证明方案可行。
关键词:数字图像;virtex ii 器件;fpga;fft;带通滤波
virtex ii是xilinx公司设计的一系列fpga芯片种类之一。virtex ii内部主要由可重构逻辑单元(clb)、可编程输入输出模块(iob)、数字时钟管理单元(dcm)、互联资源,以及内部的乘法器,块存储器组成。
可重构单元clb:在器件中以阵列分布。提供基本的组合逻辑和时序,其基本元素包括两个寄存器和一个三态缓冲门。两个寄存器可配置为触发器或者锁存器。在实际应用中,单个的clb通过外部连接矩阵与其他clb构成复杂的逻辑单元。clb是fpga的核心部分,硬件的逻辑以及缓存功能都通过一定数目的clb互联得以实现。
数字管理单元(dcm):主要部分是数字锁相环。通过对输入时钟进行锁相改善时钟质量,同时也能完成倍频、分频。
输入单元(iob)负责对输入输出的信号的标准进行转换,可接收发送3.3v、2.5v、1.8v各种信号,也可以直接输入差分信号。
通过块存储器和乘法器设计,virtex ii器件在一定程度上解决了传统fpga器件存储空间小,运算能力差的缺点。virtex ii器件内部的双口ram有a、b两个端口,每个端口的信号包括时钟、使能、读写等控制信号以及完全独立的地址线和数据线。这种完全的双口ram为滤波算法所需的数据缓存提供了硬件基础。
一、数字图像带通滤波原理
首先对图像进行二维fft变换,对其频域系数按照如下规则修正然后再将其逆fft 变换得到滤波后的图像。
if(u^2+v^2)) hthreshold) w(u,v)=0;(1)
其中u,v为数字频域坐标,lthreshold,hthreshold分别为频率下限,频率上限,w(u,v)为富里叶变换系数。算法的复杂度为3n*log2n+2n+n2,其中n为图像每行像素数(假定图像长宽比为1)。
本系统硬件框图如图3.1。
其中控制寄存器保存带通滤波的滤波器表索引号,详见下面带通滤波器设计部分。双口sdram负责存储外部输入的原始数据及经过fft&ifft运算后的中间数据。图像输入模块,双口ram,控制逻辑三者之间采用乒乓操作模式,如图3.2所示。fft/ifft模块在实际实现的时候采用同一模块来实现。
当图像输入模块输入图像数据满一帧时,将输出控制信号通知fft模块对存放在ram中的数据进行 行&列fft变换,同时图像输入模块再接收下一帧图像。fft模块变换完成后通知带通滤波模块进行带通滤波运算,带通滤波运算完成后则通知图像输出模块取走数据。滤波的全过程实行流水作业模式。流水作业与乒乓操作保证了图像滤波的实时性。
二、fft模块设计
提高fft速度的两个主要途径是采用流水结构和并行运算,采用高基数结构也可以提高速度,只是用fpga实现时必须综合考虑系统要求、结构特点及片内资源。针对本系统自身特点,这里按时间抽选算法进行分析。本系统采用基-2dit行列算法。
n点基-2dit行列算法信号流图如图4。
根据上面的流图可以设计出fft/ifft模块框图如图5。
其中系数寄存单元保存富里叶变换的系数。循环单元负责循环寻址,蝶形处理单元负责蝶形运算。地址发生器、循环单元和控制器一起产生ram地址和系数地址。蝶形处理单元根据地址发生器提供的地址对ram和系数寄存单元进行访问,先按行后按列对图像数据进行碟形运算,处理后的数据存放进ram。
三、带通滤波器设计
由于乘法运算需要消耗大量的fpga内部资源而且速度也很慢,而lut查找表法虽然需要消耗一定的内存空间但可以获得较高的处理速度,又因为实际的图像滤波并不需要全范围的滤波,所以我们将预先划定带通滤波器的窗口并做成查找表的形式。
地址发生器根据象素(x,y)的频率坐标产生地址,读取rom中的对应位与0作比较,然后根据判断结果决定是否改动存放在ram中的富里叶变换系数。为简单起见,本系统只设计了一张滤波器表。
四、硬件测试结果
本系统带通滤波部分采用一片xc2v1500实现,当对一幅256 256lena图像滤波,lthreshold和hthreshold分别取100,20000时。
本文采用的流水作业模式和乒乓操作保证了图象处理的实时性,带通滤波器原理简单,具有一定的通用性。值得进一步研究的地方在于fft变换模块的结构精简和快速化。