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

%            [R,Dobl,Dvert,Dhor,m1,m2]=DECOMP_IMAGE4_2D(I);
%
% Algorithme de filtrage et décimation correspondant à l'analyse 
% multirésolution de Daubechies à  8 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=ones(1,8);
G=zeros(1,8);

H(1)= -.010597;
H(2)= .032883; 
H(3)= .030841;
H(4)= -.187035;
H(5)= -.027984; 
H(6)= .630881; 
H(7)= .714846; 
H(8)= .230378; 

G(1)= -.230378;
G(2)= .714846; 
G(3)= -.630881;
G(4)= -.027984;
G(5)= .187035; 
G(6)= .030841;
G(7)= -.032883; 
G(8)= -.010597; 

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+7)/2);
m2=fix((N2+7)/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);
   


