本文参考何凯明大神的暗通道去雾算法《Single Image Haze Removal Using Dark Channel Prior》和一些相关的csdn上的博客,并附上自己编写的代码
采用暗通道先验去雾算法中模糊图像(有雾图像)模型被描述成:
I(x)是我们观察到的图像,即有雾的图像,J(x)是我们要恢复的图像,即去雾之后的图像,
A是全局大气光强,t是媒介传播系数。这个算法的目的就是从I、A、t中得到J。目前我们只知道I(x),需要求出A和t
在A和t之前,我们引入暗通道先验:
一个图像的暗通道可以表示为:
而无雾的图像,即我们要恢复的图像的暗通道数值趋于0
因此我们把这个先验条件带入模糊图像模型
我们可以得到:
由此我们得到了t,因为这样在视觉上看起来是不自然的,我们修正了这个公式:
其中w=0.95,最终在把t,带入模型,可以得到
以下是matlab代码:
求暗通道的部分:先求RGB三个通道的最小值,再进行最小值滤波
%% dark_channel
I1=zeros(m,n);
for i=1:m
for j=1:n
I1(i,j)=