Reconstruction 3D à partir d'images

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La reconstruction 3D à partir d'images, image-based 3D reconstruction en anglais, désigne la technique qui permet d'obtenir une représentation en trois dimensions d'un objet ou d'une scène à partir d'un ensemble d'images prises sous différents points de vue de l'objet ou de la scène.

D'une manière plus générale, le problème appelé reconstruction 3D (en) est le suivant : on dispose d'une ou plusieurs représentations en 2D d'un objet et on souhaite déterminer les coordonnées des éléments visibles sur ces représentations dans un repère de l'espace réel 3D.

Dans le cadre plus spécifique de cet article où les représentations 2D sont des photographies, il s'agit de retrouver la profondeur des points visibles sur l'image, qui est perdue durant le processus de projection qui produit l'image.

Projection et perte de profondeur
Les points P et Q de la scène réelle qui ont donné les points images P' et Q' peuvent se trouver sur une droite entière : l'information de profondeur est perdue par projection

Principe[modifier | modifier le code]

Les points visibles sur les images sont les projections des points réels qu'on peut alors situer sur des droites. Si deux ou plusieurs vues de l'objet sont prises, la position dans l'espace des points réels peut alors être obtenue par intersection de ces droites : c'est le principe de triangulation fondamental de toute reconstruction 3D à partir d'images[1].

Principe de triangulation
Principe de triangulation

Pour obtenir, comme souhaité, les coordonnées des points de la scène, il faut cependant résoudre un certain nombre de problèmes :

  • Problème de calibration ou comment se projettent les points de la scène sur l'image. Pour cela, le modèle de sténopé est utilisé et il est alors nécessaire de connaître des paramètres dits intrinsèques de la caméra (distance focale, centre de l'image...). Ensuite, il est nécessaire de connaître la position relative des caméras pour pouvoir déterminer les coordonnées des points de l'espace dans un repère de la scène non lié à la caméra. Ces paramètres, dit extrinsèques, sont la position et l'orientation de la caméra dans l'espace.
  • Problème d'association (matching): il faut être capable de reconnaître et d'associer les points qui apparaissent sur plusieurs photos.
  • Problème de reconstruction : il s'agit de déterminer les coordonnées 3D des points à partir des associations faites et des paramètres de calibration[Note 1].

À cela s'ajoute un autre problème : la densité de la reconstruction. Une fois obtenues les coordonnées d'un certain nombre de points dans l'espace, il faut trouver la surface à laquelle appartiennent ces points pour obtenir un maillage, un modèle dense. Sinon, dans certains cas, quand on obtient un grand nombre de points, le nuage de points formé suffit à définir visuellement la forme de l'objet mais la reconstruction est alors clairsemée (sparse).

Dans les sous-parties suivantes, nous étudierons chacune de ces difficultés.

Calibration[modifier | modifier le code]

Article détaillé : Calibration de caméra.

Paramètres intrinsèques[modifier | modifier le code]

La projection des coordonnées d'un point de l'espace sur l'image selon le modèle de sténopé est illustré ci-contre.

Projection centrale
Projection centrale

Ainsi, les coordonnées (x_m, y_m, z_m) du point image de P dans le repère caméra sont :

x_m=f\frac{X}{Z}=fx

y_m=f\frac{Y}{Z}=fy

z_m=f

En informatique, on exprime en général les coordonnées des points d'une image à partir du coin supérieur gauche. On a donc les coordonnées du centre optique sur l'image comme paramètres supplémentaires à déterminer.

Les relations s'écrivent matriciellement en faisant intervenir la matrice K, classiquement employée dans la littérature, dite de calibration interne : K=\begin{pmatrix}f & 0 & i_1 \\ 0 & f & i_2 \\ 0 & 0 & 1\end{pmatrix}.

Paramètres extrinsèques[modifier | modifier le code]

Il s'agit simplement d'un vecteur de position de la caméra dans le repère de la scène et de trois vecteurs définissant l'orientation de celle-ci. Avec ces paramètres, on est alors capable de positionner les points de vue de l'objet les uns par rapport aux autres.

Il est fréquent que les positions et orientations des caméras soient donnés relativement à la première caméra.

Méthodes d'obtention[modifier | modifier le code]

