function Res = HammingEval( FicImVT,FicImSeg )
%function Res = HammingEval( ImVT,ImSeg )
%besoin de res de seg ajustés 1 à n classes
%
% Utilitaires pour l'évaluation de la segmentation d'images
% Toolbox matlab (version 5.3)
%
% (c) Laboratoire de Vision et Robotique (UPRES EA 2078)
% ENSI de Bourges - Université d'Orléans
%
% Sébastien Chabrier : sebastien.chabrier@ensi-bourges.fr
%
%
% Utilitaires pour l'évaluation de la segmentation d'images
% Toolbox matlab (version 5.3)
%
% (c) Laboratoire de Vision et Robotique (UPRES EA 2078)
% ENSI de Bourges - Université d'Orléans
%
% Sébastien Chabrier : sebastien.chabrier@ensi-bourges.fr
%
% Si vous utilisez cette toolbox, veuillez citer ce papier svp.
%
%S. Chabrier, B. Emile , H. Laurent, 
%"Psychovisual evaluation of an image segmentation result" , 
%8th International IEEE Conference on Signal Processing (ICSP), 2006.

[ImVT PAL]=imread(FicImVT,'BMP');
[ImSeg PAL]=imread(FicImSeg,'BMP');

if (min(min(ImVT))==0)
    ImVT=double(ImVT)+1;
else
    ImVT=double(ImVT);
end;

if (min(min(ImSeg))==0)
    ImSeg=double(ImSeg)+1;
else
    ImSeg=double(ImSeg);
end;

[L,H]=size(ImVT);
taille=L*H;

n1=max(max(ImVT));
n2=max(max(ImSeg));

%création matrice de correspondance Corr

Corr=zeros(n1,n2);

for i=1:n1
    for j=1:n2
%        [i j]
        [A,B]=find(ImVT==i & ImSeg==j);
        Corr(i,j)=length(A);
    end;
end;


res1=0;
res2=0;

for i=1:n1
   res1=res1+sum(Corr(i,:))-max(Corr(i,:));
end;

for i=1:n2
   res2=res2+sum(Corr(:,i))-max(Corr(:,i));
end;

Res=1-(res1+res2)/(2*taille);

