视频去雾任务的目标是从含有雾霾、水汽或人为模糊的序列中恢复出清晰画面。与图像去雾不同,视频处理不仅要考虑单帧的复原质量,还必须保证相邻帧之间的视觉连续。如果直接对每一帧套用图像去雾模型,往往会因为估计的透射率和大气光在帧间波动,造成明显的闪烁和拖影。时序一致性去雾算法通过挖掘帧间运动与亮度关联,将单帧复原结果约束在一个时间平滑的轨道上。

大气散射模型与单帧去雾基础
理解时序一致性去雾,首先要回到图像退化的物理模型。计算机视觉中常用的大气散射模型表示为:观测图像 I(x) = J(x)t(x) + A(1 - t(x))。其中 J 是景物真实辐射,t(x) 是透射率,A 是全局大气光。去雾的本质就是从有雾图 I 中解出 J,这需要先估计 t 和 A。
单帧方法如暗通道先验,假设无雾图像的局部区域至少有一个颜色通道亮度很低,从而由有雾图反推透射率。这类算法在静止图片上效果突出,但视频中每帧独立估计会让 t(x) 在物体边缘、运动区域产生跳变。当相机或物体移动时,同一空间位置前后帧的透射率可能差异巨大,复原后的亮度就不连续。因此,单帧模型必须配合时间维约束才能用于视频。
在工程实现上,我们可以先用暗通道得到初始透射率图,再将其作为时序算法的输入。下面代码展示了如何用 Python 计算一帧的暗通道,后续会把它送入时序平滑模块:
import cv2
import numpy as np
def dark_channel(img, ksize=15):
# img为浮点型BGR图像,范围0-1
min_ch = np.min(img, axis=2)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (ksize, ksize))
dark = cv2.erode(min_ch, kernel)
return dark
frame = cv2.imread('hazy_frame.png').astype(np.float32) / 255.0
dark = dark_channel(frame)
print(dark.shape)
光流引导的帧间透射率传播
时序一致性去雾的核心思路之一,是利用光流将前一帧的透射率沿运动场 warping 到当前帧,再与当前帧独立估计的结果融合。这样做能借助已复原帧的稳定信息,压制当前帧的估计噪声。光流网络如 FlowNet 或经典 Lucas-Kanade 都可提供像素级位移,使传播具备运动自适应能力。
具体融合时常采用置信度加权:当前帧暗通道可靠的区域权重高,光流遮挡或误差大的区域则更相信独立估计。一个简单策略是 t_final = w * t_warp + (1-w) * t_single,其中 w 由光流幅度和重建误差决定。实验表明,这种方法在相机平移场景中可将闪烁指标降低一半以上,同时几乎不损失去雾锐度。
下面示例利用稀疏光流做透射率传播,仅作原理演示。真实系统会使用稠密光流并加入遮挡掩码:
import cv2
import numpy as np
def warp_transmission(t_prev, flow):
h, w = t_prev.shape
grid_x, grid_y = np.meshgrid(np.arange(w), np.arange(h))
map_x = (grid_x + flow[:,:,0]).astype(np.float32)
map_y = (grid_y + flow[:,:,1]).astype(np.float32)
t_warp = cv2.remap(t_prev, map_x, map_y, cv2.INTER_LINEAR)
return t_warp
# 假设已有前一帧透射率 t_prev 和光流 flow
t_warp = warp_transmission(t_prev, flow)
t_final = 0.7 * t_warp + 0.3 * t_single
大气光与时间滤波的工程权衡
除了透射率,大气光 A 的帧间波动也会引发整体色调跳变。一些算法将 A 建模为缓慢变化的全局变量,用指数滑动平均更新:A_t = alpha * A_t-1 + (1-alpha) * A_est。这样既能跟踪场景雾浓度变化,又避免逐帧突变。参数 alpha 通常取 0.8 到 0.95,需根据视频帧率调整。
在嵌入式或实时系统中,完整光流计算可能成为瓶颈。此时可退化为基于特征点匹配或块运动估计的轻量方案,甚至直接在 YUV 域对亮度做时间低通滤波。虽然物理严谨性下降,但用户感知的连贯性仍大幅提升。下表对比了三类主流思路的取舍:
| 方案 | 一致性效果 | 计算开销 | 适用场景 |
|---|---|---|---|
| 独立单帧去雾 | 差,易闪烁 | 低 | 静态图或允许后处理 |
| 光流引导融合 | 优 | 中高 | 行车记录仪、监控 |
| 全局大气光滤波 | 良 | 低 | 雾浓度缓变视频 |
实际部署时,建议先以暗通道加时间滤波起步,确认帧率达标后再引入光流。无论哪条路径,目标都是让复原视频在主观上既通透又平稳,不发生令人分心的亮度脉动。
video_dehazingtemporal_consistencyimage_restoration修改时间:2026-08-16 14:46:14