%celkové zpracování
%%% skript nacteni_pres_txt
addpath('D:\semestrální projekt')
addpath('D:\semestrální projekt\Změřená data\pomoci_textfile')
addpath('D:\semestrální projekt\přehrání přes WMP a nahrávání do TXT + interpolace bodů')
addpath('D:\semestrální projekt\přehrání přes WMP a nahrávání do TXT + interpolace bodů\změřená data_já')
addpath('D:\semestrální projekt\přehrání přes WMP a nahrávání do TXT + interpolace bodů\změřená data_únor')
addpath('D:\semestrální projekt\přehrání přes WMP a nahrávání do TXT + interpolace bodů\DATA_únor')

[d path] = uigetfile({'*.txt'},'File Selector'); %vyber zpracovávaných dat

F = readTETfile(d);
J = loadjson(F);

prave_oko =[];
for i=1:length(J)
    if strcmp(J{i}.category,'tracker')
        prave_oko = [prave_oko; [J{i}.values.frame.time J{i}.values.frame.righteye.raw.x J{i}.values.frame.righteye.raw.y]];
    end
end

leve_oko =[];
for i=1:length(J)
    if strcmp(J{i}.category,'tracker')
       leve_oko = [leve_oko; [J{i}.values.frame.time J{i}.values.frame.lefteye.raw.x J{i}.values.frame.lefteye.raw.y]];
    end
end

prumer_pupily = [];
for i=1:length(J)
    if strcmp(J{i}.category,'tracker')
         prumer_pupily = [prumer_pupily; [J{i}.values.frame.time J{i}.values.frame.righteye.psize J{i}.values.frame.lefteye.psize]];
    end
end


%velikosti zornic
pupil_leveoko = prumer_pupily(:,3)';
pupil_praveoko = prumer_pupily(:,2)';

%odstranění mrknutí
pupil_leveoko = [1 pupil_leveoko];
pupil_praveoko = [1 pupil_praveoko];

for i =2:length(pupil_praveoko)
    if pupil_praveoko(i)==0
       pupil_praveoko(i) = pupil_praveoko(i-1);
    end
end


for i =2:length(pupil_leveoko)
    if pupil_leveoko(i)==0
        pupil_leveoko(i) = pupil_leveoko(i-1);
    end
end

%%% skript cas
pupil_leveoko(1) = [];
pupil_praveoko(1) = [];



% %%% zjištění x souřadnic
% %%% y

x_leveoko = leve_oko(:,2)';
y_leveoko = leve_oko(:,3)';

x_praveoko = prave_oko(:,2)';
y_praveoko = prave_oko(:,3)';

%odstranění nulovýh vzorků (výpadky/mrknutí)
x_leveoko = [1 x_leveoko];
x_praveoko = [1 x_praveoko];
y_leveoko = [1 y_leveoko];
y_praveoko = [1 y_praveoko];

for i =1:length(x_praveoko)
    if x_praveoko(i)==0
        x_praveoko(i) = x_praveoko(i-1);
    end
end


for i =1:length(y_praveoko)
    if y_praveoko(i)==0
        y_praveoko(i) = y_praveoko(i-1);
    end
end


for i =1:length(x_leveoko)
    if x_leveoko(i)==0
        x_leveoko(i) = x_leveoko(i-1);
    end
end

for i =1:length(y_leveoko)
    if y_leveoko(i)==0
        y_leveoko(i) = y_leveoko(i-1);
    end
end
x_leveoko(1) = [];
x_praveoko(1) = [];
y_leveoko(1) = [];
y_praveoko(1) = [];
x = [1];
y = [1];

for i = 2:length(x_leveoko)
    pom = abs(x_leveoko(i) - x_praveoko(i));
    pom2 = abs(y_leveoko(i) - y_praveoko(i));
    if pom<30 || pom2<30
        s1 = (x_leveoko(i) + x_praveoko(i))/2;
        x = [x s1];
        s2 = (y_leveoko(i) + y_praveoko(i))/2;
        y = [y s2];
    else
        s1 = x(i-1);
        s2 = y(i-1);
        x = [x s1];
        y = [y s2];
    end
assignin('base','x',x);
assignin('base','y',y);
end

%%% skript nalezeni_zacatku_a_konce_sledovani

% hledání začátku (od druhé červené tečky) do konce (do poslední červnené
% tečky)

