• 首页
  • 博客
  • 留言墙

动态更新

喜欢我的内容的话不妨订阅支持一下 🫶
加入其他 2 位订阅者,随缘更新,欢迎订阅🥰。

首页博客留言墙

© 2026 async. fork自:GitHub

总浏览量 5.3万
最近访客来自 CN🇨🇳
  • 早期:基于先验的方法
  • 深度学习初期:基于CNN的方法
  • 基于大气散射模型的CNN方法
  • 端到端的CNN方法
  • Transformer模型
  • 结语
去烟/雾算法发展概览
2025/03/10算法

去烟/雾算法发展概览

本文介绍了去烟/雾算法的发展历程,介绍了几个经典模型。

269次点击17分钟阅读

早期:基于先验的方法

此阶段的方法不依赖于深度学习,而是基于对大量无雾和有雾的观察,人工总结出统计规律(先验知识),利用物理散射模型来反推图像的透射率和大气光值。

主要的代表算法是暗通道先验(Dark Channel Prior, DCP)。通过观察发现,在绝大多数没有雾的户外图像的局部区域中,至少有一个颜色通道的像素值是非常低的,这个通道就被称为暗通道。

例如在阴影比如树荫、建筑背光处,三个通道的值都很低;鲜艳的物体如一朵红色花,R通道值很高,G和B的通道值则很低(接近0),黑色的物体如树干、石头,三个通道值都很低。

而雾(大气光)通常是白茫茫的,亮度较高。

  • 如果有雾:原本应该很黑的暗通道,会因为叠加了白色的雾气而像素值升高。
  • 计算逻辑:算法通过计算暗通道的像素值有多高,就能反推出该区域的雾气有多浓(即此处的透射率有多大)。
  • 还原:知道了雾的浓度,可以根据物理公式来将雾减去,还原出清晰的图像。

在数学上,暗通道可以表示为:

Jdark(x)=min⁡y∈Ω(x)(min⁡c∈{r,g,b}Jc(y))≈0J^{dark}(x) = \min_{y \in \Omega(x)} \left( \min_{c \in \{r, g, b\}} J^c(y) \right) \approx 0 \\ Jdark(x)=y∈Ω(x)min​(c∈{r,g,b}min​Jc(y))≈0

相关文章

【斯坦福CS231n 学习笔记13】Robot Learning
  • 其中JcJ^cJc是图像JJJ的R、G、B的某个通道。
  • Ω(x)\Omega(x)Ω(x)是以像素xxx为中心的局部窗口(通常是15×1515\times 1515×15的方块)。

利用大气散射模型对图像进行去雾:

I(x)=J(x)t(x)+A(1−t(x))I(x)=J(x)t(x)+A(1-t(x))\\ I(x)=J(x)t(x)+A(1−t(x))
  • 其中I(x)I(x)I(x)为观察到的有雾图像。
  • J(x)J(x)J(x)为要恢复的无雾图像。
  • t(x)t(x)t(x)为透射率,代表光线穿透雾的能力,雾越浓,则t越小。
  • AAA代表大气光值,通常取整张图中最亮区域的值。

归一化:将方程两边同时处以大气光A:

I(x)Ac=J(x)t(x)Ac+1−t(x)\frac{I(x)}{A^c}=J(x)\frac{t(x)}{A^c}+1-t(x)AcI(x)​=J(x)Act(x)​+1−t(x)

取最小值:对方程两边进行两次取最小操作(第一次是对RGB取最小,一次是对局部窗口Ω(x)\Omega(x)Ω(x)取最小):

min⁡y∈Ω(x)(min⁡cIc(y)Ac)=t(x)min⁡y∈Ω(x)(min⁡cJc(y)Ac)+1−t(x)\min_{y \in \Omega(x)} \left( \min_c \frac{I^c(y)}{A^c} \right) = t(x) \min_{y \in \Omega(x)} \left( \min_c \frac{J^c(y)}{A^c} \right) + 1 - t(x)y∈Ω(x)min​(cmin​AcIc(y)​)=t(x)y∈Ω(x)min​(cmin​AcJc(y)​)+1−t(x)

代入先验:根据暗通道先验,无雾图像JJJ的暗通道趋近0,即Jdark(x)=min⁡y∈Ω(x)(min⁡c∈{r,g,b}Jc(y))≈0J^{dark}(x) = \min_{y \in \Omega(x)} \left( \min_{c \in \{r, g, b\}} J^c(y) \right) \approx 0 Jdark(x)=miny∈Ω(x)​(minc∈{r,g,b}​Jc(y))≈0。因此中间一项约为0。

求解t(x)t(x)t(x):

t(x)=1−ωmin⁡y∈Ω(x)(min⁡cIc(y)Ac)t(x) = 1 - \omega \min_{y \in \Omega(x)} \left( \min_c \frac{I^c(y)}{A^c} \right)t(x)=1−ωy∈Ω(x)min​(cmin​AcIc(y)​)

引入常数ω\omegaω的原因是为了保留少量的雾,使得图片更加自然,保留景深感。

