快速视频去雾改进算法的FPGA实现

2024-07-31 00:00庞宇吴天次王元发贾美平周前能
计算机应用研究 2024年6期

摘 要:内窥镜去雾算法在医疗领域具有广泛应用,为临床医生提供清晰、实时的图像。去雾技术虽然已经取得较大的进步,但去雾算法的复杂度较高,在内窥镜等复杂情况下硬件实现较为困难。为了在硬件上实现内窥镜实时去雾效果,对暗通道先验算法进行改进,降低硬件资源消耗和时间复杂度。该改进算法选择适合硬件的大气光照强度估计值、透射率补偿值以及采用流水线结构实现有雾图像的处理。采用Xilinx的ZYNQ7020实现该算法硬件电路,实时处理分辨率为640×480的视频图像,速度可达到260 fps,消耗LUT仅为1.28 K,寄存器619个单元。实验结果表明,相比于传统算法,改进算法具有处理速度快、功耗低、可移植性强的特点,满足内窥镜需要实时处理视频的要求。

关键词:内窥镜; 视频去雾; 暗通道先验; FPGA; 实时处理

中图分类号:TP391.4 文献标志码:A

文章编号:1001-3695(2024)06-029-1803-05

doi:10.19734/j.issn.1001-3695.2023.09.0436

FPGA implementation of improved algorithm for fast video de-fogging

Abstract:The endoscopic defogging algorithm has a wide range of applications in the medical field, providing clear and real-time images for clinical doctors. Although significant progress has been made in defogging technology, the complexity of defogging algorithms is relatively high, making hardware implementation difficult in complex situations such as endoscopes. In order to achieve real-time defogging of endoscopes on hardware, this paper improved the dark channel prior algorithm to reduce hardware resource consumption and time complexity. The improved algorithm selected suitable atmospheric light intensity estimation values, transmittance compensation values for hardware, and used a pipeline structure to achieve the processing of foggy images. The hardware circuit of the algorithm was implemented using Xilinx’s ZYNQ7020, with a real-time processing resolution of 640×480 video images, with a speed of up to 260 fps, consume only 1.28 K LUT, and consume 619 registers. The experimental results show that compared to traditional algorithms, the improved algorithm has the characteristics of fast processing speed, low power consumption, and strong portability, meeting the requirements of real-time video processing for endoscopes.

Key words:endoscope; video defogging; dark channel prior; FPGA; real-time processing

0 引言

去雾算法是计算机视觉领域的一个重要研究方向,旨在通过对雾霾图像进行复原和增强,使图像更清晰、真实,有效地应对恶劣天气和大气干扰带来的问题。传统去雾算法一般应用于视频监控与自动驾驶、无人机与航空影像处理以及自然景观摄影技术。在医疗领域中,内窥镜作为一种依赖其设计结构和成像原理的可插入人体器官内的光学医疗设备,主要用于检查和诊断人体腔内病变和异常情况,以及介入肿瘤切除、息肉摘除和异物取出等手术过程[1]。手术过程中使用内窥镜有许多突出优点,传统手术会对人体造成较大的创口,在内窥镜系统的辅助下,手术可达微创效果,极大降低手术的风险,术后恢复也更快;内窥镜能够提高诊断的准确性。因此,内窥镜的发展和优化受到广泛关注。

内窥镜的使用不仅取决于输出图像的清晰程度,而且对实时性的要求极其严格。进行内窥镜手术时,因人体内的温度和内窥镜表面存在温差,内窥镜表面会出现雾气,导致视频图像可视效果差和色差严重等[2],使图像的质量严重降低,从而影响医务人员对检查结果的判断、延长检查时间,甚至诱发医疗事故等。虽然去雾算法已有一定研究,但由于传统去雾算法复杂度高,直接应用硬件实现实时性低,不能满足内窥镜在医生手术过程实时性的要求。所以,内窥镜的快速实时视频去雾算法的实现成为了当前智慧医疗系统研究[3]中的一个热门话题。

