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
0 commit comments