暗通道先验的优点是简单且有效,在很多场景下效果惊人;缺点是对天空失效,因为天空本身就很亮,不符合暗通道趋近于0的假设,所有DCP在处理天空时会容易出现颜色失真,且模型基于理想化的假设,在面对复杂不均匀的真实世界雾霾时,刚性的假设往往会失效,导致泛化能力较差。

相似的算法还有颜色衰减先验(Color Attenuation Prior)和颜色线(Color-Lines)先验,都是基于先验的方法。

深度学习初期:基于CNN的方法

此处主要从人工先验转换到数据驱动,利用卷积神经网络的特征提取能力,从大规模的数据集中自动学习雾霾的特征。深度学习方法主要还是分为两个方面,早中期还是以大气散射模型为基础;由于现实中的雾实际上更加复杂,要综合考虑深度、光照等因素,因此后期则直接以端到端模型为主。

基于大气散射模型的CNN方法

以DehazeNet为例,该方法还是以大气散射模型为基础,但是t(x)t(x)t(x)和AAA不再依靠人工规则计算,而是通过训练一个CNN来计算。

DehazeNet架构图

该方法通过CNN模型计算出透射率图,即t(x)t(x)t(x),然后将透射率图输入到大气散射模型来恢复无雾图像。

该模型的主要创新点以及所相应解决的问题如下:

  • 在特征提取层引入了Maxout单元,在第一层卷积以后使用Maxout激活参数,来解决特征学习的单一性和局限性。Maxout是一种分段线性函数,作用是输出k个不同的输入值中的最大值,可以通过学习不同的滤波器参数,自动拟合出类似于“最小值滤波”(暗通道)、“最大值滤波”(最大对比度)等多种去雾特征,网络可以自动学习最有效的雾气特征,而不仅仅依赖于人工假设。
  • 多尺度映射:在网络的第二层使用并行卷积操作。解决了尺度变化的适应性。雾的透射率和景深相关,而图像中的物体的大小和距离是多变的。单一尺度的卷积核难以同时处理微小的细节和巨大的物体,多尺度卷积就能够很好地解决这个问题,从多个尺度提取特征,提高模型对图像缩放和不同大小的鲁棒性。
  • 局部极值操作:在网络的第三层引入最大池化操作,主要是用于对传输图做平滑处理,来防止逐像素计算出的特征可能因为纹理、颜色等变化而产生巨大剧烈波动;除此以外,还能有效地抑制了由白色物体或图像噪声引起的传输率低估误差。
  • 双边ReLU激活函数:通过新的激活函数BReLU,将输出限制在[0,1][0,1][0,1]中,来解决透射率大于1的情况;同时还规避了Sigmoid函数的梯度消失问题,保留了ReLU的局部线性,提升了图像恢复的质量。

端到端的CNN方法

这类方法不再纠结于中间物理参数,而是直接学习从”有雾图“到”无雾图“的映射关系,减少了对物理先验的依赖,通常能够获得更高的图像保真度。

以FFA-Net为例,该模型是一个完全的端到端网络,输入有雾图,直接输出无雾图,中间不再显式计算透射率t(x)t(x)t(x)与大气光AAA。

该方法主要解决了传统深度学习去雾方法的两个痛点:

  • 低效处理:之前的网络通常对图像中的每一个像素和每一个特征都“一视同仁”,但是实际上雾在图像中的分布是不均匀的,有些地方的雾比较厚,有些地方仅仅只有薄雾;且不同的特征通道包含的信息重要性不同,有些通道包含更多的边缘纹理,有些地方包含更多色彩。如果不区分对待,则网络就会将资源浪费在简单的区域,在苦难的区域在效果不佳。
  • 浅层信息的丢失:随着网络层数变深,原本图像的细节容易在多次卷积之后丢失。同时保留深层语义和浅层细节就变成了一个难题。

FFA-Net使用了注意力机制和融合来解决以上问题:

  • 注意力:雾气分布不均匀,那么网络应该学会聚焦,侧重雾气较厚的地方。
  • 特征融合:保留中间产生的信息,网络前几层提取的特征和后几层提取的特征应当结合起来,共同确定最后的去雾图像。

FFA-Net的模型架构如下:

FFA-Net架构图

该模型主要由以下阶段组成:

  • 浅层特征提取:图像先经过一个简单的卷积层,为后续的深层处理准备。
  • 堆叠的组架构:特征图连续通过三个组架构,每一组都提取出不同层级的特征。
  • 特征融合:三个组架构的输出除了作为下一组的输入意外,还会被汇聚到拼接模块,拼接的特征会通过一个特征注意力模块,这样可以让网络同时保留浅层细节特征和深层语义特征,并且自动学习它们的权重进行融合。
  • 重建与全局残差:融合后的特征再经过最后的卷积层来重建图像。原始输入的图像直接连接到网络的末端,说明整个网络学习的实际上是残差,即如何从有雾的图中减去雾,或者如何修正输入的图片。

