
%% Generazione del errore per aggiungere al valore esatto dei pti

% Però bisogna dimostrare in qlc modo perchè posso simulare l'errore come
% una gaussiana.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% varianza dell'errore gaussiano
var_x = 1

% errore bianco da aggiungere ad ogni pto

n = sqrt(var_x)*randn;



%% Plot delle traiettorie dei pti scelti

% Pti trovati con dalle due immagini, ma cambiate per avere un errore
% minore del 0.001
x1 = [312,260,184,144,170,225,241,255,265,220,190,138; 
      289,311,246,196,176,226,226,190,152,113,133,94;
      1,1,1,1,1,1,1,1,1,1,1,1];
x2 = [335.9,256.8,129.5,39,116.8,179.8,256.8,256.2,256.8,200.5,142.9,59.14;
      263.5,297,268.2,195.18,154.3,201.9,233.4,192.5,138.2,62.5,68.5,16.9;
      1,1,1,1,1,1,1,1,1,1,1,1];


% Punti scelti nel programma pov-ray
x1_pov = [-3,0,4,5,3,2,0,0,0,1,2,3;-5,-7,-3,1,2,0,-2,0,2,4,4,5;0,0,0,0,0,0,0,0,0,0,0,0];

plot(x1_pov(1,:),x1_pov(2,:))
hold on;

 
% provo a dividere e spostare i pti sull'immagine per farli coincidere con 
% quelli scelti in pov-ray

x11 = x1/35;

for(i=1:length(x11))
    x11(1,i)= x11(1,i) -5;
    x11(2,i)=x11(2,i) -4;
end
plot(-x11(1,:),-x11(2,:),'red')

% ora sommo ad ogni pto il rumore bianco
% mi creo 10 coppie di pti con i quali mi calcolo 10 F diverse

for (k=0:9)
    h=k*12;
    for(i=1:12)
        x11(1,i) = x(1,h+i) + n;
        x11(2,i) = x(2,h+i) + n;
        x22(1,i) = x(1,h+i) + n;
        x22(2,i) = x(2,h+i) + n;
    end

end  

%% Calcolo della matrice fondamentale
F=[];
e1=[];
e2=[];


for (i=1:10)
    x1_tmp=[];
    x2_tmp=[];
    for(k=1:12)
        t1=[];
        t2=[];
        for(j=1:3)
           t1(1,j) = [t1(j) x1(j,k)];
           t2(1,j) = [t2(j) x2(j,k)];
        end
        x1_tmp = [x1_tmp t1'];
        x2_tmp = [x2_tmp t2'];
    end
    [F(i) e1(i) e2(i)]=fundmatrix(x1_tmp,x2_tmp);
end

% controllo se la matrice è esatta
zero=x1a'*F(1)*x1b
zero2=(F(1)')*e1

% stimatore

F
