基于FPGA的图像中值滤波器的硬件实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的图像中值滤波器的硬件实现
李洋波;赵不贿
【摘要】为了实现图像的实时处理,常采用现场可编程门列阵FPGA对采集的数字图像做预处理,在讨论中值滤波算法原理的基础上,利用VHDL硬件描述语言设计一个中值滤波模块对输入图像进行去噪处理,仿真结果说明该算法满足实时性要求,取得较好的仿真效果,并对中值滤波的改进算法进行了讨论.
【期刊名称】《现代电子技术》
【年(卷),期】2008(031)022
【总页数】3页(P99-101)
【关键词】现场可编程门列阵(FPGA);VHDL;图像处理;中值滤波
【作者】李洋波;赵不贿
【作者单位】江苏大学,电气学院,江苏,镇江,212013;江苏大学,电气学院,江苏,镇江,212013
【正文语种】中文
【中图分类】TP391
图像在生成,传输过程中常会受到各种噪声源的干扰和影响,为了抑制噪声,改善图像质量,在对图像进行分析前需要对图像进行滤波、平滑等处理。

底层图像预处理算法的特点是数据量比较大,而运算结构相对较规律,用一般的软件实现会比较慢。

由于FPGA含有丰富的逻辑单元,很容易实现各种电路设计和完成较复杂的
运算,对于不同的图像处理要求,只需要用软件修改FPGA内部的逻辑功能即可。

故对于实时性要求较高的系统,利用FPGA实现底层算法是理想选择之一。

本文
即以中值滤波算法为例,介绍基于FPGA的图像处理算法的硬件实现。

1 中值滤波原理
中值滤波器是在1971年由J.w.Jukey首先提出并应用于一维信号处理技术(时间序列分析)中,后来被二维图像信号处理技术所引用。

中值滤波是一种能有效地抑制图像噪声而提高信噪比的非线性滤波技术。

它是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。

用公式表示为:
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公司的Quartus Ⅱ软件为开发平台,处理图像为8位的灰度图像,为了节省仿真时间,本设计假定图像每行的像素个数为20。

其总体设计方案如图
1所示。

图1 总体设计方案
由图1可知,整个系统可分为2大模块:
3×3(5×5)模板生成模块和图像数据比较模块。

3×3(5×5)模板生成模块处理图像的
某个像素和其邻域像素,经过中值滤波算法排序后,得出其中值像素来取代原
3×3(5×5)窗口中间位置的像素值。

之后3×3(5×5)模板生成模块将不断右移或换行,直到将一幅灰度图像的数据阵列中的所有像素全部处理完。

图1中 D(7..0)为
灰度图像数据输入端,DOUT(7..0)为图像数据输出端,ENO为输出数据有效标志,整个系统有统一的时钟信号clk和复位信号rst。

下面分别介绍各模块功能和设计
方法。

(1) 3×3(5×5)模板生成模块。

该模块原理框图如图2所示。

图2 3×3(5×5)模板电路原理图
图2中r代表移位寄存器;FIFO代表先进先出存储器,它是一种特殊功能的存储器,数据以达到FIFO输入端口的先后顺序依次存储在存储器中,并以相同的顺序从FIFO的输出端送出,所以FIFO不需要读/写地址线。

