Géométrie épipolaire
# Géométrie épipolaire

La géométrie épipolaire est un modèle mathématique de géométrie, qui décrit les relations géométriques de différentes photos du même objet, prises de différents points d'observation. Elle permet de décrire les dépendances entre les pixels en correspondance – c'est-à-dire ceux formés par un seul point de l’objet observé sur chacune des images. Bien que les bases en aient été posées dès 1883 par Guido Hauck, et explorées en 1908 par Horst von Sanden (de), la géométrie épipolaire n'a pris quelque importance qu'avec l'exploitation des images numériques, avant tout dans le domaine de la vision artificielle.

En tout premier plan, la géométrie épipolaire sert à restituer l'information tridimensionnelle à partir d'images. Elle sert là de soutien à l'analyse des correspondances, à savoir la détection des pixels en correspondance, et elle permet d'y réduire considérablement le temps de recherche.

## Principe

Un appareil photo, ou une caméra, peut être modélisé géométriquement par une chambre à sténopé. Dans celle-ci, pendant la prise de vue, le centre du trou, chaque point de l'objet visé et le point en correspondance dans l’image sont alignés. Si un point objet a été vu par deux caméras différentes, on peut en fonction des positions des trous dans l’espace, et par rapport aux images, reconstituer les deux droites, et leur intersection, qui est le point objet, que l'on peut donc calculer ultérieurement. On a ainsi la reconstruction à trois dimensions d'un point objet dont on peut identifier les points en correspondance sur deux images. La géométrie épipolaire sert à faciliter cette reconstruction : si le point est donné sur une image, la connaissance de la situation en géométrie épipolaire limite la recherche du point en correspondance sur l'autre image à une ligne.

