forked from sidney001/image_pairs_deblur
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCopy_of_compute_Igain_map.m
65 lines (50 loc) · 1.66 KB
/
Copy_of_compute_Igain_map.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
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
function [ Igain ] = compute_Igain_map ( Nd, alpha )
%COMPUTE_IGAIN_MAP Compute gain map used in gain-controlled RL
%
% Nd - The imaged as the source of gain map calculation
% alpha - The param determines the influence of gain map
lmax = 1;
gsize = [5 5];
sig = 0.5;
% g = fspecial('gaussian', [3,3], 1);
% Nd = imfilter(rgb2gray(Nd), g, 'conv');
[ h, w, d ] = size(Nd);
% Prepare Gaussian Pyramid
if d == 3
Ndl = Gscale(rgb2gray(Nd), lmax, gsize, sig);
else
Ndl = Gscale(Nd, lmax, gsize, sig);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%sigama = [0.001, 0.005,0.01,0.05]
% Preprocess the gradient of every point in the image
for l = 1:lmax
[ img(l).Gx, img(l).Gy ] = imgradientxy(Ndl(l).img, 'CentralDifference');
% g = fspecial('gaussian', [5,5], 1);
% img(l).Gx = imfilter(img(l).Gx, g, 'conv');
% img(l).Gy = imfilter(img(l).Gy, g, 'conv');
end
Igain = zeros([ h w ], 'double');
% Calculate Igain(i,j) for every single point in the image
for i = 1:h
for j = 1:w
Sum = 0;
for l = 1:lmax
%Sum = Sum + norm(get_gradient(img, , j, l));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% xx = max(fix(i/(2^l)),1);
% yy = max(fix(j/(2^l)),1);
Sum = Sum + sqrt((img(l).Gx(i,j)) ^2 +(img(l).Gy(i,j)) ^2);
end
Igain(i, j) = 0.8 + alpha * Sum*80;
end
end
% normalize Igain
Igain = Igain / max(Igain(:));
end
function [ gx, gy ] = get_gradient ( img, x, y, l )
% calculate the corresponding point for (x,y) in level l of Gaussian
% Pyramid
gx = img(l).Gx(max(fix(x/(2^l)),1));
gy = img(l).Gy(max(fix(y/(2^l)),1));
end