scripts/hugin-gopro-fusion
2024-02-09 10:18:05 +01:00
..
example hop 2023-09-10 15:53:15 +02:00
img advance building of hugin script 2023-08-29 15:28:27 +02:00
videos ajout fichiers pour hugin script 2023-08-29 10:44:47 +02:00
.gitignore hugin: ignore output pto 2023-10-12 10:35:58 +02:00
equalize_all_in_folder.sh up 2023-11-02 18:38:08 +01:00
exif_batch.sh création d'un script de batch 2024-02-07 22:30:01 +01:00
find_min_max.ts up remove previous zero by default 2024-02-09 10:18:05 +01:00
gather_sequences.ts check source photo exists 2023-11-23 15:14:37 +01:00
hugin_batch.sh find automatically numbers in sequences 2023-11-23 14:10:45 +01:00
img.png up doc 2023-11-23 11:23:07 +01:00
main.ts up remove previous zero by default 2024-02-09 10:18:05 +01:00
README.md création d'un script de batch 2024-02-07 22:30:01 +01:00
suite.sh création d'un script de batch 2024-02-07 22:30:01 +01:00

Couture de photos 360 faites à la goproFusion avec Hugin

Ce script utilise une config de hugin pour assembler des paires de photos prises à intervalle régulier avec la GoProFusion (et son GPS activé) et aucun autre modèle. Cette gopro n'est plus produite depuis 2019, les versions suivantes font l'assemblage dans la gopro et perdent de la vitesse de capture de ce fait. Pour des tutos sur la capture, faites un tour sur le forum des géocommuns.fr: https://forum.geocommuns.fr

Getting started

Prérequis:

  • Une gopro fusion qui n'est plus en production depuis 2020.
  • Les logiciels npm, ts-node, hugin. geovisio_cli (par python-pip) si vous voulez envoyer sur panoramax.

Générer les dossiers pour les chemins fixes, puis déposer vos photos gopro fusion dans l'INBOX_a_assembler. La gopro vous fournit des dossiers découpés en séquences dans les 2 cartes SD, sous le dossier DCIM. Copiez ces sous dossier dans l'INBOX_a_assembler. Groupez les photos front et back dans un seul dossier. Puis lancez le script find_min_max.ts avec ts-node. Le flux de travail est facilité par des dossiers décrivant l'avancement des actions sur les photos. Il est décrit dans la section ci après.

mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_a_assembler # là où on met nos séquences de gopro
mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_PTO_hugin # le dossier des fichiers PTO générés
mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_assemblage_fait # on déplace nos dossiers de séquences ici une fois traités
mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/hugin_assemblages_script_output # ici on ne change rien à la mano, c'est là que seront fabriqués les assemblages

mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/PANORAMAX_envois_en_cours # on met ici les séquences que l'on veut envoyer sur panoramax si on a une connec toute perrave de lenteur afin de ne pas se paumer
mkdir -p /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/PANORAMAX_envois_todo # ici on déplace les séquences que l'on veut envoyer mais pour lesquelles on a pas encore lancé de script geovisio

Une fois que vous avez vos dossiers de séquences, lancez le script pour trouver le min et le max des photos dans un dossier de séquence en particulier, ce script vous donnera les commandes à lancer pour assembler les photos. Les scripts d'assemblage prennent garde à ne pas lancer hugin si le fichier d'assemblage existe déjà.

Exemple

Exemple de commande pour assembler un dossier que l'on aurait nommé "123" dans INBOX_a_assembler après avoir cloné ce dépot dans un dossier /var/www/html/scripts

ts-node /var/www/html/scripts/hugin-gopro-fusion/main.ts --goproSubFolder=INBOX_a_assembler/123

bash /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_PTO_hugin/hugin_executor_from_16263_to_17261.sh 
 bash /var/www/html/scripts/hugin-gopro-fusion/exif_batch.sh 16263 17261 INBOX_a_assembler/vovo_dec_2023/130 
 

Cette commande vous donnera des fichiers assemblés dans le dossier hugin_assemblages_script_output situé ici par défaut:

