可见光视频去噪及其FPGA硬件实现 下载: 531次
1 引 言
视频信号产生噪声的主要原因是在采集、压缩、传输等过程中受到周围环境、温度等方面的影响,以及设备、传输信道等因素的干扰。一方面,由于相机自身成像时图像会产生非均匀性或者在传输过程中产生动态噪声;另一方面,外在的环境因素,如雾霾、沙尘暴等极端恶劣天气、或光照不足的情况下,成像对比度较低,从而存在图像污染、模糊或轮廓丢失等问题,导致接收到的视频信号质量严重下降,影响视频的视觉效果,也为后续的分析及视频图像的增强[1]带来不便。因此,视频实时去噪算法研究有着广泛的应用价值与实际意义。
目前,较为普遍的视频去噪算法大致可以分为三类:变换域去噪、空间域去噪和时间域去噪。变换域去噪又称为频域去噪,先对图像进行特定的变换,如傅里叶变换、离散余弦变换[2]和小波变换[3]等,把图像信号转换到变换域中,针对图像真值和噪声在频域上的区别进行处理,再把处理完的数据反变换后得到去噪后的图像,这就导致该去噪方式的运算时间较长。近年来,虽然小波变换在视频去噪领域中有了较大的发展,但固定小波基的分解模式不能完全表示自然图像,去噪结果会有一定的偏差[4]。非下采样轮廓波(Nonsubsampled Contourlet, NSCT)算法[5]利用非下采样轮廓波变换,弥补轮廓波有下采样的缺点,增加视频帧中的结构信息特征,算法复杂度也相应提升。空间域去噪算法主要去除的噪声以加性噪声为主,因为视频图像中邻域像素相关性较强,一般可根据邻域像素的局部特征对视频去噪[6]。一些经典的空间域去噪算法主要为中值滤波、均值滤波及自适应滤波等。经典的空域滤波虽然复杂度低、运算时间短,但会模糊视频细节;为改善空域滤波的效果,基于马尔可夫随机场理论的模型,如FRAME模型[7]、VISTA模型[8]、FOE模型[9]等,通过学习的方式获得参数,能够避免人为设置参数所造成的误差,因此有很大的优势[10]。时间域滤波利用视频前后几帧的相关性来设计算法达到去噪的效果,如基于金字塔结构的去噪算法[11],满足实时性要求,但去噪效果还有上升空间。近年来,多种域结合的算法,如空间域与频率域结合的三维块匹配(Block Matching 3D,BM3D)算法[12]被提出,此算法在转换域中加强稀疏表达,在处理图像细节及高斯白噪声时效果较好,但在处理具有高对比度图像的边缘时,由于匹配块不能完整表示图像细节,图像边缘会产生振铃效应[13]。除此之外还有时空频域结合的算法[14],该算法结合了时空域的降噪方法,同时在频域上采用了高斯和拉普拉斯金字塔,达到了很优秀的去噪效果,然而算法复杂度高,且未实现实时处理。在考虑到硬件并行设计方面,也出现了结合时空域的运动纹理感知去噪算法[15] 。
为了提高视频去噪算法的去噪能力与实时运行时间,本文提出了一种针对可见光波段的时空域去噪算法,并成功移植到FPGA硬件平台。
2 去噪原理
本文的视频去噪算法的完整流程如图1所示。该算法先用高斯差分(Difference of Guassian, DOG)滤波得到4层DOG来提取当前帧图像的特征信息;再对最高层DOG1用卷积模板做空间域滤波,抑制高频噪声;剩下3层DOG在时间域上采用区域分割滤波,对不同的区域采取不同的滤波策略;最后把处理后的各层图像相加,得到最终的去噪结果。
2.1 高斯差分滤波
为了使算法具有运动补偿的效果,需要对每帧图像的特征区域进行提取。现有的DOG滤波[16]具有较好的边缘检测能力,广泛地应用于数字信号图像处理中。其函数表达式为:
其中:与为高斯滤波的标准差,并且,,表示二维平面的横纵坐标。由于高斯滤波函数对图像的平滑程度是通过实现的,越大,平滑程度越高,高频成分越少。当DOG滤波器中心区域通过点线特征较为明显的区域时,因为点线特征周围的背景灰度值较小,高斯滤波后特征处的结果数值较大;当滤波器中心通过灰度值起伏变化不大的平缓区域时,高斯滤波结果则趋于零。如此,便达到了抑制平缓背景的效果。
本算法使用了4个高斯滤波参数,4个参数的大小为,具体取值为1.5,2.5,5.5,10.5,对应得出4层DOG结果:DOG1,DOG2,DOG3,DOG4。以实验视频其中一帧为例,4层DOG如图2所示。由于最小,DOG1中包含的高频噪声最多,需要单独对DOG1做进一步的高频噪声抑制处理。
2.2 空间域滤波
为了滤除DOG1中的高频噪声,单独对该层进行空间域滤波。由于噪声大部分都服从高斯分布,该层内的高频噪声即为邻域范围内的极大值点,在图像二维平面内可转换成求离散函数的偏导,公式如下:
由此可知,高频噪声只有邻域极大值的特征而不含有表征方向的信息,因此可用基于梯度的卷积模板来剔除高频噪声,提取含有方向信息的图像特征边缘轮廓信息。
用来抑制极大值的空域滤波卷积模板如下:
其中:
2.3 时域区域分割滤波
在运动场景中,前后两帧的线面特征会产生位移,静止背景部分的平坦区和特征区域部分的突变区可以通过前后两帧之差进行区分。为了进一步滤除噪声,需要对4层DOG进行时间域上的滤波,即在时间域上对4层图像数据进行区域分割,具体分割方式如图3所示。
计算当前帧DOG与上一帧去噪结果的差值,当这个差值小于阈值时,判定当前像素在平坦区域,像素值不变;当差值大于阈值时,判定当前像素在突变区域,取上一帧去噪结果与当前帧DOG的加权平均作为当前帧的去噪结果,其中,权值a通常取0.8,表明前一帧的滤波结果对当前帧的滤波结果影响较大。最后把4层DOG的滤波结果和对应的高斯滤波结果相加得到去噪后的图像,如图4所示。
3 算法的FPGA实现
该算法使用VIVADO 2019进行硬件编程,在ZYNQ7045,型号为xc7z045ffg900-2的硬件开发平台上实现,cameralink接口连接开发板与黑白可见光相机成像,HDMI接口连接开发板视频输出端口与显示屏,最终显示去噪后的视频图像,总体硬件架构如图5所示。
首先,相机输入的视频数据流通过cameralink接口进入数据解码模块,该模块将数据流转换成标准的VGA时序信号后输出;在进入下一个模块之前,需要利用Video In to AXI4-stream 这个IP核把VGA时序信号转换成AXIstream格式的数据流,因为分层模块需要的输入输出数据都是AXIstream格式的数据;数据格式转换完成后,通过分层模块把原始视频帧信号分成4层,输入数据格式转换模块,该模块由5个Video In to AXI4-stream IP核组成,把4层数据信号加上原始图像数据转换成标准VGA时序信号,方便时空域滤波模块对数据的处理;FDMA(AXI4 FULL MASTER DIRECT MEMORY ACCESS)能通过控制模块、MIG控制器和DDR交互,对滤波模块输出结果通过三缓存的方式存入DDR,然后输出上一帧的滤波结果给滤波模块;VDMA(VIDEO DIRECT MEMORY ACCESS)是VIVADO中专门用来传输图像数据的IP核,通过该IP核将最终结果送入HDMI实现结果在显示器的显示;HLS图像分层模块和VDMA都需要通过PS(Processing System)部分的ARM核来配置参数。
3.1 Cameralink数据解码模块
本文算法实现所选用的可见光相机输出单通道8 bit视频帧数据,采用的Cameralink标准的视频传输模式是Base模式。FPGA开发板收到的图像相关信号有28 bit,包括1 bit场有效信号、1 bit行有效信号、1 bit数据有效信号和24 bit数据信号。24 bit的数据信号分成A,B,C三个端口,根据相机每时钟周期输出的像素个数使用的端口数不同,根据端口定义就能够解码得出正确的图像数据。最后,把该解码模块封装成IP核添加在本设计中,解码出来的数据如图6所示。其中,v_sync与h_sync分别是场有效信号与行有效信号。检测到场有效信号上升沿时为一帧视频的开始,下降沿为一帧视频的结束;行有效信号为1时,表示正在进行一行数据的传输;数据有效信号与行有效信号相同。D16_o是最后解码出来的视频数据信号。
3.2 HLS数据分层模块
该模块用来实现4个不同参数的高斯滤波,为后续产生4层DOG做准备。如果高斯滤波使用HDL编程,不仅代码复杂度高,而且会占用大量资源,所以使用赛灵思自带的VIVADO HLS工具来实现。HLS支持C语言编程,并且支持包含Opencv在内的视频图像处理库函数,完成编程后,能直接把C语言综合成HDL代码组成的IP核,同时自带优化指令,方便IP优化,大大降低了开发时间。
为了进一步简化代码,便于硬件实现,把高斯滤波简化为先用4次降采样,得到4个降采样数据,然后分别还原成原始图像的分辨率,降采样和还原分辨率用到的HLS库函数分别是hls::Prydown和hls::Resize。最后封装完成的IP核如图7所示。其中,输入端s_axi_AXILiteS是控制信号,src_axi是数据信号,ap_clk是时钟信号,ap_rst_n是复位信号;输出端dst_axi,dst_axi2-5分别是4个降采样并还原原始分辨率后的数据信号和一个原始数据信号。
3.3 空间域滤波模块
FPGA实现图像的空域滤波算法基于滤波模板与图像数据做滑动窗口卷积,需要在FPGA内开辟一个缓存区形成图像窗口。选择shiftram IP核作为缓存图像数据的寄存器,在与N×N的卷积模板做卷积时,一共需要N个shiftram IP核。本算法选取5×5的卷积模板,共需要5个shiftram IP核。以3×3卷积窗口为例,实现原理如图8所示。
3.4 时间域滤波模块
时间域滤波移植到FPGA硬件平台上要主要解决的问题是滤波结果的多帧缓存以及当前帧DOG与上一帧滤波结果的像素匹配处理。DDR3因其内存大、有赛灵思提供的MIG控制器来控制其读写,是用于多帧缓存的最佳选择;同时,为实现像素匹配,需要有一个高速接口访问DDR3,因此加入FDMA IP核。
FDMA是DMA(DIRECT MEMORY ACCESS)的变形。DMA包含一条数据总线和一条地址总线,一般具有能一次传输多个字节数据的突发传输的功能,能大大增强系统的整体吞吐能力[17]。FDMA就是在DMA的基础上把两条总线换成AXI4-FULL(Advanced eXtensible Interface)总线协议,以便与MIG控制器进行数据交互。FDMA IP核如图9所示。通过上述自定义IP模块就能快速进行数据交互,实现像素配准。
为了生成FDMA输入端的数据打包格式,需要有一个FDMA控制模块,需要给FDMA输出读写请求和读写地址信号,并通过输入视频帧的行场信号控制异步FIFO把8位数据组包成32位数据送入FDMA,同时把对应地址的FDMA输出的32位DDR读出数据拆包成8位上一帧滤波结果数据,送入计算模块,异步FIFO组包数据流如图10所示。
FIFO写入时钟为25 MHz,读出时钟约为150.7 MHz,以写入时钟约6倍的速度读写DDR,可使视频当前帧数据与从DDR中读出的上一帧视频数据同时输入下一个模块,完成时域区域分割滤波。
由于需要对4层DOG进行滤波处理,利用FPGA的并行处理能力,采用4路FDMA IP核通过AXI4总线连接到MIG控制器,使得四路DOG能够同时输入输出。
4 实验与结果分析
硬件平台的搭建及去噪结果如图11所示。硬件平台由结果显示器、编程及操作显示器、ZYNQ7045开发板、可见光黑白相机(通过Cameralink接口与开发板相连)及拍摄目标组成。为了能直观地显示去噪效果,显示器可同时输出相机原图和去噪后图像,上半部分为原始视频图像,下半部分为去噪后的视频图像。可以看出,该算法有一定的去噪效果,但由于选用的相机噪声较小,视觉效果不太明显。
4.1 定性实验
对15个含噪可见光视频场景,用本文算法(包括MATLAB软件平台与FPGA硬件平台)、NSCT去噪算法[18]、FOE算法[9]、基于金字塔结构的去噪算法[11]和BM3D算法[12]进行处理,截取其中一帧,去噪结果如图12所示。
图 12. 本文算法软硬件实现结果及不同去噪算法的结果
Fig. 12. Denoising results of software and hardware of proposed algorithm and denoising results of different algorithms
图中,原始图像是用低噪相机拍摄的视频场景,含噪原图采用原图加上幅度为20 dB的噪声合成。从视觉效果上看,BM3D算法对噪声有一定的抑制,且图像细节保留也较为完好,但是图像的明暗程度有所改变;NSCT算法对噪声的抑制最为明显,但细节模糊较为严重;FOE算法和基于金字塔结构的去噪算法都有一定的去噪效果,也都保留了图像细节;本文算法在不改变图像明暗的同时,对噪声有明显的抑制,且细节部分保留完好。
算法的硬件移植方面,在视觉效果上MATLAB处理后对比原图去噪效果明显,且无拖尾现象产生;移植到FPGA上后,处理结果与MATLAB相比无明显差别。
4.2 定量实验
将本文算法包括MATLAB软件平台与FPGA硬件平台的实现与NSCT去噪算法[18]、FOE去噪算法[9]、基于金字塔结构的去噪算法[11]和BM3D去噪算法[12]的结果用峰值信噪比(Peak Signal to Noise Ratio, PSNR)、结构相似性(Structural Similarity Index Measure, SSIM)和一帧视频处理时间进行评价。其中,PSNR是信号峰值与噪声均值之比,数值越大,失真越小;SSIM从亮度、对比度、结构三个方面分析处理前后图像的相似性,取值区间为[0,1],值越大,失真越小。PSNR与SSIM的计算公式分别为:
其中:n表示采样值的比特数,MSE是原图与处理后图像间的均方误差,x,y为两幅图像,,分别是x,y的均值,,分别是x,y的方差,是x和y的协方差,和是用来维持稳定的常数。计算结果如表1~表5所示,其中金字塔表示基于金字塔结构的去噪算法,MATLAB实现和FPGA实现分别表示本文算法在MATLAB和FPGA上的实现。由表可知,本文算法在大部分场景中的定量指标都优于NSCT算法、基于金字塔结构的算法和BM3D算法。在场景5中,本文算法的PSNR相比NSCT算法的PSNR提升一倍左右;本文算法的PSNR虽然在场景11这种明亮且背景单一的地方稍低于FOE算法的PSNR,但总体而言相差不大且SSIM有一定的提升;在SSIM指标上,4种算法比较接近,在场景13中NSCT算法的结果虽然比本文算法更加模糊,且PSNR指标明显低于本文算法,但SSIM数值却略高于本文算法。其原因可能为:在场景13这种线条特征明显、整体灰度值变化平稳的场景,SSIM指标更倾向于去噪后图像的平滑性,而对图像的模糊程度考量较少。总体而言,本文算法相较于其他算法在整体稳定性方面比较突出。在处理时间上,NSCT算法所用时间最长,大约50 s才能处理一帧视频,FOE算法大约需要3 s,基于金字塔结构的算法、BM3D算法和本文算法都只需要0.4 s左右的时间,但在绝大多数场景下,本文算法的处理时间仍优于基于金字塔结构的算法和BM3D算法。综合上述3个客观指标,由于本文算法结合了时间域和空间域滤波并分区域采用不同的去噪手段,去噪能力有了可观的提升。
表 1. 场景1~3处理结果对比
Table 1. Comparison results of scene 1-3
|
表 2. 场景4~6处理结果对比
Table 2. Comparison results of scene 4-6
|
表 3. 场景7~9处理结果对比
Table 3. Comparison results of scene 7-9
|
表 4. 场景10~12处理结果对比
Table 4. Comparison results of scene 10-12
|
表 5. 场景13~15处理结果对比
Table 5. Comparison results of scene 13-15
|
本文算法移植到FPGA硬件平台后,FPGA处理后的结果在PSNR方面比MATLAB平均降低约0.4 dB,在SSIM方面平均降低了约0.02 dB,均可视为在误差允许范围内;而在运行时间方面,FPGA比MATLAB减少了0.2 s多,约减少了71.5%,大大提升了算法的实时性。本文算法移植到FPGA平台上的资源占用情况如图13所示,占用的FPGA开发板的资源不到50%,也可说明本文算法移植到硬件平台的有效性。
5 结 论
为了克服可见光视频去噪算法细节模糊、处理时间长、实时性差等缺点,本文提出了一种结合时间域与空间域滤波的去噪算法,先利用高斯差分滤波使原图分层,对含高频噪声最多的图像层进行空域滤波,抑制信号极大值;然后把当前帧各尺度滤波后的图像当作下一帧滤波的输入,在时间域上形成反馈,区分每帧图像对上一帧而言的平坦区域与突变区域,并采用不同的去噪策略;最后把算法分为多个模块,利用卷积模板进行空域滤波,控制DDR形成4路视频数据流在ZYNQ7045 FPGA硬件平台上实时实现。实验结果表明,本算法在主观上实现了视频去噪的功能;在客观评价指标方面,相比于现有的单域去噪算法,PSNR至多可提升15 dB;移植到硬件平台后,在PSNR和SSIM指标相差不大的情况下运行时间可节省约71.5%,兼顾了可见光视频去噪的精度与实时性要求。
[1] WAN M J, GU G H, QIAN W X, et al. Infrared image enhancement using adaptive histogram partition and brightness correction[J]. Remote Sensing, 2018, 10(5): 682.
[3] KINGSBURY N. Complex wavelets for shift invariant analysis and filtering of signals[J]. Applied and Computational Harmonic Analysis, 2001, 10(3): 234-253.
[5]
[7] ZHU S C, WU Y, D.Filters MUMFORD. towards a unified theory for texture modeling[J]. International Journal of Computer Vision, 1998, 27: 107-126.
[12] DJUROVIĆ I. Combined centre-weighted Median filter and BM3D to filter digital images in mixed Gaussian and impulsive environments[J]. IETE Journal of Research, 2018, 64(6): 796-806.
[17]
Article Outline
赵思娴, 万敏杰, 钱惟贤, 周琳, 韶阿俊, 陈钱, 顾国华. 可见光视频去噪及其FPGA硬件实现[J]. 光学 精密工程, 2022, 30(15): 1868. Sixian ZHAO, Minjie WAN, Weixian QIAN, Lin ZHOU, Ajun SHAO, Qian CHEN, Guohua GU. Visible light video denoising and FPGA hardware implementation[J]. Optics and Precision Engineering, 2022, 30(15): 1868.