Pour les paramètres intrinsèques, il est généralement possible de faire une estimation en amont des paramètres (qui sont des caractéristiques invariantes de l'appareil photo utilisé) en mettant en œuvre une technique de calibration qui consiste à photographier un objet bien connu (par exemple, un échiquier). Cependant, les techniques récentes de reconstruction savent estimer automatiquement les paramètres sans information a priori sur l'appareil photo[Note 2].

Pour les paramètres extrinsèques, on peut soit les estimer par calcul à partir des associations de points[Note 3], soit connaître précisément la position des caméras en faisant, par exemple, un montage spécifique. C'est ce que proposent Thomas T. Lu et Tien-Hsin Chao[2], avec un montage utilisant une unique caméra et deux points de vues simulés par deux miroirs et un prisme.

Chaque moitié de l'image obtenue fournit un point de vue différent de l'objet grâce aux miroirs et au prisme. On a ainsi l'avantage d'avoir un montage relativement simple à réaliser et ne nécessitant qu'une seule caméra. De plus, par principe, les paramètres de calibration extrinsèques sont connus et ce très précisément, sans estimation, d'où l'intérêt de la méthode.

Association[modifier | modifier le code]

L'association des points images du même point de la scène sur différentes photos est le point clé de la reconstruction 3D. C'est cela qui permet la détermination des coordonnées 3D des points de la scène par triangulation et également, pour les méthodes récentes, la calibration des caméras.

Pour cela, il convient tout d'abord de bien choisir les points sur les images, c'est l'étape d'extraction de points d'intérêt (feature points). Il peut s'agir par exemple de coins sur l'image, faciles à localiser. Ensuite, des données caractéristiques de ces points d'intérêt doivent être calculées pour pouvoir les identifier d'une image à l'autre.

Le choix et l'association de points d'intérêt peut être réalisée à la main, mais il est plus efficace d'automatiser la procédure. Des algorithmes relativement récents, comme SIFT et SURF, excellent dans ce domaine et ont permis une réelle efficacité de l'acquisition 3D à partir de photos[3].

Géométrie épipolaire[modifier | modifier le code]

Article détaillé : Géométrie épipolaire.

Lorsque la position relative des caméras est connue (i.e. les paramètres extrinsèques de calibration), il est possible de ne rechercher les correspondances de points que sur les lignes épipolaires.

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

Sur la figure ci-contre sont représentées deux vues d'un point X. Les points e_L et e_R sont respectivement les projections du centre de la caméra de droite O_R sur l'image de gauche et du centre de la caméra de gauche O_L sur l'image de droite. Ces deux points sont appelés épipôles. On voit que si x_L est l'image du point X sur l'image de gauche, alors l'ensemble des points images possibles sur l'image de droite est une droite passant par e_R appelée ligne épipolaire. La recherche des correspondances est alors simplifiée en une recherche sur un ensemble 1D lorsque la géométrie épipolaire est connue. Lorsque les axes des caméras sont parallèles, les lignes épipolaires sont horizontales et les associations sont donc à rechercher sur les mêmes numéros de ligne des images.

Reconstruction[modifier | modifier le code]

Reconstruction avec calibration[modifier | modifier le code]

L'obtention des coordonnées des points dans l'espace est quasiment immédiate si les paramètres de calibration sont connus. Si on note :

  • (x,y,z) les coordonnées du point de la scène dans le repère absolu,
  • (u_1, v_1) (resp. (u_2, v_2)) les coordonnées du point dans l'image 1 (resp. 2),
  • (X_1,Y_1,Z_1) (resp. (X_2,Y_2,Z_2)) les coordonnées du point dans le repère caméra 1 (resp. 2),
  • K_1 (resp. K_2) la matrice de calibration interne de la caméra 1 (resp. 2),
  • R_1 et t_1 (resp. R_2 et t_2) l'orientation et la position de la caméra 1 (resp. 2) dans le repère absolu,

alors on a :

K_1 \times \begin{pmatrix} X_1 \\ Y_1 \\ Z_1  \end{pmatrix} = \begin{pmatrix} Z_1 u_1 \\ Z_1 v_1 \\ Z_1  \end{pmatrix},
\quad
K_2 \times \begin{pmatrix} X_2 \\ Y_2 \\ Z_2  \end{pmatrix} = \begin{pmatrix} Z_2 u_2 \\ Z_2 v_2 \\ Z_2  \end{pmatrix}

et

\begin{pmatrix} x \\ y \\ z \end{pmatrix} = R_1 \times \begin{pmatrix} X_1 \\ Y_1 \\ Z_1  \end{pmatrix}+t1 = R_2 \times \begin{pmatrix} X_2 \\ Y_2 \\ Z_2  \end{pmatrix}+t2

Ainsi, la résolution de ces équations permet de trouver (x,y,z).

Algorithme Structure from Motion[modifier | modifier le code]

Article détaillé : Structure from motion (en)

Cette technique a pour but d'à la fois créer la reconstruction (Structure) et d'estimer le déplacement de la caméra entre les prises de vue (Motion)[1]. Le principe de la méthode est le suivant :

Tout d'abord, deux images sont sélectionnées parmi les différentes vues de l'objet et un repère de la scène initial est défini. Ensuite, la position et l'orientation des caméras à l'origine des autres images sont déterminés dans ce repère grâce aux associations de points. Des nouveaux points 3D sont alors ajoutés à la reconstruction. À chaque étape, la reconstruction est affinée et enrichie. Une fois la reconstruction effectuée et la position relative des caméras retrouvée, des ajustements peuvent être réalisés.

Grâce à cette méthode, on obtient une reconstruction et la position des caméras par rapport à celle-ci sans aucune hypothèse préalable. Tout ceci est fidèle à la réalité à un facteur d'échelle près.

Densité[modifier | modifier le code]

Une fois que des points isolés sont obtenus par reconstruction, on peut soit conserver les points seulement, si ceux-ci suffisent à définir la forme de l'objet, soit vouloir une reconstruction dense, associée à un maillage.

Densification aidée par l'utilisateur[modifier | modifier le code]

Comme suggéré ici[4], une fois les points reconstruits, on peut utiliser un algorithme pour trouver les formes primitives (plan, sphère, cylindre, surface de Bézier...) correspondant au mieux à la forme locale de l'objet. L'utilisateur peut alors sélectionner une zone de l'objet et demander à l'algorithme de trouver par exemple le plan qui s'adapte le mieux aux points. Ceci peut se faire simplement par une minimisation de distance des points à la surface cherchée.

Méthode Visual Hulls[modifier | modifier le code]

La méthode Visual Hulls[5], qui peut être traduit par silhouettes visuelles, est une méthode de reconstruction qui permet, à partir d'images calibrées, d'obtenir un modèle solide dense de l'objet.

Son principe est totalement différent du principe général de reconstruction présenté auparavant. Ici, ce sont les silhouettes apparentes de l'objet sur chacune des vues qui sont étudiées.

Le premier travail consiste à isoler le contour de l'objet dans chaque image pour en déduire le cône de vue et, par intersection, la silhouette de l'objet. De nombreux travaux supplémentaires, que nous ne détaillerons pas ici, sont ensuite à réaliser pour affiner le modèle de l'objet.

Solutions complètes disponibles[modifier | modifier le code]

ARC3D[modifier | modifier le code]

ARC3D est une solution de reconstruction 3D à partir de photos développée par des universitaires de l'université de Louvain.

Elle permet d'obtenir une reconstruction quasi-dense, c'est-à-dire composée d'un grand nombre de points, qu'il est possible de mailler. À chaque point est associée une valeur de couleur. Les reconstructions produites sont donc fidèles à la réalités. Aucune calibration préalable n'est nécessaire pour utiliser ARC3D.

Dans son principe, la démarche de reconstruction d'ARC3D ressemble à celle de Structure from Motion : elle est basée sur des associations de points mais cette fois sur plus de deux images à la fois. Les triples associations permettent d'estimer les positions des caméras dans un repère de la scène initialement défini, ce qui permet d'obtenir un modèle 3D à un facteur d'échelle près sans calibration.

ARC3D est librement utilisable via le site Web mais le travail est fait sur les machines d'ARC3D. En effet, il faut envoyer ses photos et récupérer un temps plus tard la reconstruction pour l'ouvrir dans un logiciel de manipulation 3D.

Exemple de reconstruction faite par ARC3D
Exemple de reconstruction faite par ARC3D

2d3[modifier | modifier le code]

La société 2d3 Sensing propose des outils évolués de reconstruction 3D à partir d'images.

Parmi eux, l'outil TopoMap permet d'obtenir un modèle dense (maillage) texturé à partir d'une vidéo de l'objet sans aucune calibration préalable de la caméra.

TopoMap analyse chacune des images du flux et en extrait des points caractéristiques qui seront utilisés pour la reconstruction. Celle-ci se fait via un algorithme de type Structure from Motion qui permet à la fois la reconstruction et la détermination du déplacement de la caméra lors de l'enregistrement.

Ensuite, la reconstruction est densifiée en créant automatiquement un maillage (cela doit être possible grâce au grand nombre de points reconstruits en premier lieu). Une texture issue de l'une des images (la plus adaptée pour ce faire est déterminée) est ensuite appliquée sur chacun des triangles du maillage. On obtient ainsi une excellente représentation informatique de l'objet, qui peut alors être manipulé facilement dans un logiciel de 3D.

Si des données GPS sont associées au déplacement de la caméra, il est même possible de les exploiter pour avoir un modèle à l'échelle et géopositionné (les coordonnées GPS de chaque point du maillage sont alors rendues disponibles).

Notes et références[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. Cependant, certaines méthodes récentes s'attachent à déterminer également ces paramètres.
  2. C'est le cas d'ARC3D présenté par la suite
  3. Ce que font Structute from Motion et ARC3D, présentés par la suite.

Références[modifier | modifier le code]

  1. a et b Marc Pollefeys, « Visual 3D Modeling from Images »,‎ 2002
  2. (en) Thomas T. Lu et Tien-Hsin Chao, A high-resolution and high-speed 3D imaging system and its application on ATR.
  3. (en) Yasutaka Furukawa, Brian Curless, Steven M. Seitz et Richard Szeliski, Towards Internet-scale Multi-view Stereo.
  4. « 3D object reconstruction »
  5. (en) Yasutaka Furukawa et Jean Ponce, Carved Visual Hulls for Image-Based Modeling.