Supprimer les images en double grâce aux scripts Mapillary


Quand on prend une photo par seconde avec une voiture par exemple, il arrive fréquemment qu'il y ait des images en de multiples exemplaires, quand on s'est arrêté pendant quelques secondes dans des bouchons, à un feu, à un stop, etc.

Il est donc préférable de supprimer ces doublons. Heureusement, les scripts Python pour Mapillary permettre justement de supprimer ces images en double.


Méthode simple : suppression des doublons avec "upload_with_preprocessing.py"

Il est possible de passer des options au script "upload_with_preprocessing.py" pour gérer les cas de doublons. Il existe 3 arguments optionnels :
  • --remove_duplicates (indique simplement de supprimer les doublons)
  • --duplicate_distance [distance en mètres] (par défaut = 0.1 mètre, supprime les photos si les prises de vue successives sont séparées de moins de 0.1 mètre)
  • --duplicate_angle [angle en degré] (par défaut = 5°, supprime les photos si la différence entre l'angle de vue des prises de vue successives est inférieur à 5°)

On imagine que nos images sont stockées dans le dossier "C:/Mapillary/".

Pour supprimer les doublons puis mettre en ligne les images :
upload_with_preprocessing.py "C:/Mapillary/" --remove_duplicates

Si on veut supprimer les images successives qui sont à moins de 2 mètres les unes des autres :
upload_with_preprocessing.py "C:/Mapillary/AV_origine" --remove_duplicates â??duplicate_distance 2.0

Pour être plus précis, les images successives considérées comme des doublons ne sont pas supprimées mais transférées dans un autre dossier.


Méthode avancée : suppression des doublons avec "remove_duplicates.py"

Si l'on veut aller plus loin, il est possible d'utiliser le script "remove_duplicates.py" :
remove_duplicates.py "C:/Mapillary/"

Ensuite, il suffit de mettre en ligne les photos avec la méthode habituelle "upload_with_preprocessing.py".

L'avantage est que "remove_duplicates.py" prend plus d'arguments :
  • -e ou --error-dir : dossier où transférer les erreurs (par défaut = "errors")
  • -d ou --distance : distance minimum en mètres entre 2 images successives à utiliser pour déterminer les doublons (par défaut = 4 mètres)
  • -a ou --fast : vitesse maximale en km/h considérée comme trop rapide (par défaut = 150 km/h)
  • -t ou --too_fast : vitesse maximale en km/h considérée comme vraiment trop rapide (par défaut = 200 km/h)
  • -p ou --pan : angle minimum en degré entre 2 images successives à utiliser pour déterminer les doublons (par défaut = 20°)
  • -m ou --min_dup : nombre minimum d'images successives en doublons avant de les supprimer (par défaut = 3)

Ainsi si on veut transférer les photos en doublons depuis "C:/Mapillary/" vers "C:/Mapillary/mes_doublons", en ne conservant que les doublons à moins de 1 mètre l'un de l'autre :
remove_duplicates.py --distance 1.0 "C:/Mapillary/" "C:/Mapillary/mes_doublons"

Pour les options -a ( --fast ) et -t ( --too_fast ), un message apparaît lors de l'exécution du script indiquant les images entre lesquelles la vitesse semble trop rapide et celles entre lesquelles la vitesse semble vraiment trop rapide.

Pour l'option -m ( --min_dup ), elle peut permettre d'allonger ou de raccourcir le critère de temps pour considérer qu'il s'agit d'un doublon. Par défaut, cette valeur est fixée à 3. Si on fixe cette valeur à 10 et qu'on a pris 1 image toutes les secondes, il faudra un arrêt de 10 secondes au moins pour que les images soient considérées comme des doublons.