基于单幅图像的快速去雾算法

本论文是清华大学写的基于均值滤波的去雾算法。


% 基于单幅图像的快速去雾算法
fileName = 'D:\\image\\haze image\\He\\canon3.bmp';

% step1: 输入:有雾图像H(x)
H = imread(fileName);
H = double(H) / 255.0;
imtool(H);
[h, w] = size(H);
sv = ceil(max(h, w) / 50);
if mod(sv, 2) == 0
    sv = sv + 1;
end

% step2: 求取H(x)三通道的最小值M(x)
M = min(H, [], 3);

% step3: 对M(x)进行均值滤波,得到Mave(x)

f = fspecial('average', sv);
Mave = imfilter(M, f, 'symmetric');   

% step4: 求取M(x)中所有元素的均值Mav
[h, w] = size(Mave);
n = 0.0;
for i=1:h
    for j=1:w
        n = n + Mave(i, j);  
    end
end
Mav = n / (h * w);

% step5: 利用Mave(x)求出L(x)
e = 2.0;    % e是一个用来调节的参数,当e值越大时,去雾后的图像就越暗,去雾效果就越明显,e值越小时,图像偏白,有明显的雾气。
L = min(min(e*Mav, 0.9)*Mave, M);


% step6: 利用Mave(x)和H(x),求出A
temp = max(H, [], 3);
A = 0.5 * (max(temp(:)) + max(Mave(:))) * [1; 1; 1];

% step7: 去雾后图像F(x)
[h, w, c] = size(H);
F = zeros(h, w, c);
for i=1:h
    for j=1:w
        for k=1:c
            F(i,j,k) = (H(i,j,k) - L(i,j)) / (1 - L(i,j)/A(k));
        end
    end
end

imtool(F);


  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值