function [y]= DLifting2D_yao(x, J, lsi, dset)
% LIFTING 2D wavelet decomposition with directional lifting scheme
%
% USAGE:
%    y = DLifting2D(x, J, lsi)
% 
% INPUT:   
%    x    - input 2D signals
%    J    - Decomposition levels
%    lsi  - lifting lattice
% OUTPUT:
%    y       - Decomposition Coefficients
%    y{J}    - Lower band
%    y{i}{1} - Lower-Higher band
%    y{i}{2} - Higher-Lower band
%    y{i}{3} - Higher-Higher band

LL = x;
for d = dset
for i = 1:J    
[L{d}, H{d}] = DLifting(LL, lsi, d);
[LL{d}, LH{d}] = DLifting(L(:,:,j), lsi, d);
[HL{d}, HH{d}] = DLifting(H', lsi, d);
y{d}{i}{1} = LH{d}';
y{d}{i}{2} = HL{d}';
y{d}{i}{3} = HH{d}';
LL{d} = LL{d}';
end
y{d}{J+1} = LL{d};
end