Principes
L'objectif de cet article est d'apporter les quelques éléments théoriques indispensables pour mieux comprendre les outils mis à disposition sur Internet afin de développer une application de réalité augmentée. Il ne s'agit pas d'un cours détaillé mais d'une simple introduction ; en effet, notre but est avant tout de présenter les moyens disponibles.
Qu'est-ce que la réalité augmentée ?

Une application est dite « de réalité augmentée » lorsqu'elle permet de superposer en temps réel des informations virtuelles (2D et/ou 3D) à notre perception de la réalité. Remarquons que la réalité augmentée ne se limite pas a priori à un enrichissement visuel, bien que la quasi-totalité des applications aujourd'hui sont avant tout « visuelles ». Néanmoins, nous resterons dans ce cadre qui reste le plus commun.
On peut distinguer deux grands types d'applications de RA : les viewers (ou visualiseurs) qui permettent de visualiser des modèles virtuels 3D dans le monde réel, les browsers (ou navigateurs) qui enrichissent le champ de vision avec des informations contextuels. Bien entendu, l'un n'empêche pas l'autre ; il est par exemple tout à fait possible que les informations contextuels affichées par une application de type navigateur soient des modèles 3D !
Que nécessite une application de réalité augmentée ?
En principe, un système de réalité augmentée suppose la présence de trois éléments :
- une caméra pour obtenir une représentation du monde réel ;
- une application qui permet d'une part de déterminer la position et l'orientation de la caméra dans l'espace et d'autre part de projeter le modèle virtuel (2D/3D) à intégrer dans le repère du monde réel ;
- un projecteur (un écran par exemple) afin que le résultat de la superposition puisse être visualisé.
Différentes typologies d'applications
En plus de différences en termes de fonctionnalités (visualisation/navigation), les applications de RA peuvent être catégorisées selon leur modèle de fonctionnement.
On distingue tout d'abord l'approche basée marqueur (marker-based ou tracker-based en anglais) qui consiste à utiliser une image comme moyen de calibration (voir plus bas). C'est une approche très largement implémentée car relativement « simple » à mettre en oeuvre. Les marqueurs peuvent être de simple codes-barre, mais aussi des images plus complexes. Par exemple, l'application Ikea Catalog qui permet de pré-visualiser les meubles dans son salon, utilise la couverture du catalogue Ikea comme marqueur. C'est très souvent ce qui est utilisé pour les applications de type viewer.
A contrario, il existe maintenant des approches sans marqueur (markerless), qui de fait se basent uniquement sur les images capturées. Des algorithmes de triangulation sont alors implémentés et peuvent être couplés à l'utilisation des capteurs à disposition tels que l'accéléromètre. C'est une alternative à l'approche basée marqueur de plus en plus répandue dans le cadre d'applications viewers.
Enfin, une troisième approche, complètement différente, dite location-based (ou geo -based) consiste à détecter des points d'intérêts (POI) au sens géo-spatial, en se référant à une base de données. Le capteur GPS ou encore la boussole intégrés à l'appareil mobile sont utilisés pour connaître la position de l'utilisateur ainsi que la direction pointée. C'est typiquement ce qui est utilisé pour les applications « browsers ».
Une étape incontournable : la calibration
D'un point de vue mathématique, on peut modéliser le processus de formation de l'image par une matrice dite « de projection » notée [1]. Aussi, si on note
et
les coordonnées homogènes d'un point respectivement dans l'image et dans le monde réel, alors on a la relation suivante :
. Tout l'enjeu de la calibration consiste à estimer cette matrice
. En effet, si l'on connaît la matrice de projection alors on peut aisément naviguer entre le monde virtuel et le monde réel. La matrice de projection contient différentes informations : les paramètres intrinsèques qui décrivent notamment les changements d'échelle, les paramètres extrinsèques qui décrivent la pose de la caméra (position et orientation) et d'autres paramètres qui modélisent le phénomène de distortion due à la lentille de la caméra (qui peut être important pour des caméras grand-angle). Les paramètres extrinsèques sont donc relatifs à une image donnée contrairement aux paramètres intrinsèques. De fait, on a recours à des algorithmes de reconnaissance d'images et de tracking pour suivre les objets de référence.
Pour pouvoir estimer la matrice , on a besoin de connaître au préalable des correspondances
entre les mondes virtuel et réel. Une pratique courante consiste à utiliser un marqueur, dans le cadre de méthodes « tracker-based ». Cette méthode de calibration fait écho à la pratique répandue dans le domaine de la vision par ordinateur d'utiliser un échéquier [2]. L'exemple « Custom trackers » accessible ici, tirée de l'application Augment, illustre cette phase de calibration, en l'occurrence en utilisant une carte postale comme marqueur. Dans ce cas, la carte postale a été préalablement scannée ; son modèle virtuel 2D est donc connu par l'application. En présentant la carte postale devant la caméra, l'application obtient son modèle réel correspondant. Elle peut ainsi en « déduire » la matrice de projection et insérer un modèle virtuel 3D de la Tour Eiffel dans le monde réel.
Exemples d'application
Cette section présente quelques applications parmi la pléthore d'applications disponibles sur le marché.
Augment
Augment est une application de type viewer compatible Android et iOS. Elle permet de visualiser des modèles 3D provenant de logiciels dédiés tels que 3ds Max, Sketchup, SolidWorks, Cinema 4D, etc. L'application propose un traqueur universel mais il est possible d'utiliser des traqueurs personnalisés (sous réserve d'avoir une version payante).
Plus d'informations ici.
Layar
Layar est une application de type browser, compatible Android et iOS. Elle utilise à la fois des méthodes de calibration à base de traqueur et à base d'informations de géo-localisation. En plus de Layar App, Layar propose Layar Creator qui permet de définir ses propres marqueurs ainsi que les informations contextuelles correspondantes à afficher. Un SDK est également mis à disposition.
Plus d'informations ici.
Wikitude
Wikitude est une application de type browser compatible Android/iOS/Blackberry/Windows Phone. Elle propose des fonctionnalités similaires à celles proposées par Layar. Mais Wikitude propose surtout un SDK très complet avec une documentation bien fournie (tutoriaux, exemples, etc), principalement orienté applications Web.
Plus d'informations ici.
Junaio
Junaio est également une application de type browser, compatible Android/iOS/Windows Phone, dans la même lignée que Layar et Wikitude. Elle est développée par Metaio, qui propose par ailleurs un SDK très riche, munie d'une solide documentation, en plus d'une API spécialement dédiée à Junaio.
Plus d'informations ici.
D'autres exemples d'application :
http://www.augmentedrealitytrends.com/ar-app/top-10-augmented-reality-apps-for-2013.html
http://deepknowhow.com/2013/04/04/top-20-augmented-reality-apps-for-android-and-iphoneipad-users/
Références
[1] R. I. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, ISBN: 0521540518, second edition, 2004. |
[2] Z. Zhang. A flexible new technique for camera calibration. Technical Report 98-71, Microsoft Research, Microsoft Corporation, One Microsoft Way, Redmond, WA 98052, USA, December 1998. [http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf]. |
Wikipedia. Réalité augmentée. http://fr.wikipedia.org/wiki/R%C3%A9alit%C3%A9_augment%C3%A9e |
Augment. http://augmentedev.com/fr/ |
Layar. https://www.layar.com/products/app/ |
Wikitude. http://www.wikitude.com/app/ |
Junaio. http://www.junaio.com/ |