%vytvorenie DATABAZY MEATUS ACUSTICUS EXTERNUS
%clc % Clear the command window.
%clear all % Erase all existing variables.
%close all% Close all figures (except those of imtool.)
%workspace;  % Make sure the workspace panel is showing.

j=0;
filenames={'data_37.mat','data_38.mat','data_39.mat','data_40.mat','data_41.mat','data_42.mat','data_43.mat','data_44.mat','data_45.mat'};
 for i=1:numel(filenames)
         j=j+1;
         S=load(filenames{i});
         S=struct2cell(S);
    databaza{j,1}=S{1};
 end
    
    
 %na 1. riadku od na 2.riadku do v stlpcoch pacienti
rezy=[32 39 39 49 52 67 52 48 44; 40 49 43 56 60 79 65 56 48]; %ľavý zvukovod 
rezy=[20 53 39 58 53 40 45 49 53; 36 63 44 66 58 46 54 59 61];%Pravý zvukovod
d1=39; % x rozmer_anat_struktury
d2=109; % y rozmer_anat_struktury
pocet=0;
pocet2=0;
clear j

for c=1:9 %pre 9 pacientov(37-45)
    data=databaza{c};
    od=rezy(1,c); %rezy od-do na ktorých sa nachádza anatomická štruktúra
    do=rezy(2,c);
    stred=floor(((do-od)/2)+od);
    rozdiel1=do-od+1;
    rozdiel=rozdiel1;
    pocetrezov=size(data);
    pocetrezov=pocetrezov(3);
    
imshow4(data); %zobrazenie dat pacienta pomocou funkcie imshow4
%vyhladáme štruktúry ktoré chceme detekovat
jeden_rez=data(:,:,stred); %zobrazenie rezu na ktorom 
%je zretelne viditelná detekovaná anatomická štruktúra 
imshow(jeden_rez,[min(jeden_rez(:)) max(jeden_rez(:))]);%zobrazenie 1 rezu
hold on
bod=ginput(1); %oznacenie  bodu na základe ktorého budeme vyrezávat
% anatomickú štruktúru (lavý horný roh obdlžníka - bounding boxu)
hold off

pozitivne_detekcie=cell(rozdiel,1); 

for i=od:do % rezy s anat. štruktúrou, ktorú chceme vyrezat
    jeden_rez=data(:,:,i); %jeden rez s danou anat. štruktúrou
    hold on %zadrží obraz, aby sa vyrezávanie uskuto?nilo v rovnakom obrázku 
    anat_struktura=imcrop(jeden_rez,[bod,d1,d2]); %vyrezanie anat. štruktúry z daného rezu v tomto prípade sa jedná o vonkajší zvukovod, pre ktorý 
    hold off
    figure(i-(od-1))
    imshow(anat_struktura,[min(anat_struktura(:)) max(anat_struktura(:))]);
    pozitivne_detekcie{i-(od-1)} = anat_struktura; %detekcie obsahujúce anatomickú štruktúru
end
d=pozitivne_detekcie{1,1};%chceme vybrat prvú anatomickú štruktúru
figure(do-od+2) 
imshow(d,[min(d(:)) max(d(:))]); %zobrazenie prvej vyrezanej anat. štruktrury

bez_anat_struktur=cell(rozdiel,1);
for j=od:do
jeden_rez=data(:,:,j);
H=imrect(gca,[bod,d1,d2]);
%position=wait(H); ak chceme vybrat ROI rucne + posúvat/zväcšovat/zmenšovat
position=getPosition(H); %automatický zisk ROI podla zadaných súradníc a 
%rozmerov obdlžnika
close all
jeden_rez(position(1,2):position(1,2)+position(1,4),position(1,1):position(1,1)+position(1,3))=0;
bez_anat_struktur{j-(od-1)}=jeden_rez;
end
%kontrola 1 rezu bez anatomickej štruktúry
g=bez_anat_struktur{1,1};
figure(do-od+3) 
imshow(g,[min(g(:)) max(g(:))]);

%_________________________________________________________________
%VÝBER NÁHODNÝCH REZOV Z CELEJ DATABÁZY
rozdiely=3*rozdiel; 
x=rozdiely;
%fce RANDI dáva náhodné císla nezoradené podla velkosti
random_rez1=randi([1 (od-1)],1,x); 
random_rez2=randi([(do+1) pocetrezov],1,x);
random_rez=[random_rez1 random_rez2];
%nechceme rezy z ktorých sme vyrezávali anatomické štruktúry 
%---------------------------------------------------
%VYBER NAHODNYCH REZOV Z REZOV BEZ ANATOMICKYCH ŠTRUKTÚR

 random_rez_bez_anat=randperm(rozdiel); %náhodné cisla, slúži pre vybratie 
% náhodných rezov z bunkového pola bez_anat_struktur z ktorých chceme
%vybrat rezy bez anatomických štruktúr
%--------------------------------------------------------
negativne_detekcie=cell(rozdiely,1);
%VÝBER NÁHODNÝCH SÚRADNÍC
random_pozice_x=randi([1 512-d1],1,rozdiely); 
random_pozice_y=randi([1 512-d2],1,rozdiely);

     for p=1:rozdiel
       for r=rozdiel+1:rozdiely
          aktualna_pozice_x=random_pozice_x(r);
          aktualna_pozice_y=random_pozice_y(r);
          aktualna_pozice=[aktualna_pozice_x,aktualna_pozice_y];
           
        k=random_rez(r); 
        nahodny_rez=data(:,:,k); %z dat (zoznamu rezov) sa vyberie náhodný rez 
        vystrihnute=imcrop(nahodny_rez,[aktualna_pozice,d1,d2]);
        negativne_detekcie{r}=vystrihnute;
           
 %náhodné vyrezanie negatívnych detekcii z rezov BEZ ANATOMICKYCH STRUKTUR
 
        l=random_rez_bez_anat(p);
        nahodny_rez_bez_anat=bez_anat_struktur{l};
        
        %aktuálne súradnice pre rezy bez anatomickych štruktur
         aktualna_pozice_x2=random_pozice_x(p);
         aktualna_pozice_y2=random_pozice_y(p);
         aktualna_pozice2=[aktualna_pozice_x2,aktualna_pozice_y2];
         
       vystrihnute=imcrop(nahodny_rez_bez_anat,[aktualna_pozice2,d1,d2]);
         negativne_detekcie{p}=vystrihnute;
       end
      end
           
 skuska=negativne_detekcie{2};
 figure(do-od+4)
 imshow(skuska,[min(skuska(:)) max(skuska(:))]);
 

 delka=size(pozitivne_detekcie,1);
 for j=1:delka
     pocet=pocet+1;
 vysledok_pozitivne{pocet,1}=pozitivne_detekcie{j};
 end
 delka2=size(negativne_detekcie,1);
 for m=1:delka2
     pocet2=pocet2+1;
     vysledok_negativne{pocet2,1}=negativne_detekcie{m};
 end
end
 %____________________________________________________________________
  clearvars -except vysledok_negativne vysledok_pozitivne vysledok_pozitivne_rot ;
% save('vysledok_negativne_zvukovod.mat','vysledok_negativne','vysledok_pozitivne','vysledok_pozitivne_rot')
