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

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