APP下载

快速二维中值滤波算法及其FPGA硬件设计

2015-12-23董恩增吴东东佟吉钢

计算机工程与设计 2015年7期
关键词:中值个数排序

董恩增,吴东东,佟吉钢

(天津理工大学 自动化学院 复杂系统控制理论及应用重点实验室,天津300384)

0 引 言

图像去噪是图像处理中重要的一部分,在图像的采集、传输、处理、接收及成像过程中,存在着一定程度的干扰。如相机感光芯片在光电转换过程中灵敏度的不均匀性、在采集传输过程中的系统参数误差以及人为或周围环境因素影响等,均会引入一定程度的干扰噪声。噪声的引入使图像的质量变差,图像中的一些特征被淹没,给图像分析工作带来困难。为了提高图像的质量以及后续更高层次处理,必须先对噪声图像进行恰当的滤波,抑制背景中的噪声,增强图像中目标特征的强度,从而提高图片信噪比[1]。目前应用较多的是3×3中值滤波器,主要应用于复杂背景下的红外追踪和目标探测领域。然而当一副图片的信噪比较低、噪声密度较高时,3×3中值滤波器的滤波效果并不是很理想,导致目标强度变弱。

本文针对处理噪声图片时数据量大、实时性要求较高的问题,从算法比较次数、硬件资源占用、去噪处理后图像质量方面综合考虑,在排序过程中引入归并插入排序算法,用VHDL 语言设计了适合于FPGA 实现的5×5快速中值滤波器。与常规方法相比,该方法减少了比较次数和计算量,节省开发成本,同时也方便在FPGA 上实现。

1 快速二维中值滤波算法

一个大小为N×N(N 为奇数)的滤波窗口W 用于二维图像像素点{Xij,(i,j)∈Z2},此时中值滤波器可定义为[2]

中值滤波的主要运算就是对滤波窗口中的数值进行排序。其基本单元是2个数值的大小比较然后排序。对于一个m×n的二维滤波采样窗口,需要设计m×n个寄存器来存储滤波窗口内待处理的数据,之后再经过排序运算,得到滤波窗口中数据的中值[3]。

本文5×5快速中值滤波器算法流程如图1所示。

图1 5×5图像窗口求取中值流程

(1)将窗口中的25个数先按行沿箭头方向进行降序排列,如图1 (a)所示;

(2)再将其按列沿箭头方向做降序排列,如图1 (b)所示;

(3)按对角线沿箭头方向对三列数进行降序排列,如图1 (d)所示;

(4)完成步骤 (3)后,将最后的3个数沿箭头方向降序(或升序)排列,得到25个数的中值,如图1 (c)所示。

在如图1快速中值滤波器行列降序排列及斜对角线5个数降序排列过程中,本文采用了归并插入排序算法[7],该算法能够将5个数在最少比较次数情况下得出排序结果,算法原理如下:

假设5×5滤波窗口中任一行 (或一列)5个数分别编号x1、x2、x3、x4、x5,x1与x2,x3与x4共比较2 次,假设比较结果x1>x2,x3>x4;x1与x3比较需1 次,假设比较结果为x1>x3,则x1>x3>x4。当x1>x3>x4时4个元素的有序关系如图2所示 (连线表示左下元素大于右上元素)。

图2 x1>x3>x4 时4个元素的有序关系

把x5插入x1,x3,x4中,需要比较2 次,有4 种情况,如图3所示。

图3 x5 插入x1,x3,x4 后有序关系

对以上任意一种情况,总可以通过两次比较将x2插入由x1、x3、x4、x5构成的有序队中。这样总共需要比较2+1+2+2=7次。若用分组排序网络算法或插入法对x1、x2、x3、x4、x5进行排序则需要比较10次。由此可见,将归并插入算法应用于快速中值滤波器中可进一步减少比较次数,进而提高系统运算速度。

2 算法硬件设计

2.1 5×5采样窗口模块

