IUT A - Département informatique - N2 - M2105 - Université de Lille
2017-2018 
Interaction Homme-Machine



Projet de réalité augmentée

Vous trouverez une version de ce document au format PDF ici.

Objectifs

Travail à réaliser :

1  Préambule

«La réalité augmentée est la superposition de la réalité et d’éléments (sons, images 2D, 3D, vidéos, etc.) calculés par un système informatique en temps réel. Souvent, elle désigne les différentes méthodes qui permettent d’incruster de façon réaliste des objets virtuels dans une séquence d’images. Elle s’applique aussi bien à la perception visuelle (superposition d’image virtuelle aux images réelles) qu’aux perceptions proprioceptives comme les perceptions tactiles ou auditives. Ces applications sont multiples et touchent de plus en plus de domaines, tels que les jeux vidéo, l’éducation par le jeu, les chasses au trésor virtuelles, le cinéma et la télévision (post-production, studios virtuels, retransmissions sportives...), les industries (conception, design, maintenance, assemblage, pilotage, robotique et télérobotique, implantation, étude d’impact...etc.) ou le champ médical. » [Wikipédia]
Pour ce projet nous utiliserons la réalité augmentée pour incruster de manière réaliste (respect des perspectives) des objets virtuels dans des images réelles.

2  Contexte et problématique

Ce projet s’inscrit dans le contexte de l’aménagement et de la rénovation de l’habitat. Il est difficile pour une majorité de personnes de se représenter mentalement le résultat de travaux avant leur réalisation. L’objectif est de développer une interface permettant de pré-visualiser en réalité augmentée le résultat de travaux. L’objectif est de permettre à l’utilisateur de faire des choix avisés quand différentes alternatives pour un projet de travaux s’offrent à lui.
Le projet se limitera à l’incrustation d’objets de formes rectangulaires (fenêtres, portes, tableaux...) dans des photos, par utilisation de la projection perspective qui permet d’associer un quadrilatère quelconque à un autre tout en s’assurant que les droites avant transformation restent représentées par des droites après transformation.

3  Base de code JavaFX

JavaFX met à votre disposition la classe PerspectiveTransform afin de vous éviter le calcul de matrices de transformation. Un exemple minimal de code est disponible ci-dessous qui vous illustre comment incruster une fenêtre virtuelle à la place d’une fenêtre réelle, tout en respectant les perspectives. Les coordonnées renseignées dans l’image réelle ont été obtenues en déterminant manuellement les coordonnées des quatre coins de la fenêtre réelle.

public class HelloPerspective extends Application {

  public void start(Stage stage) {
    VBox root = new VBox();
    Canvas canvas = new Canvas (500, 504);
    GraphicsContext gc = canvas.getGraphicsContext2D();

    Image imageReelle = new Image("resources/imageReelle.png");
    Image imageVirtuelle = new Image("resources/imageVirtuelle.png");

    PerspectiveTransform perspectiveTransform = new PerspectiveTransform();
    perspectiveTransform.setUlx(140);
    perspectiveTransform.setUly(54);
    perspectiveTransform.setUrx(323);
    perspectiveTransform.setUry(106);
    perspectiveTransform.setLrx(334);
    perspectiveTransform.setLry(382);
    perspectiveTransform.setLlx(151);
    perspectiveTransform.setLly(427);

    gc.drawImage(imageReelle, 0, 0);
    gc.setEffect(perspectiveTransform);
    gc.drawImage(imageVirtuelle, 0, 0);
    gc.setEffect(null);
    root.getChildren().add(canvas);

    Scene scene = new Scene(root);
    stage.setTitle("HelloPerspective");
    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    Application.launch(args);
  }
}

Figure 1: Résultat obtenu (à droite) avec l’exemple de code HelloPerspective, à partir d’une photo (gauche) et d’une image de fenêtre (milieu).

4  Utilisateurs visés et scénarios envisagés

Votre application s’adresse à un large public, c’est-à-dire potentiellement n’importe qui avec des projets de travaux à réaliser. La facilité d’utilisation donc est un critère essentiel à prendre en compte dans votre conception.
Un travail préliminaire auprès d’utilisateurs potentiels de l’application a permis d’identifier les scénarios d’usage suivants:
Scénario 1: Marie veut remplacer la porte de sa maison. Avec son smartphone, elle commence par prendre plusieurs photos de sa porte actuelle sous différents angles, photos qu’elle importe ensuite sur son ordinateur portable. Marie a repéré sur différents sites Internet des modèles de portes qui pourraient convenir mais elle hésite encore entre plusieurs modèles. Pour se décider, elle commence par ajouter ses photos dans votre application ainsi que les images des différents modèles de portes repérées sur Internet, sur lesquelles elle effectue éventuellement un travail de rognage. Après avoir identifié les coins de la porte sur chacune des photos, elle visualise le rendu de chacune des portes sous les différents points de vue. Satisfaite par deux modèles, elle sauvegarde plusieurs rendus pour les montrer à d’autres personnes et solliciter leur avis avant de prendre une décision finale.

Scénario 2: Paul veut changer un poster accroché sur un mur de sa cuisine et il hésite entre plusieurs modèles. Il réalise des opérations similaires à Marie pour enfin visualiser côte à côte les rendus des différents modèles, ce qui lui permet de choisir celui qui suit le mieux avec le reste de la cuisine.

Scénario 3: Pierre veut changer la porte de son garage. Il trouve des modèles d’occasion sur Internet, cependant ceux-ci ne sont pas pris selon un point de vue face aux portes. Après avoir pris des photos sous différents angles de sa porte de garage actuelle, Pierre utilise l’application pour importer les photos prises sur Internet et identifier les quatre coins des portes d’occasion. Une fois cette étape réalisée il intègre les portes d’occasion pour comparer les rendus.

5  Résultats attendus

L’application sera développée en utilisant JavaFX.
Vous devrez rendre une archive ZIP contenant:

Le projet est à réaliser en binômes (pas de trinômes). Binômes inter-groupes non autorisés.
Barème indicatif de notation:


CritèrePoints
Respect des consignes: archive zip et pas un autre format, capture d’écran, compte rendu au format pdf, rendu code source, jar ...1
Le jar exécutable fonctionne en salle TP1
Qualité des mockups Balsamiq2
Ergonomie de l’interface3
Qualité justifications des choix de conception dans le rapport3
Qualité des évaluations croisées: critiques argumentées des autres interfaces sur la base de critères ergonomiques ...2
Utilisation correcte des gestionnaires de placement3
Gestion correcte des événements2
Qualité du code1
Qualité de la vidéo de présentation du projet et conformité aux instructions2
Tableau 1: Barème indicatif de notation


Ce document a été traduit de LATEX par HEVEA