Dans le schéma ci-contre à gauche, on présente les êtres géométriques suivants : point objet et points image, centres de projection $\mathbf {O} _{\mathbf {G} }$ et $\mathbf {O} _{\mathbf {D} }$ des deux caméras, ainsi que leurs plans image, replacés en avant des centres de projection par symétrie (ce qui ne change rien à l'alignement, mais facilite la représentation). Le point objet $\mathbf {X}$ se projette sur l'image de gauche en $\mathbf {X} _{\mathbf {G} }$. À partir de ce point image, le point objet ne peut se trouver que sur le rayon rectiligne $\mathbf {O} _{\mathbf {G} }\mathbf {X} _{\mathbf {G} }$ : par exemple en $\mathbf {X} _{3}$, $\mathbf {X} _{2}$, $\mathbf {X} _{1}$ ou $\mathbf {X}$, qui ont tous la même image $\mathbf {X} _{\mathbf {G} }$ à gauche. Tous ces points se projettent à droite sur une même droite (« droite épipolaire », en rouge), sur laquelle on peut se borner à rechercher le point $\mathbf {X} _{\mathbf {D} }$ en correspondance avec $\mathbf {X} _{\mathbf {G} }$.

La géométrie épipolaire permet de trouver une relation simple entre points en correspondance, sans connaissance de la position des caméras. Bien sûr, pour une géométrie épipolaire donnée, on peut trouver des informations sur les positions relatives des caméras, mais on n'a pas besoin de connaître explicitement les positions des caméras pour cela. La géométrie épipolaire ne dépend que des paramètres des caméras, et est indépendante de la structure de la scène photographiée.

Pour décrire la géométrie épipolaire et ses éléments, on utilise une terminologie donnée. Le plan qui contient les deux centres de projection et le point objet s'appelle plan épipolaire (en vert sur le schéma). Celui-ci coupe chacune des deux images selon une droite, la droite épipolaire (en rouge sur le schéma). Pour un point donné sur une image, le point en correspondance se trouve sur la droite épipolaire de l’autre image. La droite qui joint les deux centres de projection intersecte chaque plan image en un point, l'épipôle (points notés respectivement $e_G$ et $e_D$ sur le schéma). Les épipôles restent fixes tant que la position relative des caméras reste fixe. L'épipôle d'une image est en même temps l'image du centre de projection de l’autre caméra. Toutes les droites épipolaires d'une image passent par l’épipôle, qui peut d'ailleurs, selon la position relative des caméras, se trouver hors du champ de $l'image^,.$

## Applications

La géométrie épipolaire est essentiellement utilisée en géométrie projective, en photogrammétrie, et en vision artificielle. Son but principal y est l'analyse des correspondances : si l'on recherche, pour un point remarquable d'une image, le point en correspondance sur l'autre image, il faut, en l'absence d'information sur la géométrie épipolaire, explorer l'ensemble de l'autre image. Si l'on connaît la géométrie épipolaire, il suffit de le rechercher sur la droite épipolaire. Ceci amène à une diminution importante de l'espace d'exploration. Pour cela, on utilise la géométrie épipolaire avant tout là où il faut analyser en trois dimensions une scène ou un objet avec des caméras. Les domaines importants sont la mesure de pièces pour le contrôle de qualité, le relevé de bâtiments en photogrammétrie architecturale, la photogrammétrie aérienne pour l'établissement de cartes géographiques ou encore la vision dans l'espace pour des automates autonomes.

### Vision artificielle

La géométrie épipolaire limite le domaine de recherche des points en correspondance dans l'identification d'objets aux lignes épipolaires, et permet par là une énorme économie de temps de calcul. Simultanément, elle diminue le nombre de fausses correspondances en raison de la diminution du domaine de recherche. Les deux sont d'un grand intérêt dans la vision artificielle. En particulier dans le domaine des robots autonomes, il est nécessaire de simplifier les calculs pour atteindre de hautes performances, d'une part en raison des limitations sur le volume des circuits, et d'autre part pour atteindre les réactions rapides nécessaires pour éviter les collisions. C'est ainsi que l'un des participants au DARPA Grand Challenge, concours entre véhicules autonomes, a utilisé la bibliothèque de programmes OpenCV, qui contient des routines de calcul rapide de géométrie épipolaire et d'analyse de correspondance.

### Autocalibrage des caméras

La reconstruction en relief (3D) d'une scène sur des photographies peut être faite si la calibration et la position des caméras est connue. Comme la géométrie épipolaire décrit la relation projective entre deux images, elle est soumise à l'autocalibration, c'est-à-dire à un calcul automatique des paramètres des caméras. Dans ce cas, la géométrie épipolaire n'est pas utilisée à la recherche des correspondances, mais elle fait l'inverse : à partir de correspondances connues, elle reconstitue une grande partie de la calibration et de la position des caméras.

## Histoire

L'histoire de la géométrie épipolaire est étroitement liée avec celle de la photogrammétrie. Le premier à analyser les relations géométriques à sa base a été le mathématicien Guido Hauck. En 1883, il publie un article dans le Journal für die reine und angewandte Mathematik, où le concept de « point central » est utilisé pour la première fois. Sans souci des anachronismes, et pour garder une terminologie uniforme, nous allons utiliser la nomenclature de la géométrie épipolaire, où le point central est clairement l'épipôle.

   « Soient (Fig. 1a) $\mathbf {S} '$ et $\mathbf {S} ''$ deux plans de projection, $\mathbf {O} _{1}$ et $\mathbf {O} _{2}$ les centres de projection correspondants. La droite d'intersection $\mathbf {g} _{12}$ sera la section de base. La droite $\mathbf {O} _{1}\mathbf {O} _{2}$ coupe les plans de projection en $\mathbf {o} _{1}''$ et $\mathbf {o} _{2}'$, que nous appellerons épipôles des deux plans. »

Horst von Sanden en a fait une présentation plus vaste en 1908 dans le cadre de sa thèse « Détermination des épipôles en photogrammétrie. » Il y décrit des méthodes pour déterminer les épipôles de manière plus simple et plus exacte.

Avant l'introduction de la technique digitale, pour la photogrammétrie prédominante appelée analogique, fondée sur la photographie et son exploitation mécano-optique, l'analyse des correspondances était effectuée de façon manuelle. Comme un opérateur humain peut effectuer sans problème la correspondance entre points d'une scène suffisamment structurée, ces découvertes restèrent sans beaucoup d'applications. Ce n'est que la survenue de la photogrammétrie digitale, avec des photographies digitales et l'exploitation hors-ligne sur ordinateurs, à partir des années 1980, ainsi que le besoin croissant d'une exploitation automatisée des images dans le domaine de la vision artificielle qui a fait revivre de façon plus intensive l'étude de la géométrie épipolaire et de ses applications. Un premier travail, qui témoigne de la redécouverte de cette thématique a été la publication de Hugh Christopher Longuet-Higgins dans la revue Nature. Depuis, de nombreux scientifiques s'intéressent à la géométrie épipolaire, parmi lesquels Huang et Olivier Faugeras, Horn ou Vieville et Lingrand.

## Description mathématique

La géométrie épipolaire établit une relation entre les coordonnées des points en correspondance dans les plans image. Ces coordonnées sont souvent des coordonnées cartésiennes orthonormées, mais ce peuvent être des coordonnées affines quelconques. L'origine du système de coordonnées d'une image est souvent au milieu ou dans un coin de l'image. Pour des images numériques (images CCD ou scannées), on peut prendre par exemple la ligne et la colonne des pixels comme coordonnées. Quand les définitions de ligne et de colonne sont différentes, ou que les axes ne sont pas perpendiculaires, on a des coordonnées affines.

Les relations entre les coordonnées image de points en correspondance sont décrites par une matrice fondamentale. Elle permet de définir pour chaque point de la première image la droite épipolaire correspondante sur la deuxième, droite sur laquelle se trouve le point en correspondance.

### Coordonnées homogènes et matrice de projection

L'application des points objets sur le plan image peut être décrite avec les coordonnées homogènes utilisées en géométrie projective. Les coordonnées homogènes sont les coordonnées cartésiennes ou affines, augmentées d'une coordonnée, mais ne sont définies qu'à un facteur d'échelle près. Elles permettent de représenter de façon cohérente les points à l'infini ou points de fuite des amateurs de perspective.

En coordonnées homogènes, l'application d'un point objet de l’espace à trois dimensions sur le plan bidimensionnel du plan image peut être décrite par une application linéaire :

    $\mathbf {x} =\left({\begin{array}{c}u\\v\\w\end{array}}\right)=\mathbf {P} \,\mathbf {X} =\left({\begin{array}{cccc}p_{11}&p_{12}&p_{13}&p_{14}\\p_{21}&p_{22}&p_{23}&p_{24}\\p_{31}&p_{32}&p_{33}&p_{34}\end{array}}\right)\left({\begin{array}{c}U\\V\\W\\1\\\end{array}}\right)$

Les coordonnées homogènes d'un point dans un plan forment un tableau 3×1, que l'on peut traiter avec les règles du calcul matriciel. Nous désignerons ainsi des points comme des matrices.

On obtient les coordonnées cartésiennes à partir de $x=u/w$ et $y=v/w$. La matrice de projection $\mathbf {P}$, de taille $3\times 4$, décrit la projection en perspective des points objets sur le plan image. Elle contient des données d'orientation et de position de la caméra. Comme dans cette projection, il se perd une dimension (la distance de l’objet à la caméra), elle n'est pas inversible sans ambiguïté.

### Relation entre points en correspondance

Le calcul de la matrice fondamentale repose sur l’idée de choisir un point $\mathbf {x} _{1}$ sur la première image, puis de déterminer un point objet $\mathbf {X}$ se projetant sur ce point image, et finalement de calculer l'image $\mathbf {x} _{2}$ de $\mathbf {X}$ sur la deuxième image. Ce point $\mathbf {x} _{2}$ et l’épipôle $\mathbf {e} _{2}$ de la deuxième image se trouvent sur la droite épipolaire et la déterminent donc de façon unique.

Étant donné un point $\mathbf {x} _{1}$ sur la première image, le rayon sur lequel se trouve le point objet correspondant est défini par la matrice de projection $\mathbf {P} _{1}$. Avec seulement la première image, il est impossible de savoir où sur le rayon il se trouve, puisque sa distance à la caméra est inconnue. En revanche, il est possible d'obtenir un point quelconque du rayon au moyen du pseudo-inverse $\mathbf {P} _{1}^{+}$ de $\mathbf {P} _{1}$ :

    $\mathbf {X} ^{(0)}=\mathbf {P} _{1}^{+}\mathbf {x} _{1}$

Ce point peut être projeté sur la deuxième image, à l'aide de la matrice de projection $\mathbf {P} _{2}$ de celle-ci :

    $\mathbf {x} _{2}^{(0)}=\mathbf {P} _{2}\mathbf {P} _{1}^{+}\mathbf {x} _{1}$

Ainsi, le point $\mathbf {x} _{2}$ obtenu se trouve sur la droite épipolaire de la deuxième image en correspondance avec $\mathbf {x} _{1}$. Un autre point est l’épipôle $\mathbf {e} _{2}$, image du centre de projection $\mathbf {O} _{1}$ de la caméra 1 :

    $\mathbf {e} _{2}=\mathbf {P} _{2}\mathbf {O} _{1}$

En coordonnées homogènes, un point de coordonnées $(u,v,w)$ appartient à la droite passant par les points de coordonnées $(u_{1},v_{1},w_{1})$ et $(u_{2},v_{2},w_{2})$ si et seulement si $(u,v,w)$ est une combinaison linéaire de $(u_{1},v_{1},w_{1})$ et $(u_{2},v_{2},w_{2})$. Autrement dit, le déterminant suivant est nul :

$\left|{\begin{array}{ccc}u_{1}&u_{2}&u\\v_{1}&v_{2}&v\\w_{1}&w_{2}&w\\\end{array}}\right|=0$

Ainsi, la droite épipolaire a pour équation en coordonnées homogènes :

$\mathrm {Det} (\mathbf {x} _{2}^{(0)},\mathbf {e} _{2},\mathbf {x} _{2})=0$

Soit, en réinjectant les expressions précédentes $\mathbf {x} _{2}^{(0)}$ de et $\mathbf {e} _{2}$ :

$\mathrm {Det} (\mathbf {P} _{2}\mathbf {P} _{1}^{+}\mathbf {x} _{1},\mathbf {P} _{2}\mathbf {O} _{1},\mathbf {x} )=0$

Développant le déterminant sous forme de produit mixte, on obtient :

${(\mathbf {P} _{2}\mathbf {P} _{1}^{+}\mathbf {x} _{1}\times \mathbf {P} _{2}\mathbf {O} _{1})}^{\mathrm {T} }\mathbf {x} _{2}=0$

En posant $\mathbf {l} _{2}=\mathbf {P} _{2}\mathbf {P} _{1}^{+}\mathbf {x} _{1}\times \mathbf {P} _{2}\mathbf {O} _{1}$, et en transposant l'équation précédente, on a alors :

$\mathbf {x} _{2}^{\mathrm {T} }\mathbf {l} _{2}=0$

Comme $\mathbf {l} _{2}$ est une fonction linéaire homogène de $\mathbf {x} _{1}$, il existe une matrice $\mathbf {F}$ telle que $\mathbf {l} _{2}=\mathbf {F} \mathbf {x} _{1}$. On appelle cette matrice la matrice fondamentale. La relation entre $\mathbf {x} _{1}$ et $\mathbf {x} _{2}$ s'écrit finalement :

    $\mathbf {x} _{2}^{\mathrm {T} }\,\mathbf {F} \,\mathbf {x} _{1}=0$

ou encore :

    $\left({\begin{array}{ccc}u_{2}&v_{2}&w_{2}\end{array}}\right)\left({\begin{array}{ccc}f_{11}&f_{12}&f_{13}\\f_{21}&f_{22}&f_{23}\\f_{31}&f_{32}&f_{33}\end{array}}\right)\left({\begin{array}{c}u_{1}\\v_{1}\\w_{1}\end{array}}\right)=0$

Cette équation est appelée équation épipolaire. Étant donné un point sur l'image 2 (coordonnées $u_{2}$, $v_{2}$ et $w_{2}$ fixées), elle s'interprète comme l'équation d'une droite sur l'image 1 ($u_{1}$, $v_{1}$ et $w_{1}$ variables), et inversement.

Un cas particulier de la matrice fondamentale est la matrice essentielle. Celle-ci apparaît quand on utilise des coordonnées image orthonormées, dont l’origine est la projection perpendiculaire du centre de projection sur le plan image. Comme cette condition n'est pas nécessaire pour la matrice fondamentale, la définition de cette dernière est plus générale que celle de la matrice essentielle.

### Propriétés de la matrice fondamentale

La matrice fondamentale $\mathbf {F}$ (aussi appelée « tenseur bifocal ») contient toute l'information nécessaire sur la géométrie épipolaire. On peut aussi la déterminer sans connaissance sur les matrices de projection $\mathbf {P} _{1}$ et $\mathbf {P} _{2}$, ni sur les centres de projection $\mathbf {O} _{1}$ et $\mathbf {O} _{2}$, à partir de coordonnées images de points en correspondance.

La matrice fondamentale 3 × 3 n'est définie qu'à un facteur multiplicatif près, puisque le produit de la matrice fondamentale par n'importe quel nombre différent de 0 ne change rien à la validité de l'équation épipolaire $\mathbf {x} _{2}^{\mathrm {T} }\mathbf {F} \mathbf {x} _{1}=0$. Donc seuls 8 éléments de la matrice sont indépendants. Comme la matrice antisymétrique 3×3 : $\times \mathbf {P} _{2}\mathbf {O} _{1}$ comme toute matrice n×n{\textstyle n\times n} antisymétrique est singulière pour $n$ impair, $\mathbf {F}$ est singulière, et son déterminant est donc nul. Cette condition supplémentaire diminue le nombre de degrés de liberté de la matrice fondamentale à 7.

Au moyen de la matrice fondamentale, on peut calculer pour tout point $\mathbf {x} _{1}$ la droite épipolaire correspondante $\mathbf {l} _{2}$ dans la deuxième image :

    $l_2=Fx_1{\textstyle$ \mathbf {l} _{2}=\mathbf {F} \mathbf {x} _{1}}

et évidemment inversement à un point $\mathbf {x} _{2}$ sur la deuxième image, la droite épipolaire $\mathbf {l} _{1}$ :

    $\mathbf {l} _{1}=\mathbf {F} ^{\mathrm {T} }\mathbf {x} _{2}$

À partir d'une droite épipolaire sur une image, on ne peut pas calculer le point correspondant sur l’autre image. Pour cela, il faudrait pouvoir inverser la matrice fondamentale, ce qui est impossible, puisqu'elle est singulière. Comme l'épipôle $\mathbf {e} _{2}$ est sur toutes les droites épipolaires $\mathbf {l} _{2}$, il faut que

    $\mathbf {l} _{2}^{\mathrm {T} }\mathbf {e} _{2}=(\mathbf {F} \mathbf {x} _{1})^{\mathrm {T} }\mathbf {e} _{2}=\mathbf {x} _{1}^{\mathrm {T} }\mathbf {F} ^{\mathrm {T} }\mathbf {e} _{2}=0$

pour tous les $\mathbf {x} _{1}$, si bien que l'épipôle $\mathbf {e} _{2}$, et de même $e_1{\textstyle$ \mathbf {e} _{1}} satisfont aux équations :

    $\mathbf {F} ^{\mathrm {T} }\mathbf {e} _{2}=0$ et $\mathbf {F} \mathbf {e} _{1}=0$

De ces équations, on voit que le déterminant de la matrice fondamentale doit être nul, sinon, les équations n'auraient que les solutions $\mathbf {e} _{1}=\mathbf {e} _{2}=0$, ce qui est interdit en coordonnées homogènes.

Le calcul de la matrice fondamentale peut être effectué, en supposant les caméras calibrées, à partir des deux matrices de projection et d'un centre de projection (voir supra). Mais comme le calcul de la matrice fondamentale doit intervenir en général avant celle des matrices de projection, ce cas est relativement rare. Dans la suite, il sera montré comment calculer $\mathbf {F}$ avec la seule connaissance de points en correspondance.

Pour calculer la matrice fondamentale d'un ensemble de points en correspondance, développons l'équation épipolaire $\mathbf {x} _{2}^{\mathrm {T} }\mathbf {F} \mathbf {x} _{1}=0$ :

    $x_{2}x_{1}f_{11}+x_{2}y_{1}f_{12}+x_{2}f_{13}+y_{2}x_{1}f_{21}+y_{2}y_{1}f_{22}+y_{2}f_{23}+x_{1}f_{31}+y_{1}f_{32}+f_{33}=0$

ou, de manière vectorielle :

    $(x_{2}x_{1},x_{2}y_{1},x_{2},y_{2}x_{1},y_{2}y_{1},y_{2},x_{1},y_{1},1)\cdot \mathbf {f} =0$

avec :

    $\mathbf {f} ={(f_{11},f_{12},f_{13},f_{21},f_{22},f_{23},f_{31},f_{32},f_{33})}^{\mathrm {T} }$

À partir de $n$ points, on établit le système d'équations linéaires homogènes (l'indice supérieur désigne le point considéré) :

    $\left({\begin{array}{ccccccccc}x_{2}^{1}x_{1}^{1}&x_{2}^{1}y_{1}^{1}&x_{2}^{1}&y_{2}^{1}x_{1}^{1}&y_{2}^{1}y_{1}^{1}&y_{2}^{1}&x_{1}^{1}&y_{1}^{1}&1\\[-1ex]\vdots &\vdots &\vdots &\vdots &\vdots &\vdots &\vdots &\vdots &\vdots \\[-1ex]x_{2}^{n}x_{1}^{1}&x_{2}^{n}y_{1}^{1}&x_{2}^{n}&y_{2}^{n}x_{1}^{n}&y_{2}^{n}y_{1}^{n}&y_{2}^{n}&x_{1}^{n}&y_{1}^{n}&1\end{array}}\right)\,\cdot \,\mathbf {f} \,=\,\mathbf {A} \,\cdot \,\mathbf {f} \,=\,0$

