FR:Mapillary/Action cameras processing

From OpenStreetMap Wiki
Jump to navigation Jump to search

Traitement d'images de caméras d'action pour Mapillary

Les caméras d'action diffèrent selon le contenu des métadonnées. Les images à télécharger sur Mapillary doivent avoir la date et l'heure, les coordonnées et la direction stockées dans des balises de métadonnées EXIF dans des fichiers JPG. Dans la plupart des cas, vous devez convertir ou générer ces données.

L'exécution de ces commandes dans un conteneur Docker est la solution la plus simple, en raison des dépendances de Mapillary_tools/ffmpeg. Si vous utilisez Linux, les scripts Python sont disponibles à https://github.com/mapillary/mapillary_tools et la procédure d'installation est indiquée dans ce document https://github.com/mapillary/mapillary_tools/blob/main/README.md .

  • Si les fichiers vidéo ou photo n'ont pas de date et d'heure dans les métadonnées exif (vu sur des caméras SJCAM bon marché) : écrivez un script Python pour extraire la date et l'heure à partir des noms de fichiers.
  • Pour le mode timewarp de GoPro : vous pouvez obtenir le rapport de vitesse à partir des fichiers à l'aide de la commande exiftool
exiftool -Rate  -q -q  -csv  $DIR/*.MP4
  • Exécutez mapillary_tools, sa commande génère des images fixes à partir de vidéos et y écrit la date et l'heure
DIR="/data/20210109"

USERNAME="username"
ANGLE=0
INTERVAL=0.1 
RATIO=15 

time mapillary_tools video_process  --video_import_path "$DIR" \
--user_name $USERNAME --advanced --video_duration_ratio $RATIO --device_make GoPro --device_model "HERO8 Black" \
--video_sample_interval $INTERVAL --geotag_source "gopro_videos" --geotag_source_path "$DIR" \
 --use_gps_start_time --interpolate_directions --offset_angle $ANGLE 

Pour une vidéo sans timelapse, définissez le paramètre video_duration_ratio à 1 et le paramètre video_sample_interval à 1 pour 1 image par seconde.
Une vidéo en timelapse est une technique de réalisation de films vidéos dans laquelle un appareil photo ou une caméra vidéo enregistre un cadre particulier de manière stabilisée avec une exposition verrouillée. Le résultat au final que vous voyez est une version accélérée de l'action qui a été enregistrée.

  • Les caméras peuvent avoir une dérive temporelle lors de la capture en timelapse, vous devez donc calculer certains points sur la piste/chemin/trace gpx et la date et l'heure des images capturées à ces points. Cette opération est obligatoire pour les vidéos SJCAM, les photos SJCAM, les vidéos timewarp GOPRO. Ouvrez la piste/chemin/trace gpx JOSM, convertissez-la en couche de données et vous pouvez cliquer sur les points et regarder l'heure stockée dans le fichier gpx
  • Générez et exécutez la commande exiftool pour la géoréférence
time exiftool  -overwrite_original -progress -geotag  $DIR/osmand.gpx \
-geosync="2021:01:09 10:55:46@13:50:00" \
-geosync="2021:01:09 11:04:16@13:58:02" \
-geosync="2021:01:09 11:18:23@14:09:47" \
-geosync="2021:01:09 11:20:22@14:11:33" \
-geosync="2021:01:09 11:27:32@14:17:54" \
-geosync="2021:01:09 11:36:08@14:25:47" \
$DIR/mapillary_sampled_video_frames/$FN/*.jpg

Date et heure restante (ou de gauche ?) : point dans la trace GPX, heure correcte (ou de droite ?) : valeur stockée dans le fichier JPEG. Cette commande interpolera et enregistrera la position GPS dans les fichiers JPEG. Notez que le fuseau horaire ne sera pas correct (ou interrompu ?) , les images capturées en UTC+3, il y a donc 3 heures de différence entre l'heure des photos et l'heure de la trace GPX.

  • Exécutez mapillary_tools avec interpolate_directions
path="/data/mapillary.sh/feeder"
mapillary_tools process_and_upload --advanced --import_path "$path/0" --user_name username  --interpolate_directions --offset_angle 0  --overwrite_EXIF_direction_tag --keep_duplicates
mapillary_tools process_and_upload --advanced --import_path "$path/45" --user_name username  --interpolate_directions --offset_angle 45  --overwrite_EXIF_direction_tag  --keep_duplicates
mapillary_tools process_and_upload --advanced --import_path "$path/90" --user_name username  --interpolate_directions --offset_angle 90  --overwrite_EXIF_direction_tag  --keep_duplicates
mapillary_tools process_and_upload --advanced --import_path "$path/180" --user_name username  --interpolate_directions --offset_angle 180  --overwrite_EXIF_direction_tag --keep_duplicates
mapillary_tools process_and_upload --advanced --import_path "$path/270" --user_name username  --interpolate_directions --offset_angle 270  --overwrite_EXIF_direction_tag  --keep_duplicates

mapillary_tools process_and_upload --advanced --import_path "$path/keep_direction" --user_name username   --keep_duplicates