projet drako, réalité augmentée réaliste

39
Projet Drako : Réalité Augmentée réaliste 1/39 Rapport de Projet Technique Projet Drako : Réalité Augmentée réaliste Auteurs : Adrien Nouveau Silouane Jeanneteau Huabin Ling Philippe Smagghe Référents techniques : Jérémie Dequidt Nicolas Vandenbroucke Responsable de projet : François Cabestaing 12 janvier 2011

Upload: philippesmagghe

Post on 07-Aug-2015

40 views

Category:

Documents


2 download

DESCRIPTION

Scientific project in collaboration with Peoleo company during my master's degree.Drakerz, the Card Game, was released in early 2013.

TRANSCRIPT

Page 1: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 1/39

Rapport de Projet TechniqueProjet Drako :

Réalité Augmentée réaliste

Auteurs :Adrien Nouveau

Silouane Jeanneteau Huabin Ling

Philippe Smagghe

Référents techniques :Jérémie Dequidt

Nicolas Vandenbroucke

Responsable de projet :François Cabestaing

12 janvier 2011

Page 2: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 2/39

Sommaire

Ce projet est accompagné d'un CD comportant les différents codes proposés,ainsi que des images et vidéos relatives aux expérimentations

• I. Projet Drako

Principe du jeu Drako Projet : Réalité augmentée réaliste

• II. Analyse et reproduction de sources lumineuses

Solutions étudiéesIntensité de la source lumineuse Méthode de Zhang et YangMéthode des gradients

• III. Analyse et reproduction de bruit

Modélisation du bruit d'acquisitionAnalyse du bruit dans une imageReproduction de bruitInterpolation bilinéaire et fausses couleurs

• IV. Analyse et reproduction de netteté

Modélisation de la nettetéMesure de la nettetéReproduction de la netteté

• V. Implémentation et combinaison des algorithmes

Pipe-LineDéveloppement de l'environnement

• VI. Bilan du projet

Bilan des réalisationsDéveloppements possibles

• Bibliographie

Page 3: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 3/39

I. Projet DrakoI.1 Principe du jeu Drako

Le projet Drako, initié par la société Péoléo, a pour but de développer le jeu de cartes à collectionner "Drako". Le public ciblé se situé dans la tranche d'âge 12-18 ans. Le jeu donne la possibilité au joueur d'incarner un dragonnier dans un milieu médiéval-fantastique. Le dragon évolue de manière unique selon les actions de l'utilisateur. Le but est de créer un attachement et une proximité avec la créature virtuelle.

Le jeu comporte une partie logicielle sous PC/Mobile permettant le jeu en ligne. Une webcam permet de filmer les cartes et de renvoyer l'image du jeu avec des animations de créatures virtuelles incrustées dans le flux vidéo.

Scène de jeu globale (Image Péoléo )

Prototype d'image obtenue sur l’écran (Image Péoléo )

Page 4: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 4/39

I.2 Projet : Réalité augmentée réaliste

Les modèles 3D incrustés sur la webcam ne donnent pas une perception confortable et ne semblent pas appartenir à la scène visualisée par le flux vidéo. Le problème à résoudre pour notre projet de master était donc d'obtenir des algorithmes capables de reproduire les transformations qu'induit l'acquisition d'une scène par webcam sur un modèle 3D, afin de permettre une perception plus réaliste des animations sur le flux vidéo.

Incrustation non-réaliste Incrustation réaliste (Images Péoléo )

En particulier, les problèmes suivants ont été étudiés :

- Repérage et analyse des sources lumineuses sur une image.- Quantification et reproduction de la netteté d'une image.- Quantification et reproduction du bruit d'une image.- Identification et reproduction de la balance des blancs/couleurs d'une image.- Identification et reproduction de fausses couleurs d'un capteur de type Bayer.

Les spécifications techniques étaient les suivantes :

- Webcams de type grand public, soit environ 15 ips et 640x480 pixels. - Langage de développement en C++ sous Visual Studio- Bibliothèques graphiques Ogre3d et OpenCV.

La société Péoléo souhaitait également qu'un minimum d'éléments physiques pouvant nuire à l'immersion ou au confort de l'utilisateur soient inclus dans le jeu. Cela incluait cartes ajoutées ou modifiées, ou encore procédures ou objets de calibration.

Les calculs pouvaient être réalisés en début de partie ou au cours du jeu, cependant, dans ce dernier cas, la contrainte était de réaliser les calculs en temps réel afin de ne pas perturber la partie.

Page 5: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 5/39

II. Analyse et reproduction de sources lumineusesII.1 Solutions étudiées

Pour aborder le problème de la reproduction des sources lumineuses, nous avons fait une recherche bibliographique afin de lister les techniques existantes. Nous nous sommes rendus compte que les solutions recherchées et apportées pour ce problème n’étaient encore qu’en phase de recherche. Nous avons donc rassemblé plusieurs publications qui nous ont semblés pertinentes pour notre sujet. Il y a deux familles de techniques qui se distinguent pour la détection des paramètres de la source lumineuse, selon qu’elles demandent une interaction avec la scène ou non.

II.1 1) Techniques avec interaction avec la scène

Par interaction, on entend par là pouvoir agir sur la scène avant ou pendant l’acquisition de l’image par la caméra. Dans ce cas, il nous est possible de positionner un objet pour récupérer plus facilement les caractéristiques des sources lumineuses.Voici quelques techniques nécessitant d’interagir avec la scène :

a) La technique de Wei Zhou [1] utilise une sphère positionnée dans la scène et filmée avec une caméra stéréoscopique.

