function X_tr=popravak(X,X_tr,frekv,fs,T_max,T_min,izbor)

%popravak X_tr
[A,B]=size(X_tr);
for i=1:A-1     %ton
    for j=1:B   %vrijeme
        if X_tr(i,j) & X_tr(i+1,j)
            if X(i,j) >= X(i+1,j)
                X_tr(i+1,j)=0;
            else
                X_tr(i,j)=0;
            end
        end
    end
end


%uklanjanje rupa
%T_max=1/15; %rezolucija, max trajanje rupe u vremenu
dT=round( T_max/(1/(fs/8)) );

for i=1:A     %ton
    zadnji=0;
    brojac=0;
    broji=0;
    for j=1:B   %vrijeme
        if X_tr(i,j)==0 & zadnji==1 & broji==0
            broji=1;
            zadnja_adr=j;
            brojac=brojac+1;
        elseif X_tr(i,j)==0 & broji==1
            brojac=brojac+1;
        elseif X_tr(i,j)==1 & broji==1
            broji=0;
            if brojac<=dT
                X_tr(i,zadnja_adr:j)=1;
            end
            brojac=0;
        end
        zadnji=X_tr(i,j);
    end
end


%uklanjanje premalog trajanja tona
%T_min=1/17; %rezolucija, min trajanje tona
dT=round( T_min/(1/(fs/8)) );

for i=1:A     %ton
    zadnji=0;
    brojac=0;
    broji=0;
    for j=1:B   %vrijeme
        if X_tr(i,j)==1 & zadnji==0 & broji==0
            broji=1;
            zadnja_adr=j;
            brojac=brojac+1;
        elseif X_tr(i,j)==1 & broji==1
            brojac=brojac+1;
        elseif X_tr(i,j)==0 & broji==1
            broji=0;
            if brojac<=dT
                X_tr(i,zadnja_adr:j)=0;
            end
            brojac=0;
        end
        zadnji=X_tr(i,j);
    end
end



%uklanja 2 3 4 harmonik
if izbor>0 %izbor odlucuje da li ce se brisati harmonici
    
for i=1:A
    for j=1:B
        if (i-12)>0
            if X_tr(i,j)==1
                
                %uklanja 2 harmonik
                if (i-12)>0 
                    [prv1,zadnj1]=prvizadnji(X_tr,i,j,A);
                    [prv2,zadnj2]=prvizadnji(X_tr,i-12,j,A);
                    if (zadnj1-prv1)>=(zadnj2-prv2)
                        X_tr(i-12,prv2:zadnj2)=0;
                    end
                end    
            
                %uklanjanje 3 haronika
                if izbor>1
                    f_t=frekv(i);
                    f_3=f_t*3;
                    ind_3=1;
                    d_t=inf;
                    for k=1:(i-12)
                        if abs(frekv(k)-f_3)<d_t
                            d_t=abs(frekv(k)-f_3);
                            ind_3=k;
                        end
                    end
                    [prv1,zadnj1]=prvizadnji(X_tr,i,j,A);
                    [prv2,zadnj2]=prvizadnji(X_tr,ind_3,j,A);
                    if (zadnj1-prv1)>=(zadnj2-prv2)
                        X_tr(ind_3,prv2:zadnj2)=0;
                    end
                end
            
                %uklanja 4 harmonik
                if izbor>2  
                    if (i-24)>0 
                        X_tr(i-24,j)=0; 
                        [prv1,zadnj1]=prvizadnji(X_tr,i,j,A);
                        [prv2,zadnj2]=prvizadnji(X_tr,i-24,j,A);
                        if (zadnj1-prv1)>=(zadnj2-prv2)
                            X_tr(i-24,prv2:zadnj2)=0;
                        end
                    end    
                end
                
            end
        end
    end
end

end


function [prvi,zadnji]=prvizadnji(X_tr,k,poc,A)

%trazi prvi
tr=poc-1;
prvi=poc;
radi=1;
while tr>=1 & radi==1
    if X_tr(k,tr)==0
        radi=0;
    else
        prvi=tr;
        tr=tr-1;
    end
end

%trazi zadnji
tr=poc+1;
zadnji=poc;
radi=1;
while tr<=A & radi==1
    if X_tr(k,tr)==0
        radi=0;
    else
        zadnji=tr;
        tr=tr+1;
    end
end

    
    