曹亚辉,刘 峰
(南京邮电大学 图像处理与图像通信江苏省重点实验室,江苏 南京 210003)
基于FPGA的高清实时视频去雾系统的设计与实现
曹亚辉,刘 峰
(南京邮电大学 图像处理与图像通信江苏省重点实验室,江苏 南京 210003)
实现了基于Xilinx XC6SLX45 FPGA的高清实时视频去雾系统,详细介绍了系统的逻辑框架及主要的算法实现。首先,介绍了整个系统的硬件框架及FPGA内部的逻辑框架;其次,描述了改进的暗原色先验去雾算法,给出了在FPGA中的算法实现过程;最后,对系统进行测试。实验结果表明,该系统实现了预期的高清视频实时去雾,并具有自适应功能,去雾效果良好。
高清;实时;暗原色先验;视频去雾;FPGA
近年来环境的恶化导致雾霾天气增多,图像去雾的研究渐成热点。尤其是户外场景的视频监控更需要实时地对采集的视频图像去雾。同时,视频监控的高清化对视频去雾系统提出了更高的实时要求。文献[1]实现了PAL视频尺寸的实时去雾,但其没有考虑到色度信号的信息,还有一定可优化的空间。文献[2]通过利用GPU实现了图像去雾算法,但其目前主要应用于通用PC机平台,没有考虑到小型嵌入式系统的应用。文献[3]实现了基于暗原色先验[4]的PAL制视频去雾,但暂不支持高清视频去雾。文献[5]实现了基于DSP+FPGA高清实时视频去雾,但其不适用于低成本设备。本文采用了一种FPGA实时视频处理框架,并基于暗原色先验去雾算法,实现了720p视频60 Hz实时视频去雾,并具有自适应功能,系统成本低,且具有良好的扩展性,非常容易向1 080p视频去雾系统升级。
1.1 视频处理框架
视频处理的实时性以及高分辨率特点对整个视频处理系统的时延和带宽都提出了较高的要求,因此高效的视频处理框架是系统逻辑设计的关键之一。本系统的视频处理框架如图1所示,整个视频处理框架基于ARM AMBA AXI4[6]协议,使得整个框架具有高带宽、低时延、扩展性好等特点。首先贯穿整个处理框架的是AXI4 Stream[7]协议,它无需传输地址,并且具有无限长突发传输特点,适宜于宽带信号互联。同时该框架采用AXI4映射的外部内存帧缓冲进行输入输出时钟域的同步。最后FPGA内部还综合出一个MicroBlaze软核,通过AXI4-Lite协议配置IP的寄存器并提供额外的运算能力现了图像去雾IP核,具体内容将在下一节介绍。
1.2 系统资源
本视频去雾系统以Xilinx 的低成本Spartan 6 LX45为核心,内部集成了43 661个逻辑单元,2 088 kbit RAM,58个DSP Slice,并且还集成了内存控制器硬核,最大支持800 Mbit/s速率、12.8 Gbit/s峰值带宽,为高清视频处理提供了足够带宽。整个系统的输入输出基于HDMI接口,采用TI的TMDS141作为驱动器,兼容HDMI 1.3a标准,最高支持1 080p分辨率。
图1 视频处理框架
本系统实现的FPGA去雾算法主要参考文献[5]基于暗原色先验的方法,同时为了实现高清实时视频去雾,在去雾的效果和系统性能上做了一些折中。另外,本系统还借助于视频处理框架中的MicroBlaze软核实现了自适应算法,提高了去雾视频的用户体验。
2.1 逻辑设计
去雾算法的逻辑实现如图2所示。整个去雾分成3个模块实现,输入图像依次经过暗通道图像计算模块A、雾天透射率计算模块B和无雾图像生成模块C,最后完成图像去雾后输出。为了实现图像处理的流水线操作,整个图像处理IP基于像素流,即所有的像素都是串行地依次经过模块A、B、C并输出,从而每一个模块都是基于逐个像素进行处理,并配合FIFO进行各个模块之间缓冲,有利于实现高带宽、低时延的IP核。下面依次介绍各个模块的实现。
图2 算法逻辑框图
1) 暗通道图像计算模块
暗原色先验是针对户外无雾图像统计得出的规律,即在绝大部分非天空局部区域中,每个像素至少会有一个通道具有极低的密度。由该密度值组成的图像称为暗通道图像,因此图像中被浓雾覆盖区域的暗通道往往具有较高的强度值。暗通道图像可以近似地估计出图像透射率,即为模块B雾天透射率计算模块所用。
暗通道的数学模型定义为
(1)
式中:Jc是J的一个颜色通道;Ω(x)是以x为中心的区域。
为了便于实现基于逐个像素处理的IP核,本文将中心区域定为单像素区域,即直接求取每个像素的RGB三通道的最小值。虽然这样在效果上存在一定程度的损失,但是换取了运算速度性能的极大提高。为了快速地求取最小值,利用2个数字比较器实现了RGB最小值求取运算,具体实现如图3所示。
图3 暗通道图像逻辑实现框图
2) 雾天透射率计算模块
雾天透射率即雾天图像的传输函数,由该传输函数即可从有雾图像恢复出原图。传输的数学模型定义为
(2)
透射率模块的实现借助于Spartan 6的DSP Slice实现了流水线乘加运算。由于求取大气光强度A需要遍历图像所有的像素点,严重影响图像的实时性,并且考虑到实际视频中的亮度特性,于是系统将大气光求取的运算留给了MicroBlaze软核,由软核负责遍历图像求取大气光亮度并更新参数A。同时为了增加更多的灵活性,增加保留远处雾气的参数ω也通过软核配置更新。最后为了使去雾后的天空区域更加真实,有必要给透射率设置下限R并通过软核配置更新,以上涉及到的参数均通过AXI4-Lite映射到MicroBlaze地址空间,从而能够直接访问。
3) 无雾图像生成模块
无雾图像生成模块的主要功能是利用得到的透射率图像以及输入的有雾图像计算出无雾图像。数学模型定义为
(3)