La sphère possède une surface avec des propriétés à la fois lambertiennes et spéculaires, ce qui permet de retrouver l’information de l’intensité d’un côté et l’information de position de l’autre. De plus cette approche se base sur la propriété du spéculaire à changer en fonction de la position de l’observateur. Ainsi, pour deux caméras observant un même point sous deux angles différents, seule l’information spéculaire change.

b) La technique vue dans [2] utilise une sphère avec une surface lambertienne uniquement.

Cette approche recherche les points dits critiques sur l’image de la sphère, ces points représentant la frontière entre l’ombre et la lumière. Une fois retrouvés, il faut déterminer les points qui appartiennent à la même courbe. Chacune des courbes est associée à une source lumineuse. Enfin, on prend deux points critiques pour chaque courbe, ainsi que le centre de la sphère pour former un plan. La normale à ce plan représente une direction estimée de la source lumineuse.

Page 6: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 6/39

Deux points (en rouge) sur la courbe avec le centre forment un plan dont la normale représente la direction de la source

Cette dernière technique est celle que nous avons retenu du fait qu’il est assez simple de se procurer une balle blanche (balle de ping-pong) avec une surface lambertienne.

c) L’approche vue dans [3] nécessite que l’on fournisse des informations de contours des objets de la scène. Avec la silhouette des objets, on retrouve les normales et les gradients, on recherche ensuite les maxima locaux d’intensité sur la silhouette grâce à un seuillage. Grâce à la normale associée au point et à une équation de la lumière diffuse, présentée dans la publication, on retrouve la direction de la source lumineuse et donc sa position.

d) La technique abordée dans [4] utilise les yeux comme objets de calibration, qu’elle associe à un objet avec une propriété spéculaire. Il est important que l’image de l’oeil aie une très grande résolution. Elle utilise aussi un modèle de la cornée afin d’appréhender les réflexions de la lumière sur l’oeil.

fig. Modèle de l’oeil

Page 7: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 7/39

II.1 2) Techniques sans interaction avec la scène

Plusieurs techniques ont été développées pour retrouver les caractéristiques des sources lumineuses sans avoir besoin de placer un objet de calibration dans la scène, ni d’avoir de connaissances à priori des objets qui la composent. La recherche de telles techniques est motivée par le fait que l’on ne peut pas toujours avoir le contrôle de la scène filmée. En ce qui concerne notre projet, la société souhaite un minimum de calibration auprès des utilisateurs. Il y a beaucoup moins de publications concernant des techniques sans interaction avec la scène. Voici celles que nous avons répertoriées :

a) La technique [5] se sert d’une paire d’images omni-directionnelles prises avec un appareil possédant un angle de vue très grand, de type fishEye. Ce genre de caméra permet de visualiser une plus grande partie de la scène. De plus, cette technique spécifie que les caméras doivent être orientées vers le plafond.

Système d’acquisition d’images omni-directionnelles

Les images sont utilisées pour construire un modèle géométrique de la scène auquel on relie la distribution de la radiance de la scène. Cette dernière est calculée en utilisant une séquence d’images omni-directionnelles acquises avec différentes vitesses d’obturation permettant de changer la gamme dynamique.

b) La technique décrite dans [6] est basée sur les statistiques. Un objet particulier doit être présent sur la scène. Cette technique n’est pas complètement sans interaction puisqu’il est nécessaire d’avoir un objet spécifique dans la scène, mais ses caractéristiques ne sont pas connues à priori. Ici, l’objet utilisé est un visage, il est donc nécessaire que plusieurs visages soient dans un premier temps filmés et stockés afin que la nouvelle image avec un visage soit comparée avec les autres. Ainsi, la technique enregistre plusieurs visages avec des configurations de sources lumineuses différentes. L’image dans laquelle on souhaite retrouver les caractéristiques des sources lumineuses est alors comparée et si l’erreur moyenne au carré est minimale alors la configuration associée à l’image est attribuée à l’image d’entrée. Seul les pixels avec une intensité dépassant un seuil minimum sont pris en compte dans le calcul.

Page 8: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 8/39

I.2 Intensité de la source lumineuse

Le cahier des charges nous limite dans les objets de calibration possibles. Nous allons ici utiliser une carte de jeu pour calibrer l’intensité lumineuse ainsi que la coloration de cette source. Pour cela, on regarde la différence de couleur de la carte acquise par la caméra avec une référence de cette carte.

Il faut dans un premier temps transformer l’image acquise pour pouvoir la comparer à l’image de référence. On utilise l’outil de transformation de perspective de OpenCV pour réaliser cette opération.

L’image corrigée se trouve alors dans le même repère que l’image de référence et dispose des mêmes dimensions. On compare alors l’image obtenue avec l’image de référence pour récupérer la couleur de l’éclairage et l’intensité.

Image acquise par la caméra et corrigée, et image de référence de la carte.

Page 9: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 9/39

Cet algorithme montre de bons résultats sur nos images de test :

Sur ces images, le carré en haut à gauche indique la coloration estimée

Page 10: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 10/39

I.3 Méthode de Zhang et Yang / Wei

La méthode de Zhang et Yang varie très peu de la méthode de Wei , car ces 2 méthodes se basent sur la recherche de points critiques sur une sphère pour récupérer la position des sources lumineuses.Nous avons choisi d'implémenter la méthode de Wei pour rechercher ces points critiques. Cette méthode est plus puissante que celle de Zhang et Yang et peut être adaptée pour être moins sensible aux bruits.

La méthode de Wei a pour but de récupérer les points critiques sur la sphère. Les points critiques correspondent à une zone de la sphère où l’intensité lumineuse pour un éclairage passe par un minimum. Sur une sphère, ces points remplissent la condition :

Si la sphère est éclairé par une seule source lumineuse , ces points critiques correspondent à l’endroit où l’intensité passe par un minimum.

