基于FPGA的低照度条件下EBAPS图像混合噪声去除算法

引言

本文提出了基于可编程逻辑门阵列(field programmable gate array,FPGA)的开关融合中值-高斯(open and close mix-median-Gaussian,OCMMG)滤波算法。该算法将脉冲噪声检测与中值滤波相结合用于解决混合噪声中的脉冲噪声,边缘检测与高斯滤波相结合用于解决混合噪声中的泊松噪声,该算法还加入了脉冲噪声判别权重和边缘置信度表征值2个参数增加图像保护边缘的能力。基于FPGA对1×10−3 lx照度条件下EBAPS采集的图像进行实时处理,以验证算法的有效性。

1. OCMMG滤波算法原理

OCMMG滤波算法是一种基于中值滤波和高斯滤波的融合滤波方法,首先采用最小四方向差值进行脉冲噪声检测,进行第1步滤波处理;然后采用四方向边缘检测提取边缘进行第2步滤波处理,得到最后的滤波图像。

1.1 最小四方向差值

在一幅含有噪声的图像中存在梯度突变的边缘或角点不会出现非连续性的小异常窗口,根据梯度突变异常情况来判别高频脉冲噪声对整体图像的影响,本文采用最小四方向差值判别脉冲噪声。

9cb50afe-192f-11f1-90a1-92fbcf53809c.png

(1)

(2)

式中:Γi 为方向检测模板; Ω 是以f(i,j) 为中心的邻域像素集合;f(u,v) 是Ω 内像素(u,v) 处的灰度值;D(x,y)min 是四方向邻域差值中的最小值;min{} 为集合中的最小值。(3)式为传统中值滤波公式,将传统的中值滤波公式引入脉冲噪声判别权重ρ ,(4)式为改进的滤波公式,也为本文第1步滤波算法处理。

9d74646c-192f-11f1-90a1-92fbcf53809c.png

(3)

(4)

9e2a8724-192f-11f1-90a1-92fbcf53809c.png

(5)

式中:f(x,y)为当前像素灰度值;T1 为脉冲噪声判别阈值;h 为常数,此处令h=10 ;med() 为像素集合的中值;g(x,y) 为滤波处理之后中心像素灰度值。当D(x,y)min 远大于T1 时,则认为该像素点为脉冲噪声的可能性高,此时的ρ 值趋近于1,当前像素点会更大程度地进行中值滤波;反之,则会保持原来像素点的值不变。

1.2 四方向边缘检测

本文基于传统的Sobel[26]算子,提出了四方向Sobel算子进行边缘提取,增加了45 °和135 °的梯度方向,弥补了传统Sobel算子对于斜角方向边缘及角点检测的不足,并根据窗口边缘、纹理情况设立边缘置信度指标表征中心像素为细节纹理的区域。四方向离散型的Sobel掩模如(6)式所示,(7)式为梯度G的计算公式。

9e84caea-192f-11f1-90a1-92fbcf53809c.png

(6)

9ee1d532-192f-11f1-90a1-92fbcf53809c.png

(7)

式中:R是以(p,q)为中心邻域范围像素点的集合;(p,q)是邻域像素点位置。(8)式为传统的高斯滤波公式,(9)式变换为离散的高斯滤波公式,在(9)式的基础上引入边缘检测判别权重τ,作用与(5)式同理,最终滤波结果为(10)式。

9f3cd234-192f-11f1-90a1-92fbcf53809c.png

(8)

9f9b24a6-192f-11f1-90a1-92fbcf53809c.png

(9)

9ff71536-192f-11f1-90a1-92fbcf53809c.png

(10)

a054abb0-192f-11f1-90a1-92fbcf53809c.png

(11)

式中:F(x,y) 为最终滤波后的像素灰度值;w为高斯滤波权重;k为常数,此处令k=10 ;θ为边缘置信度表征值。OCMMG滤波算法适用于处理脉冲噪声与泊松噪声混合污染的图像。

2. 基于FPGA算法硬件实现

整体硬件设计如图1所示。整个系统以FPGA为核心,包括驱动模块、算法模块、缓存模块和显示模块。

a0ae32ca-192f-11f1-90a1-92fbcf53809c.jpg

图 1 系统总体框架设计

2.1 总体逻辑设计