目前,传统去雾算法主要有He等人[4]在2011年提出的暗通道先验(dark channel prior,DCP)方法,该方法虽然原理简单、使用范围广,但是其大气光照强度、暗通道等参数选择困难,直接进行硬件实现资源消耗大,且不能满足实时性的要求。Tan[5]在2008年提出的最大对比度(maximum contrast,MC)方法处理速度虽然能达到要求,但存在局部雾霾处理效果差和参数依耐性强的缺点,不能满足内窥镜对图像质量的要求。Zhu等人[6]在2015年提出的颜色衰减先验(color attenuation prior,CAP)方法虽然加强了局部去雾的效果,但处理速度慢、算法复杂度高,对硬件平台要求高、实时性低。虽然文献[4]中涉及大量的浮点运算以及导向滤波等复杂运算,花费大量的计算资源和时间,难以满足实时处理的要求,但是对该算法的大气光照强度、暗通道等参数选择优化后,能在硬件平台上实现,资源消耗低、实时性高、复杂度低、处理效果好。

使用FPGA作为硬件加速平台[7,8],通过并行处理的方式大大提高了算法的执行效率和速度。陈曦等人[9]采用FPGA+ARM的处理方法对视频进行实时去雾,该系统采用Retinex图像增强的方法进行去雾,能达到较好的去雾效果,但是在面对内窥镜这种需要高分辨的场景以及干扰强的情况,其去雾效果达不到要求。Kumar等人[10]利用FPGA+ASIC的方法,虽然能够达到实时的处理效果,但需使用专用集成电路,对硬件系统的要求高、实现成本高。分析可知,图像快速实时去雾[11]的FPGA实现的关键在于算法和硬件之间的设计和优化,以及设计FPGA系统架构时需要平衡资源利用和算法的准确性及稳定性。

本文基于暗通道先验理论对该算法中的大气光照强度估计值、暗通道图、透射率值以及雾气保留因子进行优化,更适合FPGA实现。实验结果表明,改进后的算法能在FPGA上实现,在时钟为100 MHz的情况下,处理640×480的内窥镜视频和大气有雾视频数据,速度可达帧速260 fps。

1 暗通道先验去雾算法

在机器视觉和图像处理中,文献[4]提出的暗通道先验算法是建立在简化后的模糊图像成像的数学模型上,即

I(x)=J(x)t(x)+A(1-t(x))(1)

其中:I(x)为有雾的图像;J(x)为原始的无雾图像;t(x)为光的透射率(透射率越小雾越浓);A为大气光照强度。该模型中I(x)已知,可以通过求得t(x)和A,最终得到去雾的原始图像J(x),即

当大气光照强度均匀时,模型中的透射率t(x)可表示为

t(x)=e-βd(x)(3)

其中:β为大气散射系数;d(x)为场景深度。

基于该物理模型,文献[4]提出了暗通道先验的算法,对于任意的图像J,其暗通道可以表示为

其中:Jc是图像的彩色通道;Ω(x)是以x为中心的局部窗口;暗通道Jdark是通过取两个算子的最小值而得到的结果。根据式(4)不难看出,如果图像是无雾的情况下,无雾图像的暗通道强度很低,基本趋近于0,即

Jdark→0(5)

基于上述理论,假设大气光照强度A是给定的,那么在以x为中心的局部窗口中,t(x)也是恒定的,即

即使在太阳光充足的天气中,还是存在一些微小粒子,如果将雾气彻底去除,图像会显得不够自然,所以需要保留一部分雾气,即引入了雾气保留因子ω:

其中:ω的取值为0~1,可以根据实际情况对ω进行调整。

根据已知的有雾图像I(x),以及求出的大气光照强度A和透射率t(x),可求得去雾后的图像J(x)。

2 算法优化

在暗通道去雾算法中,算法复杂度较高,硬件实现较为困难,本文对大气光照强度A、暗通道的求取、透射率t(x)以及雾气保留因子ω进行了优化处理。

2.1 大气光照强度A

