Virtual PONG
Traitement Numérique des Images, ELEN016-1
            Projet Android, 2012


             HERBEUVAL P.
               MAHIN J.
              THIRION. V
Plan
!   Introduction

!   Présentation du jeu

!   Buffers

!   Détection des mains

!   Gestionnaire du jeu

!   Performances

!   Problèmes

!   Démo
Introduction
!   Jeu des années 70, quelque peu oublié aujourd’hui

!   Nous voulions lui donner une nouvelle jeunesse

!   Le contrôle du jeu se fait à distance, sans toucher l’appareil
Présentation du jeu
!   But : défendre son camp pour
    empêcher que la balle y entre

!   Mouvements : chaque joueur
    fait monter/descendre sa
    raquette pour renvoyer la balle
    au mieux

!   La balle rebondit différemment
    selon le point d’impact

!   La vitesse de la balle est
    modifiable grâce au slider
Buffering
!   Traitement et capture de l’image en parallèle
   !   2 threads dans l’application, meilleure utilisation des ressources
       disponibles (CPU dual-core)

!   3 tableaux de bytes utilisés comme buffers

!   Permettre la capture et le traitement en simultané de deux
    images

!   Le 3ème buffer permet d’éviter d’attendre la caméra
Détection des mains
!   Détection de la peau
  !   Uniquement dans certaines parties de l’image
  !   Dans l’espace YUV: résultats insatisfaisants
  !   Dans l’espace RGB


!   Détection des mains
  !   Repérer les lignes contenant un certain nombre de pixels de
      peau
  !   Centre de la raquette placé à mi-chemin entre la première et
      dernière ligne
Gestionnaire de jeu
!   Objets :
   !   Balle
   !   Raquettes

!   Le gestionnaire a pour mission de lancer le jeu et de gérer les
    différentes interactions entre objets.

!   Chaque objet est responsable de sa représentation à l’écran ou
    d’envoyer/recevoir des informations vers/par le gestionnaire
                                                      Dessin
                          Balle
                                                                 Collisions +
                                                    Mouvements      sons
 Traitement    Gest.                Score, écran,
  d’image                            slider, sons
                                                      Dessin
                         Raquette

                                                    Mouvements
Performances
!   15 FPS en moyenne après tous les traitements

!   Pas besoin de plus pour jouer, suffisamment fluide

!   On peut augmenter fortement la vitesse de la balle, le jeu
    reste jouable

!   Résultats plus satisfaisants grâce
   !   Double buffering
   !   Traitements en C (Java)
   !   Image pas traitée entièrement
      !   Seulement le 1er tiers à gauche et le dernier tiers à droite
Problèmes
!   Interfaçage du code : Java -> C
   !   Après compréhension, aucun problème

!   Ressources hardware (camera, CPU, mémoire, …)
   !   Caméra frontale << Caméra dorsale
   !   Limitations mais spécifications suffisantes

!   Détection de la peau
Démo




!   Live

!   Vidéo
Vidéo
Questions ?

Traitement numérique des images - Projet Android "Virtual Pong" - Présentation

  • 1.
    Virtual PONG Traitement Numériquedes Images, ELEN016-1 Projet Android, 2012 HERBEUVAL P. MAHIN J. THIRION. V
  • 2.
    Plan !   Introduction !  Présentation du jeu !   Buffers !   Détection des mains !   Gestionnaire du jeu !   Performances !   Problèmes !   Démo
  • 3.
    Introduction !   Jeudes années 70, quelque peu oublié aujourd’hui !   Nous voulions lui donner une nouvelle jeunesse !   Le contrôle du jeu se fait à distance, sans toucher l’appareil
  • 4.
    Présentation du jeu !  But : défendre son camp pour empêcher que la balle y entre !   Mouvements : chaque joueur fait monter/descendre sa raquette pour renvoyer la balle au mieux !   La balle rebondit différemment selon le point d’impact !   La vitesse de la balle est modifiable grâce au slider
  • 5.
    Buffering !   Traitementet capture de l’image en parallèle !   2 threads dans l’application, meilleure utilisation des ressources disponibles (CPU dual-core) !   3 tableaux de bytes utilisés comme buffers !   Permettre la capture et le traitement en simultané de deux images !   Le 3ème buffer permet d’éviter d’attendre la caméra
  • 6.
    Détection des mains !  Détection de la peau !   Uniquement dans certaines parties de l’image !   Dans l’espace YUV: résultats insatisfaisants !   Dans l’espace RGB !   Détection des mains !   Repérer les lignes contenant un certain nombre de pixels de peau !   Centre de la raquette placé à mi-chemin entre la première et dernière ligne
  • 7.
    Gestionnaire de jeu !  Objets : !   Balle !   Raquettes !   Le gestionnaire a pour mission de lancer le jeu et de gérer les différentes interactions entre objets. !   Chaque objet est responsable de sa représentation à l’écran ou d’envoyer/recevoir des informations vers/par le gestionnaire Dessin Balle Collisions + Mouvements sons Traitement Gest. Score, écran, d’image slider, sons Dessin Raquette Mouvements
  • 8.
    Performances !   15FPS en moyenne après tous les traitements !   Pas besoin de plus pour jouer, suffisamment fluide !   On peut augmenter fortement la vitesse de la balle, le jeu reste jouable !   Résultats plus satisfaisants grâce !   Double buffering !   Traitements en C (Java) !   Image pas traitée entièrement !   Seulement le 1er tiers à gauche et le dernier tiers à droite
  • 9.
    Problèmes !   Interfaçagedu code : Java -> C !   Après compréhension, aucun problème !   Ressources hardware (camera, CPU, mémoire, …) !   Caméra frontale << Caméra dorsale !   Limitations mais spécifications suffisantes !   Détection de la peau
  • 10.
  • 11.
  • 12.