基于Matlab的暗通道先验算法图像去雾
雾天是摄影中比较棘手的问题之一,因为雾天会降低图像的清晰度和对比度。图像去雾处理是解决这个问题的重要手段之一。本文介绍了一种基于Matlab的暗通道先验算法图像去雾方法。
暗通道先验
暗通道先验是一种用于天然图像描述的先验知识。在自然图片中,至少有一个子区域是不受光照条件限制的,这个子区域被称为暗通道。暗通道是一种与天然图像有关的全局统计特征,它具有普适性和稳定性。暗通道先验假设,在大部分情况下,暗通道值小于1,即:
min[rgb] = J(x) (1-alpha*min(dark_channel)), 其中J(x)是输入图像的暗通道,alpha是一个可调参数(一般取0.1-0.2),dark_channel是指所有像素的暗通道最小值。
通过对暗通道进行判断,可以从图像中提取出更多的信息来。
基于暗通道先验的去雾步骤
该算法主要包括以下步骤:
-
获取暗通道:将输入图像J(x)进行最小值滤波,得到模糊的暗通道图。
-
估计大气光A:通过暗通道图,找到所有像素的暗通道的全局最大值,且像素点rgb中的任意一个值rgb[i]与该暗通道值相等,则可以认为该像素属于雾区域。选择雾区域中亮度最高的像素作为全局大气光A。
-
修正透射率t: t是图像中每个像素在雾天中传播的比例。在暗通道先验下,t并不是线性的,而是指数型的。即:
t(x) = 1 - w*min[rgb_c]/A
其中w是一个可调参数(一般取0.95),rgb_c是雾霾区域内的颜色值,A是上一步求出的全局大