Pour fonctionner cet algorithme se base sur plusieurs hypothèses :- La sphère est supposée lambertienne,- Les éclairages sont considérés comme des éclairages collimatés, c’est à dire que les rayons émis par une source sont parallèles,- Aucune source lumineuse n’est située exactement derrière ou devant la sphère,- L’image a une résolution suffisante.

Dans un premier temps on récupère l’image correspondant à la sphère en niveau de gris, c’est à dire que chaque pixel correspond à l’intensité lumineuse en chaque point de la sphère.

Page 11: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 11/39

A partir de l’image acquise on trouve le rayon et on génère ensuite une image correspondant aux normales à la sphère en chaque point.Les normales sont données par l’équation :

avec

Image des normales en chaque point de la sphère.

En chaque point, on suppose qu’il existe un illuminant unique. Si le pixel est éclairé par plusieurs sources lumineuses, on considère cet illuminant comme la somme des sources lumineuses en ce pixel. A partir de cette hypothèse, on récupère suffisamment de pixels voisins pour pouvoir résoudre le système d’équation suivant :

On pose I la liste de l’intensité des pixels

on pose N la liste des normales des pixels

et on calcule

ou N+ est la pseudo inverse de N.Le vecteur L récupéré est un vecteur qui équivaut à la somme des sources lumineuses en cette zone.

Page 12: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 12/39

On obtient alors une image où les zones d’éclairage sont clairement définies.Chaque zone correspond à une, ou plusieurs sources lumineuses.

Cas où la sphère est éclairée par une seule source lumineuse.

Cas où la sphère est éclairée par deux sources lumineuses.On observe 3 zones différentes, une pour chaque source éclairée et une correspondant à la somme des 2 sources lumineuses.

Il faut ensuite récupérer les points critiques qui correspondent aux fortes zones de changement d’illumination.Une fois les courbes critiques obtenues, on récupère la position des sources lumineuses.

Cet algorithme a de nombreux avantages : la position de la source lumineuse est récupérée avec une précision élevée, et il permet théoriquement de récupérer la position de nombreuses sources lumineuses.

Cependant, un des inconvénients majeurs est que l’algorithme ne prend pas en compte la lumière ambiante. La lumière ambiante vient modifier les valeurs trouvées lors du calcul des illuminants et complique la recherche des points critiques

Page 13: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 13/39

.

Lors de nos expérimentations nous avons également constaté que l’algorithme est très sensible aux bruits dus à l’acquisition de l’image. La différence entre les résultats obtenus et ceux de l’étude peuvent être expliqué par le fait que dans l’étude, l’image est acquise dans un environnement très contrôlé :

- Les éclairages sont placés à une bonne distance ce qui permet d’avoir des éclairages effectivement collimatés,.

- L’image est acquise par une caméra possédant une meilleure résolution que les webcams utilisée dans nos expériences,.

- La balle de ping pong que nous avons utilisée ne possède pas vraiment les conditions nécessaires. Elle possède en effet des réflexions spéculaires non négligeables, et n’est donc pas purement lambertienne.

Sur cette image, la zone fortement bruitée correspond à la lumière ambiante, et la petite aberration à droite correspond à la réflexion spéculaire de la balle de ping pong.

Cet algorithme donne des résultats excellents sur des cas théoriques ou sur des images acquises dans un environnement très contrôlé, mais il s’est révélé peu exploitable dans nos conditions d’utilisation.

Page 14: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 14/39

I.4 Méthode des gradients

Lors de notre recherche d'algorithme de détection de sources lumineuses, nous avons constaté l’absence de techniques applicables sans objet de calibration ou sans connaissance préalable de la scène. Nous avons donc développé une technique permettant un résultat approximatif.

Cette technique se base sur les gradient directionnels. Elle part du principe que le plan fimé possède un coté plus éclairé que l’autre et que ce coté est celui d’où la lumière provient.

Dans cette image, la zone la plus éclairée pointe vers la position de la lumière

Cette technique bien que très primitive donne de bons résultats sur nos images de test.

Sur ces images, le trait bleu pointe vers la position estimée de la source lumineuse

Page 15: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 15/39

L’algoritme utilisé a été testé sur plusieurs dizaines d’images en faisant varier la position de la lumière et l’intensité de la source lumineuses. Les résultats sont relativement corrects. Il peut donc être utilisé comme une première approche pour positionner une source lumineuse.

I.5 Algorithme des ombres

Une autre technique a été exploitée pendant notre projet. Cette technique se base sur un objet de calibration, seule solution permettant d’obtenir une bonne approximation de la position d’une source lumineuse.

L’objet de calibration est un bâtonnet positionné debout au centre d’un carré blanc.

L’image est corrigée pour supprimer l’effet de perspective.On calcule ensuite la somme de l’intensité d’une ligne partant de la base du bâtonnet.

On calcule ces valeurs pour les lignes partant du centre suivant plusieurs angles.

Page 16: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 16/39

On obtient alors une liste de valeurs. Il suffit alors de trouver l’angle dont l’intensité est minimale, c’est à dire correspondant à la zone la plus sombre. Une fois la droite la plus sombre correspondant à l’ombre trouvée, on retrouve l’endroit où l’ombre s’arrête en regardant la dérivée des valeurs des lignes radiales.On récupère la position de fin de l’ombre en étudiant la dérivée des valeurs obtenues. On dispose alors de suffisamment d’informations pour retrouver la position de la lumière.

Les résultats des premiers test effectués sur des images de bonnes résolutions sont encourageants. L’angle récupéré semble être correct à 1° prêt. L’angle définissant la hauteur ne semble pas être très précisément mesuré, sûrement parce que les contours d’une ombre ne sont pas toujours clairement définis.

