function Res=ODI(ImVT,ImSeg,fond,contour)
%
% 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, C. Rosenberger, H. Laurent, 
%"Unsupervised performance evaluation of image segmentation", 
%Special Issue on Performance Evaluation in Image Processing, 
%EURASIP Journal on Applied Signal Processing, pages 1-12, 2006.


dTH=5;
n=1;

Res=0;

[a,b]=find(ImVT==contour & ImSeg==contour);
Nand=length(a);

[a,b]=find(ImVT==contour);
Ni=length(a);

[a,b]=find(ImSeg==contour);
Na=length(a);

%texte=strcat('Nombre de pixels contour VT: ',int2str(Ni));
%disp(texte);

%texte=strcat('Nombre de pixels contour Image segmentée: ',int2str(Na));
%disp(texte);

%texte=strcat('Nombre de pixels communs: ',int2str(Nand));
%disp(texte);

%texte=strcat('Nombre de pixels sursegmentés: ',int2str(Na-Nand)); % No
%disp(texte);

%texte=strcat('Nombre de pixels soussegmentés: ',int2str(Ni-Nand)); % Nu
%disp(texte);

[M,L]=find(ImVT==contour);
TailleVT=length(M);
ContVT=[M,L];

[Y,Z]=find(ImSeg==contour & ImVT~=contour);
No=length(Y);
ContNo=[Y,Z];



for i=1:No
    min=(ContVT(1,1)-ContNo(i,1))^2+(ContVT(1,2)-ContNo(i,2))^2;
    for j=1:TailleVT
        if (((ContVT(j,1)-ContNo(i,1))^2+(ContVT(j,2)-ContNo(i,2))^2)<min)
            min=(ContVT(j,1)-ContNo(i,1))^2+(ContVT(j,2)-ContNo(i,2))^2;
        end;
    end;
    if (min>-1)
        min=sqrt(min);
        Res=Res+(min/dTH)^n;
    else
        disp('Erreur anormale');
    end;
end;

if (No>0)
    Res=1/(No)*Res;
else
    Res=-1*Res;
end;
%disp(Res);