Comme les coordonnées de points en correspondance satisfont l'équation épipolaire, les colonnes de A{\textstyle \mathbf {A} } sont linéairement dépendantes. La matrice A{\textstyle \mathbf {A} } a donc au plus le rang 8. Pour plus de 8 lignes, ceci n'est valable s'il n'y a aucune erreur de mesure sur les coordonnées, et aucune paire de points faussement mis en correspondance. Si A{\textstyle \mathbf {A} } n'a pas un rang égal à son nombre de colonnes, il existe pour $\mathbf {f}$ (hors le cas trivial $\mathbf {f} =0$) un ensemble de solutions qui forment le noyau de A{\textstyle \mathbf {A} }.

En général, il se produit lors de la définition des correspondances de petites erreurs de mesure, puisque les points image ne peuvent être caractérisés qu'avec une résolution finie. La matrice fondamentale $\mathbf {F}$ exprimée par le vecteur $\mathbf {f}$ n'a alors pas le rang 2 et n'est pas singulière. Ceci conduit à ce que les droites épipolaires d'une image ne se coupent pas toutes en un même point.

Pratiquement, on utilise deux méthodes pour calculer la matrice fondamentale, qui conduisent à la condition de singularité : l'algorithme à 7 points et l'algorithme à 8 points. Dans les deux méthodes, on n'utilise en général pas directement les coordonnées mesurées des points image, mais des coordonnées normalisées au préalable : on déplace l’origine des coordonnées vers le centre de gravité des points image, et on normalise les coordonnées de manière qu'elles soient de l’ordre de grandeur de 1. Avec cette normalisation, on obtient une amélioration significative des résultats.

