基于MATLAB改进暗通道先验的图像去雾算法

摘要:暗通道先验去雾算法求得的的透射率比较精细,去雾效果优于大多数去雾算法。然而在暗通道求取过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大,使得去雾后的图像在边缘部分产生“光晕”现象。为了减弱光晕效应,利用形态学理论对粗略透射率进行腐蚀处理,腐蚀掉扩张变大的透射率,然后使用容差机制修复不符合暗原色先验的明亮区域透射率,再使用引导滤波精细化透射率,最后利用去雾模型复原图像。实验表明,改进后的算法去雾效果更佳、去雾速度更快,具有更强的鲁棒性。

  0 引言

  雾霾天气不仅影响人们的出行,也给视频监控、自动驾驶等涉及室外图像应用的领域带来了很大挑战,并引起了相关研究人员的重视,如今已出现了不少研究成果。图像去雾的研究方法可分为两大类,基于图像增强的方法和基于物理模型的方法。早期图像去雾研究主要利用图像处理的知识来去雾,Kim[1]提出对雾图进行局部直方图均衡处理的方法,这种方法根据每个像素的邻域对像素进行处理,可以突出图像的特征,但运算量较大,算法复杂度较高。Land[2-3]基于色彩恒常性提出了Retinex即视网膜皮层理论,其后出现了一些基于Retinex的图像增强算法[4-6],与其它图像增强算法相比,基于Retinex的图像增强算法处理的图像,局部对比度相对较高,色彩失真较小。基于图像增强的去雾方法可以利用成熟的图像处理算法来增强图像的对比度,突出图像中的特征信息,但这种方法会造成图像部分信息损失,导致图像失真。图像去雾的另一类是基于物理模型的方法,该方法研究大气悬浮颗粒对光的散射作用,通过大气散射模型来复原图像,恢复的图像效果更真实,图像信息能得到较好保存。Narasimhan等[7]提出了雾霾天气条件下的单色大气散射模型,后来基于物理模型的方法几乎均建立在此模型之上。Tan[8]基于无雾图比雾图有更高对比度的假定来最大化有雾图像的对比度,该算法在很大程度上能复原图像结构和细节,然而Tan的算法趋向于过度补偿降低的对比度,容易产生光晕效应。Fattal[9]把图像场景光分解成反射和透射两部分,然后基于独立主成成分分析来估计场景光强,这种方法可以有效去除局部的雾但不能很好恢复浓雾的图像。Kim等[10]结合局部对比度增强和去雾模型方法,能够抑制伪影的产生,但时间复杂度较高。刘倩等[11]使用均值滤波去雾,对单幅图像去雾效果尚可,但是用于视频去雾时帧之间的过渡就不很自然。王燕等[12]使用中值滤波去雾,其有一定的去雾能力,但图像周边会出现明显的分界。何凯明等[13]提出的暗通道先验去雾算法,可以得到精细的透射率,去雾效果优于大多数的去雾算法,已成为去雾领域的经典。去雾后的图像在景深变化大的地方会产生光晕现象,而导致这一问题的原因是在暗通道计算过程中使用了最小值滤波。在求取暗通道过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大,从而使去雾后的图像在边缘部分产生“光晕”现象。为了减弱光晕效应,本文利用形态学理论知识对粗略透射率进行腐蚀处理,腐蚀掉扩张变大的透射率,然后使用容差机制修复不符合暗原色先验的明亮区域透射率,再使用引导滤波精细化透射率,最后利用去雾模型复原图像。为了加快处理速度,本文在降采样图像里寻找大气光,并使用暗点优先膨胀算法求暗通道。另外原文求取大气光值的方法在一些情形下并不是很合理,尤其是场景中出现白色物体时,而使用四叉树细分的分层搜索方法却没有这种问题。实验表明,改进的去雾算法去雾效果更佳,且去雾速度更快。

  本文图像去雾流程:求取大气光值→粗略透射率估计→透射率精细化→图像复原。

  1 暗通道先验去雾

  2 算法改进

  2.1 大气光值求取

  文献[13]方法过程如下:①从暗通道图中按照亮度大小取前0.1%的像素;②对于这些像素位置,在原始有雾图像I中寻找对应的具有最高亮度的像素点的值,作为A值。

  很多去雾相关论文都沿用了这种方法,然而这种取法在一些情况下并不太合理,比如图像中含有白色物体时,往往会在白色物体区域取得大气光值,而不是在真正的浓雾区域取得,这样会造成处理后的图像出现偏色现象。

  图像有雾区域像素变化通常比较小,即对比度低。基于四叉树细分的分层搜索方法可以准确地找到浓雾区域并取得合理的大气光值,过程如图1所示,首先将一幅图像等分成4个矩形区域,然后分别用每个矩形区域内所有像素值的平均值减去它们的标准差得到一个结果值,选择结果值最大的那个区域并将它进一步等分成4个更小的区域。重复这一过程直到选择区域的大小比预先指定的阈值小。图1中红色块是最后选择的区域,在该区域,选择能够最小化与纯白光向量(255,255,255)距离的颜色向量作为大气光值,即选取最明亮颜色向量作为大气光值。

  2.2 粗略透射率修正

  2.2.1 透射率腐蚀处理

  在暗通道计算过程中,首先会得到原图RGB三原色最小通道值,然后对最小暗通道值进行最小值滤波处理。对于较小的值,以它为中心的滤波窗口内的点值都会受其影响,如图3(b)所示(正中间数据“198”位置会被赋予较小的数据值50),造成暗色向外扩张。由式(4)可知,明亮区域透射率会相应扩大。这样在景深变化明显的地方,去雾后的“光晕”现象就较明显。为了减弱光晕效应,可以使用形态学腐蚀的方法,将扩张变大的区域进行缩小,达到修复的作用,如图3(c)、(d)所示。实验表明,使用圆形结构元素,半径为透射率图长度和宽度最小值的1%来腐蚀透射率图可以得到较好的去雾效果。

  2.3 处理时间优化   为了降低处理时间,在求取大气光值时采取在降采样的图像上寻找,这样并不会降低最后寻找到的大气光值的准确性,因为求取目标是要在最浓雾的区域找大气光值,而要寻找大气光值的周围邻近的像素点值通常都是相同或非常接近的,所以跟在原图上找到的值是一致的,而寻找时间却大大缩短。在暗通道求取过程中,最小值滤波处理比较耗时,本文使用文献[15]提出的暗点优先膨胀算法代替最小值滤波处理,这样可有效降低运算时间。

  基于暗点优先膨胀的暗通道计算过程如下:①取得原图RGB三原色最小通道值,形成一幅灰度图;②对灰度图像素值进行排序;③选取一个最小值,将以其点为中心的指定窗口大小内的所有点都设为此值,并记录已处理的点;④依次选择次小的点值进行相同操作,并忽略已处理的点,这样就可以很快完成暗通道的计算过程。

  图解示意过程如图4所示,图中最上部分为原图RGB最小通道值形成的灰度图,值从小到大排序为A82≤A77≤…。选择最小的值并以其点位置为中心的3×3窗口内的所有点都设为此值,并记录处理过的点,接下来依次选择次小的值进行相同处理,这样就很快获得了暗通道。

  最后将精细化透射率及求得的大气光值代入式(5),就可到得到最后的复原图。

  3 实验

  实验软硬件环境如下:操作系统为32位Windows7,CPU 为酷睿i3-2100双核(3.10GHz),RAM内存为2G,使用32位matlab2010b编码实现。运行文献[13]和改进算法程序对几种雾图分别进行了测试。

  实验图片归一化为420×297大小,名称分别为road.jpg、tree.jpg、mount.jpg,结果比较如图5、6、7、8所示。主观上对比可以看到改进算法减轻了处理后的图像明亮区域偏色现象及景深变化区域的光晕效应,并在细节上更好地保持了原图结构。

  在客观评价上选择PSNR和SSIM两个性能指标进行实验,得到的数据如表1、表2所示。PSNR即峰值信噪比,其值越大,则说明处理后的去雾图像失真越小,SSIM可以衡量原图和去雾图的结构相似性,其数值越大说明去雾图对原图结构改变越小,同时光晕效应越弱。比较可知,改进算法取得了更好的去雾效果。

  4 结语

  暗通道先验去雾是近年来出现的一种优秀去雾算法,然而在暗通道计算过程中的最小值滤波处理会使得暗色扩张,进而引起去雾图产生光晕效应。为了减弱光晕效应,本文利用形态学理论对得到的粗略透射率进行腐蚀处理,腐蚀掉扩张变大的透射率;同时对大气光值的求取方法进行了改造,对不符合暗通道先验的明亮区域透射率进行了修复,并使用多种方法优化处理速度。实验表明,改进后的算法在去雾效果和速度方面都有很大提升,后续会在此基础上继续优化改进,使得该算法能够应用于实时视频去雾中。

  参考文献:

  [1]KIM T K,PAIK J K,KANG B S.Contrast enhancement system using spatially adaptive histogram equalization with temporal filtering[J].IEEE Transactions on Consumer Electronics,1998,44(1):82-87.

  [2]LAND E H.The retinex[J].American Scientist,1964, 52(2):247-264.

  [3]LAND E H.The retinex theory of color vision[J]. Scientic America,1977,237(6):108-128.

  [4]JOBSON D J,RAHMAN Z,WOODELL G A.Properties and performance of a center/surround retinex[J].IEEE Transactions on Image Processing,1997,6(3):451-462.

  [5]RAHMAN Z,JOBSON D J,WOODELL G A.Muti-scale retinex for color image enhancement[C].Lausanne:Proceedings of the 1996 International Conference on Image Processing,1996:1003-1006.

  [6]RAHMAN Z,JOBSON D J,WOODELL G A.Retinex processing for automatic image enhancement[J].Journal of Electronic Imaging, 2004,13(1):100-110.

  [7]NARASIMHAN S G,NAYAR S K.Vision and the atmosphere[J].International Journal of Computer Vision,2002,48(3):233-254.

  [8]TAN R T.Visibility in bad weather from a single image[C].Anchorage:Proceedings of the 2008 IEEE Conference on Computer Vision and Pattern Recognition,2008:1-8.

  [9]FATTAL R.Single image dehazing[C]. New York:Proceedings of the 2008 ACM Transactions on Graphics (TOG),2008, 27(3):1-9.

  [10]J H KIM,J Y SIM,C S KIM.Single image dehazing based on contrast enhancement[C].IEEE ICASSP,2011:1273-1276.

  [11]刘倩,陈茂银,周东华.基于单幅图像的快速去雾算法[C].第25届中国控制与决策会议,2013.

  [12]王燕,伍博,谷金宏.一种单幅图像去雾方法[J].电光与控制,2011,18(4):65-67.

  [13]KAIMING HE,JIAN SUN,XIAOOU TANG.Single image haze removal using dark channel prior[C].IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2009:1956-1963.

  [14]蒋建国,侯天峰,齐美彬.改进的基于暗原色先验的图像去雾算法[J].电路与系统学报,2011,16(2):6-11.

  [15]刘夏,陈和平,陈黎,顾进广.一种计算图像暗通道的优化算法[J].计算机应用与软件,2014(7):137-140.

  [16]HE K M,SUN J,TANG X O.Guided image filtering[C].Berlin:Proceedings of the 2010 Conference on Computer Vision,2010:1-14.

