一种嵌入式多核处理器下实时图像去雾方法
廖晓波,周军
(西南科技大学 制造过程测试技术省部共建教育部重点实验室,621010,绵阳)
摘要:图像去雾是图像增强中的一种典型应用,广泛应用于智能交通,图像前期预处理等不同领域,但是其
实时处理效果一直不佳。针对这一问题,本文提出了一种基于嵌入式多核处理器的实时图像去雾方法。此方
法是以大气散射为基础,基于 He 等人提出的 Dark Channel Prior 方法,优化提出了一种新的修正算法,然
后使用并行处理的方式降低运算量。实验表明,本文所用算法在一个多核 ARM 处理器平台上能够很好地达到
实时图像去雾的效果,大大较低运算时间,提高了图像的质量。
关键词: 图像去雾;暗通道;实时去雾;大气散射
A Real-Time Haze Removal Method Under Embedded Multi-Core Processors
Liao Xiaobo,Zhou Jun
(Key Laboratory of Testing Technology for Manufacturing Process Ministry of Education, Southwest University of
Science and Technology,621010,Mianyang)
Abstract: Haze removal is a typical application of image enhancement, which is widely used in
different fields, such as transportation, image processing and so on, but its results were bad.
Concerning this issue, we present a new real time haze removal method based on embedded multi-core
processors. This algorithm based on the atmosphere scattering model and the dark channel prior
of He is a new modified algorithm, we can reduce computational complexity by using parallel
processing way. The experiments show that the algorithm of this paper can effectively achieve
real-time haze removal on a multi-core ARM processor, which can greatly reduce the computing time
and improve the quality of Image.
Key words: image dehazing; the dark channel prior; real-time dehaze; atmosphere scattering model
当前,随着空气中灰尘、霾等微粒的不断增多,驾驶员在行驶过程中,很容易因视觉模糊或眩晕导致不必
要的交通事故。随着科技的不断进步,汽车都加装有嵌入式控制系统和一个可以显示汽车前后方向图像的显
示屏。然而,户外的图像因雾、霾、烟等原因而使图像质量变差,这些模糊的图像在被送往显示器进行显示
前需进行图像去雾处理。在图像去雾处理算法中,算法的实时性一直是困扰其得到广泛应用的重要原因,通
过研究,本文提出了一种适合在嵌入式多核处理器平台下快速对图像进行处理的算法。
1 图像去雾概述
按照图像去雾是否基于一个物理模型来看,去雾基本分为两种方法:物理模型和非物理模型。物理模型
方法以大气透射系数为模型,通过分析大气中能够影响图像质量的因子,反解透射系数而达到恢复图像的目
的。这种方法理论上并不精确,因为其包含三个未知参数,所以求解这类问题需要使用一些假设和估计成分,
或者使用同场景的多幅图片来求解以达到恢复图片的目的。基于这种理论,Tan[1]提出最大化带雾图片局部
对比度的方法,这种方法能带来很大程度上的视觉冲击,但并不能按照大气投射理论恢复出真实的场景图像,
最终他恢复出的图像呈现过饱和、不真实的特点。Fattal[2] 利用统计学原理,采用估计物体反照率的方法
来解决投射系数问题,取得了可观的结果。但一旦出现大雾天气就不能很好的处理,甚至违反了统计学原理。
He[3]通过观察户外的大量的图片,提出暗通道先验原理,这个方法能够优良地作用于户外绝大数图像,但
是暗通道先验原理对天空区域或者与天空相似的区域来说没有用处。
非物理模型方法并不关心场景光在介质中的投射情况,换句话说,这些方法是通过一些简单的图像增强
或者主观视觉感受来达到去雾的目的。传统图像增强的方法有对数变换、指数变换、直方图均衡、空域滤波
等。其他包括主观视觉感受的方法有颜色恒常知觉计算理论,比如视网膜增强算法、改进的视网膜增强理论、
多规模视网膜增强理论、带色彩恢复的多尺度视网膜增强算法[4]等。
在上述方法中,能够达到很好去雾效果的物理模型方法依赖于物理模型的正确性和相关假设理论的合理
性,这些假设理论在最近几年正在被持续完善。这之中,基于暗通道先验原理的图像去雾方法能够很好地处
理雾霾较大的情况,这也适合应用在嵌入式系统领域中。但是这个方法有一个致命的缺点,就是方法在计算
的过程中会花费大量时间,这也就导致了这个算法不能直接应用于实时图像处理环境中。为了解决这个问题,
一种新的快速图像去雾方法在本文提出。
2 暗通道先验原理
广泛应用于计算机视觉和计算机图形学的大气透射模型如下式所述:
( ))
t x
I x 表示在带雾图像中像素 x的像素值(强度值), ( )
(1
A
(1)
J x 表示在不带雾图像中像素 x的像素值(强
度值),t 表示场景光在穿透介质(大气)后到达摄像头的部分, A 表示全球大气光的值。上式中右边第一项
表示直接衰减项,表示场景的辐射和它在介质中的衰减。第二项表示大气光成分,它是由大气散射所导致的。
其中, ( )
( ) ( )
J x t x
( )
I x
正如上面所描述的,暗通道先验原理表达式为:
(2)
这里,c 表示 RGB 三个颜色通道中的任意一个, ( )x 表示以像素 x为中心的局部区域。在这个式子中,
如果 J 表示无雾图像,对了除天空部分的决大多数局部区域而言这个式子得出的结果趋近于 0。我们进一步
假设,在局部区域中 t 为常亮,A 的值已知,这时我们能够得出:
( ) min ( min
x
( ,
, )
c
r g b
( ))
y
y
dark
( )
x
J
J
c
min( min (
( )
c
x
y
I
c
( )
y
c
A
))
~
( ) min( min (
t x
( )
x
c
y
J
c
( )
y
c
A
))
(1
~
( ))
t x
(3)
正如暗通道先验原理表述的那样,上式右边第一项趋近于 0,所以能够计算出 t 的值。为了使去雾得出
的图像自然一些,需要向其中引进一个常量因子:
~
( ) 1- min( min (
t x
( )
x
c
y
I
c
( )
y
c
A
))
(4)
这其中大气光 A 的值能够通过 I 中最亮的像素估算出来,上式中
~
t 就可以被求解出来。最后把求出的这
两个参数代入式(1)中,图像 J 就能够被求出来。为了防止求解的t 值过小(会导致去雾后的图像 J 含有
大量噪声),这里引进一个最小的投射系数 0t ,最终,去雾后的图像 J 表示为:
( )
J x
( )
I x
A
~
max( ( ),
t x t
)
0
A
(5)
使用(5)式,我们能够直接计算出去雾后的图像。但是在去雾的过程中,求解投射系数 t 时隐含了一个
严重的问题,那就是在直接利用(5)式求得的无雾图像里,会出现非常严重的快效应。为了解决这个问题,
He 博士提出了一种叫做“软抠图”[3]的算法来细化求解的投射系数 t 。这种方法使用的理论非常复杂,并且
要求解一个非常庞大的稀疏矩阵。算法所用时间太大,以至于完全不能用于实时性处理。所以研究一种能够
替代这种算法的方法是非常需要的。
3 实时图像去雾算法
在本文中,为了解决“软抠图”算法所带来的时间和空间上的不足,我们提出了一种改进的实时图像去
雾算法。为了达到实时的目的,多核处理的并行处理能力是本文算法的核心。我们算法流程图如下:
图 1 实时去雾算法流程
首先,我们要将输入的待去雾图像进行分辨率降解处理(下采样)。这样做是为了能够加快投射系数 t 的
求解过程。投射系数 t 在局部范围内可以将其看作为一个不变的常量,因此在求解的过程中将高分辨率的输
入图像通过缩放变换为一个低分辨率的图像。这样做既保证了投射系数 t 的精确性,也在一定程度上减少了
计算时间。然后,根据暗通道先验原理就可以求出投射系数 t 在整张图片的分布。不过这是求得的 t 带有很严
重的快效应,于是使用导向滤波方法来优化投射系数t ,使其得到的 t 更为精细。这时,由于 t 与原图像的分
辨率不同,无法直接通过式(5)得到去雾后的图像,于是直接使用临近插值法对低分辨率的投射系数 t 分布
图进行上采样得到与原图同样大小的投射系数分布图。最后,因得到的无雾图像会导致向暗色过渡,因此还
需要对其进行颜色校准,然后输出得到最终的恢复图像。
3.1 下采样
对于一个分辨率很高的图片,下采样在保证了图像细节的同时,还能够大大降低图像的像素数,这样也
会使图像处理的速度得到很好的改善。这个步骤的关键点在于如何选择采样的百分比来平衡图像处理时间和
采样时间之间的冲突。如果采样率过小,会导致大量时间花费在采样上,并且图像的细节也不能得到充分的
保障;如果采样率过小,仍然会导致在图像处理过程中耗费大量时间,使去雾达不到实时效果。
3.2 求暗通道
计算图像暗通道的过程由表达式(2)直接给出,这一步的时耗主要在于最小值滤波。如果使用一个 *w w
* * )
大小的模板对一张 *M N 的图片进行最小值滤波,使用常规方法实现的算法时间复杂度为 (
O M N w w 。
*
能够证明,如果使用线性阵的方式来实现最小值滤波,那么在最坏的情况下每个元素至少会比较 1.5 次。
也就是说,如果有 N 个元素,那么算法的时间复杂度会变成 (
基于流的最大最小值滤波方法(SMMF),这个算法在实际运行过程中,每个元素最多比较次数不超过 3 次。
基于 SMMF,对一个矩阵 D 进行最小值滤波的流程如下:
。Daniel Lemire[5]提出了一个名叫
*1.5)
O N
图 2 最小值滤波算法流程
在这个步骤结束后,对于在 D 中 ( ,
x y 位置处的像素 p ,在它 *w w 的范围内的最小值被保存在 M3 中的
)
位置。
,
(
)
x w y w
3.3 导向滤波
在文献[3]中,作者使用软抠图的方法来对透射系数 t 进行优化滤波,这种方法无论是从时间上还是空
间上耗费都巨大。为了解决这个问题许多用来代替软抠图的方法被陆续提出。[6][7]中使用双边缘滤波算法
通过计算局部均值和方差法,进而估计出透射系数 t。He 提出了一种名叫导向滤波[8]的算法,这个算法的
关键就是求均值,所以它能够在完成优化透射系数的基础上节约大量时间和空间。考虑到均值滤波和计算机
的并行运行,我们采用导向滤波算法代替软抠图算法对透射系数 t 进行优化。
导向滤波的算法流程如图 3 所示:
图 3 导向滤波算法
其中, p 是输入图像, I 是导向图, p 是输出图像。在这个算法中函数 _
f mean 表示对图像进行均
()
值滤波。
3.4 上采样
在经过上采样的步骤后,会得到一张与原图等大的高分辨率透射系数 t 的图像。而上采样的最为常规的
方法便是插值法,如双边缘差值,双三次插值和样条插值法等。这些方法速度较快并且容易编程实现,但是
这些方法在插值点增多后就会使得结果图出现模糊效应。Qi Shan[9]等人提出了一个快速单一的图像上采样
方法,这种方法的实现依赖于去卷积和再卷积,当然最后结果也是优良的。
考虑到上采样和实时性需求,我们使用双线性插值的方式对透射系数 t 进行上采用得到高分辨率的投射
系数 t 分布图。
3.5 颜色校正
通过上述步骤进行图像去雾后,得到的图像全局亮度值会偏低,对比度也会有所下降。所以我们有必要
对最后的图像进行颜色值或亮度值进行校正。直方图处理法在实时应用中应用最为广泛,并且算法实现简单,
也能达到提升对比度的目的。因此我们采用直方图处理[10]的方式来校正颜色值。表达式如下:
( ,
Out x y
c
)
)
( ,
(
I x y Min I
c
c
(
Max I Min I
)
(
c
) /
) /
c
MAX VAL
_
(6)
这里,c 表示输入图像 I 的某个颜色通道,
()Max 和
()Min 分别表示求输入图像 I 的某个颜色通道的最
大和最小的颜色亮度值。MAX_VAL 表示输入图像通道 c 的最大亮度值,通常这个值被设定为 255。事实上,
像素的亮度值通常会小于 255,因此添加了一个参数 (0
3.6 多核 ARM 处理器的并行处理
来调整最大和最小亮度值。
1)
Advanced RISC Machines(高级精简指令集机器)简称 ARM,是一个 32 位精简指令(RISC)的处理器架
构,广泛应用于众多嵌入式系统设计中。目前其按应用分为 cortex-M,cortex-R,cortex-A 等多种架构,
其中 cortex-M 架构的处理器主要用于低成本、低功耗的低端控制系统中,如一些工业控制领域、家庭自动
化、消费、智能计量等方向。Cortex-R 主要针对高性能实时应用,如硬盘控制器(或固态驱动控制器)等。
Cortex-A 处理器通常用于需要操作系统或高性能支持的应用程序系统中,主要面向手持设备、多媒体消费类
电子设备等场合。如我们现在使用的手机,Ipad,小型平板电脑,汽车多媒体设备等都是 cortex-A 架构的
ARM 处理器,由于上面能够运行大型操作系统,因此可以在一个设备上运行各种各样的应用软件供用户使用。
考虑到图像去雾将来多用于添加到车载视频中,因此我们选择多核 ARM 处理器来实现实时去雾算法,这
样在一个设备上就可以完成多种功能了,免去了携带众多设备的麻烦。Samsung 公司是全球知名的芯片制造
和消费类电子产品厂商,其生产的处理器功耗低、成本低并且有几款处理器对外开源,仅需支付少量费用就
可以得到完全开发手册。其中 Exynos 4412 处理器采用了 32nm HKMG 工艺,是三星的第一款四核处理器,每
核主频达 1.4GHz。这对并行图像处理来说提供不少方便。
在本文中,我们通过 OpenMP 提供的 API 实现了处理器的并行处理能力。在我们图像处理算法中,其耗
时的过程有暗通道求解过程中最小值滤波,导向滤波中的均值滤波等需要遍历图片的这些操作。在暗通道求
解的过程中,每行的最小值滤波是独立的,所以我们可以将计算分到几个不同的处理器上同时进行,只需要
在程序的相关位置加上“#pragma omp parallel for”。在导向滤波算法中,图 3 所示的每一步都是独立的,
因此我们也可以使用并行处理的方式来减少时耗。其他的优化指令还有“#pragma omp parallel section”。
4 实验结果
在我们最终的实验中,对每一张待去雾图像,如果分辨率小于 600*600 时,下采样因子设置为 2,大于
这个分辨率时设置为 3。在求解暗通道时局部区域的大小设置为 15*15;在导向滤波过程中,局部区域大小
设置为 30 或者更高。于是基于此,我们使用 C++和 OpenCV 在 gcc 环境中实现了我们的算法。
图 4 算法结果(左:待去雾图;中:我们的算法;右:文献[7]算法)
图 4 中是几个算法的结果比较,可以明显看到我们的算法与[3]中的算法相比要提高不少,尤其是在亮
度和清晰度方面。这表明我们优化透射系数的方式是有一定作用的,其上采样和下采样因子也是影响其结果
的一大原因。此外,[3]中算法的结果看起来与我们的不同,其主要原因是其去雾后的图片看起来整体偏暗,
其实结果图中的景深与我们的是完全相同。在对比度方面,我们算法的结果看起来更清晰明朗,并且在场景
较远的地方保留了一些雾,这使得去雾后的图片看起来更真实。
图 5 展示了一些使用我们的算法去雾的其他例子,这些图片大小都介于 400*500 到 600*600 之间。表 1
列出了计算这些图片所花时间。
图 5 算法的一些其他例子
表 1 优化算法后所用时间比较
优化后算法用时
优化前算法用时[7]
序号
提高百分比
1
2
3
4
5
6
7
8
9
10
11
0.6785
0.5648
0.7653
0.5586
0.6752
0.5596
0.7941
0.6589
0.9635
0.7838
0.8954
0.0726
0.0511
0.0894
0.0514
0.0722
0.0728
0.0744
0.0663
0.0911
0.0695
0.0918
89.30%
90.95%
88.32%
90.80%
89.31%
86.99%
90.63%
89.94%
90.54%
91.13%
89.75%
从上面图片和表 1 可以看出,通过我们优化的算法来进行单张图像去雾,算法运行时间可以平均提高 89%
左右。测试所用开发板为友善之臂 tiny4412 开发板,处理器主频为 1.4GHz 4 核,并开启处理器并行处理能
力,使用操作系统为嵌入式 Linux。以上结果表明,如果视频分辨率在 700*700 左右时,可以很流畅地处理
视频数据。
5 结论
在本文中,我们基于暗通道先验原理,提出了一个优化的实时去雾算法。算法的实质是在求解透射系数
时,通过下采样的方式降低输入图像的分辨率,并打开多核处理器的并行能力,从而加快算法的运行速度。
通过我们的测试,在处理的图像分辨率不超过 700*700 时,处理速度可达 70ms,这意味着我们的算法可以应
用到许多实时应用场景。
不过,我们的算法仍有不足的地方。如果图片分辨率超过 1K,那么处理速度仍然很慢,达不到实时的效
果。虽然可以通过增加处理器的核心数来减轻每个处理器的计算能力,但成本相应地会大大增加。因此,在
图像去雾领域我们仍然还有许多工作要做。
参考文献
【1】 Tan R T. Visibility in bad weather from a single image[C]//Computer Vision and Pattern Recognition, 2008.
CVPR 2008. IEEE Conference on. IEEE, 2008: 1-8.
【2】 Fattal R.Single image dehazing[C] // ACM Transactions on Graphics (TOG).ACM,2008, 27(3): 72.
【3】 HE K,SUN J,TANG X.Single image haze removal using dark channel prior[J].IEEE Transaction on Pattern Analysis
and Machine Intelligence,2011,33(12):2341-2353.
【4】 张石,佘黎煌,葛欣.基于曲波变换的视网膜血管图像增强算法[J].东北大学学报(自然科学版),2016,37(7):922-926.
ZHANG Shi , SHE Li-huang , GE Xin.Enhancement Algorithms of Retinal Blood Vessels Based on Curvelet
Conversion[J]. Journal of Northeastern University(Natural Science),2016,37(7):922-926.
【5】 Lemire D. Streaming maximum-minimum filter using no more than three comparisons per element[J]. rXiv
preprint cs / 0610046,2006.
【6】 石文轩,詹诗萦,李婕.一种边缘优化的暗通道去雾算法[J].计算机应用研究.2013,30(12):3854-3856.
SHI
Wenxuan , ZHAN
Shiying , LI
Jie.
Dark
channel
prior
dehazing
algorithm
based
on
edge
optimization[J].Application Research of Computers,2013,30(12):3854-3856.
【7】 Sun K, Wang B, Zhou Z Q, et al. Real Time Image Haze Removal Using Bilateral Filter[J]. Transactions of
Beijing Institute of Technology,2011, 31(7): 810-814.
【8】 He K,Sun J,Tang X.Guided image filtering[M] //Computer Vision-ECCV 2010. Springer Berlin Heidelberg,
2010:1-14.
【9】 Shan Q, Li Z, Jia J, et al. Fast image/video upsampling[C]//ACM Transactions on Graphics (TOG). ACM,
2008,27(5):153.
【10】 田 军 委 , 黄 永 宣 , 于 亚 琳 . 基 于 直 方 图 偏 差 约 束 的 快 速 模 糊 C 均 值 图 像 分 割 法 [J]. 西 安 交 通 大 学 学
报,2007,41(04):430-434.
Tian Junwei, Huang Yongxuan, Yu Yalin. Fast Fuzzy C Means Image Segmentation Method Based on Histogram
Deviation Constraints[J]. Journal of Xi'an Jiaotong University, 2007, 41(04):430-434.
【11】 王森,潘玉寨,刘一,等.提高雾天激光主动成像图像质量的研究[J].红外与激光工程,2013,42(9):2392-2396.
WANG Sen,PAN Yuzhai,LIU Yi,et al. Image quality improvement of laser active imaging in fog[J].Infrared
and Laser Engineering,2013,42(9):2392-2396.
【12】 褚宏莉,李元祥,周则明,等.基于黑色通道的图像快速去雾优化算法[J].电子学报,2013,41(4):791-797.
CHU Hongli,LI Yuanxiang,ZHOU Zeming,et al.Optimized fast dehazing method based on dark channel prior[J].
Acta Electronica Sinica,2013,41(4):791-797.
【13】 孙伟,李大健,刘宏娟,等.基于大气散射模型的单幅图像快速去雾[J].光学精密工程,2013,21(4):1040-1046.
SUN Wei,LI Dajian,LIU Hongjuan,et al.Fast single image fog removal based on atmospheric scattering model[J].
Optics and Precision Engineering,2013,21(4):1040-1046.
【14】 李权合,查宇飞,熊磊,等.雾霾退化图像场景再现新算法[J].西安电子科技大学学报,2013,40(5):99-106.
LI Quanhe,ZHA Yufei,XIONG Lei,et al. Novel method for haze degraded image scene rendition[J].Journal
of Xidian University,2013,40(5):99-106.
【15】 唐晓庆,范赐恩,刘鑫.基于边缘保持滤波的单幅图像快速去雾[J].西安交通大学学报,2015,49(3):144-149.
TANG Xiaoqing,FAN Ci’en,LIU Xin.A Fast Haze Removing Algorithm of Single Image Using Edge Preserving
Filtering[J].Journal of Xi’an Jiaotong University,2015,49(3):144-149.
【16】 Land E H. An alternative technique for the computation of the designator in the retinex theory of color