% Tato funkce slouzi k slicovani dvou snimku.
%
% Vstupni promenne:
%   snimek1 - referencni, snimek2 - registrovany, souradnice
%
% Potrebne m-fily:
%   fazova_korelace.m, lokalni_fazova_korelace.m,
%   kvadraticka_transformace.m, rozliseni.m, iluminace.m, transform.m
 

function [snimek2_kvadrat]=slicovani(snimek1,snimek2,souradnice)

%% nacteni snimku a souradnic bifurkaci
y1=souradnice(1,:);
x1=souradnice(2,:);

x1(y1==0)=[];
y1(y1==0)=[];

%% nalezeni korespondujicich bifurkaci v druhem snimku

[snimek1,snimek2_slicovany]=fazova_korelace(snimek1,snimek2,0,1);



if size(snimek1,3)==3
    f1=(snimek1(:,:,2));
else
    f1=(snimek1(:,:,1));
end

if size(snimek2,3)==3
    f2=(snimek2_slicovany(:,:,2));
else
    f2=(snimek2_slicovany(:,:,1));
end

maska1=zeros(size(f1));
maska1(f1>=5)=1;
maska1=bwmorph(maska1,'dilate',10);
maska1=bwmorph(maska1,'erode',70);
maska2=zeros(size(f2));
maska2(f2>=5)=1;
maska2=bwmorph(maska2,'dilate',10);
maska2=bwmorph(maska2,'erode',70);
maska=maska1.*maska2;

x1_oblast=[];
y1_oblast=[];

j=1;
for i=1:length(x1)
    if maska(y1(i),x1(i))==1
        x1_oblast(j)=x1(i);
        y1_oblast(j)=y1(i);
        j=j+1;
    end
end

velikost=90;
x2_koresp=[];
y2_koresp=[];

for i=1:length(x1_oblast)

vyrez1=f1(y1_oblast(i)-velikost:y1_oblast(i)+velikost,x1_oblast(i)-velikost:x1_oblast(i)+velikost,:);
vyrez2=f2(y1_oblast(i)-velikost:y1_oblast(i)+velikost,x1_oblast(i)-velikost:x1_oblast(i)+velikost);

[posun_x,posun_y]=lokalni_fazova_korelace(vyrez1,vyrez2);

x2_koresp(i)=x1_oblast(i)-posun_x;
y2_koresp(i)=y1_oblast(i)-posun_y;
end




%% kvadraticka transformace

[snimek2_kvadrat]=kvadraticka_transformace([x1_oblast',y1_oblast'],[x2_koresp',y2_koresp'],snimek2_slicovany);
            
end