大气光照强度应该选取的是天空的光照强度。文献[4]使用暗通道来检测雾气最不透明的区域,并选择暗通道中最亮的前0.1%的像素作为大气光照强度的估计。此方法需要在RGB三通道中分别求取大气光照强度,在硬件实现过程中,最直接的方法是采用排序算法求出RGB三通道的前千分之一最亮点。目前,常用硬件实现的排序方法有并行硬件排序架构(PHSA)和实时硬件排序器(RTHS)。其中Batcher的Bitonic排序电路是基于合并操作的PHSA[12],Bitonic排序由独立的并行数据和交换块组成一个网络,其是目前硬件中实现的最快的排序方法之一,但该方法消耗的查找表(LUT)依然达到19 K。Norollah等人[13]实现的实时硬件排序器是采用双模流水线结构减少关键路径的技术,进而提高硬件的处理速度。该方法虽然对传统的硬件排序算法进行了优化,但LUT的资源消耗达到2.4 K,同时难以满足手术过程的实时性要求,因此对该方法在硬件实现上进行优化。有雾的天空中RGB三个通道的值基本相同,所以可假设RGB三个通道中的大气光照强度是相同的,即

Ar=Ag=Ab=A(8)

直接使用FPGA中的双端口RAM IP核,将输入像素点的像素值作为RAM的地址值,每个RAM地址分别记录不同像素值的个数,完成一帧数据的读取后便可以直接得到前0.1%的像素点,即

M0.1%=Mmax+Mmax-1+Mmax-2+…(9)

其中:M0.1%为总像素个数的前0.1%;Mmax为像素值为max的个数。

本文方法LUT仅消耗了一帧图像和30的LUT,当处理速度达到260帧时,经实验验证,一帧数据的消耗不会影响整体数据的实时性。本文方法和各种排序方法的时间复杂度对比如表1所示。本文方法和各硬件排序系统的资源消耗对比如表2所示。由对比可知,本文方法大大降低了硬件资源的使用,更适合内窥镜需要实时处理的要求。

2.2 暗通道获取

在原暗通道先验去雾算法实现去雾时,物体的边缘处往往会出现严重的光晕现象。采用15×15的最小值滤波获取暗通道时,采用过大窗口处理物体边缘,暗通道的值往往会取到较小的值,导致透射率图呈现块状结构,使最后恢复的无雾图像出现严重的光晕现象。由于产生光晕的原因是物体边缘暗通道值选取和实际暗通道值相差过大,将原暗通值和最小值取平均值来消除光晕现象,同时将最小值滤波的窗口转换成3×3,能够有效抑制光晕现象,即

其中:Imin为最小值图;Idark1为原暗通道图。优化后的暗通道再经过3×3的均值滤波进行平滑处理:

Idark=mean(Idark2)(13)

2.3 透射率

透射率描述了光线在大气中传播时的衰减程度,即光线从目标物体到达摄像机的能量损失情况。通过计算暗通道图像中的最小值,得到一个近似的透射率值。然后,根据透射率调整原始图像中的亮度,进而恢复图像的清晰度。对于浓雾区域,透射率接近零,还原去雾图像会导致恢复场景辐射受噪声影响。为了解决该问题,将透射率设置一个下限值t_min,本文设置为0.1。求解过程如下:

2.4 雾气保留因子优化

针对图像中不同距离的场景,自适应选择不同的雾气保留因子ω。较近的场景下,图像的颜色会显得更加鲜艳;而在较远的场景下,图像比较模糊。通过调节雾气保留因子,以达到空气透视的效果,从而更好地满足视觉特性。

3 视频去雾IP模块设计

该设计的快速视频去雾算法采用的硬件加速平台是FPGA。使用verilog HDL语言对优化后的暗通道去雾算法进行设计,并在FPGA平台上实现。将采集到的有雾视频图像输入FPGA实现去雾。该设计使用的平台配置如表3所示。

设计的视频去雾IP模块分为计算图像暗通道、计算大气光照强度、计算图像透射率以及还原无雾图像四个步骤,去雾IP的整体框架如图1所示。

