Python图像处理丨详解图像去雾处理方法

本文分享自华为云社区《[Python/ target=_blank class=infotextkey>Python图像处理] 三十.图像预处理之图像去雾详解(ACE算法和暗通道先验去雾算法)丨【拜托了,物联网!】-云社区-华为云》,作者:eastmount。
一.图像去雾
随着社会的发展,环境污染逐渐加剧,越来越多的城市频繁出现雾霾,这不仅给人们的身体健康带来危害,还给那些依赖图像信息的计算机视觉系统造成了不良影响,因为在雾天采集到的图像对比度和饱和度均较低,颜色易发生偏移与失真等 。因此,寻找一种简单有效的图像去雾方法,对计算机视觉的后续研究至关重要 。
 

该部分主要从下列几篇论文摘取对图像去雾算法进行普及,引用及参考中文论文: 魏红伟, 等. 图像去雾算法研究综述[J]. 软件导刊, 2021.王道累, 等. 图像去雾算法的综述及分析[J]. 图学学报, 2021.OpenCV图像增强万字详解(直方图均衡化、局部直方图均衡化、自动色彩均衡化)- Eastmount
 
图像增强(Image Enhancement)是指按照某种特定的需求,突出图像中有用的信息,去除或者削弱无用的信息 。图像增强的目的是使处理后的图像更适合人眼的视觉特性或易于机器识别 。在医学成像、遥感成像、人物摄影等领域,图像增强技术都有着广泛的应用 。图像增强同时可以作为目标识别、目标跟踪、特征点匹配、图像融合、超分辨率重构等图像处理算法的预处理算法 。
Python图像处理丨详解图像去雾处理方法

文章插图
 
近些年来,出现了众多的单幅图像去雾算法,应用比较广泛的有:
 
  • 直方图均衡化去雾算法
  • Retinex去雾算法
  • 暗通道先验去雾算法
  • 基于卷积神经网络的Dehaz.NET去雾算法
 
其主要可以分为 3 类:基于图像增强的去雾算法、基于图像复原的去雾算法和基于 CNN 的去雾算法 。
(1) 基于图像增强的去雾算法
通过图像增强技术突出图像细节,提升对比度,使之看起来更加清晰,这类算法的适用性较广 。具体的算法有:
 
  • Retinex 算法
    根据成像原理,消除了反射分量的影响,达到了图像增强去雾的效果
  • 直方图均衡化算法
    使图像的像素分布更加均匀,放大了图像的细节
  • 偏微分方程算法
    将图像视作一个偏微分方程,通过计算梯度场提高对比度
  • 小波变换算法
    对图像进行分解,放大有用的部分
 
此外,在这类算法的基础上出现了众多的基于图像增强原理的改进算法 。
Python图像处理丨详解图像去雾处理方法

文章插图
 
(2) 基于图像复原的去雾算法
主要是基于大气散射物理学模型,通过对大量有雾图像和无雾图像进行观察总结,得到其中存在的一些映射关系,然后根据有雾图像的形成过程来进行逆运算,从而恢复清晰图像 。其中最经典的要属何恺明大佬提出的:
 
  • 暗通道先验去雾算法
    通过对大量无雾图像进行特征分析,找到了无雾图像与大气散射模型中某些参数的先验关系 。该算法复杂度低,去雾效果好,因此在其基础上出现了大量基于暗通道先验的改进算法 。
 
Python图像处理丨详解图像去雾处理方法

文章插图
 
(3) 基于CNN的去雾算法
使用 CNN 建立一个端到端的模型,通过有雾图像恢复出无雾图像,目前使用神经网络进行去雾的算法主要有两种思路:
 
  • 使用 CNN 生成大气散射模型的某些参数,然后再根据大气散射模型来恢复无雾图像
  • 使用 CNN (例如 GAN)直接根据模糊图像生成无雾的清晰图像
 
CNN 因其强大的学习能力在多个领域得到应用,因此也出现了采用 CNN 进行去雾的算法 。2016年CAI等首次提出了一种名为DehazeNet的去雾网络,用于估计有雾图像的透射率 。DehazeNet 将有雾的模糊图像作为输入,输出其透射率,基于大气散射模型理论恢复出无雾的清晰图像 。


推荐阅读