本文中有效像素阵列为1 280×1 024,系统工作时钟50 MHz,EBAPS驱动时钟40 MHz。在整个系统工作过程中,EBAPS进行图像采集,采集到的信号模拟信号,经过AD模数转换器将模拟信号转换为数字信号,图像数据信号被FPGA接收,将数据进行本文的图像算法处理,通过VIO模块实时调节阈值参数,利用AXI4总线协议,将算法处理后的图像储存到DDR3[27]中,最后进行编码输出,在显示器上显示。系统运用了模块化的思想,模块中的流水线操作节约了资源,还增加了数据的吞吐量,提高了系统运行速度,达到实时性处理的目的。本文将重点讲述算法处理模块的设计,算法模块具体流程如图2所示。

a10a9402-192f-11f1-90a1-92fbcf53809c.jpg

图 2 算法模块流程图

2.2 3×3模板生成模块硬件设计

在FPGA中,图像的数据信息是以数据流的形式传输,一个时钟周期只能发送一个数据。本文图像的分辨率是1 280×1 024 @ 30 帧/s,采用寄存器数组移位来生成3×3模板,该寄存器位宽为8 bit,容量是20 504 bit,能够存下2 563个数据,在数据有效信号为高电平时,数据进入寄存器,并随着时钟进行移位,取寄存器中第1个、第2个、第3个、第1 281个、第1 282个、第1 283个、第2 561个、第2 562个和第2 563个数据组成3×3模板。具体流程如图3所示。

a16eff6e-192f-11f1-90a1-92fbcf53809c.jpg

图 3 3×3模板生成图

在数据传输过程中,取移位寄存器固定位置的数据,完成3×3模板的生成与滑动。设经过移位寄存器固定位置的数据分别为a11、a12、a13、a21、a22、a23、a31、a32和a33,如图4所示。

a1cd3b24-192f-11f1-90a1-92fbcf53809c.jpg

图 4 3×3矩阵映射图

2.3 最小四方向差值模块

采用最小四方向差值的方法对脉冲噪声进行检测。将3×3模板里的数据与最小四方向差值掩模进行卷积,为了使计算结果始终保持正数,需要将进行减法的两端数据用大减小,输出正的4个方向的差值,之后再两两进行比较,最后输出最小四方向差值,具体流程图如图5所示。

a23053b2-192f-11f1-90a1-92fbcf53809c.jpg

图 5 最小四方向差值流程图

方向1、方向2、方向3、方向4是4个方向的差值,其最小值为最小四方向差值。从3×3窗口到计算出最小四方向差值共消耗了4个时钟周期。

2.4 快速中值滤波算法模块

快速中值滤波模块流程图如图6所示。

a29d06d8-192f-11f1-90a1-92fbcf53809c.jpg

图 6 快速中值滤波模块流程图

快速中值滤波排序详细说明:

1) 列数据排序为将每一列中的3个数据两两进行比较,划分出每一列中的最大值data_max、中间值data_med、最小值data_min。

2) 排序1为将3个最大值数据两两进行比较,划分出最大值中的最小值data_max_min;排序2为将3个中间值数据两两进行比较,划分出中间值中的中间值data_med_med;排序3为将3个最小值数据两两进行比较,划分出最小值中的最大值data_min_max;

3) 排序4为将data_max_min、data_med_med、data_min_max 3个数据两两进行比较,划分出中间值data_median,此为3×3窗口的中值数据。

排序完成后,用自带的仿真工具仿真,发现数据从输入到选出中值数据输出共耗时5个时钟周期,因此对同步信号延时5个周期使数据与数据对齐。

2.5 边缘检测模块

边缘检测模块流程图如图7所示。

a304e24e-192f-11f1-90a1-92fbcf53809c.jpg

图 7 边缘检测模块流程图

在计算G1、G2、G3、G4时,需要加入判断,检测减数和被减数之间的大小关系,保证G1、G2、G3、G4结果为正整数。梯度求和结果G2的计算公式为

a3678af2-192f-11f1-90a1-92fbcf53809c.png

(12)

为了节约资源减少计算量,用梯度平方G2代替梯度的值。边缘检测模块从输入数据到判定是否为边缘点共消耗了4个时钟周期。

2.6 高斯滤波模块

用3×3矩阵[1,2,1;2,4,2;1,2,1]代表离散形式的高斯滤波模型,此滤波模板为一种低通滤波器,与其他滤波器模板相比(如均值滤波),本文滤波模板既加强了中心像素的权重,具有一定的图像平滑作用,又避免了过度平滑,并且在计算中避免了浮点数的出现,高斯滤波模板如图8所示。