L’algorithme semble relativement stable et peut facilement être adapté pour pouvoir retrouver plusieurs sources lumineuses, pour cela il suffit à l’étape de recherche de l’ombre de trouver tout les minimums locaux de la courbe. Le nombre de minimums locaux correspondant au nombre d’ombres, et donc au nombre de sources lumineuses.

Page 17: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 17/39

III. Analyse et reproduction de bruit

III.1 Méthodologie principale

Notre but dans cette partie est d’appliquer un certain bruit sur le modèle 3D pour que l’incrustation soit plus réaliste sur une scène prise par une webcam.

Image bruitée avec un modèle 3D net

Image bruitée et modèle 3D bruité

Page 18: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 18/39

Les difficultés sont les suivantes : dans un premier temps, pour que le bruit soit réaliste, il faut qu’il ait les mêmes caractéristiques que celui sur l’image filmée par webcam. il faut donc retrouver le bruit sur l’image numérique pour l’analyser. Ensuite, il faut modéliser ce bruit pour que le programme puisse reproduire le bruit selon ces caractéristiques de façon aléatoire, toujours dans le but d’être réaliste. De plus, le bruit généré par la webcam ne dépend pas uniquement la caméra lui même, mais également de l’environnement de la scène, par exemple, de l’éclairage, des matériaux filmés, etc. Pour cette raison, nous ne pouvons utiliser constamment le même modèle du bruit. Enfin, la reproduction de bruit n’est utile que si le processus est assez rapide pour qu’il puisse se dérouler en temps réel.

Dans notre programme, nous avons imaginé un processus particulier pour l’analyse et la reproduction de bruit.

- Analyser et débruiter l’image filmée par le webcam pour retrouver le bruit de la caméra. On utilise ce bruit dans la suite comme bruit de référence.

Comparaison image caméra ( Droite ) et image débruitée ( Gauche )

- Modéliser le bruit trouvé précédemment. Dans cette étape, les caractéristiques statistique du bruit sont stockés dans un modèle de bruit. Ce modèle sera utilisé dans la suite pour reproduire le bruit aléatoirement.

Page 19: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 19/39

Enfin, à chaque image, on régénère du bruit sur le modèle 3D à partir du modèle de bruit de référence.

Modèle 3D réaliste sur la scène

Page 20: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 20/39

III.2 Solutions de débruitage utilisées

Le débruitage sert à retrouver le bruit sur une image filmée qui servira d’image de référence pour une analyse ultérieure.. Dans notre projet, nous proposons deux solutions : débruitage par moyennage et débruitage par moyennes non-locales. Nous comparerons ces deux méthodes à la fin de cette partie.

III.2 1) Hypothèse principale

L’image numérique peut comporter de nombreux types de bruit. Dans une image numérique filmée par un webcam CCD, nous avons :- Un bruit généré pendant l’exposition qui dépend de la scène.- Un bruit d’obscurité généré par le capteur au repos. - Un bruit de lecture électronique, additif, modélisé comme un signal indépendant.

Éventuellement, le bruit subit la correction gamma appliquée pour que l’image soit plus appropriée pour l’oeil humain. Pour conclure, le bruit dépend des signaux mais il ne dépend pas des différents pixels.

Notre hypothèse est que le modèle de bruit sur chaque pixel i est additif et dépend seulement du pixel original. Soit J(i) l’ensemble des pixels qui sont à l’origine de la même valeur comme i, alors les bruits n(j), j∈ J i sont indépendants et sont aléatoirement et équitablement distribués.

À partir de cette hypothèse, nous avons réalisé deux algorithmes de débruitage qui sont détaillés dans la suite.

III.2 2) Débruitage par moyennage

Dans un ensemble d’images prises dans les mêmes conditions par la caméra pour la même scène statique, soit les images I(k), k∈[ l , nb ] (nb étant le nombre d’images considéré), pour les mêmes pixels i dans les différentes images k, les bruits n(k, i) sont aléatoires et équilibrés. L’idée de ce premier algorithme est de faire la moyenne des pixels qui ont la même source, afin de retrouver le pixel original.

Processus de moyennage

Page 21: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 21/39

Pour vérifier cela, la moyenne des pixels situés à location i dans les différentes images est :

Î i =∑k=0

nb

I k , i /nb=∑k =0

nb

Φ i n k , i/nb

alors:

où est le pixel original dans la vraie image

Comme nous avons vu dans l’hypothèse, les bruits n(k,i) sont aléatoirement et équitablement distribués. Si nb est suffisamment grand, la somme des n(k,i) est nulle.

Dans ce cas :Î i =Φ i

L’image originale non bruitée est retrouvée de cette manière.Concrètement, on voit ci dessous la performance de cette approche de débruitage.

Résultat du moyennage

Dans cette image, on voit que les bruits sont supprimés par rapport à l’image acquise par la webcam.

Î i =Φ i ∑k=0

nb

nk ,i /nb

Page 22: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 22/39

III.2 3) Débruitage par les moyennes non-locales

Avec les mêmes hypothèses de départ, l’algorithme des moyennes non-locales [7] est basé sur le fait que, sur une image, la plupart des détails sont répétés, et qu’on peut calculer la moyenne des pixels répétés qui représentent le même pixel d’origine pour le retrouver. Le problème se résume donc à trouver des pixels répétés dans l’image.

Il n’est pas possible de retrouver les pixels individuellement car ils sont bruités dans l’image numérique, et donc ils ne sont pas obligatoirement proches les uns des autres en valeur. Pourtant les similarités dans l’image peuvent être facilement trouvées sur des ensembles de voisinage. Par exemple, les images comportent souvent des textures semblables ou des motifs répétés. L’algorithme des moyennes non-locales utilise cette évaluation sur un voisinage pour identifier les pixels répétés.

