function [varargout ] = Fillsk( varargin ) %Fillsk retourn les label present entre deux point du squelette narginchk(0,3);% skelton,point_Extreme, [sk,xclik,yclik] = varargin{1:3}; [indices_extremunSk, ~, ~, ~]=computePPV(sk,xclik,yclik); % recherche du fillament conportent les deux point ou au moins un CC=bwconncomp(sk); [Lsk, num ]= bwlabel(sk); choix={}; idchoix=0; for k=1:num [r, c] = find(Lsk==k); P=[r, c]; nbchoix=0; for l=1:length(P) A=P(l,:); d1=distance(A,indices_extremunSk(1,:));% d2=distance(A,indices_extremunSk(2,:));% a = (A(1)== indices_extremunSk(1,1)) & (A(2)== indices_extremunSk(1,2)); b =(A(2)== indices_extremunSk(2,1)) & (A(2)== indices_extremunSk(2,2)); c = a|b; if(a == 1 ) nbchoix=nbchoix+1; end if(b ==1) nbchoix=nbchoix+1; end if ( c) idchoix=idchoix+1; skbw = Lsk; skbw(CC.PixelIdxList{k}) = 0; skbw=sk-skbw; choix{idchoix,1}=skbw; choix{idchoix,2}=CC.PixelIdxList{k}; end end end varargout = choix(:,1); end function d=distance(A,B) %distance entre deux point A et b d =sqrt( (A(1)- B(1)).^2 + (A(2)- B(2)).^2 ); % euclidiant () %une distance de manathan serai a tester pour de meilleur resul % d = abs(A(1)- B(1)) + abs(A(2)- B(2)); end