为了便于系统的算法模块进行流水线处理,必须保证窗口中的25个像素值在同一时刻输出,本文在5×5采样窗口硬件设计中,采用了25个寄存器和4个FIFO 存储器,其中FIFO 是利用FPGA 芯片的IP核生成的,由于本文处理的图像为480×320的灰度图像,所以FIFO 位宽设置为8,深度设置为512。并设定为单时钟同步。4个FIFO 存储器用来缓存4行的像素点数,而寄存器用来缓存并输出各行的5个像素点[8,9]。

图4为5×5方形窗采样结构框架,在快速中值滤波过程中,先从数据输入端读取4 行图像数据并依次保存在FIFO1~FIFO4存储器中。在时钟的上升沿,从数据输入端读入一个新的数据,同时方形采样窗口向右移动一个单位,与此同时上一时刻方形窗中最右边的像素被置入下一个FIFO 存储器中等待处理。由于在系统时钟的控制下4个FIFO 每一个节拍输出一个新的数据,这就保证了方形采样窗口在每一个时钟的控制下可以沿被处理图像数据的行方向逐个像素滑动[10]。由于5×5 的滤波窗口无法处理位于图像边缘最外围的两行两列像素点,考虑到最外围的像素点对目标,特征影响程度很小,可以忽略不计,所以这些点保持原值输出。

图4 5×5方形窗结构框架

图5 为5×5 方形窗仿真波形图,可以看到在481400 ns时刻,5行的图像数据中的每一行都能输出5位数据且能够保证无数据丢失和错位的情况下逐行移动。因此,5×5方形窗的硬件设计达到了预期的要求。

图5 5×5方形窗仿真波形

2.2 5×5快速中值滤波器算法模块

该模块目的是求取25个数的中值,并作为输出。利用软件来实现该算法较为简单,但通常该滤波算法在硬件上实现则需要考虑滤到波器的系统硬件资源占用比例,因此从理论上分析,在达到实验或工程目的前提下,在硬件系统设计过程中应当尽量使用更少的比较器和寄存器,并且尽可能在得到正确输出结果的同时减少硬件系统运算量。根据图1的算法流程,设计了求取中值的VHDL 程序。在该程序设计中调用了11次5个数排序模块,2次4个数的排序模块,1次3个数的排序模块。5个数排序模块采用归并插入排序算法。5个数降序排列需要比较7次,4个降序排列数需要比较6次,3个数降序排列需要比较3次。所以该算法模块总共需要比较次数N=7×11+6×2+3=92次。该中值滤波算法比常规算法少比较142次。图6为5个数降序排列模块的RTL 原理,图7为5×5快速中值滤波器算法的RTL原理[11,12]。

图6 5个数降序排列模块RTL原理

5×5的滤波算法模块仿真波形如图8所示。

图7 5×5快速中值滤波器RTL原理

图8 中值滤波算法仿真波形

通过图8可以看出,25个数的中值在第四个时钟周期就能正常输出,保证了滤波算法的正确性和实时性。该算法的硬件模块设计以尽可能的减少运算量为基础,用VHDL语言设计了适合在FPGA 上实现的行排序和列排序等硬件模块,达到了设计的要求。

3 实验结果及分析

在该设计中板型选取的是Xilinx公司的Virtex-II PRO XC2VP30开发板。为了能够对本文ISE10.0环境下设计的快速中值滤波器硬件系统仿真,验证硬件系统设计的正确性,首先利用MATLAB将一幅480×320的图像转化为激励文件,将该激励文件保存在ISE 当前的工程目录;然后使用ISE Simulator进行仿真,将输出结果存入*.txt文件;最后通过MATLAB 调用该*.txt文件来显示处理后的图像[13]。

