function D = dilatationbis(I,a,b,p,h); 

% D = dilatationbis(I,a,b,p,h); 
%
% Dilatation d'une image I codee sur N niveaux de gris k/(N-1), k=0,...,N-1,
% avec un element structurant non plat supporte par la 
% (a,b) bi-boule pour la norme de Minkovski d'ordre p. L'image est
% prolongee par 0 hors du cadre en une image de taille (2*N1,2*N2). 
% L'image h est une image de taille 
% (2*ceil (b) -1, 2*ceil(a)-1) consideree comme definie sur le support de 
% l'element stucturant. On pourra par exemple prendre 
%     h = +/- alpha * hamming(2*ceil(b)-1)*hamming(2*ceil(a)-1)'
% ou alpha est un parametre entre 0 et 1. On peut egalement envisager 
% une image h a valeurs dans ]-1,1[. 

[N1,N2] = size(I);
aa = ceil(a); 
bb = ceil(b); 
B = elstructurant(N1,N2,a,b,p);
B1 = B(1:bb,1:aa); 
B2 = B(1:bb,N2-aa+2:N2); 
B3 = B(N1-bb+2:N1,1:aa); 
B4 = B(N1-bb+2:N1,N2-aa+2:N2); 
B = [B4 B3; B2 B1];  
I = [zeros(N1/2,2*N2); zeros(N1,N2/2) I zeros(N1,N2/2); zeros(N1/2,2*N2)];
D = zeros(N1,N2); 
for j=1:N1
    for k=1:N2
        EE = B.*(I (N1/2 + j - bb+1:N1/2+j+bb-1, N2/2+k-aa+1:N2/2+k+aa-1)+h);
        D(j,k) = max(0,max(EE(:))); 
    end
end 
        
        
