Skip to content

Commit a227b47

Browse files
committed
DW_Wn is OK
1 parent e32099b commit a227b47

File tree

5 files changed

+170
-13
lines changed

5 files changed

+170
-13
lines changed

Demosaic/src/DW_GB2R.asv

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
function [G,B] = DW_GB2R(neighborhoodData)
2+
% readRaw.m get rawData from HiRawImage
3+
% Input:
4+
% neighborhoodData the data of neighborhood range
5+
% Output:
6+
% [G B] The lack of G and B on R
7+
% Instructions:
8+
% author: wtzhu
9+
% e-mail: wtzhu_13@163.com
10+
% Last Modified by wtzhu v1.0 2022-01-22
11+
% Note:
12+
In = zeros(12, 1);
13+
Wn = zeros(12, 1);
14+
[h, w] = size(neighborhoodData);
15+
centerH = round(h/2);
16+
centerW = round(w/2);
17+
18+
In(1) = abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
19+
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW));
20+
21+
In(2) = abs(neighborhoodData(centerH-1, centerW) - neighborhoodData(centerH+1, centerW)) + ...
22+
abs(neighborhoodData(centerH-2, centerW) - neighborhoodData(centerH, centerW));
23+
24+
In(3) = abs(neighborhoodData(centerH, centerW+1) - neighborhoodData(centerH, centerW-1)) + ...
25+
abs(neighborhoodData(centerH, centerW+2) - neighborhoodData(centerH, centerW));
26+
27+
In(4) = abs(neighborhoodData(centerH+1, centerW) - neighborhoodData(centerH-1, centerW)) + ...
28+
abs(neighborhoodData(centerH+2, centerW) - neighborhoodData(centerH, centerW));
29+
30+
In(5) = 0.5*(abs(neighborhoodData(centerH-1, centerW-2) - neighborhoodData(centerH+1, centerW+2)) + ...
31+
abs(neighborhoodData(centerH-2, centerW-4) - neighborhoodData(centerH, centerW)));
32+
33+
In(6) = 0.5*(abs(neighborhoodData(centerH-2, centerW-1) - neighborhoodData(centerH+2, centerW+1)) + ...
34+
abs(neighborhoodData(centerH-4, centerW-2) - neighborhoodData(centerH, centerW)));
35+
36+
In(7) = 0.5*(abs(neighborhoodData(centerH-2, centerW+1) - neighborhoodData(centerH+2, centerW-1)) + ...
37+
abs(neighborhoodData(centerH-4, centerW+2) - neighborhoodData(centerH, centerW)));
38+
39+
In(8) = 0.5*(abs(neighborhoodData(centerH-1, centerW+2) - neighborhoodData(centerH+1, centerW-2)) + ...
40+
abs(neighborhoodData(centerH-2, centerW+4) - neighborhoodData(centerH, centerW)));
41+
42+
In(9) = 0.5*(abs(neighborhoodData(centerH+1, centerW+2) - neighborhoodData(centerH-1, centerW-2)) + ...
43+
abs(neighborhoodData(centerH+2, centerW+4) - neighborhoodData(centerH, centerW)));
44+
45+
In(10) = 0.5*(abs(neighborhoodData(centerH+2, centerW+1) - neighborhoodData(centerH-2, centerW-1)) + ...
46+
abs(neighborhoodData(centerH+4, centerW+2) - neighborhoodData(centerH, centerW)));
47+
48+
In(11) = 0.5*(abs(neighborhoodData(centerH+2, centerW-1) - neighborhoodData(centerH-2, centerW+1)) + ...
49+
abs(neighborhoodData(centerH+4, centerW-2) - neighborhoodData(centerH, centerW)));
50+
51+
In(12) = 0.5*(abs(neighborhoodData(centerH+1, centerW-2) - neighborhoodData(centerH-1, centerW+2)) + ...
52+
abs(neighborhoodData(centerH+2, centerW-4) - neighborhoodData(centerH, centerW)));
53+
sumIn = 0;
54+
for i =1 :12
55+
sumIn = sumIn + (1/(1+In(i)));
56+
end
57+
for i =1 :12
58+
Wn(i) = (1/(1+In(i)))/sumIn;
59+
end
60+
G = 0;
61+
B = 0;

Demosaic/src/DW_GB2R.m

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,20 @@
3636
In(7) = 0.5*(abs(neighborhoodData(centerH-2, centerW+1) - neighborhoodData(centerH+2, centerW-1)) + ...
3737
abs(neighborhoodData(centerH-4, centerW+2) - neighborhoodData(centerH, centerW)));
3838