基于MATLAB改进暗通道先验的图像去雾算法相关推荐

  1. matlab求图像暗通道图像,基于暗通道先验条件图像去雾算法

    基于暗通道先验条件图像去雾算法 香港大学何凯明博士于2009发表了一篇论文<Single Image Haze Removal Using Dark Channel Prior>.在文章中 ...

  2. 【计算机视觉课程设计】基于暗通道先验单幅图像去雾算法的实现(MATLAB)

    声明:原创内容,创作不易,欢迎点赞收藏~ 摘    要 随着信息化时代的到来,计算机视觉得以迅速发展,在社会生活中的各个领域发挥了重要作用.然而,近年来大气污染逐渐加重,雾霾天气出现的频率越来越高,导 ...

  3. 暗通道优先的图像去雾算法(上)

    FROM:http://blog.csdn.net/baimafujinji/article/details/27206237 11.1  暗通道优先的图像去雾算法 图像增强与图像修复二者之间有一定交 ...

  4. 暗通道优先的图像去雾算法(下)

    FROM:http://blog.csdn.net/baimafujinji/article/details/30060161 书接上文 http://blog.csdn.net/baimafujin ...

  5. 基于暗通道先验的单幅图像去雾算法小结

    在开始之前,先看一组去雾的效果图. 1. 关于去雾的意义及算法 去雾在视频监控.航拍.遥感.自动/辅助驾驶等需要在室外复杂.恶劣天气下运行的视觉系统,都可能需要运用到这一技术. 目前去雾算法主要有两个 ...

  6. 避免图像去雾算法中让天空部分出现过增强的一种简易方法

    FROM:http://www.chawenti.com/articles/25193.html 在经典的几种去雾算法中,包括何凯明的暗通道去雾.Tarel的基于中值滤波的去雾以及一些基于其他边缘保留 ...

  7. 单幅图像去雾算法研究综述

    来源 <计算机工程与应用>北大核心期刊,CSCD数据库. 影响因子:2.348 简介 图像去雾算法是以满足特定场景需求,突出图片细节并增强图片质量为目的的图像分析与处理方法.在雾霾天气下, ...

  8. 高级图像去雾算法的快速实现。

    http://blog.csdn.net/occupy8/article/details/40322683 最新的效果见 :http://video.sina.com.cn/v/b/124538950 ...

  9. 高级图像去雾算法的快速实现

    FROM:http://blog.csdn.net/occupy8/article/details/40322683 最新的效果见 :http://video.sina.com.cn/v/b/1245 ...

