1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
tic
clear; clc; for image_number=1:8 imageName=strcat(num2str(image_number),'.jpg'); I = imread(imageName); figure; imshow(I,[]); title(['第',num2str(image_number),'幅图像的原图']);
[height,width,dimention] = size(I);
window_size = 7; dark_channel = My_darkchannel(I,window_size); dark_channel = dark_channel./255;
I = im2double(I); A = My_estimateA(I,dark_channel);
w = 0.95;
t = 1-w*dark_channel/mean(A(1,1,:));
I_gray = rgb2gray(I);
t1 = My_guidedfilter(I_gray, t, 135, 0.0002);
t2 = My_guidedfilter(t1,t1,7,0.03);
t_treshold = 0.1;
t = max(t2,t_treshold);
K = 0.2; defog_image = zeros(size(I));
defog_image(:,:,1) = ((I(:,:,1)-A(1,1,1))... ./min(1,t.*max( K./abs(I(:,:,1)-A(1,1,1)),1) ... )) +A(1,1,1); defog_image(:,:,2) = ((I(:,:,2)-A(1,1,2))... ./min(1,t.*max( K./abs(I(:,:,2)-A(1,1,2)),1) ... )) +A(1,1,2);
defog_image(:,:,3) = ((I(:,:,3)-A(1,1,3))... ./min(1, t.*max( K./abs(I(:,:,3)-A(1,1,3)),1) ... )) +A(1,1,3);
defog_image = defog_image*1.3;
figure; imshow(defog_image); title(['第',num2str(image_number),'幅图像的去雾图像']); clear; clc; end toc
|