### Algorithme à 7 points

Ce procédé utilise 7 correspondances de points pour le calcul de la matrice $\mathbf {F}$. Comme $\mathbf {F}$ n'est définie qu'à un facteur près, 7 points, ainsi que la condition $\mathrm {Det} (\mathbf {F} )=0$ suffisent pour déterminer les 9 éléments de $\mathbf {F}$. Pour les 7 correspondances de points, le système d'équations A{\textstyle \mathbf {A} } ne contient que 7 équations. Il possède donc deux solutions linéairement indépendantes $\mathbf {f} _{1}$ et $\mathbf {f} _{2}$ du noyau de A{\textstyle \mathbf {A} }. La matrice fondamentale $\mathbf {F}$ est construite comme combinaison linéaire des matrices $\mathbf {F} _{1}$ et $\mathbf {F} _{2}$ construites à partir de $\mathbf {f} _{1}$ et $\mathbf {f} _{2}$ :

    $\mathbf {F} =\alpha \,\mathbf {F} _{1}+(1-\alpha )\,\mathbf {F} _{2}$ avec $\alpha$ réel.

Pour choisir dans l'ensemble des solutions celle qui a le rang 2, on utilise le fait que $\mathrm {Det} (\mathbf {F} )=0$ :

    $\mathrm {Det} (\alpha \,\mathbf {F} _{1}+(1-\alpha )\,\mathbf {F} _{2})=0$

