function Res=FOM(ImVT,ImSeg) % Pratt's Figure Of Merit % ImSeg : matrice correspondant à l'image segmentée % ImRef : matrice correspondant à l'image de Reference (Vérité terrain) % % 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, H. Laurent, C. Rosenberger, Y.J. Zhang, %"Supervised evaluation of synthetic and real contour segmentation results" , %European Signal Processing Conference (EUSIPCO) 2006. fond=0; contour=255; contourVT=255; Res=0; ImTmp=and(ImVT,ImSeg); HVT=IMHIST(ImVT,2); HSeg=IMHIST(ImSeg,2); Hand=IMHIST(ImTmp,2); Ni=HVT(2); Na=HSeg(2); Nand=Hand(2); N=max(Ni,Na); [M,L]=find(ImVT==contourVT); TailleVT=length(M); ContVT=zeros(TailleVT,2); [M,L]=find(ImSeg==contour); TailleSeg=length(M); ContSeg=zeros(TailleSeg,2); A=size(ImVT); cpt=1; cpt2=1; for x=1:A(1) for y=1:A(2) if (ImVT(x,y)==contourVT) ContVT(cpt,1)=x; ContVT(cpt,2)=y; cpt=cpt+1; end; if (ImSeg(x,y)==contour) ContSeg(cpt2,1)=x; ContSeg(cpt2,2)=y; cpt2=cpt2+1; end; end; end; %if (Na>=Ni) for i=1:Na % %si ce n'est pas déjà un point contour de la VT % disp(i); if (ImVT(ContSeg(i,1),ContSeg(i,2))~=contourVT) Dist=ContVT-[ones(TailleVT,1)*(ContSeg(i,1)),ones(TailleVT,1)*(ContSeg(i,2))];% vecteurs distance Dist2=Dist(:,1).^2+Dist(:,2).^2; % calcul de la distance pour chaque point de la VT [a,b]=min(Dist2(:)); %recherche du point contour VT le plus proche Res=Res+1/(1+Dist2(b)); else Res=Res+1; end; end; %else % for i=1:Ni % %si ce n'est pas déjà un point contour de la VT % % disp(i); % if (ImSeg(ContVT(i,1),ContVT(i,2))~=contour) % Dist=ContSeg-[ones(TailleSeg,1)*(ContVT(i,1)),ones(TailleSeg,1)*(ContVT(i,2))];% vecteurs distance % Dist2=Dist(:,1).^2+Dist(:,2).^2; % calcul de la distance pour chaque point de la VT % [a,b]=min(Dist2(:)); %recherche du point contour VT le plus proche % Res=Res+1/(1+Dist2(b)); % else % Res=Res+1; % end; % end; %end; Res=Res*(1/N); disp(Res);