59 lines
1.7 KiB
Matlab
59 lines
1.7 KiB
Matlab
taille_ecran = get(0,'ScreenSize');
|
|
L = taille_ecran(3);
|
|
H = taille_ecran(4);
|
|
|
|
decalage_bord = 500;
|
|
I_bord = 240*ones(size(I_1,1),decalage_bord,3);
|
|
decalage_milieu = 1000;
|
|
I_milieu = 240*ones(size(I_1,1),decalage_milieu,3);
|
|
|
|
figure('Name','Detection des points d''interet','Position',[0.1*L,H,0.8*L,H]);
|
|
I_1_2 = cat(2,I_bord,I_1,I_milieu,I_2,I_bord) ;
|
|
imagesc(I_1_2);
|
|
axis equal;
|
|
axis image off;
|
|
hold on;
|
|
|
|
F = inverse_K'*E_estimee*inverse_K;
|
|
|
|
p_1_select = transpose(K*w_1_select(1:8,:)');
|
|
p_2_select = transpose(K*w_2_select(1:8,:)');
|
|
|
|
for i = 1:size(p_1_select,1)
|
|
|
|
% Tracé coloré des pixels sélectionnés :
|
|
x_g = p_1_select(i,1)+decalage_bord;
|
|
y_g = p_1_select(i,2);
|
|
scatter(x_g,y_g,'r','filled');
|
|
|
|
x_d = p_2_select(i,1)+decalage_bord+decalage_milieu+size(I_1,2);
|
|
y_d = p_2_select(i,2);
|
|
scatter(x_d,y_d,'g','filled');
|
|
|
|
% Équations cartésiennes des droites épipolaires :
|
|
p1 = [x_g-decalage_bord ; y_g ; 1];
|
|
D1 = F*p1;
|
|
p2 = [x_d-decalage_bord-nb_colonnes-decalage_milieu ; y_d ; 1];
|
|
D2 = F'*p2;
|
|
|
|
% Tracé de la droite épipolaire droite :
|
|
x_trace = -(decalage_bord/2):nb_colonnes+decalage_bord/2;
|
|
y_trace = -D1(1)/D1(2)*x_trace-D1(3)/D1(2);
|
|
indices = find(y_trace>0 & y_trace<nb_lignes);
|
|
x_trace = x_trace(indices);
|
|
y_trace = y_trace(indices);
|
|
|
|
plot(x_trace+decalage_bord+nb_colonnes+decalage_milieu,y_trace,'LineWidth',1,'Color','g');
|
|
hold on;
|
|
|
|
% Tracé de la droite épipolaire gauche :
|
|
x_trace = -(decalage_bord/2):nb_colonnes+decalage_bord/2;
|
|
y_trace = -D2(1)/D2(2)*x_trace-D2(3)/D2(2);
|
|
indices = find(y_trace>0 & y_trace<nb_lignes);
|
|
x_trace = x_trace(indices);
|
|
y_trace = y_trace(indices);
|
|
|
|
plot(x_trace+decalage_bord,y_trace,'LineWidth',1,'Color','r');
|
|
hold on;
|
|
end
|