Cette équation cubique en $\alpha$ a au moins une solution réelle, et au plus trois, si le coefficient de $\alpha ^{3}$, qui est $\mathrm {Det} (\mathbf {F} _{1}-\mathbf {F} _{2})$ est non nul. Sinon, il peut n'y avoir aucune solution pour $\alpha$ fini. Cependant, comme $\mathbf {F} _{1}-\mathbf {F} _{2}$ a un déterminant nul, c'est une bonne solution pour le problème.

On peut calculer une matrice fondamentale avec chacune des trois. Dans le cas où il existe plus d'une solution, on prend d'autres points, afin de déterminer quelle est la bonne. On choisit celle qui satisfait l'équation épipolaire pour ces points supplémentaires, aux erreurs de mesure près.

### Algorithme à 8 points

En général, on a plus de 7 correspondances de points. L'algorithme décrit ci-après nécessite au moins 8 correspondances, d'où son nom, mais peut en utiliser plus. L'idée de cet algorithme est due à Longuet-Higgins.

Dans une première étape, on ne considère que le système Af=0{\textstyle \mathbf {A} \mathbf {f} =0}, sans s'occuper de la condition $\mathrm {Det} (\mathbf {F} )=0$. Dans le cas idéal, la matrice A{\textstyle \mathbf {A} } a le rang 8 ; dans la pratique, comme il y a plus de 8 points, ce n'est pas le cas, ce qui fait que la solution $\mathbf {f}$ est réduite à 0. À la place, on va déterminer la solution par la méthode des moindres carrés, ou par la recherche des valeurs propres.