最新文章

  1. ffmpeg硬解码视频文件播放器
  2. iOS开发学无止境 - 这样好用的ReactiveCocoa,根本停不下来
  3. 多丽丝·莱辛获今年诺贝尔文学奖
  4. 右侧快速入口滑动时左侧跟着变化
  5. 27日直播预告丨Oracle运营商行业生产实践分享
  6. Spring Boot 声明式事务 @Transactional 的使用
  7. hiveserver2总是启动不起来
  8. 线程池框架-Executor
  9. 第9章:多媒体基础知识
  10. Hadoop大数据技术课程总结2021-2022学年第1学期
  11. 如何撰写优秀的谷歌AD广告标题?
  12. RTSP/Onvif视频智能平台EasyNVR播放视频卡顿的原因分析及解决
  13. 云服务器aip,云服务器API接口-云服务器的使用
  14. verilog语言中的@什么意思 verilog语言中的@什么意思
  15. 规范化:范式(主属性,非主属性,1NF,2NF,3NF,BCNF:定义,例子等)
  16. 使用jquery validate结合zui作表单验证
  17. OSPF虚链路(学习笔记+实验验证)
  18. VCPKG安装opencv后VS2019无法找到viz.hpp
  19. 2:什么是反射与反射的应用及调用方法(by-朝夕)
  20. Camera | 5.Linux v4l2架构(基于rk3568)

热门文章

  1. Hbase Sql 层 Phoenix 的三个特性Row timestamp, Sequences 和 Salted Tables
  2. java实现ATM取款机系统(无GUI)
  3. 东北大学计算机面试有英语吗,2021年度考东北大学计算机研英语口语面试整理精华.doc...
  4. 龙猫数据:服务AI产业,筑基智慧生态
  5. 基于Matlab/simulink的光伏发电+蓄电池+用户侧负载+三相交流微电网一体化系统
  6. mysql定时备份数据库-linux
  7. [生存志] 第105节 李斯谏逐客卿
  8. 自动驾驶轨迹预测任务浅述
  9. sd卡数据误删怎么恢复?内存卡里的照片删了怎么恢复
  10. “查看更多”与“隐藏”