]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/wave/allcode/cplxdual2D.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
v1.2 19 décembre
[these_gilles.git] / THESE / codes / wave / allcode / cplxdual2D.m
1 function w = cplxdual2D(x, J, Faf, af)
2
3 % Dual-Tree Complex 2D Discrete Wavelet Transform
4 %
5 % USAGE:
6 %   w = cplxdual2D(x, J, Faf, af)
7 % INPUT:
8 %   x - 2-D array
9 %   J - number of stages
10 %   Faf{i}: first stage filters for tree i
11 %   af{i}:  filters for remaining stages on tree i
12 % OUTPUT:
13 %   w{j}{i}{d1}{d2} - wavelet coefficients
14 %       j = 1..J (scale)
15 %       i = 1 (real part); i = 2 (imag part)
16 %       d1 = 1,2; d2 = 1,2,3 (orientations)
17 %   w{J+1}{m}{n} - lowpass coefficients
18 %       d1 = 1,2; d2 = 1,2 
19 % EXAMPLE:
20 %   x = rand(256);
21 %   J = 5;
22 %   [Faf, Fsf] = FSfarras;
23 %   [af, sf] = dualfilt1;
24 %   w = cplxdual2D(x, J, Faf, af);
25 %   y = icplxdual2D(w, J, Fsf, sf);
26 %   err = x - y;
27 %   max(max(abs(err)))
28 %
29 % WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
30 % http://taco.poly.edu/WaveletSoftware/
31
32 % normalization
33 x = x/2;
34
35 for m = 1:2
36     for n = 1:2
37         [lo w{1}{m}{n}] = afb2D(x, Faf{m}, Faf{n});
38         for j = 2:J
39             [lo w{j}{m}{n}] = afb2D(lo, af{m}, af{n});
40         end
41         w{J+1}{m}{n} = lo;
42     end
43 end
44
45 for j = 1:J
46     for m = 1:3
47         [w{j}{1}{1}{m} w{j}{2}{2}{m}] = pm(w{j}{1}{1}{m},w{j}{2}{2}{m});
48         [w{j}{1}{2}{m} w{j}{2}{1}{m}] = pm(w{j}{1}{2}{m},w{j}{2}{1}{m});
49     end
50 end
51