function [R,Dobl,Dvert,Dhor,m1,m2]=DECOMP_IMAGE2_2D(I);

%         [R,Dobl,Dvert,Dhor,m1,m2]=DECOMP_IMAGE2_2D(I);
%
% Algorithme de filtrage et décimation correspondant à l'analyse 
% multirésolution de Daubechies à  4 paramètres 2-dimensionnelle. Les
% quatre images (à m1 lignes et m2 colonnes) obtenues correspondent (dans
% cet ordre) au résumé, aux détails obliques, aux détails horizontaux, aux
% détails verticaux.  

[N1,N2]=size(I);
H=zeros(1,4);
G=zeros(1,4);

H(1)=-.12941;
H(2)=.22414;
H(3)=.83652;
H(4)=.48296;

G(1)=-.48296;
G(2)=.83652;
G(3)=-.22414;
G(4)=-.12941;


HR=H'*H;
Hobl=G'*G;
Hvert=H'*G;
Hhor=G'*H;

R=conv2(I,HR);
Dobl=conv2(I,Hobl);
Dvert=conv2(I,Hvert);
Dhor=conv2(I,Hhor); 

m1=fix((N1+3)/2);
m2=fix((N2+3)/2); 
u=ones(m1,m2);

for l1=1:m1
   for l2=1:m2
      uR(l1,l2)=R(2*(l1)-1,2*(l2)-1);
      uDobl(l1,l2)=Dobl(2*(l1)-1,2*(l2)-1);
      uDvert(l1,l2)=Dvert(2*(l1)-1,2*(l2)-1);
      uDhor(l1,l2)=Dhor(2*(l1)-1,2*(l2)-1);
   end
end

if mod(m1,2) == 0
   R=uR;
   Dobl=uDobl;
   Dvert=uDvert;
   Dhor=uDhor;
else
   R=[uR;zeros(1,m2)];
   Dobl=[uDobl;zeros(1,m2)];
   Dvert=[uDvert;zeros(1,m2)];
   Dhor=[uDhor;zeros(1,m2)];
end
[m1,m2]=size(R);

if mod(m2,2) == 0
   R=R;
   Dobl=Dobl;
   Dvert=Dvert;
   Dhor=Dhor;
else
   R=[R zeros(m1,1)];
   Dobl=[Dobl zeros(m1,1)];
   Dvert=[Dvert zeros(m1,1)];
   Dhor=[Dhor zeros(m1,1)];
end
[m1,m2]=size(R);