Dans la méthode des moindres carrés, on détermine $\mathbf {f}$ de manière que $\|\mathbf {A} \mathbf {f} \|$ soit minimal. Comme $\mathbf {f}$ n'est défini qu'à un facteur près, il faut introduire une condition de normalisation, par exemple qu'un certain élément de $\mathbf {f}$ soit égal à l'unité. Le problème ici est le choix de l’élément : il ne faut pas que c'en soit un d'un ordre de grandeur bien plus petit que les autres, ce que l'on ne connaît pas a priori. On peut essayer diverses possibilités.

L'autre méthode consiste précisément à minimiser $\|\mathbf {A} \mathbf {f} \|$, tout en satisfaisant à la condition $\|\mathbf {f} \|=1$. Ceci conduit au résultat que la solution $\mathbf {f}$ est le vecteur propre de la matrice $\mathbf {A} ^{\mathrm {T} }\mathbf {A}$ avec la plus petite valeur propre.

Mais la solution $\mathbf {f}$ ainsi obtenue ne conduit pas en général à une matrice $\mathbf {F}$ singulière. Cette condition doit être satisfaite dans une deuxième étape. À cette fin, la matrice $\mathbf {F}$ est diagonalisée sous la forme :

    $\mathbf {F} =\mathbf {U} \mathbf {S} \mathbf {V}$

où S est une matrice diagonale dont les éléments diagonaux sont les valeurs propres de $\mathbf {F}$. On met à 0 la plus petite de ces valeurs propres, et on recalcule $\mathbf {F}$ à partir des matrices $\mathbf {U}$, $\mathbf {S}$ ainsi rendue singulière, et $\mathbf {V}$. Le produit est donc lui-même singulier.