a)对于暗通道先验算法,求取暗通道是重要部分。因此,在视频去雾IP的设计中第一步就是设计适合FPGA的暗通道求取方法。本设计将暗通道计算分成四个小部分实现,即求取彩色图像RGB的最小值、3×3最小值滤波模块、求原始暗通道和最小值图均值模块以及3×3均值滤波模块。数据处理流程如图2所示。

利用FPGA的并行计算能力求取彩色图像RGB最小值。将RGB三个通道的数据同时输入FPGA生成最小值Imin,然后将得到的最小值数据输入最小值滤波模块。硬件设计时,输入的像素值是串行的,本设计利用FIFO[14~16]逻辑资源消耗小的优点,调用两个FIFO IP核实现3×3的窗口,FIFO的控制流如图3所示。

用两个FIFO分别寄存前两行的像素值,当第三行数据到达时,每经过一个时钟周期,分别读取两个FIFO中的第一个数据并且与新输入的数据进行比较,就可以输出一列的最小值,然后使用一个寄存器进行寄存,在完成3×3的窗口大小后输出窗口内的最小值,并且其中的两个最小值可以利用于下一个3×3的窗口,在下一个窗口内只求取一次最小值即可,增大了资源利用率。FIFO实现3×3最小值滤波的数据传输过程,如图4所示。

最小值滤波后输出原始暗通道图像,再与最小值图按照式(12)进行运算,式中存在除法运算,本文采用移位操作实现除法运算,减小FPGA逻辑资源消耗,即

其中:>>为右移操作,如图5所示,在FPGA中右移一位等价于除以2。

输入到均值滤波的数据即为Idark,均值滤波也采用上述FIFO结构实现。本文对均值运算优化处理。步骤如下:

均值滤波需要先求取3×3窗口值的和sum,然后除以窗口的像素点个数,即

其中:datam为输出的平均值。根据FPGA的运算特点可以将式中的除法转换成乘法和移位操作,转换后的公式如下:

输出数据datam的高8位即为所求暗通道值。

b)实现大气光照强度的计算。利用FPGA的并行处理能力,将RGB彩色图像的三通道同时并行输入,每个通道按照流水线的形式输入,将输入的像素值作为RAM的地址值,每次输入将该像素值对应的地址中存储的数据加一,完成一帧图像的传输后就可得到当前帧大气光照强度估计值,极大地减小了资源消耗量。通过RAM实现的大气光照计算示意图如图6所示。在利用FPGA实现时,因为视频流传输中,前一帧图像和后一帧图像像素差别不大,可以将前一帧的大气光照强度值作为当前帧的大气光照强度,以实现近似流水线的处理过程。每一帧的传输之间时间相差很小,能够满足内窥镜的实时传输要求。

c)计算图像透射率。因为式(14)中的分母A为不定值,所以不能采用移位的方法对该式进行优化,本文采用的是等式两边同时乘以A,即

A×T=ω×Idark(19)

然后结合式(15)求得透射率的修正值。实现过程如图7所示。其中,暗通道图像作为输入数据,输出的数据为透射率图像。

d)无雾图像的还原。根据前面求得的大气光照强度估计值和透射率,并行输入彩色图像的三通道,结合式(2)还原出无雾的图像。这一步采用的是流水线处理,将前一帧的大气光照强度估计值和透射率作为当前帧的值进行处理。最后还原的无雾图像存在图像整体偏暗的情况,需要进行图像增强[17,18]操作,此处采用gamma校准[19]增强图像对比度。计算公式如下:

Iout=BIγin(20)

其中:Iin和Iout分别为输入和输出图像数据;γ为变换系数,当γ<1时,亮部细节被提升,暗部细节被压缩。

4 实验结果

