function [F,J] = Stereo(a)

%Kalibrace stereoparu - minimalizovana funkce - dle Luhmann - Close Range
%Photogrammetry, str. 220, funkce pracuje s korigovanymi souradnicemi kal.
%znacek ve snimcich a znamymi vnitrnimi parametry kamery, neznama je pouze
%baze a rotace mezi s. s. kamer

%NEZNAME PARAMETRY, NACTENI ZNAMYCH PARAMETRU

bx = a(1);                                                                  %slozky baze
bz = a(2);

Omega = a(3);                                                               %rotace mezi s. s. kamery
Fi = a(4);
Kapa = a(5);

global x1                                                                   %korigovane souradnice ref. znacek v jednotlivych snimcich
global x2
global y1 
global y2
global Cxy1                                                                 %ohniskove vzdalenosti kamer
global Cxy2

global xm1                                                                  %modelove souradnice rekalkulovane z kamery 1 a 2 - jeden z vystupu
global xm2
global ym1
global ym2
global zm1
global zm2
global pxp                                                                  %rozdily modelovych souradnic rekalkulovanych z jednotlivych kamer
global pyp
global pzp

R = RotMat(Omega,Fi,Kapa);                                                  %matice rotace mezi s. s. kamer

for i = 1:size(x2,1);
    
    A = [x2(i);y2(i);-Cxy2];
    
    Z = R*A;
    
    D = [bx,x1(i);1,y1(i);bz,-Cxy1];
    
    E = horzcat(D,Z);
    
    F(i,1) = abs(det(E));                                                   %minimalizovana funkce
    
    Lambda(i) = (Z(3)-bz*Z(2))/(y1(i)*Z(3)+Cxy1*Z(2));                      %meritka danych bodu v jednotlivych snimcich
    Mi(i) = (-Cxy1-bz*y1(i))/(y1(i)*Z(3)+Cxy1*Z(2));
    
    xm1(i) = Lambda(i)*x1(i);                                               %vypocet modelovych souradnich
    xm2(i) = bx+Mi(i)*Z(1);
    ym1(i) = Lambda(i)*y1(i);
    ym2(i) = 1+Mi(i)*Z(2);
    zm1(i) = Lambda(i)*(-Cxy1);
    zm2(i) = bz+Mi(i)*Z(3);
    
    px(i) = xm2(i)-xm1(i);                                                  %rozdily modelovych souradnich z jednotlivych kamer
    py(i) = ym2(i)-ym1(i);
    pz(i) = zm2(i)-zm1(i);
    
    z(i)=Lambda(i)*(-Cxy1);                                                 %prepocet rozdilu do meritka globalniho s. s.
    
    pxp(i) = (-Cxy1)/z(i)*px(i);
    pyp(i) = (-Cxy1)/z(i)*py(i);
    pzp(i) = (-Cxy1)/z(i)*pz(i);
    
end

end