L'algorithme à 8 points est un processus simple pour déterminer la matrice fondamentale, mais il est instable vis-à-vis des erreurs de mesure. Ceci est dû au fait que la condition de singularité de la matrice fondamentale est introduite a posteriori, et que la grandeur minimisée $\|\mathbf {A} \mathbf {f} \|$ ne possède aucune signification physique. Il existe d'autres processus qui ne présentent aucun de ces inconvénients. Mais ces procédés sont plus lourds et rarement utilisés en pratique.

## Calcul automatique

En vision artificielle, il est nécessaire d'avoir un calcul automatique de la géométrie épipolaire, puisque des robots, par exemple, doivent être capables d'agir sans intervention humaine. Donc la première étape est d'obtenir un ensemble de points en correspondance. Ceci s'obtient au moyen d'un outil logiciel de recherche de points en correspondance, avec lequel les points les plus significatifs d'une image peuvent être localisés. Lorsqu'ils sont trouvés, ils sont mis en correspondance par leur ressemblance : une analyse des correspondances donne une mesure pour leur ressemblance. L'ensemble des points ainsi obtenus en correspondance contient, en raison du bruit d'image et des perspectives différentes obtenues par les deux caméras, une proportion élevée de fausses correspondances, et ne peut donc pas être utilisé directement pour le calcul de la matrice fondamentale.

Dans les présentations qui suivent, on va montrer des points marquants, ainsi que des résultats d'analyse des correspondances. Sur la fig. 8, on reconnaît clairement que toutes les correspondances n'ont pas été correctement établies. Comme la caméra a été déplacée à peu près horizontalement entre les deux vues fig. 6 et fig. 7, les traits verts, représentant les écarts entre points en correspondance devraient être à peu près horizontaux. Dans la région de l’arbre, ceci est loin d'être le cas, car les feuilles ont toutes une forme et une intensité lumineuse semblables, et conduisent ainsi l’analyse des correspondances à de faux résultats.

Les fausses correspondances doivent être éliminées avant le calcul avec des procédés de séparation et d'élimination des cas aberrants. On utilise pour cela très largement l'algorithme dit RANSAC. Cet algorithme peut repérer les erreurs de correspondances de paires de points. Pour le calcul de $\mathbf {F}$, il comporte les étapes suivantes :

* Choisir au hasard 7 correspondances parmi les données. Il est raisonnablement probable que ces 7 correspondances soient correctes.
* Calculer $\mathbf {F}$ au moyen des 7 correspondances choisies par l'algorithme à 7 points.
* Rechercher tous les points en correspondance, pour lesquels $\mathbf {x} _{2}^{\mathrm {T} }\mathbf {F} \mathbf {x} _{1}\leq \varepsilon$ et les noter. Plus il y aura de paires de points satisfaisant cette équation, plus il est probable que les points choisis initialement soient sans erreur de correspondance. Le seuil ε est indispensable, puisqu'en raison des erreurs de mesure et de calcul la relation $\mathbf {x} _{2}^{\mathrm {T} }\mathbf {F} \mathbf {x} _{1}=0$ n'est pratiquement jamais satisfaite.
* Recommencer les étapes 1 à 3 jusqu'à ce qu'il soit probable que les 7 points initiaux ne présentent pas d'erreur de correspondance.

La matrice fondamentale $\mathbf {F}$ est alors calculée au moyen de l’algorithme à 8 points sur la base du plus grand ensemble noté au pas 2.

Ensuite, on peut faire encore une fois une analyse de correspondances, en tenant compte de la matrice fondamentale calculée (comme expliqué précédemment, le domaine de recherche pour les correspondances de points se rétrécit à la droite épipolaire), et une valeur plus stricte pour la mesure de ressemblance est utilisée pour accepter les correspondances. Ces deux derniers pas peuvent être recommencés itérativement, jusqu'à ce que le nombre de correspondances se stabilise.

Les deux dernières figures illustrent les étapes du processus : le filtrage par RANSAC est à peu près convenable. Il permet de voir que l'épipôle de la vue de droite est pratiquement à l'infini, au-dessous de la ligne d'horizon à gauche. Les droites épipolaires calculées à partir du $\mathbf {F}$ final montrent que l’épipôle de la vue de gauche est à droite, à distance finie, à peu près sur l'horizon. Ceci illustre le fait qu'il n'y a en général pas de relation a priori entre les deux épipôles. On n'est pas ici dans le cas stéréo normal, parce que la caméra n'a pas seulement été déplacée, mais elle a été légèrement tournée : le plan de la vue de gauche n'est pas parallèle à la direction du déplacement. Cette action augmente la distance entre points en correspondance.

## Cas particuliers

Dans certaines positions des caméras l'une par rapport à l'autre, on peut arriver à des cas particuliers. Parmi ceux-ci, deux configurations sont de quelque intérêt en vision artificielle.