La différence entre deux régions peut être calculée par :

Avec u(i) la valeur du pixel i, t le décalage dans la fenêtre qui est centrée sur i, et Gp(t) le facteur gaussien.

Contrairement à l’algorithme de moyennage, on ne peut pas être sûr de trouver de pixel exactement équivalent à i. Par contre, on peut trouver dans l’image beaucoup de régions similaires au voisinage de i. Pour cette raison, on ne peut pas appliquer directement le moyennage sur des fenêtres similaires, mais on peut attribuer un poids pour chaque région et faire la moyenne pondérée. L’algorithme des moyennes non-locales prend l’exponentielle de la différence négative entre deux régions comme poids. La moyenne pondérée est alors calculée sur l’ensemble des pixels dans l’image.

Selon cet algorithme, le pixel i de l’image nette est :

avec h² un paramètre du filtrage gaussien, C(i) le coefficient de la normalisation.

Page 23: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 23/39

Bruit trouvé par moyennage et par les moyennes non-locales

III.2 4) Comparaison des deux approches

L’algorithme de moyennage peut avoir de meilleurs résultats s’il y a suffisamment d’images prises dans les mêmes conditions comme images de référence, mais ces images de référence peuvent être difficiles à collecter. Dans notre projet, cela reste faisable, l’application filme une scène statique, on peut donc facilement obtenir une chaîne d’images de la scène dans les mêmes conditions, il faut que la caméra ne bouge pas pendant la collection des sources. Pourtant, cela peut aussi être un inconvénient pour les utilisateurs. De plus, si jamais certains objets ont bougé pendant le processus de collection des images de référence, la différence entre les images peut produire un faux bruit qui va être gênant dans la suite.

L’avantage de l’algorithme de moyennage est de permettre d’obtenir un bon résultat. Ensuite, le temps de calcul est plus faible. Enfin, il s’agit de l’algorithme de débruitage le plus simple à mettre en oeuvre.

D’un autre côté, l’algorithme des moyennes non-locales est plus difficile à implémenter. De plus, le temps de calcul est très élevé car il faut comparer le voisinage de chaque pixel avec les voisinages de tous les autres pixels. Son avantage est qu’il ne nécessite qu’une image pour le calcul du bruit.

Il existe encore d’autres algorithmes de débruitage [8][9], mais ces deux algorithmes que nous avons choisi de réaliser permettent de supprimer du bruit sans altérer les contours de l’image elle même.

Page 24: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 24/39

III.3 Analyse et reproduction de bruit

Après avoir obtenu l’image de bruit, il faut l’analyser pour trouver ses caractéristiques et reproduire ce bruit en fonction de ces caractéristiques.

III.3 1) Modélisation basée sur la statistique

La plupart des programmes de génération de bruit sont basés sur une distribution gaussienne, dont les caractéristiques principales sont la moyenne et la variance. Pour vérifier la distribution du bruit que nous avons trouvé précédemment, nous avons généré la distribution du bruit additif d’une trentaine d'images :

Distribution du bruit trouvé

Cette image montre le bruit trouvé dans l’image en niveau de gris, et la plupart des images génèrent ce genre de bruit dans nos tests. On constate alors qu’il ne s’agit pas d’une distribution gaussienne, mais plutôt d’une loi de Laplace.

Page 25: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 25/39

Figure: Loi de laplace

Sa densité de probabilité est

avec μ le paramètre de position, et b est le paramètre d’échelle.

La loi de Laplace est applicable pour le bruit car le bruit naturel est la majorité des cas peu élevé. Dans notre projet, le bruit est ainsi modélisé et généré selon la loi de Laplace.

Supposons que

Comme on a déjà n, il reste à trouver μ et b.

Dans notre hypothèse, le bruit généré par la caméra CCD est partiellement influé par la vraie image. Pour prendre en compte cet effet, nous avons étudié la distribution de bruit sur différents intervalles de niveau de gris.

Page 26: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 26/39

Tableau de distributionDans ce tableau, on voit que les paramètres varient en fonction de l’intervalle.

Pour cette raison, nous avons décidé de modéliser le bruit également en fonction d’intervalle.

III.3 2) Reproduction de bruit

Enfin, pour la reproduction de bruit, nous utilisons la génération d’une distribution de Laplace selon l’intervalle auquel appartient la valeur du pixel. Étant donné une variable aléatoire U, la variable X est distribuée selon la loi de Laplace avec les paramètres μ et b.

Pour le pixel i dans l’image de modèle 3D, le bruit généré sera

n i =μ k , l −bk , l ∗signU ∗ln 1−2∣U ∣

U ∈[−1/2,1 /2] ,Φ i ∈[k , l ]

Page 27: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 27/39

La distribution de bruit reproduit selon la loi de Laplace :

Statistique de bruit généré

En plus de la reproduction de bruit lui même, comme indiqué dans l’hypothèse, l’image obtenue par caméra subit souvent une correction gamma. C’est aussi un caractère qu’il faut appliquer sur la modèle 3D. Cela peut être fait par l’interpolation linéaire en cherchant les valeurs corrigées dans une table de correspondance de correction gamma.

Correction Gamma

Voici un pseudo code pour générer la table de correction gamma.gamma := 2.2for i := 0 to 255 do

raw := i / 255corr := pow(raw, gamma)table[i] := trunc(0.5 + corr * 255.0)

end

Page 28: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 28/39

Le résultat obtenu est le suivant :

Modèle 3D sur la scène sans bruit appliqué.

Modèle 3D sur la scène avec le bruit et la correction gamma

