Présentation du projet Android "Virtual Pong" pour le cours de Mr. Marc Van Droogenbroeck, "Traitement Numérique des images"
Décembre 2012
Créé par : Julien Mahin, Patrick Herbeuval et Valentin Thirion
2. Plan
! Introduction
! Présentation du jeu
! Buffers
! Détection des mains
! Gestionnaire du jeu
! Performances
! Problèmes
! Démo
3. 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
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
! 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
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
! 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
9. 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