文献标识码:A
文章编号: 0258-7998(2013)02-0137-04
图像是人类获取外界信息的重要途径,图像的清晰度直接影响到人们对其的观察以及进一步的分析研究。图像的采集、传输、存储等环节通常会导致图像质量的降低。因此,为了改善图像的质量,必须对图像进行滤波、平滑等预处理操作。但是,由于实际处理的数据量巨大,预处理的过程往往达不到系统对实时性的要求。近年来,微电子技术和超大规模的集成电路制造技术的发展,特别是FPGA的发展,为提高图像处理系统各种性能提供了新的思路和方法。FPGA在设计上实现了硬件并行和流水线(Pipeline)技术,适于模块化设计;同时其开发周期短,系统易于维护和扩展,能够大大提高图像数据的处理速度,满足系统的实时性要求[1]。
中值滤波作为一种空域滤波技术,能有效地去除脉冲噪声和椒盐噪声,同时还能较好地保留图像的边缘信息,在图像预处理中应用广泛。虽然中值滤波算法处理的数据量大,但其运算简单,重复性强,存在较大的并行性,可由硬件映射到FPGA架构中[2-3]。另外,由于中值滤波算法处理后的图像存在边缘模糊的问题,因此,本文对快速中值滤波算法提出了一些改进,通过加入阈值比较的环节,更好地保留了图像的细节信息。最后,基于FPGA硬件平台实现了改进的快速中值滤波算法,大大提高了图像的处理速度。
针对传统中值滤波算法的一些快速中值滤波算法已经被提出[7-10]。参考文献[7]提出了一种将3×3窗口的像素值先按列降序排序,然后再按行降序排序,最后取对角线上的元素作为模板中值输出的快速中值滤波算法,相对于需要进行36次比较运算的传统的中值滤波算法,这种快速中值滤波算法的比较次数明显减少,仅为21次。参考文献[8]提出了采用3×3像素的十字型中值滤波结构模板,对快速中值滤波算法进行改进,只需对5个像素数据进行排序,从而减少了数据比较的次数,该算法的比较次数为24次。参考文献[9]提出了一种先取模板各个水平行的中值,再求出这些水平行中值的中值,以此作为滤波结果的快速中值滤波算法,该算法在最坏情况下的比较次数为12次。
同时,为了更好地保留图像的细节信息,参考文献[10]提出了在传统的中值滤波算法中加入阈值判定的方法,即设定一个阈值TH后,按传统的算法算出初始的中值,将当前中值与模板的中心值的差的绝对值与阈值进行比较,若判定结果大于阈值,则判定中心点为噪声点,用求的中值代替中心值,否则保留原有的中心值。
2 改进的快速中值滤波算法及分析
为了减少图像滤波后的误差,提高图像处理的速度,本文提出了一种改进的快速中值滤波算法。采用3×3模板,以快速中值滤波算法为基础来寻找中值,通过阈值约束条件,判断中值是否为有效数据。算法的具体实现步骤如下:
(1)获取大小为m×n的原图像,对图像加入5%的椒盐噪声;
(2)图像扩展,使其大小为(m+2)(n+2);
(3)将模板在图像上按行列滑动,如果未到达循环结束条件,则转到步骤(4);
(4)对模板中水平行的数据进行排序,取每一行第2个位置上的值,然后再对3行的中值进行排序,取其中值;
(5)判断该中值是否为所需的有效数据,将所求的中值和中心点值做差,将差值与事先设定的阈值TH按式(2)进行比较;
分别采用基于上述参考文献的算法以及本文的算法对图像进行处理。各个算法MMSE的比较结果如图1所示。
由图1可以看出本文提出的改进算法比其他算法的MMSE值都小,能获得较好的处理效果。图2给出了本文改进算法对加入5%椒盐噪声的图像的处理效果。
结合图1和图2可知,增加阈值判定的算法在细节保护和去噪之间能达到一个较好的平衡点,本文的改进算法处理效果明显较好。
3 算法的硬件实现
3.1 总体设计方案
FPGA硬件化设计遵循并行流水机制,分别采用各自独立的处理通道,对同一段时间内需要处理的所有任务同时进行处理,处理时间从多个任务所需时间之和降至最慢任务所需的时间。为了便于在FPGA上实现改进的中值滤波算法,本文以3×3像素模板处理512×512像素的灰度图像为例,进行了硬件化的设计,总体设计方案主要包括比较排序模块的设计和控制电路的设计,如图3所示。
3.2 三点排序模块的设计
每个三点排序模块都用了3个比较器对3行数据进行并行比较排序。在一个时钟周期下,每次比较3个输入信号,输出信号为每行的中值。当时钟触发下一级的比较器后,各行输出的中值信号作为下一个排序的输入信号,最后再加入一个比较器对所得中值进行判断。这样,总处理时间只是其中关键模块的处理时间,处理速度是顺序执行的两倍。
3.3 控制电路的设计
控制电路控制着整个系统的运行,是硬件设计的难点和重点。本设计的控制电路分为两部分:
(1)控制不连续信号的输入和数据缓存
由于图像信号是按串行的方式输入到系统中,因此需要通过控制信号使系统保持在并行流水的工作模式中。考虑实际工作中,图像信号的输入可能是不连续的,故采用FIFO缓存模块来保存数据。当FIFO模块不为空时,系统将产生局部时钟使能信号来保证系统计算的正确性。
(2)控制图像边界点的输出和对有效信号的选取
中值滤波算法在处理图像时,只处理图像内部的像素,而边界上的像素保持不变,因此需要在FPGA系统中加上对边界点的处理并选取有效信号的输出,此处理由控制模块完成。对于选定的512×512像素的图像,其4条边界上有2044个边界点,系统需要对这些边界点进行判定,并完成有效数据的正确输出。
4 测试结果及分析
实验采用了Altera的具有高密度低成本Cyclone系列的EP2C70F896C6N芯片,利用DSP-builder11.1实现算法设计,并通过Quartusii11.1对设计进行调试和仿真,同时利用modelsim10.0c完成时序仿真。modelsim10.0c的仿真结果如图4所示。
由图4可知,实验数据与预计结果一致。因此,设计电路具有良好的稳定性。本文给出了硬件实现不同算法的效果对比情况,如表1所示。
由表1可知,对于一幅512×512像素的图像,本文改进的基于FPGA的快速中值滤波算法在硬件上能达到的最高工作频率为231.21 MHz,处理时间约为1.13 ms,比软件实现该算法的速度快11倍;与传统的中值滤波算法和参考文献[7]算法的硬件结构相比,本文改进算法耗费的逻辑单元和寄存器较少,占用硬件资源更少,从而达到较高的工作频率,以满足图像实时处理的要求。
本文通过对快速中值滤波算法的改进,能够减少算法排序量,更好地保护图像的细节信息。改进的算法具有较高的内在并行性,易于在FPGA上实现。硬件实现的算法对图像的处理能达到较高的工作频率,且占用资源较少,适合图像的实时处理。
参考文献
[1] BOAS M L. Mathematical methods in the physical sciences(3rd ed)[M]. John Wiley & Sons, 2006.
[2] 黄艳军.基于FPGA的数字图像预处理算法研究[D].南京:南京理工大学,2009.
[3] VINCENT O R, FOLORUNSO O. A descriptive algorithm for sobel image edge detection[C]. Proceedings of Informing Science & IT Education Conference(InSITE),2009.
[4] ZEMCIK P, Hardware acceleration of graphics and imaging algorithms using FPGAs[D]. Brno University of Technology:SCCG,2002.
[5] BATES G L, NOOSHABADI S. FPGA implementation of a median filter[C]. Speech and Image Technologies for Computing and Telecommunications,Proceedings of IEEE,1997.
[6] 万海军.实时图像处理算法研究及FPGA实现[D]. 陕西:西北农林科技大学,2008.
[7] 付昱强.基于FPGA的图像处理的算法的研究与硬件设计[D].南昌:南昌大学,2006.
[8] 朱捷,朱小娟,贺明.基于FPGA的实时图像中值滤波设计[J].计算机测量与控制,2007,15(6):798-800.
[9] 王萍,白光远,唐晓燕.基于FPGA的图像中值滤波算法的优化及实现[J].电子与电脑,2009(10):94-96.
[10] 李飞飞,刘伟宁,王艳华.改进的中值滤波算法及其 FPGA快速实现[J].计算机工程,2009,35(14):175-177.