Page 29: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 29/39

III.4 Interpolation bilinéaire et fausses couleurs

La plupart des webcams utilisent un capteur mono-CCD muni d'un filtre couleur pour obtenir une image en couleurs.

La lumière est décomposée par le filtre. Un traitement permet par la suite de reconstituer les informations des pixels manquants. Le traitement le plus simple est l'interpolation bilinéaire de couleurs sur l'image, mais d'autres traitements existent [10].

Dans notre cas, nous n'avons pas d'informations sur le filtre, ni sur le traitement utilisé. De plus, les effets graphiques du traitement ne sont pas identifiables sur l'image. Nous ne pouvons donc pas détecter la présence de fausses couleurs dues à la correction des pixels.

Cependant, pour rajouter un peu de réalisme à notre modèle 3D, il est possible de simuler un passage par un filtre de Bayer suivi par une interpolation bilinéaire. L'image ainsi dégradée présente quelques fausses couleurs supplémentaires, des artefacts tels que les "zipper effects", ainsi qu'un léger flou, mais la différence est difficilement perceptible.

Image originale et image soumise à un filtrage de Bayer et une interpolation bilinéaire

On notera la présence de fausses couleurs dans les hautes fréquences, ainsi que

des effets de zip sur les transitions droites. D'autres algorithmes de démosaïçage auraient pu entrainer des artefacts de lissage, d'effet de grille, ou d'autres fausses couleurs. Voir par exemple [11] pour une illustration des problématiques du dématriçage.

Page 30: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 30/39

IV. Analyse et reproduction de netteté

I.1 Modélisation de la netteté

Dans un appareil optique, la netteté est due aux lentilles que la lumière traverse. Dans un cas idéal, un objet ponctuel est projeté sur un seul pixel, et a une image nette :

Mais en réalité, les objets sont situés à des distances variables de la lentille.Dans ce cas, un point de l'image sera projeté sur un cercle de confusion, sur plusieurs pixels. Ces points apparaitront flous sur l'image.

Ici, nous faisons l'hypothèse que le système a une symétrie circulaire. Dans ce cas, l'image floue d'un point est une tache uniforme [12].

Page 31: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 31/39

I.2 Mesure de la netteté

La plupart des techniques existantes de mesure de netteté d'un objectif consistent à trouver le maximum d'une fonction correspondant à la meilleure netteté possible. Cela permet les mises au point automatiques des objectifs. Dans notre cas, nous ne pouvons changer la mise au point de l'objectif. Deux solutions sont alors possibles : utiliser un des critères de mesure de focus déjà utilisés, mais la mesure variera fortement en fonction de la scène filmée, ou bien evaluer la netteté en comparant un objet connu au sein de l'image avec sa représentation. Cependant, cette dernière méthode nécessite un objet supplémentaire ou bien des procédures de calibration, selon l'angle de l'objet.

Nous avons fait l'hypothèse d'une scène avec peu de variations, ce qui permet d'utiliser une mesure de netteté donnant des mesures plus fiables pour une même scène.L'algorithme choisi est celui de Tenenbaum [13], appelé méthode de Tenengrad. Il se base sur la valeur du gradient à partir de l'opérateur de Sobel.

Avec S(x,y) la valeur du filtre de Sobel calculée par :

S x , y=Sx x , y ²Sy x , y ²

Les filtres de Sobel utilisés sont : Sx=∣−1 0 1−2 0 2−1 0 1∣et Sy=∣−1 −2 −1

0 0 01 2 1 ∣

Le score obtenu est une mesure de la netteté d'une image. Cependant, ce score variera beaucoup pour une scène différente avec la même netteté. Il faut donc interpréter ce score pour des scènes variant peu ( une table filmée, avec des cartes ).

De plus, cette mesure fait abstraction de la profondeur de champs. On peut adapter le programme pour réaliser différentes mesures sur l'écran, selon la distance estimée à la caméra.

Division de l'image pour le calcul de la netteté

Score=∑Image

[S x , y] ²

Page 32: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 32/39

Enfin, comme certaines caméra règlent elles-même leur netteté, il convient de réévaluer régulièrement la netteté de l'image au cours de l'application.

I.3 Reproduction de la netteté

Pour flouter le modèle, plusieurs techniques sont possibles. On peut utiliser un filtre moyenneur, un filtre gaussien, ou un filtrage fréquentiel. Cependant, dans cette application, nous devons obtenir un flou progressif, et nécessitant peu de puissance de calcul. Nous avons donc fait le choix d'un filtre moyenneur simple, itéré plusieurs fois selon la netteté voulue. Cette méthode a l'avantage de pouvoir être optimisée facilement et de permettre un flou croissant facilement réglable.

La première étape est de convertir le score de netteté en nombre d'itérations du filtre. Cette étape dépend fortement de l'interprétation du score ainsi que du flou voulu.Puis, on applique sur le modèle 3D un filtrage linéaire :

On peut imaginer des accélérations du filtrage, car les coefficients sont tous égaux. Pour une webcam assez bien réglée, le nombre d'itérations ne devrait pas se situer au-delà de 5. On peut également brider les résultats et ne pas appliquer de flou pour des scores de netteté faibles.

Les résultats donnent un floutage progressif correct, mais avec peu de réglages possibles pour un flou faible. En effet, une seule itération donne déjà un flou marqué, et il n'y a pas de flou plus faible possible avec cette méthode. Pour ajouter un effet de profondeur de champ, il faut réaliser un flou différent selon la position du modèle 3D, et du score calculé pour différentes parties de l'image.

Exemple : Image de testLe score est évalué à 14.L'algorithme en déduit 5 itérations dufiltre sur le modèle 3D.

Modèle non flouté Modèle flouté