图9中 (a)、(b)、 (c)、 (d)为实验结果前后对比图。图9 (a)为原始图像;图9 (b)为加入45%的椒盐噪声图像,图9 (c)为3×3中值滤波器处理后图像,图9 (d)为本文5×5快速中值滤波器处理后图像。表1 为图9 (c)与 (d)两幅图的均方误差 (MSE)和峰值信噪比 (PSNR)值的对比[14,15]。表2为不同类型5×5中值滤波器在硬件资源占用、排序比较次数以及时钟延迟个数方面的对比。

图9 不同处理后图片效果对比

由图9和表1 可知,归并插入排序算法应用到5×5快速中值滤波器的硬件系统设计正确,对于同一幅加噪图像,经过两个不同类型中值滤波器去噪处理后,通过比较图9中 (b)和 (c)两幅图片的MSE、PSNR 值,可以发现5×5中值滤波器比3×3 中值滤波器对噪声有更好的抑制效果。由表2可以看出本文设计的5×5快速中值滤波器硬件资源消耗较少,并最终减少了比较次数和时钟延迟个数,提高了运算的速度,保证了数据处理的实时性。

表1 图9 (c)、图9 (d)两幅图的MSE、PSNR 值

表2 中值滤波器硬件资源使用情况、比较次数及时钟延迟情况对比

4 结束语

针对较高密度的噪声数字图像,本文从中值滤波器的去噪性能、运算速度以及硬件资源占用多方面综合考虑,设计了一种5×5快速中值滤波器,在该滤波器中,应用了归并插入排序算法。相比常规算法,该算法能够使中值滤波器的比较次数进一步减少,提高了运算速度。在ISE10.0环境下,本文算法的硬件设计达到要求,该算法结构简单,系统实时性高,硬件资源占用较少,去噪效果明显,且易在FPGA 上实现。为复杂背景下的红外追踪和目标探测领域提供了一定的技术参考。

[1]ZHU Shihu,HUANG Zhi.A novel filtering algorithm of high density salt and pepper noise [J].Computer Engineering,2012,38 (18):207-210 (in Chinese).[朱士虎,黄智.一种新的高密度椒盐噪声滤波算法 [J].计算机工程,2012,38(18):207-210.]

[2]WAN Haijun,HE Dongjian,XU Shangzhong.The realization of image median filter algorithm based on FPGA [J].Microcomputer Information,2008,24 (7):3 (in Chinese).[万海军,何东建,徐尚中.基于FPGA 的图像中值滤波算法硬件实现 [J].微计算机信息,2008,24 (7):3.]

[3]LI Yanjun,SU Hongqi,YANG Feng,et al.Improved algorithm study about removing image noise [J].Computer Engineering and Design,2009,30 (12):2995-2997 (in Chinese).[李彦军,苏红旗,杨峰,等.改进的中值滤波图像去噪方法研究 [J].计算机工程与设计,2009,30 (12):2995-2997.]

[4]LUO Haibo,SHI Zelin,HUI Ying,et al.Real-time large window-sized 2D median filter based on multi-phased grouping and sorting network [J].Infrared and Laser Engineering,2008,37 (5):935-939 (in Chinese). [罗海波,史泽林,惠颖,等.基于多级分组排序网络的实时大窗口二维中值滤波器设计 [J].红外与激光工程,2008,37 (5):935-939.]

[5]BO Zhentong.Design of real-time image adaptive median filter based on FPGA [J].Electronic Sci & Tech,2014,27 (1):121-124 (in Chinese).[薄振桐.基FPGA 的实时图像自适应中值滤波器设计 [J].电子科技,2014,27 (1):121-124.]

[6]YU Mingjing,GU Jun.Research on the advanced median filter based on FPGA [J].Electronic Test,2011,12 (12):50-53(in Chinese).[尉明靖,古军.基于FPGA 的改进型中值滤波研究 [J].电子测试,2011,12 (12):50-53.]