* Quand les plans image des deux caméras sont parallèles à la droite joignant les centres de projection, les droites épipolaires sont toutes parallèles à cette droite, les épipôles partant à l'infini. Cette configuration – appelée « cas stéréo normal » – est souvent au moins approximativement rencontrée dans la vision stéréoscopique, et présente pour la recherche des correspondances l’avantage que la géométrie épipolaire se résume au fait que les droites épipolaires sont le plus souvent des horizontales. La recherche des correspondances se fait alors uniquement sur des horizontales. Pour des caméras digitales, il faudra chercher les correspondances sur des lignes de pixels de même numéro.
* Si les deux caméras se trouvent l'une devant l'autre, c'est-à-dire qu'elles sont décalées le long de la ligne de visée, les épipôles se mettent au centre de l’image et les droites épipolaires rayonnent à partir du centre de l'image. Cette configuration apparaît couramment dans les robots mobiles, comportant une seule caméra dirigée vers l’avant du mouvement, et qui comparent des images prises à des instants différents. Les correspondances de points sont recherchées entre images successives.

Dans ces cas particuliers, la recherche des correspondances se simplifie, puisqu'on connaît la géométrie épipolaire à l’avance. Dans des configurations qui s'en rapprochent, on peut s'en inspirer, moyennant des corrections ultérieures.

## Généralisation à plus de deux images

La géométrie trifocale est la généralisation de la géométrie épipolaire au cas de trois images. Si l'on connaît la position d'un point sur deux images, alors les deux droites épipolaires sont connues par intersection du plan image avec les plans épipolaires, et leur intersection donne la position du point sur la troisième image. Ainsi, contrairement au cas de deux images, on obtient un résultat univoque, dans la mesure où le point objet n'est pas dans le plan trifocal (plan des trois centres de projection), auquel cas tous les plans sont confondus, ou encore qu'il existe un plan trifocal, c'est-à-dire que les centres de projection ne soient pas alignés. La configuration où le point objet est dans le plan trifocal est aussi désignée comme cas particulier.

On peut généraliser ce genre de considérations à plus de trois images. Pratiquement, cela n'a d'intérêt qu'avec quatre vues, où l'on peut éviter les inconvénients du point objet dans le plan trifocal, puisqu'à ce moment, il sera hors des autres plans trifocaux. On peut définir un tenseur quadrifocal, qui décrit les relations entre points images et droites focales entre ces images. Mais pour plus de quatre vues, on n'a pas exploré les relations mathématiques, parce que la modélisation et le calcul deviennent substantiellement plus complexes, et pour la plupart des applications, le supplément d'information apporté par la cinquième caméra est très faible.

## Déviations du modèle du sténopé

La relation entre les points images en correspondance décrite précédemment, et que l'on formalise complètement par la matrice fondamentale n'est valable que pour des photos que l'on peut modéliser par un sténopé. Mais s'il survient des aberrations géométriques (distorsions) dans la projection sur le plan image, ou encore si la surface image n'est pas plane, il faut prendre en compte ces déviations de la géométrie épipolaire. En particulier, les droites épipolaires sur lesquelles il faut chercher les points en correspondance avec un point d'une image ne sont plus des droites.

### Distorsions

Ce n'est qu'avec des objectifs de haute qualité que l'on peut négliger la distorsion. Avec des objectifs de moindre qualité, il faut considérer la distorsion pour aboutir à une bonne précision de la reconstitution. La distorsion peut souvent être modélisée comme une distorsion radiale, c'est-à-dire qu'un point qui aurait pour coordonnées polaires par rapport au centre de l'image (r, θ){\textstyle (r, \theta )} en l'absence de distorsion a, à cause des distorsions, des coordonnées polaires $(rf(r),\theta )$, où $f(r)=1$ pour $r$ petit, mais s'en écarte progressivement de quelques pourcents vers les bords de l’image pour des objectifs très quelconques.

Si une caméra est soigneusement calibrée, et si la distorsion est connue, les images peuvent être corrigées. On peut alors travailler avec les images corrigées comme sur des images sans distorsion.

Dans certaines conditions, la distorsion peut être prise en compte par une matrice fondamentale généralisée. On suppose pour chaque image une distorsion caractérisée par un paramètre inconnu, et qui correspond au remplacement du plan image par une surface quadratique dans l'espace projectif à trois dimensions (à 4 coordonnées homogènes). La relation entre deux points en correspondance s'exprime alors par une matrice $4\times 4$ à 9 degrés de liberté.

### Caméras à grand angle

Pour les caméras à grand angle, qui permettent des prises de vue à grand champ, on ne peut plus modéliser la géométrie de prise de vue par un sténopé avec une image plane. La description de la géométrie épipolaire dépend du type de caméra. Par exemple, pour une caméra consistant en un sténopé avec un miroir hyperbolique, les lignes épipolaires sont des coniques.

