Bonjour,
J'aimerais créer un panorama à l'aide de deux images.
Pour ce faire j'ai la démarche suivante:
j'ai extrait des points de correspondance entre les deux images. A l'aide de ces ensembles de points je détermine l'homographie H qui existe entre eux.(avec ransacfithomography disponible ici pour ceux qui veulent savoir)
Ensuite je commence à avoir des problèmes.
Je crée une matrice de taille [hauteur, 2foislargeur] qui doit contenir au final mon panorama. Je met à gauche ma première image et je veux mettre ma deuxième à l'aide de l'homographie inverse. Et c'est là mon problème... je n'arrive à rien de bien fameux.
Je vous met mon programme actuel(qui est faux ...):
Remarque: le A est une matrice 4xn qui contient les points d'intérêts de l'image 1 et ceux qui correspondent sur l'image 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 function res=panoramique(I1,I2,A,t) % séparation des points d'intérêts de l'image 1 et de l'image 2 A1=[A(1,: ) ;A(2,: )]; A2=[A(3,: ) ;A(4,: )]; % recherche de l'homographie entre les points d'intérêts H=ransacfithomography(A1,A2,t); Hinv=inv(H); % création de la grande matrice qui va acceuillir le panorama Pano=zeros(size(I1,1),2*size(I1,2)); % Mise de la première image dans le panorama à gauche V=zeros(size(I1,2),size(I1,1)); Pano=[I1' ;V]'; for i=1:size(I2,1) for j=1:size(I2,2) f=[i;j;1]; g=Hinv*f; i1=floor(g(1)/g(3)); j1=floor(g(2)/g(3)); if ((i1>1) & (i1<2*size(I1,1)) & (j1>1) & (j1<2*size(I1,2))) Pano(i1,j1)=I2(i,j); end end end res=Pano; end
Bref je ne sais pas comment appliquer l'homographie inverse sur l'image I2... Avec interp2 peut-être mais comment?
cordialement
Partager