[7]WU Weina,SUN Shipeng,YANG Feng,et al.Compare and analysis of frequently-used sorting algorithms [J].Computer Knowledge and Technology,2013,9 (9):2146-2148 (in Chinese).[吴伟娜,孙仕鹏,杨风,等.常用排序算法的比较与分析 [J].电脑知识与技术,2013,9 (9):2146-2148.]

[8]LI Guoyan,HOU Xiangdan,GU Junhua,et al.Implementation of the improved fast median filtering algorithm based on FPGA [J].Computer Technology and its Application,2013,39(2):137-140 (in Chinese).[李国燕,候向丹,顾军华,等.快速中值滤波算法的改进及其FPGA 实现 [J].电子技术应用,2013,39 (2):137-140.]

[9]LI Yibo,LI Xiaobing,ZHOU Xian.Design and realization of fast median filter based on FPGA [J].Liquid Crystals and Displays,2010,25 (2):292-295 (in Chinese).[李轶博,李小兵,周娴.基于FPGA 的快速中值滤波器设计与实现 [J].液晶与显示,2010,25 (2):292-295.]

[10]SHEN Xueli,WANG Suguo.Research of the advanced median filtering algorithm based on FPGA [J].Microelectronics&Computer,2014,31 (1):21-24 (in Chinese).[沈学利,王肃国.基于FPGA 的改进型中值滤波算法研究 [J].微电子学与计算机,2014,31 (1):21-24.]

[11]YANG Ming,SONG Lihua.The application of an improved fast algorithm of median filter on removing image noise [J].Engineering of Surveying and Mapping,2011,20 (3):65-69(in Chinese).[杨明,宋丽华.改进的快速中值滤波算法在图像去噪中的应用 [J].测绘工程,2011,20 (3):65-69.]

[12]YANG Jing,WANG Yuanqing.Implementation of improved median filtering algorithm in real-time and high-speed [J].Jisuanji Yu Xiandaihua,2013 (8):30-32 (in Chinese). [杨晶,王元庆.实时高速实现改进型中值滤波算法 [J].计算机与现代化,2013 (8):30-32.]

[13]ZHAN Xianning,TIAN Geng.VHDL development solutions and example analysis [M].Beijing:Electronic Industry Press,2009 (in Chinese). [詹仙宁,田耘.VHDL 开发精解与实例剖析 [M].北京:电子工业出版社,2009.]

[14]LI Xu,ZHAO Wenjie,YANG Kaida.An improved method of median filtering algorithm [J].Chinese Journal of Stereology and Image Analysis,2013,18 (1):7-11 (in Chinese).[李旭,赵文杰,杨凯达.一种改进的中值滤波算法 [J].中国体视学与图像分析,2013,18 (1):7-11.]

[15]GENG Shuai,WANG Xichang.An image denoising algorithm based on median filter [J].Jisuaji Yu Xiandaihua,2011 (11):90-92 (in Chinese).[耿帅,王希常.一种基于中值滤波的图像去噪算法 [J].计算机与现代化,2011(11):90-92.]

[16]WANG Hong,TIAN Shasha,DING Lin.Design of image median filter based on FPGA [J].Microcomputer Applications,2012,31 (13):46-48 (in Chinese). [汪红,田莎莎,丁林.基于FPGA 的图像中值滤波器设计 [J].微型机与应用,2012,31 (13):46-48.]

[17]Rafael C Gonzalez,Richard E Woods.Digital image processing [M].3rd ed.Beijing:Beijing Publishing House of Electronics Industry,2011.

[18]HE Bin.Xilinx FPGA design authority guidelines[M].Beijing:Tsinghua University Press,2012 (in Chinese). [何宾.Xilinx FPGA设计权威指南[M].北京:清华大学出版社,201.]

猜你喜欢

中值个数排序
排序不等式
怎样数出小正方体的个数
恐怖排序
等腰三角形个数探索
怎样数出小木块的个数
节日排序
怎样数出小正方体的个数
刻舟求剑
Lagrange中值定理的巧妙应用
微分中值定理教法研讨