39-
In(8) = 0.5*(abs(neighborhoodData(centerH-1, centerW+2) - neighborhoodData(centerH+2, centerW-1)) + ...
40-
abs(neighborhoodData(centerH-4, centerW+2) - neighborhoodData(centerH, centerW)));
41-
% -------------------------
39+
In(8) = 0.5*(abs(neighborhoodData(centerH-1, centerW+2) - neighborhoodData(centerH+1, centerW-2)) + ...
40+
abs(neighborhoodData(centerH-2, centerW+4) - neighborhoodData(centerH, centerW)));
4241

43-
In(9) = 0.5*(abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
44-
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW)));
42+
In(9) = 0.5*(abs(neighborhoodData(centerH+1, centerW+2) - neighborhoodData(centerH-1, centerW-2)) + ...
43+
abs(neighborhoodData(centerH+2, centerW+4) - neighborhoodData(centerH, centerW)));
4544

46-
In(10) = 0.5*(abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
47-
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW)));
45+
In(10) = 0.5*(abs(neighborhoodData(centerH+2, centerW+1) - neighborhoodData(centerH-2, centerW-1)) + ...
46+
abs(neighborhoodData(centerH+4, centerW+2) - neighborhoodData(centerH, centerW)));
4847

49-
In(11) = 0.5*(abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
50-
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW)));
48+
In(11) = 0.5*(abs(neighborhoodData(centerH+2, centerW-1) - neighborhoodData(centerH-2, centerW+1)) + ...
49+
abs(neighborhoodData(centerH+4, centerW-2) - neighborhoodData(centerH, centerW)));
5150

52-
In(12) = 0.5*(abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
53-
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW)));
51+
In(12) = 0.5*(abs(neighborhoodData(centerH+1, centerW-2) - neighborhoodData(centerH-1, centerW+2)) + ...
52+
abs(neighborhoodData(centerH+2, centerW-4) - neighborhoodData(centerH, centerW)));
5453
sumIn = 0;
5554
for i =1 :12
5655
sumIn = sumIn + (1/(1+In(i)));

Demosaic/src/DW_Wn.asv

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function Wn = DW_Wn(neighborhoodData, directionNum)
2+
% readRaw.m get rawData from HiRawImage
3+
% Input:
4+
% neighborhoodData the data of neighborhood range
5+
% directionNum the num of direction
6+
% Output:
7+
% Wn The lack of G and B on R
8+
% Instructions:
9+
% author: wtzhu
10+
% e-mail: wtzhu_13@163.com
11+
% Last Modified by wtzhu v1.0 2022-01-22
12+
% Note:
13+
In = zeros(12, 1);
14+
Wn = zeros(12, 1);
15+
[h, w] = size(neighborhoodData);
16+
centerH = round(h/2);
17+
centerW = round(w/2);

