暗通道先验图像去雾算法——Matlab代码
时间: 2023-10-15 21:03:42 浏览: 153
基于暗通道先验的图像去雾算法+含代码操作演示视频
5星 · 资源好评率100%
这是一段用于暗通道先验图像去雾的Matlab代码。这个算法是根据论文《Single image haze removal using dark channel prior》实现的。
```
close all;
clear all;
w0=0.65; % 乘积因子用来保留一些雾,1时完全去雾
t0=0.1;
I=imread('1.png');
figure;
subplot(221)
imshow(I);
title('原始图像');
[h,w,s]=size(I);
min_I=zeros(h,w);
%下面取得暗通道图像
for i=1:h
for j=1:w
dark_I(i,j)=min(I(i,j,:));
end
end
subplot(223)
imshow(dark_I);
title('dark channnel的图形');
Max_dark_channel=double(max(max(dark_I))); %天空亮度
dark_channel=double(dark_I);
t=1-w0*(dark_channel/Max_dark_channel); %取得透射分布率图
subplot(224)
T=uint8(t*255);
imshow(T);
title('透射率t的图形');
t=max(t,t0);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I1=double(I);
J(:,:,1) = uint8((I1(:,:,1) - (1-t)*Max_dark_channel)./t);
J(:,:,2) = uint8((I1(:,:,2) - (1-t)*Max_dark_channel)./t);
J(:,:,3) = uint8((I1(:,:,3) - (1-t)*Max_dark_channel)./t);
subplot(222)
imshow(J);
title('去雾后的图像');
```
希望这个代码能对你有所帮助。
阅读全文