function  m030

%En cada iteración recorre la imagen y busca todos los puntos de la región y analiza el mejor vecino...

I=double(imread('tumor.jpg'));
[nf nc]=size(I);
subplot(1,2,1);imshow(I,[0 255]);
[x y]=ginput(1);
x=round(x);
y=round(y);
I2=0*I;
I2(y,x)=I(y,x);
B=0*I;
B(y,x)=1;
sum=I2(y,x);
ns=1;
prom=sum/ns;

for it=1:1000
   %it
   if mod(it,10)==0,subplot(1,2,2);imshow(I2,[0 255]);pause(0);end;
   min_err=255;
   fmin=-1;
   cmim=-1;
   for f=1+1:nf-1
      for c=1+1:nc-1
         if B(f,c)==1,
            if vecino_encerrado(B,f,c)>0, 
               B(f,c)=2;
            end;                        
            [ff, cc, err]=mejor_vecino(B,I,f,c,prom);
            if err<min_err,
               fmin=ff;
               cmin=cc;
               min_err=err;
            end;
         end;
      end;
   end;
   
  %agrega solo el mejor vecino 
  if fmin>0 & cmin>0, 
     B(fmin,cmin)=1;I2(fmin,cmin)=I(fmin,cmin);
     ns=ns+1;
     sum=sum+I2(fmin,cmin);
     prom=sum/ns;
  end;
end;   


function [y, x, err]=mejor_vecino(B,I,f,c,prom)

   y=-1;
   x=-1;
   err=255;
	for ff=f-1:f+1
      for cc=c-1:c+1
	      if B(ff,cc)==0 & abs(I(ff,cc)-prom)<err
	         err=abs(I(ff,cc)-prom);
	         y=ff;
            x=cc;
	      end;
	   end;
	end;
   
function ok=vecino_encerrado(B,f,c)  
   ok=-1;
   n=0;
	for ff=f-1:f+1
      for cc=c-1:c+1
         if B(ff,cc)>0 
            n=n+1;
	      end;
	   end;
	end;
   if n==9,ok=1;end;


  