设计的FPGA快速视频去雾系统能够在雾霾天气下对视频图像实时去雾,使采集到的视频能更好地应用于内窥镜和大气光去雾。在完成系统算法优化和硬件实现后,为验证设计系统的稳定性和无雾效果,通过输入不同情况的有雾视频图像,分别对视频图像进行去雾处理,并记录内窥镜视频和大气光照视频每一帧的处理速度。针对不同情况的图像,大气光照下去雾前后的对比结果如图8所示。其中图(a)为有雾图像;图(b)为文献[4]的去雾效果图;图(c)为改进算法后的去雾效果;图(d)为本文算法结果。

图9、10分别是内窥镜在浓雾和薄雾情况下处理前后的对比图,左图(去雾前)、右图(去雾后)。

不同分辨率的视频图像去雾处理时间如表4所示。比较可得,本文方法处理速度更快。优化算法在硬件上实现的资源消耗如表5所示。可以看出,本文方法相对于其他硬件实现方法的硬件逻辑资源消耗更少,实现成本更低。

该设计其他硬件资源消耗情况如表6所示。系统测试结果表明,设计的FPGA的快速视频去雾系统,在大气雾和内窥镜中都可以有效地处理有雾视频图像,并在不同分辨率下达到实时去雾效果,因此该系统具有实时性和快速性的特点。

5 结束语

针对有雾视频图像,完成快速视频去雾算法的FPGA实现,设计系统通过优化暗通道先验算法,将改进算法在硬件上实现,并通过伽玛校准对去雾后的图像进行对比度增强,获得了较好的视频去雾效果。实验结果表明,该系统能够在硬件时钟频率为100 MHz的情况下,对输入分辨率为640×480的有雾视频图像和内窥镜图像进行速度为260 fps的快速去雾,达到了快速和实时的要求。去雾后的图像也无失真。未来,将针对并行处理速率、透射率图计算和雾气保留因子进行研究和优化,实现内窥镜去雾处理速度和效果的进一步提高。

参考文献:

[1]鲍玉冬, 齐东博, 魏雯, 等. 医用内窥镜装置的研究进展[J]. 哈尔滨理工大学学报, 2021,26(5): 25-33. (Bao Yudong, Qi Dongbo, Wei Wen, et al. Research progress of medical endoscopic devices[J]. Journal of Harbin University of Science and Technology, 2021,26(5): 25-33.)

[2]吴靖, 宋文杰, 郭翠霞, 等. 基于偏振度优化与大气光校正的图像去雾[J]. 光学精密工程, 2023, 31(12): 1827-1840. (Wu Jing, Song Wenjie, Guo Cuixia, et al. Image defogging based on polarizability optimization and atmospheric light correction[J]. Optics and Precision Engineering, 2023,31(12): 1827-1840.)

[3]Sravanthi M, Siva K M, Chinnaaiah M C. An unveiling navigation in fog ambiance by FPGA based autonomous vehicle with minimal sen-sing[C]//Proc of the 2nd International Conference on Intelligent Computing, Instrumentation and Control Technologies. Piscataway, NJ: IEEE Press, 2019: 809-815.

[4]He Kaiming, Sun Jian, Tang Xiaoou. Single image haze removal using dark channel prior[J]. IEEE Trans on Pattern Analysis and Machine Intelligence, 2011,33(12): 2341-2353.

[5]Tan R T. Visibility in bad weather from a single image[C]//Proc of IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE Press, 2008: 1-8.

[6]Zhu Qingsong, Mai Jiaming, Shao Ling. A fast single image haze removal algorithm using color attenuation prior[J]. IEEE Trans on Image Processing, 2015,24(11): 3522-3533.

[7]Zhang Chao, Bi Shujie, Jiang Tao, et al. Implementation of ZYNQ for image defogging[C]//Proc of the 9th Joint International Information Technology and Artificial Intelligence Conference. Piscataway, NJ: IEEE Press, 2020: 1971-1977.

[8]Chen Peiyan, Guo Yaozong, Lin Shixiang, et al. Live demonstration: hardware design of video defogging method for real-time applications[C]//Proc of IEEE International Symposium on Circuits and Systems. Piscataway, NJ: IEEE Press, 2018: 1.

