054、雾霾、烟尘天气图像不清楚?暗通道先验 + 深度学习去雾的工程对比方案去年冬天,我在一个户外监控项目里被雾霾折腾得够呛。摄像头装在化工厂烟囱附近,每天早晚雾气混着烟尘,画面白茫茫一片,连车牌都看不清。甲方要求“至少能分辨出是哪个工人经过”,我试了三种去雾方案,踩了无数坑,最后才摸清暗通道先验和深度学习各自的脾气。今天这篇笔记,就把这些实战经验摊开来讲。暗通道先验:老派但管用的“物理模型”先说暗通道先验。这个理论是He Kaiming在2009年提出的,核心观察很简单:在无雾的户外图像里,每个局部区域至少有一个颜色通道的像素值非常低,接近0。雾霾区域则相反,因为大气光散射,所有通道的亮度都被抬高了。基于这个先验,我们可以反推出雾的浓度和大气光值,然后逆推恢复清晰图像。代码实现时,第一步是计算暗通道。别直接用min函数遍历每个像素,那样太慢。我习惯用滑动窗口加最小值滤波,OpenCV的erode函数就能干这事。这里踩过坑:窗口大小选15x15比较稳,太小了暗通道里会出现大量噪声,太大了边缘细节全糊掉。窗口大小直接影响透射率图的精度,调试时我试过从5x5到31x31,15是个经验值。importcv2importnumpyasnp