Demosaic/src/DW_Wn.m

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
function Wn = DW_Wn(neighborhoodData, directionNum)
2+
% readRaw.m get rawData from HiRawImage
3+
% Input:
4+
% neighborhoodData the data of neighborhood range
5+
% directionNum the num of direction
6+
% Output:
7+
% Wn The weignt of each direction
8+
% Instructions:
9+
% author: wtzhu
10+
% e-mail: wtzhu_13@163.com
11+
% Last Modified by wtzhu v1.0 2022-01-23
12+
% Note:
13+
In = zeros(directionNum, 1);
14+
Wn = zeros(directionNum, 1);
15+
[h, w] = size(neighborhoodData);
16+
centerH = round(h/2);
17+
centerW = round(w/2);
18+
switch directionNum
19+
case 12
20+
In(1) = abs(neighborhoodData(centerH, centerW-1) - neighborhoodData(centerH, centerW+1)) + ...
21+
abs(neighborhoodData(centerH, centerW-2) - neighborhoodData(centerH, centerW));
22+
23+
In(2) = abs(neighborhoodData(centerH-1, centerW) - neighborhoodData(centerH+1, centerW)) + ...
24+
abs(neighborhoodData(centerH-2, centerW) - neighborhoodData(centerH, centerW));
25+
26+
In(3) = abs(neighborhoodData(centerH, centerW+1) - neighborhoodData(centerH, centerW-1)) + ...
27+
abs(neighborhoodData(centerH, centerW+2) - neighborhoodData(centerH, centerW));
28+
29+
In(4) = abs(neighborhoodData(centerH+1, centerW) - neighborhoodData(centerH-1, centerW)) + ...
30+
abs(neighborhoodData(centerH+2, centerW) - neighborhoodData(centerH, centerW));
31+
32+
In(5) = 0.5*(abs(neighborhoodData(centerH-1, centerW-2) - neighborhoodData(centerH+1, centerW+2)) + ...
33+
abs(neighborhoodData(centerH-2, centerW-4) - neighborhoodData(centerH, centerW)));
34+
35+
In(6) = 0.5*(abs(neighborhoodData(centerH-2, centerW-1) - neighborhoodData(centerH+2, centerW+1)) + ...
36+
abs(neighborhoodData(centerH-4, centerW-2) - neighborhoodData(centerH, centerW)));
37+
38+
In(7) = 0.5*(abs(neighborhoodData(centerH-2, centerW+1) - neighborhoodData(centerH+2, centerW-1)) + ...
39+
abs(neighborhoodData(centerH-4, centerW+2) - neighborhoodData(centerH, centerW)));
40+
41+
In(8) = 0.5*(abs(neighborhoodData(centerH-1, centerW+2) - neighborhoodData(centerH+1, centerW-2)) + ...
42+
abs(neighborhoodData(centerH-2, centerW+4) - neighborhoodData(centerH, centerW)));
43+
44+
In(9) = 0.5*(abs(neighborhoodData(centerH+1, centerW+2) - neighborhoodData(centerH-1, centerW-2)) + ...
45+
abs(neighborhoodData(centerH+2, centerW+4) - neighborhoodData(centerH, centerW)));
46+
47+
In(10) = 0.5*(abs(neighborhoodData(centerH+2, centerW+1) - neighborhoodData(centerH-2, centerW-1)) + ...
48+
abs(neighborhoodData(centerH+4, centerW+2) - neighborhoodData(centerH, centerW)));
49+
50+
In(11) = 0.5*(abs(neighborhoodData(centerH+2, centerW-1) - neighborhoodData(centerH-2, centerW+1)) + ...
51+
abs(neighborhoodData(centerH+4, centerW-2) - neighborhoodData(centerH, centerW)));
52+
53+
In(12) = 0.5*(abs(neighborhoodData(centerH+1, centerW-2) - neighborhoodData(centerH-1, centerW+2)) + ...
54+
abs(neighborhoodData(centerH+2, centerW-4) - neighborhoodData(centerH, centerW)));
55+
sumIn = 0;
56+
for i =1 :12
57+
sumIn = sumIn + (1/(1+In(i)));
58+
end
59+
for i =1 :12
60+
Wn(i) = (1/(1+In(i)))/sumIn;
61+
end
62+
case 4
63+
In(1) = abs(neighborhoodData(centerH-1, centerW-1) - neighborhoodData(centerH+1, centerW+1)) + ...
64+
abs(neighborhoodData(centerH-2, centerW-2) - neighborhoodData(centerH, centerW));
65+
66+
In(2) = abs(neighborhoodData(centerH-1, centerW+1) - neighborhoodData(centerH+1, centerW-1)) + ...
67+
abs(neighborhoodData(centerH-2, centerW+2) - neighborhoodData(centerH, centerW));
68+
69+
In(3) = abs(neighborhoodData(centerH+1, centerW+1) - neighborhoodData(centerH-1, centerW-1)) + ...
70+
abs(neighborhoodData(centerH+2, centerW+2) - neighborhoodData(centerH, centerW));
71+
72+
In(4) = abs(neighborhoodData(centerH+1, centerW-1) - neighborhoodData(centerH-1, centerW+1)) + ...
73+
abs(neighborhoodData(centerH+2, centerW-2) - neighborhoodData(centerH, centerW));
74+
sumIn = 0;
75+
for i =1 :4
76+
sumIn = sumIn + (1/(1+In(i)));
77+
end
78+
for i =1 :4
79+
Wn(i) = (1/(1+In(i)))/sumIn;
80+
end
81+
end

Demosaic/src/directionallyWeighted.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@
2727
imDst = zeros(height+8, width+8, 3);
2828
for ver = 5: height + 4
2929
for hor = 5: width +4
30-
fprintf('%d %d\n', ver, hor);
3130
% R channal
3231
if(1 == mod(ver, 2) && 1 == mod(hor, 2))
3332
disp('deal with R');
3433
neighborhoodData = bayerPadding(ver-4: ver+4, hor-4: hor+4);
35-
[G, B] = DW_GB2R(neighborhoodData);
34+
Wn = DW_Wn(neighborhoodData, 12);
3635
% B channal
3736
elseif (0 == mod(ver, 2) && 0 == mod(hor, 2))
3837
disp('deal with B')

0 commit comments

Comments
 (0)