forked from sjtrny/Dark-Channel-Haze-Removal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdehaze.m
37 lines (23 loc) · 720 Bytes
/
dehaze.m
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
function [ radiance ] = dehaze( image, omega, win_size, lambda )
%DEHZE Summary of this function goes here
% Detailed explanation goes here
if ~exist('omega', 'var')
omega = 0.95;
end
if ~exist('win_size', 'var')
win_size = 15;
end
if ~exist('lambda', 'var')
lambda = 0.0001;
end
[m, n, ~] = size(image);
dark_channel = get_dark_channel(image, win_size);
atmosphere = get_atmosphere(image, dark_channel);
trans_est = get_transmission_estimate(image, atmosphere, omega, win_size);
L = get_laplacian(image, zeros(size(image)));
A = L + lambda * speye(size(L));
b = lambda * trans_est(:);
x = A \ b;
transmission = reshape(x, m, n);
radiance = get_radiance(image, transmission, atmosphere);
end