
%I=Input Image
%T=Tolerance of threshold in percent
%O=Output
%ZZmain=Navigator through Liste
%S=Threshold

function [O] = region_growing(I,T)
set(0,'RecursionLimit',2000)
  T=0;
      if T==0
          T=30;
      end
      
  %TO DO GUI: If Input Threshold if empty, standard Threshold is 30
  I=imread(I); %Read Input Image
  I=I(:,:,1); 
  %Erzeugung von weißem Rahmen  
  [x, y, ~]=size(I);
  

  I2=ones(y+2,x+2);
  I2=uint8(I2);
  I2=I2*255;
  for j = 1:1:x
    for k = 1:1:y
  I2(j+1,k+1)=I(j,k);
    end
  end
  I=I2;
  imtool(I);

  %Threshold percent 2 numeric
  S=T*255/100;

  figure; imshow(I); %Show Input Image

  [xcoord,ycoord]=ginput(1); %Create seedpoint
    xcoord=round(xcoord);
    ycoord=round(ycoord);
  Liste=[0 0];
  ZeilenZaehler=1;

  [ListeRueck, ZZreturn] = NachbarSuche(xcoord, ycoord, I, S, Liste, ZeilenZaehler)

  Ibunt=cat(3,I,I,I); %Initialisierung RGBbild
 
  

  ZZmain=1; %ZeilenZaehler der Hauptfunktion zum Abruf der Koordinaten aus der Liste
      i=1;
      for i = 1:1:ZZreturn-1 %Abfragen Listeneinträge

          x=ListeRueck(ZZmain,1);
          y=ListeRueck(ZZmain,2);
          
              Ibunt (x,y,1)=0; %Einfärben
              Ibunt (x,y,2)=200;
              Ibunt (x,y,3)=220;
      ZZmain=ZZmain+1;    
      end
     
     O=Ibunt;
      
     imtool(O);
        
     
     clear Liste;
     clear ListeRueck;
end