Photo

Objectif : Traiter et analyser une vidéo de Backgammon pour fournir un fichier contenant les faits de jeu exploitable par un logiciel d’analyse de parties.

La Fédération Française de Backgammon nous a contacté afin de nous soumettre un problème de traitement et d’analyse d’images. À ce jour, il existe un logiciel permettant d’analyser les coups à partir d’un fichier texte. Néanmoins, ce fichier texte doit être rédigé “à la main”. Le but de cette semaine était alors d’automatiser la création de ce fichier.

Voici un exemple de fichier texte que le programme doit retourner

Fichier texte

Liste des difficultés inhérentes au problème

  • Résolution de la vidéo parfois trop faible ;
  • Nombre trop faible de Frame Per Second ;
  • Vidéo avec perspective ;
  • Lecture du score des dés ;
  • Suivi des mouvements des pions ;
  • Problèmes de luminosité.

Outils de travail

  • Python 3.7
  • Numpy
  • OpenCV 3.4.1
  • Scikit Image
  • Matplotlib
  • XnView

Nous avons travaillé exclusivement sur la vidéo de la Demi Finale de la coupe de France 2018 entre Nicolas DEHON et David SOULIMANI.

Étapes de l’algorithme

Afin de faciliter le traitement et l’analyse de la vidéo, nous l’avons convertie en niveaux de gris.

Problèmes de perspective

Sur certaines vidéos, la perspective liée à l’angle de prise de vue introduit une déformation de l’image. Il faut donc la “redresser” à l’aide d’une homographie.

Détection de la position de départ

Premièrement, nous avons binarisé l’image afin d’accentuer le contraste. Puis, en calculant la somme des valeurs des pixels le long des lignes rouges dans l’image ci-dessous, nous avons determiné la position de départ.

Plateau binarisé

Trouver quel joueur joue

Pour ce faire, nous nous sommes aidés de la LED présente sur l’horloge de la vidéo étudiée. En effet, quand un joueur termine son tour, il frappe l’horloge et la LED de son côté s’éteint tandis que celle de l’adversaire s’allume. Nous avons donc cherché à detecter un changement brusque de luminosité.

Enregistrer nos images de référence

Afin de détecter les mouvements des pions, il nous faut des images dites de référence. Aussi, à chaque changement de joueur, on va enregistrer une image sur laquelle seul le plateau sera présent sans aucunes interférences.

Image de référence 1

Image de référence 2

Détection des changements de pions

À partir de ces images de référence, on peut obtenir une image de différence sur laquelle apparaîtront les changements de pions d’un tour à l’autre. En quadrillant cette image, on récupère les vignettes qui ont connu des modifications.

Vignettes avec changements

Sur ces vignettes, on analyse les contours au temps T-1 et au temps T et à partir de ces derniers, on détecte si un pion est parti ou arrivé.

Détection du score des dés

Pour détecter les dés, il nous faut des images de référence avec un plateau sans dés et un plateau avec les dés joués. Une fois ces images récupérées, il nous faut isoler les dés sur l’image de différence. Cependant, l’image de différence peut présenter des artefacts liés à l’acquisition. À l’aide d’outils de morphologie mathématique, on arrive à récupérer la localisation des dés sur le plateau.

Position dés

À partir de là, on peut obtenir les vignettes des deux dés. Il faut à présent compter le nombre de points présents sur chaque vignette toujours à l’aide de morphologie mathématique.

Conclusion : Conception du fichier texte

À l’aide des informations acquises tout au long du programme, on peut générer un fichier texte contenant les déplacements ainsi que les scores des dés pour chaque tour.

Fichier texte généré

Néanmoins, ce projet étant sur une courte durée, le programme n’est pas complet et reste perfectible pour gagner en robustesse.

Like this post? Share on: TwitterFacebookEmail


Published

Category

"Semaines Math Entreprises"

Nous contacter