/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/hugin_assemblages_script_output

Descriptions

Le script main.ts ne lit pas les photos, il va juste créer un fichier .pto pour hugin pour assembler chaque paire de photos GB*** et GF***, ainsi qu'un script bash afin de lancer l'assemblage en masse. La configuration de ce script pour Hugin est définie en dur dans le script. Vous pouvez faire des essais d'assemblages dans Hugin et sauvegarder un pto, puis copier sa configuration dans le script main.ts pour changer mes configurations.

  • Configurer le dossier rempli de photos dans main.ts
  • Renseigner le numéro minimum et maximum de la capture dans les variables de config mix et max. J'utilise un dossier fixe pour mes dépots de code, c'est pourquoi ce dossier ainsi que ceux des photos gopro sont inscrits en dur dans les scripts: /home/poule/encrypted/stockage-syncable/www/development/html/

Flux de travail

  • Capturer les séquences avec la gopro
  • Copier les dossiers depuis la gopro (2 disques StillImg/DCIM) par câble usb dans un dossier prédéfini: /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_a_assembler
  • Créer les fichiers d'assemblages pour chaque paire de photos
  • Faire l'assemblage (stitching) et l'attribution des infos GPS en masse dans un dossier défini /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/hugin_assemblages_script_output.
  • Déplacer les paires de photos dans un dossier qui indique le traitement réalisé /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_assemblage_fait
  • Retravailler les orientations de photos dans JOSM
  • Envoyer sur Panoramax les assemblages contenant les infos GPS

Installation

Vous aurez besoin de ts-node, node version stable (testé en version 20 sur Ubuntu), hugin.

exiftool, ts-node, minimist, hugin, et des captures photo faites avec la gopro fusion.

sudo apt install node hugin
cd /home/poule/encrypted/stockage-syncable/www/development/html/
git clone https://forge.chapril.org/tykayn/scripts && cd scripts && npm i
# on installe ts-node en global pour lancer les scripts depuis le dossier à proximité des photos. 
npm i -g ts-node

Le dossier de travail pour prendre les photos de gopro est par défaut /home/poule/encrypted/stockage-syncable/photos/imageries/gopro Les assemblages seront générés par défaut dans /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/hugin_assemblages_script_output

Lancer le script pour générer des fichiers pto, exemple pour les photos GF012000.JPG à GF013000.JPG.

ts-node /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/main.ts --goproMin=12000 --goproMax=13000 --folder=route_benerie

Ceci va générer un paquet de fichiers .pto dans le dossier output_pto ainsi qu'un fichier bash pour les exécuter en masse. Il faudra ensuite exécuter hugin_batch.sh pour faire les fusions. Ce script ne fera les assemblages que si le fichier de destination n'existe pas déjà. Ce qui permet de reprendre un assemblage de série même si votre ordinateur passe en veille en cours de route.

Une fois les assemblages réalisés

Il faut encore remettre les infos GPS dans les fichiers générés. Pour cela il existe le script exif_batch.sh.

Exemple pour assembler les infos exif depuis les images gopro front se trouvant dans INBOX_a_assembler/rouen_3 vers les assemblages du même numéro.

bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh 36077 38695 INBOX_a_assembler/rouen_3

Suivi des assemblages

On arrive vite a avoir de nombreux dossiers de capture. La gopro fait un nouveau dossier dès que l'on stoppe une capture. Pour se repérer dans les assemblages faits et restant à configurer, il vaut mieux s'aider d'une feuille de calcul. !feuille

ainsi qu'un script bash qui permet de faire tous les assemblages de photos stéréoscopiques. Il reste à lancer le script bash pour faire tous les assemblages à la suite et remplir les infos exif dans le dossier assemblé.

Envoi sur panoramax

Une fois les assemblages réalisés et les infos de GPS présentes, les infos d'orientation réalisées avec JOSM, il n'y a plus qu'à envoyer les assemblages sur panoramax avec geovisio_cli.

geovisio upload --api-url https://panoramax.openstreetmap.fr .