a3c36994-192f-11f1-90a1-92fbcf53809c.jpg

图 8 高斯滤波模板

将卷积后得到的二进制结果进行归一化处理,右移4位作为最终的高斯滤波结果。在高斯滤波模块中,从输入数据到输出数据共消耗2个时钟,因此需要将高斯滤波模块的输出数据再延迟2个时钟,同步信号延迟4个时钟,与边缘检测模块的数据对齐。

3. 仿真与实验

本文对测试图片进行仿真,并设置了多种客观评价指标对仿真结果进行分析;此外,基于FPGA实现了实时去噪算法,并对实验结果进行对比。

3.1 仿真实验对比分析

本文以512×512像素分辨率的Lena、Goldhill、Pepper作为测试图片来验证实验结果,经过反复大量仿真实验,验证了本文算法的可行性。根据EBAPS探测器的成像特点,随着照度的降低,所采集图像灰度值的分布逐渐降低,灰度范围逐渐变小,并且存在以泊松和脉冲噪声为主要噪声的混合噪声。本文在3张测试图片的基础上降低其对比度和灰度值,并添加一定程度的混合噪声来模拟不同低照度下的成像效果。通过人眼主观观察,将经过上述处理过的图片添加泊松噪声和2%的脉冲噪声较为合适,图9为仿真测试图,其中图9(a)为原始图像,图9(b)为模拟偏暗环境光照度下的测试图,图9(c)为模拟中等暗环境光照度下的测试图,图9(d)为模拟暗环境光照度下的测试图。

a41ee26a-192f-11f1-90a1-92fbcf53809c.jpg

图 9 仿真测试图

对不同照度的测试图片分别进行了中值滤波、高斯滤波、文献[24]、文献[25]的算法和本文算法进行处理,得到处理后的结果图和客观评价指标。用客观评价指标对去噪后的图片进行评价,客观评价指标有峰值信噪比(PSNR)[28]、结构相似性(SSIM)[29],利用边缘保持指数(EPI)[30]评价边缘保留程度。图10~图12分别是去噪后的结果对比图。表1~表3分别是去噪后的评价结果。

a48cbec0-192f-11f1-90a1-92fbcf53809c.jpg

图 10 照度1的去噪结果对比图

由表1~表3所示,本文算法的3种客观评价指标均优于与其对比的4种算法,具有更好的去噪能力和保护边缘的能力,该算法相比于中值滤波和高斯滤波算法,峰值信噪比分别提高了3.23%和16.34%,结构相似性分别提高了14.66%和33.86%,边缘保持指数分别提高了0.49%和4.21%。与文献[24]与文献[25]相比,本文算法在峰值信噪比PSNR、结构相似性SSIM、边缘保持指数EPI均为最优结果。由图10~图12可知,文献[24]中的算法滤波算法结果良好,去除了大部分的脉冲噪声,但图像仍有颗粒感;文献[25]中的算法在照度越低的情况下,图像中出现的黑点越多;本文算法的滤波效果图更符合人眼观察。

a4f8716a-192f-11f1-90a1-92fbcf53809c.jpg

图 11 照度2的去噪结果对比图

a55fd828-192f-11f1-90a1-92fbcf53809c.jpg

图 12 照度3的去噪结果对比图

a5c222da-192f-11f1-90a1-92fbcf53809c.png

表 1 照度1的测试图去噪后评价结果

a61da290-192f-11f1-90a1-92fbcf53809c.png

表 2 照度2的测试图去噪后评价结果

a67bcdca-192f-11f1-90a1-92fbcf53809c.png

表 3 照度3的测试图去噪后评价结果

3.2 FPGA硬件实验与结果

本文采用自主研制的EBAPS图像传感器,型号为UV1280,分辨率为1 280×1 024像素,像素尺寸为12.5 μm,曝光方式为卷帘式曝光,光谱响应范围为0.3 μm~0.97 μm,像素时钟要求小于80 MHz,本文采用40 MHz,输出为差分模拟信号,需要经过AD芯片转换成数字信号进行输出。本文采用的AD芯片为TI公司ADC14C080,是一款具有模拟差分信号输入、14 bit数字输出的高性能低功耗的模数转换芯片,转换速率高达80MSPS。FPGA型号为XC7A100TI-CSG324,速度等级为-1L。图13为硬件设备及其内部结构图,包括镜头、EBAPS图像传感器、EBAPS转接底座、AD电路板、FPGA核心板、HDMI显示板、JTAG转接板和外部结构。在EBAPS侧片加入高压环,用自主研制的高压电源给EBAPS加负高压以实现电子加速,用KLL-04型宽量程微弱光照度计实时测量环境光照度,图14为高压电源与照度计图。