% %začátek
% pozice = 1;
% pozice_x = [];
% for i = 90:300
%    if x(i+1) > (x(i) + 300) && x(i+2) > (x(i) + 800) 
%        pom = i;
%        pozice_x = [pozice_x pom];
%    else
%        pozice = pozice + 1;
%    end
% end
% 
% pozice = 1;
% pozice_y = [];
% for i = 90:300
%    if (y(i+1)+ 100) < y(i) && (y(i+2) + 500) < y(i) 
%        pom = i;
%        pozice_y = [pozice_y pom];
%    else
%        pozice = pozice + 1;
%    end
% end
% 
% pozice = 1;
% zacatek_sledovani = [];
% for i = 90:300
%    if ((y(i+1)+ 100) < y(i) || (y(i+2)+ 150) < y(i)) && ((y(i+2) + 500) < y(i) || (y(i+3) + 500) < y(i)) && ((x(i+1) > (x(i) + 300) || x(i+2) > (x(i) + 300)) && x(i+5) > x(i))  && x(i+2) > (x(i) + 800) || x(i+3) > (x(i) + 800)
%        pom = i-5;
%        zacatek_sledovani = [zacatek_sledovani pom];
%    else
%        pozice = pozice + 1;
%    end
% end

%konec

% pozice = 1;
% konec_x = [];
% 
% for i = 1015:(length(x)-3)
%     rozdil = abs(x(i)-x(i+1));
%     rozdil2 = abs(x(i)-x(i+3));
%    if x(i) > 1000 && rozdil < 50; rozdil2 < 50;
%        pom = i;
%        konec_x = [konec_x pom];
%    else
%        pozice = pozice + 1;
%    end
% end
% 
% pozice = 1;
% konec_y = [];
% 
% for i = 1015:(length(y)-3)
%     rozdil = abs(y(i)-y(i+1));
%     rozdil2 = abs(y(i)-y(i+3));
%    if y(i) > 700 && rozdil < 40; rozdil2 < 40;
%        pom = i;
%        konec_y = [konec_y pom];
%    else
%        pozice = pozice + 1;
%    end
% end

%%%%%%%%%%%% konec pro x i y zaroven %%%%%%%%%%%%%%%
% konec_sledovani = [];
% delka_videa = 26*26; %26 sekund, fps kamery 28-35
% for i = delka_videa:(length(y)-70)
%     rozdil = abs(y(i)-y(i+1));
%     rozdil2 = abs(y(i)-y(i+3));
%     rozdil3 = abs(x(i)-x(i+1));
%     rozdil4 = abs(x(i)-x(i+3));
%     rozdil_over = abs(x(i)-x(i+12));
%     rozdil_over2 = abs(x(i) - x(i+11));
%     prumx = median(x(i:(i+70)));
%     prumy = median(y(i:(i+70)));
%     
%    if x(i) < 250 && rozdil < 40 && rozdil2 < 40 && y(i) < 250 && rozdil3 < 50 && rozdil4 < 50 && prumx < 200 && prumy <150 && (rozdil_over <50 || rozdil_over2 < 50)
%        pom = i-5;
%        konec_sledovani = [konec_sledovani pom];
%    else
%        pozice = pozice + 1;
%    end
% end


zac = input('Zadej pozici začátku sledování druhé tečky ve videu č.2: ');
zacatek_sledovani = [zac],

kon = input('Zadej pozici konce sledování videa č. 2: ');
konec_sledovani = [kon],

%%% skript prevzorkovani
addpath('D:\semestrální projekt\přehrání přes WMP a nahrávání do TXT + interpolace bodů')
addpath('D:\semestrální projekt\Změřená data\pomoci_textfile')

x = x(zacatek_sledovani:konec_sledovani(1,1));
y = y(zacatek_sledovani:konec_sledovani(1,1));
pupil_leveoko = pupil_leveoko(zacatek_sledovani:konec_sledovani(1,1));
pupil_praveoko = pupil_praveoko(zacatek_sledovani:konec_sledovani(1,1));

delka_puvodni = length(x);
% nova_osax = [1:1015];
delka_nova = 473;
nove_x = resample(x,delka_nova,delka_puvodni);
nove_y = resample(y,delka_nova,delka_puvodni);
nove_pupil_leveoko = resample(pupil_leveoko,delka_nova,delka_puvodni);
nove_pupil_praveoko = resample(pupil_praveoko,delka_nova,delka_puvodni);

x_stare = x;
y_stare = y;
x = nove_x;
y = nove_y;
pupil_leveoko = nove_pupil_leveoko
pupil_praveoko = nove_pupil_praveoko

prumer_pupil = [30];
for i = 2:length(pupil_leveoko)
    pom = abs(pupil_leveoko(i) - pupil_praveoko(i));
    if pom<5
        q = (pupil_leveoko(i) + pupil_praveoko(i))/2;
        prumer_pupil = [prumer_pupil q];
    else
        q = prumer_pupil(i-1);
        prumer_pupil = [prumer_pupil q];
    end
end
prumer_pupil(1) = prumer_pupil(2);
assignin('base','prumer_pupil',prumer_pupil);

d((end-3):end)='.mat';
save(d,'x','y','prumer_pupil','pupil_leveoko','pupil_praveoko')