暗通道先验算法matlab

暗通道先验算法

本文参考何凯明大神的暗通道去雾算法《Single Image Haze Removal Using Dark Channel Prior》和一些相关的csdn上的博客,并附上自己编写的代码

基于统计大量清晰图像得到的暗通道先验理论是指大部分不含天空的优质图像的所有像素在R,G,B这3个通道中最少存在一个颜色通道灰度值相当低以至趋近于0[5],也就是在一定的微小区域里最小辐射强度值极低。一幅图像J可定义为:


前言

暗通道先验算法的学习

一、设置已知参数

t0=0.1,w0=0.95

二、操作如下

clear all ;close all;clc
I = imread('C:\Users\dzt\Desktop\1.jpg');     %读取图片
I = double(I)/255; 
[m,n,g] = size(I);
dark_I = zeros(m,n);
for i=1:m                                        %%暗通道  
    for j=1:n
        dark_I(i,j) = min(I(i,j,:));
    end
end
I1 = ordfilt2(dark_I,1,ones(15,15),'symmetric');    %%最小值滤波效果最好
figure,
subplot(131),imshow(I);
subplot(132),imshow(dark_I);
subplot(133),imshow(I1);                         %%生成最终的暗通道图T1

dark_channel = I1;
 
A = max(max(dark_channel))*0.999;              %取前0.1%                              
w0 = 0.95;
t_ = 1 - w0 * I1/ A;                              %%透射率t计算
t0 = 0.1;
t = max(t0,t_);
J = zeros(m,n,3);
for k = 1:3
    for i = 1:m
        for j = 1:n
            J(i,j,k) = (I(i,j,k)-A)/t(i,j)+A;
        end
    end
end
figure(1),
subplot(121),imshow(I);
subplot(122),imshow(J);

二、结果如下


总结

暗通道先验算法处理之后,图中物体出现光环以及失真。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值