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

Private GIT Repository
07 sep
[these_gilles.git] / THESE / codes / wave / allcode / afb2D_A.m
1 function [lo, hi] = afb2D_A(x, af, d)
2
3 % 2D Analysis Filter Bank
4 % (along one dimension only)
5 %
6 % [lo, hi] = afb2D_A(x, af, d);
7 % INPUT:
8 %    x - NxM matrix, where min(N,M) > 2*length(filter)
9 %           (N, M are even)
10 %    af - analysis filter for the columns
11 %    af(:, 1) - lowpass filter
12 %    af(:, 2) - highpass filter
13 %    d - dimension of filtering (d = 1 or 2)
14 % OUTPUT:
15 %     lo, hi - lowpass, highpass subbands
16 %
17 % % Example
18 % x = rand(32,64);
19 % [af, sf] = farras;
20 % [lo, hi] = afb2D_A(x, af, 1);
21 % y = sfb2D_A(lo, hi, sf, 1);
22 % err = x - y;
23 % max(max(abs(err)))
24
25 lpf = af(:, 1);     % lowpass filter
26 hpf = af(:, 2);     % highpass filter
27
28 if d == 2
29    x = x';
30 end
31
32 N = size(x,1);
33 L = size(af,1)/2;
34 x = cshift2D(x,-L);
35
36 lo = upfirdn(x, lpf, 1, 2);
37 lo(1:L, :) = lo(1:L, :) + lo([1:L]+N/2, :);
38 lo = lo(1:N/2, :);
39
40 hi = upfirdn(x, hpf, 1, 2);
41 hi(1:L, :) = hi(1:L, :) + hi([1:L]+N/2, :);
42 hi = hi(1:N/2, :);
43
44 if d == 2
45    lo = lo';
46    hi = hi';
47 end
48
49