图像数据以时钟节拍从数据输入端依次串行输入,FIFO用来存储1行的数据,以便使w11,w12,… ,
w55正好是3×3(5×5)模板所对应的图像数据,当模块使能端en1为1时,该模
块是5×5模板窗口,当en1为0时,r14,r15,r23,r24,r33,r34,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 comp1 of comp1 is
type mask is array(24 downto 0) of std_logic_vector(7 downto 0); signal t: std_logic_vector(7 downto 0);
signal m,n:integer;
begin
process
variable a:mask;
variable T:std_logic_vector(7 downto 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 1 to 8 loop
for m in 8 downto n loop
if (a(m) < a(m-1)) then
T:= a(m);
a(m):=a(m-1);
a(m-1):=T;
end if;
end loop;
end loop;
median<=(conv_integer(a(4)));
eno<=′1′;
else median<=0;
eno<=′0′;
end if;
else …
3 仿真结果
本设计中3×3中值滤波模块在Quartus Ⅱ上的仿真结果如图4所示。

设定图像每行像素为20 ,初始化后需先扫描2行像素,经过43个时钟周期后可以获得图像的中值滤波结果输出。

eno使能端置为1 ,从而允许下一级模块读取结果。

若采用5×5中值滤波模块,则在97个时钟周期后得到中值滤波的结果输出。

图3 中值滤波模块仿真结果
4 改进的中值滤波算法
中值滤波算法核心是排序,排序算法的优劣直接决定了求取中间值的效率,从而决定滤波器的整体性能。

基于硬件的排序算法设计可以充分地利用硬件平台的并行性特点,从而达到加快处理速度目的。

下面分析3×3窗口图像数据的数学模型,说明中间值的求取过程,并与原始的冒泡排序法相比较。

对于3×3 窗口图像数据,首先分别对窗口中的每一行计算最大值、中值、最小值,这样一共可以得到9个
数值,分别包括3个最大值、3个中值、3个最小值;
第一行的最大值:Max1=max[w11,w12,w13];第一行的中值:
Med1=med[w11,w12,w13];第一行的最小值:Min1=min[w11,w12,w13];
依此类推:Max2=max[w21,w22,w23];Med2=medw21,w22,w23];
Min2=min[w21,w22,w23];Max3=max[w31,w32,w33];Med3=med[w31,w32,w33];Min3=min[w31,w32,w33];式中,max表示取最大值,med表示
取中值,min表示取最小值。

不难判断,在9个数值中,3个最大值中的最大值和3个最小值中的最小值一定
是9个像素中的最大值和最小值;3个中值中的最大值至少大于5个像素,即本
行中的最小值、其他2行的中值及最小值;而3个中值中的最小值至少小于5个
像素,即本行中的最大值、其他2行的中值及最小值。

最后,比较3个最大值中
的最小值Min_of_Max,3个中值中的中值Med_of_Med,3个最小值中的最大
值Max_of_Min,得到的中间值即为滤波的最后结果 Med_of_nine。

与用冒泡排
序法设计的模块相比,中值滤波模块在Quartus Ⅱ下的仿真中算法占用资源如表
1所示。

表1 改进前后滤波器性能比较名称3×3模块,冒泡排序法3×3模块,改进算法
Total logic elements921/33 216(3%)610/33 216(2%)Total
registers138228Total pins20/475(4%)20/475(4%)Total memory bits320/483 840(<1%)320/483 840(<1%)延时(时钟周期)4347
5 结语
本设计成功地实现了中值滤波算法的仿真,只要改动参数值便可实现对不同灰度级、不同尺寸的图像进行处理。

对于不同的处理要求,也可通过选择端在3×3模板窗
口和5×5模板窗口之间选择,而且在本设计中的3×3(5×5)模板生成模块可复用
于边缘检测、数学形态学处理等用到掩模的处理算法中,对于在FPGA上开发图
像处理的其他算法具有很好的借鉴作用。

参考文献
[1] 朱明,鲁剑锋.基于DSP+FPGA结构图像处理系统设计与实现[J].计算机测量与控制,2004,12(9):866-869.
[2] 陈家新,黎蔚,倪福荣,等.FPGA在图像处理中的应用[J].洛阳工学院学
报,2001,22(1):51-53.
[3] 贾云得.机器视觉[M].北京:科学出版社,2000.
[4] 延明.FPGA在数字图像处理中的应用[J].电子技术,2005(1):74-76.
[5] Altera Corporation,Quartus Ⅱ Version 6.0
Handbook[EB/OL]..
[6] GavinV L.Bates,Saeid Nooshabadi.FPGA Implementation of a Median Filter[J].IEEE Tencon-Speech and Image Technologies for Computing and Telecommunications,1997:437-440.
[7] Castleman K R.数字图像处理[M].北京:电子工业出版社,1998.
[8] 苏光大.图像并行处理技术[M].北京:清华大学出版社,
2002.
[9] 徐胜荣,张健.实时中值滤波硬件实现的研究[J].电子测量与仪器学报,1993:45-51.
[10] 吴继华,王诚.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005.
[11] 吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.。

相关文档
最新文档