Filtre moyenneur :∣1 1 11 1 11 1 1∣

Page 33: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 33/39

V. Implémentation et combinaison des algorithmes

Notre travail dans ce projet se limite à la recherche et l’implémentation de techniques permettant de rendre plus réaliste une scène de réalité augmentée. Le résultat est donc en grande partie appréciable visuellement. Cependant, comme nous nous limitons à de l’algorithmique, nous ne pouvons juger, ne serait-ce que subjectivement, de la qualité de notre travail. C’est pourquoi nous avons décidé de mettre en place, en parallèle, un environnement permettant d’inclure facilement nos algorithmes et d’en visualiser le résultat sur une scène simple.

Cet environnement permet de regrouper les différents algorithmes que nous avons développés dans un pipeline. Ce dernier est composé d’une phase de pré-calcul, qui permet de calculer les différents éléments qui seront utilisés pour appliquer nos algorithmes, et d’une phase d’application des techniques sur l’image acquise par la webcam. Cette dernière phase est conçue de façon à reproduire le processus par lequel passe l’image avant d’être numérisée.

V.1 Pipe-Line

Dans la phase de pré-calcul, on retrouve les algorithmes de recherche des caractéristiques des sources lumineuses, du modèle du bruit et de la netteté. Ces algorithmes nécessitent l’acquisition de plusieurs images pour pouvoir calculer certains éléments. Une fois calculés, ils sont conservés pour être utilisés dans la seconde phase. En ce qui concerne les sources lumineuses, les caractéristiques sont appliquées sur les sources virtuelles et ne sont plus modifiées par la suite, donc elles sont considérés comme constante durant toute la durée de l’application.

Dans la phase d'application, on applique les différents algorithmes sur le modèle 3D que l’on incruste dans le flux vidéo, elle est donc exécutée en boucle lors de chaque acquisition d’image de la webcam. Cette boucle reproduit le processus d’acquisition d’image à partir d’une caméra numérique. Ainsi on retrouve les défauts liés aux lentilles avec le flou ou encore liés au capteur avec le bruit et le dématriçage.

Pipeline

Page 34: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 34/39

V.2 Développement de l’environnement

Pour développer l’environnement nous avons voulu être fidèle aux contraintes matérielles et logicielles demandée par la société Péoléo. Ainsi, nous avons utilisé les librairies Ogre3D [14] pour la partie rendu 3D et OpenCV [15] pour la partie de traitement d’image.

La scène synthétisée est composée de deux parties, le fond avec l’image courante venant de la webcam, et les objets 3D placés à l’avant-plan.

Schéma de la scène synthétisée (avec séparation du fond et des objets 3D)

Comme expliqué dans les parties précédentes, une partie de notre travail consiste à quantifier les défauts des images acquises par la webcam pour les reproduire sur les objets 3D qui seront collés sur le flux vidéo. Il est donc nécessaire de bien différencier le fond qui contient déjà les défauts (image floue avec bruit et autres), des objets 3D sur lesquels nous appliqueront les mêmes défauts. Pour cela nous créons deux scènes que nous combinons pour obtenir notre scène finale.

Nous avons donc la scène avec un plan qui contient le flux vidéo de la webcam et une sphère qui permet de modéliser de façon visuelle la source lumineuse. Ainsi, il est simple de savoir où se trouve la lumière car elle est visible à l’écran. De plus, une droite allant du centre de la scène (en face de la caméra) au centre de la source lumineuse permet de savoir dans quelle direction elle se trouve lorsqu’elle n’est pas visible à l’écran. Cette scène n’est pas affectée par nos algorithmes lors de la phase d’application, car nous ne voulons pas ajouter des défauts au flux vidéo qui les a déjà.

Page 35: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 35/39

Nous avons une seconde scène qui contient tous les objets 3D avec leurs ombres portées sur un plan invisible. C’est sur cette scène que nous voulons appliquer les défauts, afin que ces objets ajoutés en surimpression sur le flux vidéo apparaissent comme filmés par la webcam.

La phase d’application se déroule comme suit :- on récupère la scène à modifier, en outre la scène avec les objets 3D et leurs ombres- on récupère le tampon représentant la projection de cette scène sur un plan- on applique les algorithmes pour générer le bruit, le flou et les défauts de dématriçage sur les pixels du tampon- on combine ce tampon avec celui contenant l’image de la webcam

Le résultat peut ainsi être affiché à l’écran.

Page 36: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 36/39

VI. Bilan du projet

VI.1 Bilan des réalisations

Au final, nous avons conçu un programme de réalité augmentée, ajoutant une couche de réalisme aux modèles incrustés. Les différents algorithmes mesurent les artefacts d'acquisition suivants :

- Netteté de l'image/Profondeur de champs- Eclairage : localisations, puissances, colorations- Bruit d'acquisition du capteur

Le programme permet ensuite de tester ces mesures sur le flux vidéo d'une webcam. Notamment, les effets rajoutés à la réalité augmentée sont les suivants :

- Floutage d'un modèle en fonction de la netteté de la vidéo- Eclairage en fonction des sources de lumière détectées- Ajout de bruit à l'image en fonction du bruit du capteur.- Ajout de fausses couleurs dues à un capteur mono-CCD

Le cahier des charges du projet est donc globalement respecté. Notamment, le souhait de l'entreprise Péoléo a finalement été accomplis, car les algorithmes peuvent se passer d'objets de calibration. Le modèle ajouté est incrusté de manière plus réaliste au sein de la vidéo, comme demandé.

Cependant, ces algorithmes sont encore lourds, et ne permettent pas un flux vidéo en temps réel. De plus, les algorithmes de gestion du bruit nécessitent une procédure de calibration parfois longue pour fonctionner correctement.