细分来看,每个组内由19个基本块串联而成,基本块包含局部残差学习和特征注意力。流程为Conv→ReLU→Conv→FAModule→与输入相加Conv \rightarrow ReLU \rightarrow Conv \rightarrow FA Module \rightarrow 与输入相加Conv→ReLU→Conv→FAModule→与输入相加。而特征注意力又主要由通道注意力和像素注意力串联而成:

特征注意力模块
  • 通道注意力主要解决不同特征通道的重要性不同的问题,例如某些通道可能用于响应浓雾,某些用于响应边缘。通过使用全局平均池化压缩空间的信息,算出每个通道的一个权重值,然后乘以原特征。
  • 像素注意力主要解决雾在图像上分布不均的问题,通过卷积和Sigmoid生成一张和原图一样大的权重图。雾大的地方权重可能大,没雾的地方权重较小。

Transformer模型

CNN的劣势就是卷积核视野(感受野)太小,看局部容易将白墙当成雾。而Transformer的Self-Attention天生就能够看全局。

以DehazeFormer为例,该模型在Swin Transformer的基础上改进了归一化方法和将循环移位替换为反射填充,成为了在SOTS indoor数据集上
PSNR指标首次超过40dB的Transformer架构的模型,在去雾这一领域超越了CNN。

DehazeFormer主要解决的问题如下:

  • CNN的局限性:传统的CNN擅长提取局部特征,但是在捕捉全局上下文方面则较弱,而去雾则非常依赖全局信息。
  • 通用Transformer在去雾领域表现不佳:Swin Transformer直接用于去雾会出现很多问题,因为其很多设计是为了“识别物体”而设计的,并不是为复原像素而设计的:
    • Swin Transformer的LayerNorm会破坏雾的特征,雾的浓度通常与图像的亮度和对比度强相关。如果强行将每个图像块都归一化为一样的分布,相当于把雾的浓度信息丢掉了。
    • 循环移位会带来伪影,为了让不同的窗口进行信息交流,Swin Transformer使用了一种称为循环移位的操作,在去雾这种需要生成高质量图片的任务中,会导致明显的边缘伪影。

该模型的架构如下:

DehazeFormer架构

针对以上问题,DeHazeFormer主要做出了以下改进:

  • 提出了新的归一化方法来替代LayerNorm:先像LayerNorm一样将数据归一化,然后再将整张特征图的全局均值和全局方差加回去。归一化是为了让网络训练更加稳定,而加回全局均值和方差,这是为了保留”雾的浓度信息“。
  • 使用反射填充替代循环移位,当划分窗口时,如果在边缘不够切分,选择使用镜像反射的方式将边缘补齐,处理完之后再切去,这样能够保证边缘的连续性,不会出现”把图片左边的像素强行拼到右边“这种违背物理空间位置的操作,有效消除了去雾后的边缘伪影。
镜像反射填充
  • 并行卷积和注意力:在Transformer的注意力机制旁边加了一个并行的深度卷积分支,有效将全局信息和局部信息结合起来,同时兼顾了去雾程度和纹理的保留。

结语

算法的演进,是为了让我们看得更清。从基于统计学的物理先验,到卷积神经网络的局部特征提取,再到 Transformer 的全局上下文感知,去烟算法在精度与泛化性上不断突破天花板。这一路走来,不仅是在通过数学消除图像中的雾霭,更是在探索如何让机器在不确定性中还原真实世界的本来面貌。虽然“完美去雾”在复杂多变的现实场景中仍面临挑战,但随着模型架构的持续创新,那层遮挡在镜头前的“迷雾”正变得越来越淡。

参考文献如下:

Kaiming He, Jian Sun and Xiaoou Tang, "Single image haze removal using dark channel prior," 2009 IEEE Conference on Computer Vision and Pattern Recognition, Miami, FL, USA, 2009, pp. 1956-1963, doi: 10.1109/CVPR.2009.5206515.
B. Cai, X. Xu, K. Jia, C. Qing and D. Tao, "DehazeNet: An End-to-End System for Single Image Haze Removal," in IEEE Transactions on Image Processing, vol. 25, no. 11, pp. 5187-5198, Nov. 2016, doi: 10.1109/TIP.2016.2598681.
Qin, X., Wang, Z., Bai, Y., Xie, X., & Jia, H. (2020). FFA-Net: Feature Fusion Attention Network for Single Image Dehazing. Proceedings of the AAAI Conference on Artificial Intelligence, 34(07), 11908-11915. https://doi.org/10.1609/aaai.v34i07.6865
Yuda Song, Zhuqing He, Hui Qian, and Xin Du. 2023. Vision Transformers for Single Image Dehazing. Trans. Img. Proc. 32 (2023), 1927–1941. https://doi.org/10.1109/TIP.2023.3256763

【斯坦福CS231n 学习笔记13】Robot Learning

2025/06/07算法, cs231n37241分钟阅读
【斯坦福CS231n 学习笔记12】Vision and Language

【斯坦福CS231n 学习笔记12】Vision and Language

2025/06/02cs231n, 算法39631分钟阅读
【斯坦福CS231n 学习笔记11】3D Vision

【斯坦福CS231n 学习笔记11】3D Vision

2025/06/01算法, cs231n39048分钟阅读