% THRESH Segmentare cu praguri (thresholding) pe histograma
%
% OUT=THRESH(IN,PRAG,T,prag_min,prag_max)
% IN este imaginea de segmentat (nivele de gri, 1 - 256)
% OUT este imaginea etichetata de iesire; etichetele sunt
% date incepand de la 1, incremetate cu 1; etichetele de
% valoare mica sunt date la obiecte cu nivele de gri mai mici
% PRAG este vectorul de praguri de segmentare; pragurile de
% segmentare minim si maxim sunt IMPLICIT 1 si 257 si se adauga
% automat la vectorul de praguri.
% Daca vectorul PRAG nu se specifica, se considera implicit
% o segmentare in doua clase, cu pragul de 128.
% T este un parametru de control, daca valoarea sa este 1
% (valoare IMPLICITA), etichetele regiunilor segmentate sunt
% numere naturale 1,2,3,4 .... .Daca T ia valoarea 2, atunci
% eticheta fiecarei regiuni este nivelul sau de gri mediu. 
%
% Creata de C. Vertan la 20.02.97
% Ultima modificare la   22.02.98
function out=thresh(in,prag,t,prag_min,prag_max)

if (exist('prag')==0)|(isempty(prag))
  prag=[128];
end
if (exist('t')==0)
 t=1;
end
if (exist('prag_min')==0)
  prag_min=1;
end
if (exist('prag_max')==0)
  prag_max=257;
end
out=ones(size(in));

prag=[prag_min prag prag_max];
np=max(size(prag));

for i=1:np-1
  p=find((in>=prag(i))&(in<prag(i+1)));
  if (t==1)
    val=i;
  else
    temp=in(p);
    val=round(mean(temp(:)));
  end
  out(p)=val*ones(size(p));
end