[9]陈曦, 钱国明, 史艳高. 基于FPGA+ARM的实时图像去雾系统设计[J]. 电子设计工程, 2023, 31(13): 192-195. (Chen Xi, Qian Guoming, Shi Yangao. Design of real-time image defogging system based on FPGA+ARM[J]. Electronic Design Engineering, 2023,31(13): 192-195.)

[10]Kumar R, Balasubramanian R, Kaushik K B. Efficient method and architecture for real-time video defogging[J]. IEEE Trans on Intel-ligent Transportation Systems, 2021,22(10): 6536-6546.

[11]周晓波, 何魁华, 周聪. 基于FPGA的图像高速去雾实时系统设计实现[J]. 电视技术, 2018, 42(4): 67-72. (Zhou Xiaobo, He Kuihua, Zhou Cong. Design and realization of FPGA-based image high-speed defogging real-time system[J]. Video Engineering, 2018,42(4): 67-72.)

[12]Layer C, Schaupp D, Pfleiderer H J. Area and throughput aware comparator networks optimization for parallel data processing on FPGA[C]//Proc of IEEE International Symposium on Circuits and Systems. Piscataway, NJ: IEEE Press, 2007: 405-408.

[13]Norollah A, Derafshi D, Beitollahi H, et al. RTHS: a low-cost high-performance real-time hardware sorter, using a multidimensional sorting algorithm[J]. IEEE Trans on Very Large Scale Integration: VLSI Systems, 2019,27(7): 1601-1613.

[14]水颖. 基于FPGA的帧级异步FIFO设计[J]. 声学与电子工程, 2020(2): 32-34. (Shui Ying. FPGA-based frame-level asynchronous FIFO design[J]. Acoustics and Electronics Enginee-ring, 2020(2): 32-34.)

[15]徐洋洋. 基于FPGA的多通道大容量FIFO设计[J]. 电子测量技术, 2017,40(8): 193-197. (Xu Yangyang. FPGA-based multi-channel high-capacity FIFO design[J]. Electronic Measurement Technology, 2017,40(8): 193-197.)

[16]黄凡. 一种基于FPGA的异步FIFO设计方法[J]. 微处理机, 2017, 38(1): 23-26,32. (Huang Fan. An FPGA-based asynchronous FIFO design method[J]. Microprocessors, 2017,38(1): 23-26,32.)

[17]贺柏根, 刘剑, 马天玮. 基于DSP+FPGA的实时图像去雾增强系统设计[J]. 液晶与显示, 2013,28(6): 968-972. (He Baigen, Liu Jian, Ma Tianwei. Design of real-time image defogging enhancement system based on DSP+FPGA[J]. Chinese Journal of Liquid Crystals and Displays, 2013,28(6): 968-972.)

[18]Gao Xue, Tian Yimin, Song Fangfang, et al. Research on the defogging algorithm based on image enhancement[C]//Proc of the 3rd International Conference on Machine Learning, Big Data and Business Intelligence. Piscataway, NJ: IEEE Press, 2021: 478-481.

[19]侯利霞, 聂丰英, 万里勇. 多尺度自适应Gamma矫正的低照图像增强[J]. 云南大学学报: 自然科学版, 2023,45(1): 57-66. (Hou Lixia, Nie Fengying, Wan Liyong. Multi-scale adaptive gamma correction for low-light image enhancement[J]. Journal of Yunnan University: Natural Science Edition, 2023,45(1): 57-66.)

[20]Upadhyay B B, Sarawadekar K. VLSI design of saturation-based image dehazing algorithm[J]. IEEE Trans on Very Large Scale Integration: VLSI Systems, 2023,31(7): 959-968.

[21]Tan Yanjie, Zhu Yifu, Huang Zhaoyang, et al. MAPD: an FPGA-based real-time video haze removal accelerator using mixed atmosphere prior[J]. IEEE Trans on Computer-Aided Design of Integrated Circuits and Systems, 2023,42(12): 4777-4790.