Enfin, ces algorithmes ne fonctionnent que dans des cas de scènes filmées peu variées, comme une table avec des cartes. En particulier, les algorithmes de mesure du bruit et de la netteté donneront des résultats inutilisables dans le cas d'une scène trop dense ou avec trop de mouvement. L'algorithme de détection de sources lumineuses pourra être trompé par une disposition de scène particulière, un jeu d'ombre, ou par une réflection spéculaire au sein de la vidéo.

Ces différents points montrent que nos algorithmes ne pourront probablement pas être utilisés par la société Péoléo. Dans le cas contraire, les résultats devront être interprétés avec circonspection, et les procédures de dégradation de l'image bridées, pour éviter un flou inutilement fort, ou un bruit de valeur trop élevé. Les algorithmes concernant l'éclairage, s'il venaient à donner des résultats faux, seraient moins dommageables au jeu.

D'un point de vue plus personnel, nous avons beaucoup appris de nos différents travaux. En particulier, nous avons beaucoup renforcé nos connaissances en programmation 3D sous Ogre3D, et en traitement d'images sous OpenCV. La réalisation du programme de démonstration de réalité augmentée nous a également appris la gestion d'une webcam, ainsi que l'intégration de modèle 3D dans un flux vidéo.

Page 37: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 37/39

VI.2 Développements possibles

Le réalisme obtenu sur les incrustations devrait s'avérer correct avec la bonne paramétrisation. Nos algorithmes peuvent cependant être grandement améliorés par différents moyens.

Du côté de la détection de sources lumineuses, différents algorithmes plus complexes ont été suggérés qui pourraient donner de meilleurs résultats. Pour la méthode de détection de sources lumineuses par les gradients, déjà implémentée, on peut améliorer les résultats en ne faisant les mesures que sur une surface supposée plane, comme la table.

Pour la détection de bruit, on peut imaginer une simplification des calculs en faisant une étude globale du bruit généré par les webcam, ce qui éviterait une phase de calibration trop contraignante. De plus, différentes accélérations sont réalisables selon le degré de réalisme voulu. On peut par exemple utiliser le multi-threading pour résoudre les problèmes de temps réel, ou passer par des shaders.

Pour l'évaluation de la netteté, l'algorithme peut être amélioré en intégrant la reconnaissance de la profondeur de champs dans le processus. On peut également réaliser une étude complémentaire pour la conversion du score mesuré en flou, cette paramétrisation étant partiellement estimée dans notre programme. Enfin, l'application de flou peut être accélérée ou automatisée, selon les architectures de calcul.

L'interface de réalité augmentée a été conçue dans un but de démonstration. Cependant, on peut l'améliorer pour augmenter la vitesse de l'application. En particulier, l'ajout de modèles 3D sur le flux de la webcam est réalisé de manière approximative, et pourrait bénéficier de différentes optimisations.

Page 38: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 38/39

Bibliographie

Eclairage :[1] Estimation of Illuminant Direction and Intensity of Multiple Light Sources, par Wei Zhou et Chandra Kambhamettu[2] Multiple Illuminant Direction Detection with Application to Image Synthesis, par Yufei Zhang et Yee-Hong Yang (2001)[3] Light source detection in photographs, par Jorge Lopez-Moreno, Sunil Hadap, Erik Reinhard and Diego Gutierrez (2009)[4] Eyes for Relighting, par Ko Nishino et Shree K. Nayar[5] Acquiring a Radiance Distribution to Superimpose Virtual Objects onto a Real Scene, par Imari Sato, Yoichi Sato et Katsushi Ikeuchi (1999)[6] Statistical multiple light source detection, C.-S. Bouganis et M. Brookes

Bruit et artefacts :[7] Image and Movie Denoising by NonLocal Means, par Antoni Buades, Bartomeu Coll et Jean-Michel Morel[8] Techniques de débruitage des images scintigraphiques, par M. Kirkove, A. Seret[9] Techniques de débruitage d’images, Humbert Florent[10] Demosaicing with The Bayer Pattern, par Rémi Jean, University of North Carolina[11] Acquisition d'images couleur et dématriçage, par Olivier Losson, Université Lille 1

Netteté : [12] Mesure de netteté par Transformée en ondelettes. Définition et comparaison pour l'autofocus de caméra. , par Michel Desvignes, Jalal M. Fadili, Frederic Bataille.[13] A quality of focus criterion using compressed images. M. D. Cutts, W. B. Seales, 1995

Implémentation et combinaison des algorithmes :[14] Site de la librairie Ogre3D : http :// www . ogre 3 d . org / [15] Site de la librairie OpenCV : http :// opencv . willowgarage . com / wiki /

Page 39: Projet Drako, Réalité augmentée réaliste

Projet Drako : Réalité Augmentée réaliste 39/39

Résumé :

Dans ce projet, nous avons étudié et implémenté différents algorithmes permettant de reproduire sur un modèle 3D les artefacts qu'induit l'acquisition d'une scène par une webcam, dans le but d'augmenter le réalisme d'une application de réalité augmentée. Sont présents notamment :

Détection et analyse de sources de lumière,Analyse et reproduction du bruit d'une image,Analyse et reproduction de la netteté d'une image.

Mots clés : Réalité Augmentée, RA, Réalisme, Webcam

Summary :

In this project, we studied and implemented various algorithms to reproduce on a 3D model artifacts caused by the acquisition of a scene by a webcam in order to increase the realism of an augmented reality application.

In particular, there is :

Detection and analysis of light sources,Analysis and reproduction of image noise,Analysis and reproduction of the sharpness of an image.

Keywords : Augmented Reality, AR, Realism, Webcam