%% Inicializacny subor
% Treba odkomentovat cyklus detektora ktory chcem pouzit ako aj
% vykreslovanie FP ktore chcem vidiet.
% Dorobit to do formatu CASE alebo IF
clc
clear all
close all


%% Premenné pre načítavanie súborov
path = ('..\test_img');     % Cesta k súborom od adresára kde je umiestnený spúšťací súbor
file_type = ('.tif');       % Typ súborov ktorý má byť načítaný 



%% Nacitanie suborov do premennej pomocou funkcie img_load
tic
    [img pocet files] = img_load(path, file_type);
    time = toc;
    fprintf('Pocet nacitanych obrazov: %d \n' , pocet);
    fprintf('Celkovy cas:%6.3f sekund \n' ,time);


%% Premenné pre detekciu FP
FP{pocet} = 0;
pocetFP = zeros(1,pocet);
I(size(img,1),size(img,2)) = zeros;


%% Harris FP detector

for i=1:pocet

   I = img(:,:,i);
   [FP_temp pocetFP_temp] =  harris (I);
   FP{i} = FP_temp;
   pocetFP(i) = pocetFP_temp;
%    i          %vypis v ktorom kroku sa nachadzam
   
end

clear FP_temp pocetFP_temp;


%% Shi-Tomasi detector

% 
% 
% % Premenne pre ST_detect
% ST_pocet = 100;
% 
% for i=1:pocet
% 
%    I = img(:,:,i);
%    [FP_temp pocetFP_temp ] =  ST_detect (I, ST_pocet);
%    FP{i} = FP_temp;
%    pocetFP(i) = pocetFP_temp;
% %    i          %vypis v ktorom kroku sa nachadzam
%    
% end
% 
% clear FP_temp pocetFP_temp;



%% FAST9 detector

% Premenne pre FAST9 detektor

% prah = 90;      
% % cim mensi prah tym viacej detekovanych FP a naopak
% % Optimalne 90 skuskami
% for i=1:pocet
% 
%    I = double(img(:,:,i));
%    FP_temp1 = fast9 (I, prah);
%    
%    FP_temp = zeros(size(FP_temp1,1),2);
%    
%    FP_temp(:,1) = FP_temp1(:,2); 
%    FP_temp(:,2) = FP_temp1(:,1); 
%    
%    
%    FP{i} = FP_temp;
%    pocetFP(i) = size(FP_temp,1);
%    clear FP_temp1;
%   
%    
% end
% 
% clear FP_temp FP_temp1 pocetFP_temp;


%% Local entropy FP detector

% radius = 3; % definovanie radiusu masky pre vypocet lokalnej entropie ak nebude definovany nastavi sa radius = 10
% progress_bar = waitbar(0,'Vypocet FP pomocou lokalnej entropie');
% 
% for i=1:pocet
%     
%     
%     I = img(:,:,i);
%     [FP_temp] = local_entropy (I,radius);
%     FP{i} = FP_temp;
%     pocetFP(i) = size(FP_temp,1);
%     waitbar(i/pocet,progress_bar);
% end
% 
% close (progress_bar);
% clear FP_temp progress_bar;

%% parovanie obrazov - FP matchnig - najmensia vzdialenost

% Metoda na baze porovnavania euklidovskych vzdialenosti bodov,
% ked pri malych rozdieloch medzi dvoma po sebe nasledujucimi obrazmi
% je mala pravdepodobnost, ze by dvojica FB bola od seba vzdialena
% na tolko, aby bol za dvojicu oznaceny zly par bodov.


% definicia premennych pred FP matching
% matchedFP = cell(1,pocet-1);
% 
% for i=1:(pocet-1)
%     
%     FP1 = FP {i};
%     FP2 = FP {i+1};
%     
%     [matchedFP_temp] = match_FP_distance (FP1, FP2);
% 
%     matchedFP{i} = matchedFP_temp;
%   
% end
% 
% clear FP1 FP2 matchedFP_temp;


%% vykreslenie FP do "animacie"

% figure(1);
% 
% for i=1:pocet
%     subplot(1,2,1)
%     imshow(img(:,:,i));
%     subplot(1,2,2)
%     imshow(img(:,:,i));
%     hold on
%     scatter(FP{i}(:,2),FP{i}(:,1),'r');
%     hold off
%     pause(0.25);
%     
%     
% end

%% Vykreslovanie sparovanych FP

% Vykreslenie sparovania FP v i a i+1 obraze 

% figure(2);
% 
% img_matched(size(img,1),((size(img,2))*2)) = zeros;
% 
% for i = 1:size(matchedFP,2)
%     img_matched(:,1:(size(img,2))) = img(:,:,i);
%     img_matched(:,((size(img,2))+1):size(img_matched,2)) = img(:,:,i+1);
% 
%     imshow(img_matched,[]);
%     hold on;
%     
%     matchedFP_show = matchedFP{i};
%     
%     for j = 1:size(matchedFP_show,1)
%         
%         a = [ matchedFP_show(j,2), (matchedFP_show(j,4)+(size(img,2))) ];
%         b = [ matchedFP_show(j,1), matchedFP_show(j,3) ];
% 
%         plot(a,b,'r+-');
%         hold on
%     
%     end
%     
%     hold off;
%     pause(0.2);
%     
% end


%% Vykreslovanie ako sa posunu FP v nasledujucom obraze oproti 
% aktualnemu obrazu

% figure(3);
% 
% for i = 1:size(matchedFP,2)
%     
%     matchedFP_show = matchedFP{i};
%     
%     imshow(img(:,:,i),[]);
%     hold on;
%     
%     for j = 1:size(matchedFP_show,1)
%         a = [ matchedFP_show(j,2), matchedFP_show(j,4) ];
%         b = [ matchedFP_show(j,1), matchedFP_show(j,3) ];
% 
%         plot(a,b,'r');
%         hold on
%     
%     end
% 
%     hold off;
%      
%     pause(0.5);
% end


%%
