function tempe=Imequalize(image)
% B=Imequalize(A)
%
%Restituisce in B l'immagine equalizzata di A
classim=class(image);
switch classim
case 'double'
    limits(1)=0;
    limits(2)=max(max(image));
case 'uint8'
    limits(1)=0;
    limits(2)=255;
case 'uint16'
    limits(1)=0;
    limits(2)=65535;
end

tempd=round(double(image));
templ=tempd(:);
H=histc(templ,[limits(1)-0.4:limits(2)+0.4]);

M=0;
M=sum(H);
M=(limits(2))/M;
M1=0;
for j=limits(1)+1:limits(2)+1
   M1=M1+H(j);
   y(j)=M1*M;
end

% Inizio applicazione trasformazione
dimens=size(tempd);
tempe=zeros(dimens);
for liv=0:limits(2)
   tempe(find(tempd==liv))=y(liv+1);
end

tempe=uint8(tempe);
