Coordonnées d'un point sur le terrain à partir d'une image TV

Introduction

On me pose souvent la question:

Comment mesurez-vous la distance d'un tir sur une action de but?

Jusqu'à récemment, c'était un peu au jugé : à partir d'un arrêt sur image réalisé au moment de l'impact de la balle sur le pied, j'estimais approximativement la position du ballon dans un repère xy (axe x le long de la ligne de but et y le long de la ligne de touche) sur lequel je faisais apparaitre les lignes du terrain ainsi que celles dessinées sur la pelouse.

Dans le cas ci-dessous (but de Mariano contre Strasbourg le samedi 5 août 2017 ), on voit qu'on est dans le cercle devant la surface, pas tout à fait dans l'axe du but. Je clique sur mon terrain (croix rouge) et l'ordinateur me donne une position (x=34,83m ; y=17,35m). Pour rappel, un terrain de Ligue 1 fait 68m de large pour 105m de long.

Besoin/envie d'aller plus loin

La technique décrite plus haut était suffisante pour réaliser une belle illustration des tirs des équipes, mais cette relative approximation me laissait tout de même un goût d'inachevé.

Je me suis rappelé ces incrustations faites en direct sur les images TV qui permettent de montrer aux téléspectateurs la distance d'un coup-franc par rapport au centre du but au moment où le tireur pose le ballon au sol.

N'ayant pas à ma disposition les moyens techniques d'un Canal+ ou d'un BeIN, je me suis dit que les mathématiques pourraient voler à mon secours. J'ai commencé à griffoner des dessins, à tenter d'appliquer des théorèmes de Thalès, mais je me suis très vite rendu compte que ces techniques étaient inadaptées à ma problématique.

Vint alors l'appel à ma communauté Twitter...

Ce tweet a attisé la curiosité de Cédric (alias @cedric_OL), élève-ingénieur à Lyon qui, après avoir passé de longues heures en ma compagnie, a eu la bonne idée de poser la question sur un forum d'experts: les-mathematiques.net.

Cet échange a été extrêmement enrichissant. Mon problème était rendu complexe par le fait que les lignes de fuites du plan du terrain n'étaient pas parallèles comme dans un plan classique ou dans un plan en perspective cavalière. Il fallait faire appel à une matrice d'homographie.

Les participants ont proposé des algorithmes réalisés sur le logiciel SAGE Maths. J'ai donc dû me familiariser avec ce dernier. Son installation étant assez complexe, j'ai opté pour un accès Cloud sur cocalc.com (accès gratuit mais avec des performances très limitées dans l'après-midi quand les américains se connectent aux serveurs mutualisés).

Une fois le logiciel SAGE pris en main et après avoir vérifié que les algorithmes des utilisateurs du forum fonctionnaient bien, j'ai pu passer à la phase finale:

  • Ecriture en javascript de classes et de fonctions nécessaires aux calculs mathématiques (gestion de matrices et de vecteurs)
  • Ecriture en HTML5 et javascript d'une interface graphique permettant de sélectionner 4 points de référence sur une image et d'en déduire les coordonnées réelles de la position du tireur.

Un énorme MERCI à Cédric et aux membres du site les-mathematiques.net qui ont contribué à la réalisation de cet outil. J'avais convenu avec eux de partager le résultat de ma programmation en témoignage de ma gratitude. Vous pouvez soit jouer la démo directement en ligne soit télécharger les fichiers pour les étudier. Le code javascript/HTML n'est probablement pas parfait mais c'est surtout un démonstrateur, libre à vous de le modifier. Il est livré sous licence LGPL 2.1.

Vive les mathématiques et le football !