基于FPGA的图像中值滤波器的硬件实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA 的图像中值滤波器的硬件实现
李洋波,赵不贿
(江苏大学电气学院 江苏镇江 212013)
摘 要:为了实现图像的实时处理,常采用现场可编程门列阵FP GA 对采集的数字图像做预处理,在讨论中值滤波算法原理的基础上,利用V HDL 硬件描述语言设计一个中值滤波模块对输入图像进行去噪处理,仿真结果说明该算法满足实时性要求,取得较好的仿真效果,并对中值滤波的改进算法进行了讨论。
关键词:现场可编程门列阵(FP GA );V HDL ;图像处理;中值滤波
中图分类号:TP391 文献标识码:B 文章编号:10042373X (2008)222099203
H ardw are Implementation of Median Filter B ased on FPG A
L I Yangbo ,ZHAO Buhui
(School of Electrical and Information Engineering ,Jiangsu University ,Zhenjiang ,212013,China )
Abstract :To realize the real 2time image processing ,people often uses FP GA to do image preprocessing with collected dig 2ital image.On basis of discussing the principle of median filter algorithm ,this paper uses V HDL language and designs a module of median filter to remove the impulse in input image and gains a real 2time request and good result.At the end of the paper ,it discusses the improved realization of the algorithm.
K eywords :FP GA ;V HDL ;image processing ;median filter
收稿日期:2008203218
图像在生成,传输过程中常会受到各种噪声源的干扰和影响,为了抑制噪声,改善图像质量,在对图像进行分析前需要对图像进行滤波、平滑等处理。底层图像预处理算法的特点是数据量比较大,而运算结构相对较规律,用一般的软件实现会比较慢。由于FP GA 含有丰富的逻辑单元,很容易实现各种电路设计和完成较复杂的运算,对于不同的图像处理要求,只需要用软件修改FP GA 内部的逻辑功能即可。故对于实时性要求较高
的系统,利用FP GA 实现底层算法是理想选择之一。
本文即以中值滤波算法为例,介绍基于FP GA 的图像处理算法的硬件实现。1 中值滤波原理
中值滤波器是在1971年由J.w.J ukey 首先提出并应用于一维信号处理技术(时间序列分析)中,后来被二维图像信号处理技术所引用。中值滤波是一种能有效地抑制图像噪声而提高信噪比的非线性滤波技术。它是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。用公式表示为:
g (x ,y )=median {f (x -i ,y -j )} (i ,j )∈S
上式中g (x ,y ),f (x ,y )为像素的灰度值;S 为模
板窗口。对于不同的图像内容和不同的应用要求,往往采用不同的模板窗口,其中常用的有3×3模板和5×5
模板。采用3×3模板拥有耗时短,资源省的优点,而采
用5×5模板能获得更好的处理效果。本设计通过en1使能端口可在3×3模板和5×5模板之间切换,来满足设计的不同需求。
与最小均方滤波器以及其他线性滤波器相比,中值滤波器对滤除脉冲干扰及图像扫描噪声很有效,同时又能够保护目标图像边缘,而且在实际运算过程中并不需要图像的统计特性,这也带来不少方便。2 实现方案
本设计以Altera 公司的Quart us Ⅱ软件为开发平
台,处理图像为8位的灰度图像,为了节省仿真时间,本设计假定图像每行的像素个数为20。其总体设计方案如图1所示
。
图1 总体设计方案
由图1可知,整个系统可分为2大模块:
3×3(5×5)模板生成模块和图像数据比较模块。3×3(5×5)模板生成模块处理图像的某个像素和其邻域像素,经过中值滤波算法排序后,得出其中值像素来取代原3×3(5×5)窗口中间位置的像素值。之后3×3
9
9《现代电子技术》2008年第22期总第285期 计算机应用技术
(5×5)模板生成模块将不断右移或换行,直到将一幅灰
度图像的数据阵列中的所有像素全部处理完。图1中D (7..0)为灰度图像数据输入端,DOU T (7..0)为图像数据输出端,ENO 为输出数据有效标志,整个系统有统一的时钟信号clk 和复位信号rst 。下面分别介绍各模块功能和设计方法。
(1)3×3(5×5)模板生成模块。
该模块原理框图如图2所示
。
图2 3×3(5×5)模板电路原理图
图2中r 代表移位寄存器;FIFO 代表先进先出存储器,它是一种特殊功能的存储器,数据以达到FIFO 输入端口的先后顺序依次存储在存储器中,并以相同的顺序从FIFO 的输出端送出,所以FIFO 不需要读/写地址线。图像数据以时钟节拍从数据输入端依次串行输入,FIFO 用来存储1行的数据,以便使w 11,w 12,…,w 55正好是3×3(5×5)模板所对应的图像数据,当模块使能端en1为1时,该模块是5×5模板窗口,当en1为0时,r 14,r 15,r 23,r 24,r 33,r 34,FIFO C 及其以后的各触发器和存储器均为直接通路状态,此时该模块为3×3模板窗口。本设计中设定FIFO 深度为20,宽度为8位。当设定FIFO 存储器写满时,才允许读操作。这样当数据流不断从数据输入端输入时,3×3(5×5)模板
对应的图像数据不断跟着变化,这就可以对一帧图像的所有像素都进行3×3(5×5)模板处理。
(2)数据比较模块。数据比较模块的基本原理是对3×3(5×5)模板中的图像灰度值进行排序,然后将中值输出,本设计采用了软件设计中冒泡排序法的设计思想,它是最基本的排序算法,原理非常简单,只是一个2层循环,每次将最大或最小的数放到数组最后。其3×3模板排序部分代码如下,其中en1使能端为0,m 用来控制每次循环中比较的次数,n 控制循环次数。
architecture comp1of comp1is
type mask is array (24downto 0)of std logic vector (7
downto 0);
signal t :std logic vector (7downto 0); signal m ,n :integer ;begin process variable a :mask ; variable T :std logic vector (7downto 0);begin
wait until rising edge (clk );if en1=′0′then a (0):=(conv std logic vector (w11,8));a (1):=(conv std logic vector (w12,8));a (2):=(conv std logic vector (w13,8));a (3):=(conv std logic vector (w21,8));a (4):=(conv std logic vector (w22,8));a (5):=(conv std logic vector (w23,8));a (6):=(conv std logic vector (w31,8));a (7):=(conv std logic vector (w32,8));a (8):=(conv std logic vector (w33,8));if en =′1′then
for n in 1to 8loop for m in 8downto n loop if (a (m ) median <=(conv integer (a (4)));eno <=′1′; else median <=0; eno <=′0′;end if ;else … 3 仿真结果 本设计中3×3中值滤波模块在Quart us Ⅱ上的仿 真结果如图4所示。设定图像每行像素为20,初始化后需先扫描2行像素,经过43个时钟周期后可以获得图像的中值滤波结果输出。eno 使能端置为1,从而允许下一级模块读取结果。若采用5×5中值滤波模块,则在97个时钟周期后得到中值滤波的结果输出 。 图3 中值滤波模块仿真结果 4 改进的中值滤波算法 中值滤波算法核心是排序,排序算法的优劣直接决定了求取中间值的效率,从而决定滤波器的整体性能。 基于硬件的排序算法设计可以充分地利用硬件平台的并行性特点,从而达到加快处理速度目的。下面分析3×3窗口图像数据的数学模型,说明中间值的求取过程,并与原始的冒泡排序法相比较。对于3×3窗口图 01图像分析李洋波等:基于FP GA 的图像中值滤波器的硬件实现