EXPLICATION MATHEMATIQUE DU WARPING
1.La reprojection
Le principe est assez simple:
Soit un point de l espace 3D M. Soit Camera1 et Camera2 les parametres de camera de l image de reference et de l image a deduire. Soit C1 et C2 les points de vue de ces cameras. Soit M1 et M2 les reprojections de M sur les cameras 1 et 2. Soit P1 et P2 les matrices faites avec les parametres de camera. Ces matrices P sont faites en prenant les vecteurs a,b, et c de la camera, et en definissant P comme la matrice dont les colonnes sont dans l ordre a,b et c.

En fait, on connait le point P1(x1,y1), et sa profondeur grace a la carte de profondeur, et on cherche a calculer P2(x2,y2). Ecrivons xr=Vecteur(x1,y1,z1), et xd=Vecteur(w*x2,w*y2,w).
Le point 3D A1 correspondant a P1 est A1=C1+P1.xr. En effet, si on calcule C1A1, on trouve C1A1=C1K+KA1, ou K est le coint superieur gauche de l ecran. Or par definition, C1K=c. De plus, KA1=x1*a+y1*b. Donc, on a OA1=OC1+C1A1=C1+c+x1*a+y1*b=C1+P1.xr.
De meme, on a A2=C2+P2.xd.
Ecrivons maintenant la propriete de tout point de la droite (C1A1), a laquelle M appartient.
Quelque soit M appartenant a (C1A1), on a C1M=k*C1A1, ce qui s ecrit aussi C1M=k*P1.xr. Or ce k peut etre calcule:
Norme(C1M)=Profondeur(Pixel(x1,y1))=k*Norme(C1A1). Or cette norme Norme(C1A1) est calculable, et Profondeur(Pixel(x1,y1)) est repertoriee dans la carte des profondeurs.
Posons donc Disparite1=Norme(C1A1)/Profondeur(Pixel(x1,y1)).
On a alors: OM=C1+1/Disparite1*P1.xr.
De meme, on a OM=C2+1/Disparite2*P2.xd. Ici, Disparite2 est la disparite calculee avec la profondeur dans l image deduite, profondeur que l on ne connait pas, et donc Disparite2 sera deduite d autres formules.
,br>
En melant les 2 formules, on arrive a: C1+1/Disparite1*P1.xr=C2+1/Disparite2*P2.xd.. Soit Disparite2*(C1-C2)+Disparite2/Disparite1*P1.xr=P2.xd, soit encore en inversant la matrice P2, qui est inversible par construction, Disparite2*Inv(P2).(C1-C2)+Disparite2/Disparite1*Inv(P2).P1.xr=xd.
Or xd est un vecteur en coordonnees homogenes: on peut donc diviser ses coordonnes par un scalaire. On obtient donc la
Formule du warping de McMillan: xd=Inv(P2).(C1-C2)+1/Disparite1*Inv(P2).P1.xr.
On notera que je n ai pas pris de cas particuliers pour Disparite1=Infini (le point est sur C1), ou pour Disparite1=0 (le point est a l infini). On verifiera seulement que la formule de McMillan reste valable.
2. Le parcours de McMillan
L idee est de parcourir l image de reference dans un certain ordre pour ne pas avoir a faire de Z-buffer gerant les occlusions. Cette ordre est donnee par la position de la projection de C2 sur l image de refence, projection appellee Epipole.
Aussi, on calcule xd=Inv(P1)(C1-C2)=(w*xep,w*yep,w).
Si w est positif, on parcours l image de reference de l exterieur vers l epipole, que celui ci soit a l interieur de l image de reference ou non. Si w est negatif, on utilise le sens oppose.

Si l Epipole est en dehors de l ecran, on utilise le meme principe:

Benoit Chevallier
Last modified: Wed Aug 11 15:19:37 MET DST 1999