改进型位级中值滤波硬件算法的实现
2015-09-21韩剑辉葛威
韩剑辉++葛++威
摘 要:为降低硬件资源占用提高滤波速度,介绍了一种改进的位级中值滤波设计,并且运用改进的位级中值滤波设计构造一个3x3模板改进型位级中值滤波器,应用于降低灰度图像的椒盐噪声.着重介绍改进后位级中值滤波的中间值计算逻辑电路的简化设计及相应求大多值计算模块的改进.整个设计均在FPGA和Modelsim SE 10. la软件仿真的基础上实现验证.实验数据比较证明改进型位级中值滤波大幅度降低硬件资源占用,且在一个时钟周期内快速的完成一次位级中值滤波并输出结果.
关键词:中值滤波;椒盐噪声;FPGA;Modelsim
DOI:IO.15938/j.jhust.2015.03.007
中图分类号:TP39
文献标志码:A
文章编号:1007-2683 (2015)03-0035-05
O 引 言
在图像采集和生成的过程中被引入噪声,而中值滤波依靠本身的非线性特点在图像预处理方面被广泛运用.但是大多数中值滤波算法如加权中值滤波等,在软件实现时需要运用多次的排序,使得程序很繁杂,不仅在硬件实现时需要占用大量的硬件资源,而且消耗较长的时间影响滤波速度.而位级中值滤波充分发挥Verilog HDL硬件描述语言优点,构造特定的逻辑电路占用相对较少的硬件资源,在极短的时间内快速完成滤波,不论是硬件资源占用,还是滤波速度,位级中值滤波都优于需要排序的中值滤波算法.文已提出了一种位级中值滤波的电路结构,但该电路结构仍有改进的空间,为此,本文给出一种改进型位级中值滤波的电路设计.
1 位级中值滤波原理
整个位级中值滤波由中间值计算模块和求大多值模块组成,
输入进来的图像数据以二进制数形式,按最高位到最低位的顺序,对各图像数据相同位上的数值观察比较,如果数值为l的个数多于或等于数值为0的个数,那么滤波结果将会在相应位的数值为1的图像数据集合中产生,该集合记作A,并且将A集合中各图像数据的标志位M置1,而相应位数值为O的数据集合记作B,B集合中各数据的标志位M置0,其中标志位M为是否允许进入下一位中间值计算的标志;如果数值为1的个数少于数值为0的个数,则相应位的数值为0的图像数据集合记作A,相应位的数值为1的图像数据集合记作B.只有标志位M置1的图像数据才可以进入下一位的中间值计算,如果M被置0,则该图像数据不能进入下一位的中间值计算并且不会再出现在A集合中,即M不能再被置为1直至滤波结束,从次高位开始,每执行完一位数值计算,A集合中的元素就减少一些,直至A集合中只有最后一个数据,该数据便是位级中值滤波的输出结果.值得说明的是,在上述过程中还需保持数据的阶数顺序,以确保滤波结果的精确.
2 改进型位级中值滤波电路设计
2.1 中间值计算模块的改进设计
中间值计算模块由单个位的中间值计算电路作为基础单元组成,因此,着重介绍单个位的中间值计算电路的改进,文提供了单个位的中间值计算电路设计,设计中为了保持数据的阶数顺序需要有si[j]和sri[j -1]两个输入信号,从而增大了单个位的中间值计算的电路结构,随着位宽的增大,所需的单个位的中间值计算电路的数量在增多,使得硬件资源占用迅速增多;例如:对于3x3滤波窗口的位宽输入,就需要3x3x8 =72个单个位的中间值计算电路单元,很明显如果单个位的中间值计算电路单元结构相对复杂,硬件资源占用就会大大增多.为了缓解已有位级中值滤波设计的硬件资源占用随着位宽增加而迅速增多的压力,本论文对单个位的中间值计算电路单元做了改进:将保持数据阶数顺序的功能转移到求大多值模块中,去除原有…的si[j]和sri[j-1]两个输入信号,只保留数据相应位数值Sr、大多值Sout、标志位M的比较判断的功能,简化了单个位的中间值计算电路单元.简化前后的电路比较如图l(a)为文[1]提供的中间计算电路,图1(b)为本文简化后的电路.
2.2 求大多值计算模块改进设计
求大多值模块也做出相应改进,为增加保持数据阶数顺序的功能,运用了一种新的计算方法求一组数值的大多值:先计算出该组数值中数值为1的个数h,如果该组数值的总个数为Z,则该组数值中数值为0的个数w=Z-h,如果h≥w,那么大多值为1;如果h 为保持数据的阶数顺序,首先必须了解为什么需要保持数据的阶数顺序,位权的概念在二进制数值运算中最为关键,即某一位上的“1”所表示的数值的大小.而构成位级中值滤波的逻辑电路只是对数字信号“0”和“1”做单纯的逻辑变换,不能与一般中值滤波的程序一样,理解每一位的位权意义并依据数据的数值大小对数据进行排序.因此,如果不保持数据的阶数顺序,位级中值滤波的结果是不精确的.以表1内的数据为例,表1中黑色填充部分是位级中值滤波在没有保持数据阶数顺序的情况下产生的滤波结果,而正确的中间值是81,很明显滤波结果错误,为保持数据的阶数顺序,假设某组数值为第i组数值,其中O 2.2.1 求大多值模块改进设计的硬件实现 整个电路以计算数字信号“1”的个数为主要方法,这便于逻辑判断,易于硬件实现.通过一个n位的减法器sl和一个n位的加法器al来实现保持数据阶数顺序的功能,通过一个Q位输入、n位输出的运算器v来计算M=1且数字信号为“1”的数值的个数.最终经过一个n位的加法器a2将v的输出与al的输出求和后输出给一个2n位输入的比较器求出大多值.其中Q为位宽,n满足2n≥Q.通过Quar-tus II 11.0生成改进的3x3滤波窗口位宽输入的求大多值RTL级电路如图2.式中变量d(t)为第i组数值中的第t个数值;变量M(t)为第i组数值中的第t个数值的标志位M.
3 构造3x3模板改进型位级中值滤波器
3x3模板改进型位级中值滤波器由3x3模板生成模块和3 x3滤波窗口位宽输入的改进型位级中值滤波模块组成,其RTL级模块如图3.
3.1 3x3模板生成模块
该模块由7个移位寄存器(SR)、2个FIFO缓存器构成,3x3模板生成模块结构如图4.模板生成模块利用FPCA的并行特性,将移位寄存器与FIFO缓存器构造成串行流水结构,以提高处理速度.2个FIFO缓存器由FPGA的IP核生成,深度均为(G-2),其中G为图像的一行所含像素点的个数,1个FIFO和2个移位寄存器正好存储图像的一行数据,以图像的第1、2、3行为例,随着数据的不断左移,当SR一11、SR一12存储第1行的前两个图像数据时,SR_21、SR _22和SR一31、SR一32、SR_33正好分别存储第2行的前2个图像数据、第3行的前3个图像数据,于是D11、D12、D13、D21、D22、D23、D31、D32、D33构成3x3模板,再随着下一个图像数据的左移,3x3模板便整体右移一个数据宽度,值得说明的是:两个FIFO缓存器的读写时序必须控制好,在第4个时钟周期时FIFOI的写有效;在第(G+4)个时钟周期时FIF02的写有效;在第G个时钟周期时FIF01的读有效;在第(Gx2)个时钟周期时FIF02的读有效.通过QuartusⅡ11.0生成的3 x3模板生成模块的RTL级主要电路如图5.
3.2 3x3滤波窗口位宽输入的改进型位级中值滤
波模块
第2节介绍了改进型位级中值滤波处理单组数值的电路设计,其功能结构如图6.但这只是处理一组数值,因此对于一个8位字长的图像数据则需要8组这样的结构,值得说明的是:在滤波开始时,所有标志位M的初始值均为1.通过QuartusⅡ11.0生成的3x3滤波窗口位宽输入的改进型位级中值滤波处理单组数值的RTL级电路如图7.
4 FPGA硬件实验结果及比较
为验证3x3模板改进型位级中值滤波器模块对受污染的灰度图像的处理效果,本文通过Model-sim SE 10. la软件对模块进行时序仿真,并且将一幅256×256像素由Matlab生成的加入椒盐噪声的灰度图像作为输入数据.图8为3x3模板改进型位级中值滤波器的时序仿真.最后,通过Matlab将时序仿真产生的数据矩阵转换成灰度图像,直观的显示3x3模板改进型位级中值滤波器模块的图像处理效果,图9为处理效果比较,3x3模板改进型位级中值滤波器的图像处理效果良好.根据Quar-tus 11 11.0生成的资源占用报表,表2为资源占用结果比较,数据显示本文3x3模板改进型位级中值滤波器所占用的寄存器资源远少于文提供的3×3模板中值滤波算法所占用的寄存器资源.
本文介绍的改进型位级中值滤波,简化原有位级中值滤波的逻辑电路结构.实验数据说明:3×3模板改进型位级中值滤波器所占用的寄存器资源远少于文的中值滤波器,同时依据Modelsim SE10. la的时序仿真结果,3x3模板改进型位级中值滤波器能够在1.32 ms内处理完一副256×256像素的图像且图像处理效果良好.