]> AND Private Git Repository - these_gilles.git/blob - BM3D/BM3D-SAPCA/function_Window2D.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
final
[these_gilles.git] / BM3D / BM3D-SAPCA / function_Window2D.m
1 % Returns a scalar/matrix weights (window function) for the LPA estimates\r
2 % function w=function_Window2D(X,Y,window,sig_wind, beta);\r
3 % X,Y scalar/matrix variables\r
4 % window - type of the window weight\r
5 % sig_wind - std scaling for the Gaussian ro-weight\r
6 % beta -parameter of the degree in the weights\r
7 %----------------------------------------------------------------------------------\r
8 % V. Katkovnik & A. Foi - Tampere University of Technology -  2002-2005\r
9 \r
10 \r
11 function w=function_Window2D(X,Y,window,sig_wind, beta,ratio);\r
12 \r
13 if nargin == 5\r
14     ratio=1;\r
15 end\r
16 \r
17 IND=(abs(X)<=1)&(abs(Y)<=1);\r
18 IND2=((X.^2+Y.^2)<=1);\r
19 IND3=((X.^2+(Y*ratio).^2)<=1);\r
20    \r
21 \r
22 if window==1           % rectangular symmetric window\r
23 w=IND; end\r
24 \r
25 if window==2   %Gaussian\r
26   \r
27 X=X/sig_wind(1);\r
28 Y=Y/sig_wind(2);\r
29 w = IND.*exp(-(X.^2 + Y.^2)/2); %*(abs(Y)<=0.1*abs(X));%.*IND2; %((X.^2+Y.^2)<=1); \r
30 end\r
31 \r
32 if window==3  % Quadratic window\r
33     w=(1-(X.^2+Y.^2)).*((X.^2+Y.^2)<=1); end\r
34 \r
35 if window==4           % triangular symmetric window\r
36  w=(1-abs(X)).*(1-abs(Y)).*((X.^2+Y.^2)<=1); end\r
37   \r
38     \r
39 if window==5           % Epanechnikov symmetric window\r
40   w=(1-X.^2).*(1-Y.^2).*((X.^2+Y.^2)<=1); \r
41 end\r
42 \r
43 if window==6   % Generalized Gaussian\r
44   \r
45 X=X/sig_wind;\r
46 Y=Y/sig_wind;\r
47 w = exp(-((X.^2 + Y.^2).^beta)/2).*((X.^2+Y.^2)<=1); end\r
48 \r
49 \r
50 if window==7\r
51       \r
52 X=X/sig_wind;\r
53 Y=Y/sig_wind;\r
54 w = exp(-abs(X) - abs(Y)).*IND; end\r
55 \r
56 if window==8 % Interpolation\r
57     \r
58 w=(1./(abs(X).^4+abs(Y).^4+0.0001)).*IND2; \r
59 end\r
60 \r
61 if window==9 % Interpolation\r
62     \r
63     NORM=(abs(X)).^2+(abs(Y)).^2+0.0001;\r
64 w=(1./NORM.*(1-sqrt(NORM)).^2).*(NORM<=1); \r
65 end\r
66 \r
67 if window==10\r
68     w=((X.^2+Y.^2)<=1);\r
69 end\r
70 \r
71 \r
72 if window==11\r
73   \r
74 temp=asin(Y./sqrt(X.^2+Y.^2+eps));\r
75 temp=temp*0.6; % Width of Beam\r
76 temp=(temp>0)*min(temp,1)+(temp<=0)*max(temp,-1);\r
77 \r
78 w=max(0,IND.*cos(pi*temp));   \r
79     \r
80   \r
81 end\r
82 \r
83     \r
84 \r
85 if window==111\r
86   \r
87 temp=asin(Y./sqrt(X.^2+Y.^2+eps));\r
88 temp=temp*0.8; % Width of Beam\r
89 temp=(temp>0)*min(temp,1)+(temp<=0)*max(temp,-1);\r
90 \r
91 w=max(0,IND3.*(cos(pi*temp)>0));   \r
92 % w=((X.^2+Y.^2)<=1);    \r
93 end\r
94 \r
95 if window==112\r
96   \r
97 temp=atan(Y/(X+eps));\r
98 %temp=temp*0.8; % Width of Beam\r
99 %temp=(temp>0)*min(temp,1)+(temp<=0)*max(temp,-1);\r
100 w=max(0,IND3.*((abs(temp))<=pi/4));   \r
101 % w=((X.^2+Y.^2)<=1);    \r
102 \r
103 end\r
104 \r
105     \r
106     \r
107     \r
108     \r
109         \r
110     \r
111     \r
112     \r
113 \r
114 \r
115