a6d74a06-192f-11f1-90a1-92fbcf53809c.jpg

图 13 硬件设备及其内部结构图

a7372a16-192f-11f1-90a1-92fbcf53809c.jpg

图 14 高压电源与照度计

本次实验分别在1×10−1 lx、1×10−2 lx、1×10−3 lx环境光照度的条件下进行图像采集,采用固定光圈,固定负电压2 000 V,将采集到的未经处理的图像和经过本文滤波算法实时处理的图像进行对比。

需要注意的是采集到的图像会出现条带状噪声及黑色点状污渍,此为EBAPS工艺所导致,不在本文考虑范围之内,故可以忽略。图15~图16为室内静态环境结果对比图,图17为夜晚外部环境实验结果对比图。

a792ac88-192f-11f1-90a1-92fbcf53809c.jpg

图 15 静态靶标实验结果对比图

a7ef4be6-192f-11f1-90a1-92fbcf53809c.jpg

图 16 静态SF实验结果对比图

a84b0d0a-192f-11f1-90a1-92fbcf53809c.jpg

图 17 夜晚外部环境实验结果对比图

在采集真实图像时,本文采用同一静态场景的多帧叠加求均值的方式滤除随机噪声并作为理想参考图像,分别计算仿真软件与FPGA经过本文滤波算法后的PSNR、SSIM和EPI。如表4所示,从表中可以看出FPGA硬件实现的客观评价指标与仿真效果相差不大,可以认为二者处理结果相符。

a8ae843e-192f-11f1-90a1-92fbcf53809c.png

表 4 仿真软件与FPGA算法客观评价一致性检验

除此之外,本文加入了3种照度下存在运动目标的图像进行对比分析,通过上位机进行视频图像的采集,截取视频图像中的某一帧进行实验结果对比,图18为运动目标实验结果对比图。

a90cbb62-192f-11f1-90a1-92fbcf53809c.jpg

图 18 运动目标实验结果对比图

由图15~图18可以看出,在环境光照度越低的情况下,图像的对比度和灰度均降低,在1×10−3 lx照度条件下,图像边缘明显,此时设置的边缘置信值较大,当环境光照度降低时,需要适当调小边缘置信值来增大边缘识别度,在该算法的细节展示上能够看出,噪声被去除的同时边缘并未存在明显的模糊现象,在处理静态和动态、室内和室外的场景都具有良好的去噪效果。

在图像处理速度方面,针对分辨率为1 280×1 024像素的图像进行处理时,由图19可以看出,仿真软件处理一帧图像的时间为46.637 s,根据图20所示的仿真波形可以看出,FPGA处理一帧图像所需时间大约为33.28 ms,约是仿真软件处理速度的1 401倍,远快于仿真软件的处理速度,能够达到实时性处理的要求。

a96bc1a2-192f-11f1-90a1-92fbcf53809c.jpg

图 19 仿真软件图像处理运行时间

a9ce59d4-192f-11f1-90a1-92fbcf53809c.jpg

图 20 FPGA图像处理运行时间

4. 结论

为了去除包括泊松噪声和脉冲噪声的混合噪声,本文提出了一种基于FPGA实现的用于低照度条件下EBAPS图像的实时OCMMG滤波算法。其主要解决思路为:针对像素异常点的突变,根据设置的判定阈值,采样最小四方向差值提取可疑像素点,进行第1步滤波处理;根据设置的边缘置信度表征值,采用四方向Sobel算子提取边缘,进行第2步滤波处理。仿真结果表明,无论是主观评价和客观评价指标,本文算法均为最优结果,具有一定的优越性。硬件实现结果显示,本文算法能够有效去除EBAPS图像在1×10−3 lx条件下的混合噪声,同时又能保留边缘信息,并且满足图像处理实时性的要求,可以作为低照度环境中提高图像质量的有效滤波方法。需要注意的是,文中设置的脉冲噪声判别阈值和边缘置信度表征值都为固定值,随着环境光照度变化,噪声大小也会发生变化,固定值会对图像处理造成一定影响。所以,在阈值的选取方面仍需开展进一步研究。

Gravatar

About 奥洁自由人

作者文章