基于Stratix II EP2S60的改进中值滤波器的设计及实现
时间:10-26
来源:互联网
点击:
1 引言
众所周知,在复杂背景条件下,要对弱小目标进行准确有效地红外跟踪、探测是一个难题。这种情况下,由于目标与背景的对比度较小、信噪比较低,若直接进行跟踪、探测往往比较困难,所以必须先对图像信号进行滤波预处理,以达到抑制背景噪声。增加目标强度,从而提高图像信噪比的目的,为后续工作打下良好的基础。
实时图像处理器中,信号预处理包括对图像的各种滤波、直方图统计及均衡、图像增强、灰度变换等,它们共同的特点是处理数据量大,如果用一般的软件来实现势必会比较慢。而对于一些实时性要求比较高的系统,处理速度往往是要考虑的关键因素,一旦速度跟不上,实时性也无从谈起。针对图像预处理阶段运算结构比较简单的特点,用FPGA进行硬件实现无疑是理想的选择,这样同时兼顾了速度和灵活性,大大减轻了DSP的负担。
本系统采用Verilog HDL语言。利用一种快速的中值滤波改进算法对电路进行设计,并以Altera公司生产的Stratix II EP2S60F67214型FPGA芯片为硬件平台。该器件继承了Altera公司Stratix II系列的共同优点,由于引入了崭新的自适应逻辑模块(ALM),使得Stratix II有更高的性能和逻辑封装、更少的逻辑和布线级数以及更强的DSP支持,而Stratix II EP2S60F67214更是比Xilinx公司的类似器件Virtex-4XC4VLX60多出18%的器件逻辑,其中包括51 182个寄存器位,2 544 129个存储器位以及48 352个ALUT,该器件资源丰富,只需占用很小一部分实现中值滤波器,为后续设计的增长留有更多空间。
2 中值滤波的基本原理及改进算法
2.1中值滤波的基本原理
中值滤波是由Tukey发明的一种非线性信号处理技术,早期用于一维信号处理,后来很快被用到二维数字图像平滑中,是一种有效抑制图像噪声,提高图像信噪比的非线性滤波技术。它是一种邻域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。与均值滤波器以及其他线性滤波器相比,中值滤波器的突出特点是在很好地滤除脉冲噪声(Impulsive Noise)和椒盐噪声(Salt and Pepper Noise)的同时,还能够保护目标图像边缘轮廓的细凇S霉?奖硎疚??br>
g(x,y)=median{f(x-i,y-i)},(i,j)∈S (1)
式中g(x,y),f(x,y)为像素灰度值,S为模板窗口。
而中值滤波的具体实现过程一般为:
(1)选择一个(2n+1)×(2n+1)的滑动窗口(通常为3*3或者5*5),使其沿图像数据的行或者列方向逐像素滑动(通常为从左至右,从上到下逐行移动)。
(2)每次滑动后,对窗口内的像素灰度值进行排序,用排序所得的中间值代替窗口中心位置像素的灰度值。
2.2中指滤波的改进算法
中值滤波的算法很多,但通常数据排序量较大。需要消耗大量时间,不利于图像处理的实时性。本文采用一种窗口大小为3*3的快速排序算法。大大降低了排序量。
为了便于说明。将3*3窗口内的各个像素分别定义为M11,M12,M13,M21,M22,M23,M31,M32,M33。像素排列如表1。
首先分别对窗口中的每一行计算最大值、中值、最小值,这样一共可以得到9个数值,分别包括3个最大值、3个中值、3个最小值:
第一行的最大值:Max1=max[M11,M12,M13];
第一行的中值:Med1=med[M11,M12,M13];
第一行的最小值:Min1=min[M11,M12,M13];
依此类推:
Max2=max[M21,M22,M23];Med2=med[M21,M22,M23];Min2=min[M21,M22,M23];
Max3=max[M31,M32,M33];Med3=med[M31,M32,M33];Min3=min[M31,M32,M33];
式中,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。具体过程表示如下:
Min_of_Max=min[Max1,Max2,Max3];
Med_of_Med=med[Med1,Med2,Med3];
Max_of_Min=max[Min1,Min2,Min3];
则最后滤波结果:
Med_of_nine=med[Min_of_Max,Med_of_Med,Max_of_Min];
利用这种排序法的中值滤波运算仅需17次比较,与传统算法相比。比较次数减少了近2倍,且该算法十分适用于在FPGA上做并行处理,大大提高了滤波的速度。
3中值滤波器硬件电路设计
关键要完成2个模块的设计,分别是:
3.1 3*3窗口模块
用硬件实现二维中值滤波,很重要的一点是能可靠地存储实时图像数据,并且使延时最短。为了满足实时性的要求,对图像进行全帧预处理,但这种全帧预处理并不是先将整帧图像数据完全保存在存储器中后再对全帧图像数据进行处理,而是存储n-1行图像数据后便开始处理,其中n为窗口大小。在本设计中,选用3*3窗口的中值滤波器,即n=3。这样设计的好处是,FPGA可以以串行流水方式实现该模块,节省了许多时间,为实时处理创造了有利条件。图1给出3*3窗口中值滤波硬件框图。
众所周知,在复杂背景条件下,要对弱小目标进行准确有效地红外跟踪、探测是一个难题。这种情况下,由于目标与背景的对比度较小、信噪比较低,若直接进行跟踪、探测往往比较困难,所以必须先对图像信号进行滤波预处理,以达到抑制背景噪声。增加目标强度,从而提高图像信噪比的目的,为后续工作打下良好的基础。
实时图像处理器中,信号预处理包括对图像的各种滤波、直方图统计及均衡、图像增强、灰度变换等,它们共同的特点是处理数据量大,如果用一般的软件来实现势必会比较慢。而对于一些实时性要求比较高的系统,处理速度往往是要考虑的关键因素,一旦速度跟不上,实时性也无从谈起。针对图像预处理阶段运算结构比较简单的特点,用FPGA进行硬件实现无疑是理想的选择,这样同时兼顾了速度和灵活性,大大减轻了DSP的负担。
本系统采用Verilog HDL语言。利用一种快速的中值滤波改进算法对电路进行设计,并以Altera公司生产的Stratix II EP2S60F67214型FPGA芯片为硬件平台。该器件继承了Altera公司Stratix II系列的共同优点,由于引入了崭新的自适应逻辑模块(ALM),使得Stratix II有更高的性能和逻辑封装、更少的逻辑和布线级数以及更强的DSP支持,而Stratix II EP2S60F67214更是比Xilinx公司的类似器件Virtex-4XC4VLX60多出18%的器件逻辑,其中包括51 182个寄存器位,2 544 129个存储器位以及48 352个ALUT,该器件资源丰富,只需占用很小一部分实现中值滤波器,为后续设计的增长留有更多空间。
2 中值滤波的基本原理及改进算法
2.1中值滤波的基本原理
中值滤波是由Tukey发明的一种非线性信号处理技术,早期用于一维信号处理,后来很快被用到二维数字图像平滑中,是一种有效抑制图像噪声,提高图像信噪比的非线性滤波技术。它是一种邻域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。与均值滤波器以及其他线性滤波器相比,中值滤波器的突出特点是在很好地滤除脉冲噪声(Impulsive Noise)和椒盐噪声(Salt and Pepper Noise)的同时,还能够保护目标图像边缘轮廓的细凇S霉?奖硎疚??br>
g(x,y)=median{f(x-i,y-i)},(i,j)∈S (1)
式中g(x,y),f(x,y)为像素灰度值,S为模板窗口。
而中值滤波的具体实现过程一般为:
(1)选择一个(2n+1)×(2n+1)的滑动窗口(通常为3*3或者5*5),使其沿图像数据的行或者列方向逐像素滑动(通常为从左至右,从上到下逐行移动)。
(2)每次滑动后,对窗口内的像素灰度值进行排序,用排序所得的中间值代替窗口中心位置像素的灰度值。
2.2中指滤波的改进算法
中值滤波的算法很多,但通常数据排序量较大。需要消耗大量时间,不利于图像处理的实时性。本文采用一种窗口大小为3*3的快速排序算法。大大降低了排序量。
为了便于说明。将3*3窗口内的各个像素分别定义为M11,M12,M13,M21,M22,M23,M31,M32,M33。像素排列如表1。
![]() |
首先分别对窗口中的每一行计算最大值、中值、最小值,这样一共可以得到9个数值,分别包括3个最大值、3个中值、3个最小值:
第一行的最大值:Max1=max[M11,M12,M13];
第一行的中值:Med1=med[M11,M12,M13];
第一行的最小值:Min1=min[M11,M12,M13];
依此类推:
Max2=max[M21,M22,M23];Med2=med[M21,M22,M23];Min2=min[M21,M22,M23];
Max3=max[M31,M32,M33];Med3=med[M31,M32,M33];Min3=min[M31,M32,M33];
式中,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。具体过程表示如下:
Min_of_Max=min[Max1,Max2,Max3];
Med_of_Med=med[Med1,Med2,Med3];
Max_of_Min=max[Min1,Min2,Min3];
则最后滤波结果:
Med_of_nine=med[Min_of_Max,Med_of_Med,Max_of_Min];
利用这种排序法的中值滤波运算仅需17次比较,与传统算法相比。比较次数减少了近2倍,且该算法十分适用于在FPGA上做并行处理,大大提高了滤波的速度。
3中值滤波器硬件电路设计
关键要完成2个模块的设计,分别是:
3.1 3*3窗口模块
用硬件实现二维中值滤波,很重要的一点是能可靠地存储实时图像数据,并且使延时最短。为了满足实时性的要求,对图像进行全帧预处理,但这种全帧预处理并不是先将整帧图像数据完全保存在存储器中后再对全帧图像数据进行处理,而是存储n-1行图像数据后便开始处理,其中n为窗口大小。在本设计中,选用3*3窗口的中值滤波器,即n=3。这样设计的好处是,FPGA可以以串行流水方式实现该模块,节省了许多时间,为实时处理创造了有利条件。图1给出3*3窗口中值滤波硬件框图。
红外 FPGA DSP Verilog 电路 Altera Xilinx 滤波器 比较器 Quartus ADI 相关文章:
- 基于红外遥控的数字调节开关电源设计与实现(10-24)
- 基于单片机技术的室内报警器的设计(02-16)
- 毫米波雷达前端系统设计(05-03)
- 一种高性能红外信号检测开关的设计与实现(05-27)
- 可控硅在红外遥控开关中的应用及工作原理(01-07)
- 利用红外线传感器实现接近感应应用(03-11)