up new article et capture fusion

This commit is contained in:
Tykayn 2024-11-28 23:24:55 +01:00 committed by tykayn
parent 3c1ebbc735
commit dcc9d000fb
2 changed files with 101 additions and 1 deletions

View File

@ -21,9 +21,11 @@ date_string = now.strftime("%Y%m%d%H%M%S")
date_string_full = now.strftime("%Y-%m-%d %H:%M:%S")
# date_string_full = now.strftime("%Y%m%d%H%M%S")
slug = args.title.lower().replace(" ", "-")
slug = slug.replace("--", "-")
slug = slug.replace("--", "-")
file_abs_path = os.path.abspath(os.path.dirname(__file__))
filename = f"{file_abs_path}/sources/{args.blog_dir}/lang_{args.lang}/{date_string}_{args.blog_dir}_{slug}.org"
filename = f"{file_abs_path}/sources/{args.blog_dir}/lang_{args.lang}/{date_string}__{slug}.org"
import uuid

View File

@ -0,0 +1,98 @@
#+title: stitching-de-photo-gopro-fusion-pour-panoramax
#+post_ID:
#+post_slug: organisation-de-taches-orgmode
#+post_url: https://www.ciperbliss.com/2024/stitching-de-photo-gopro-fusion-pour-panoramax
#+post_title: Stitching de photo gopro fusion pour Panoramax
#+post_tags: panoramax, hugin, gopro, photo, 360
#+post_type: post
#+post_mime_types:
#+post_guid:
#+post_status: publish
#+post_date_published: <2024-11-28 22:32:41>
#+post_date_modified: <2024-11-28 22:32:41>
#+post_index_page_roam_id:
#+BLOG: cipherbliss_blog cipherbliss_blog
* Stitching de photo gopro fusion pour Panoramax
Aujourd'hui il a fait beau après des mois de pluies et d'inondations, c'était l'occasion de faire chauffer le vélo et la gopro fusion pour faire quelques 4500 captures 360, et de raconter un peu ce que j'ai pu développer pour participer à Panoramax avec tout ça.
Il existe des outils pour assembler des photos 360 en fisheye, notamment Hugin, ou des logiciels divers fournis par les producteurs de matériel de capture photo et vidéo 360. Le gopro studio? ça ne fonctionne que sous un spyware qui siphone mes carnets d'adresse et tout ce que j'écris. Vous savez, ce gros virus là. Ah oui, Windows ça s'appelle.
Bref.
Fusion2sphere ne faisant pas super bien le taf et laissant apparaître des bandes de luminosité pas ouf, j'ai demandé à Stéphane Péneau de Carto Cité ce qu'il en pensait l'an dernier. Il m'a conseillé de faire un script qui utilise une conversion sur des groupes de 2 photos avec une config pour Hugin qui corresponde à ma caméra. Je lui ai donc passé des photos prises avec ma gopro Fusion, il a fait des essais et m'a donné un fichier de config .pto. Merci énormément!
J'ai donc pu continuer d'élaborer autour de ça et au bout de plusieurs jours j'ai enfin suffisamment d'avancement pour pouvoir ratrapper les assemblages de mes photos GoPro Fusion et les envoyer sur Panoramax.
Voici les scripts:
https://forge.chapril.org/tykayn/scripts/hugin-gopro-fusion/
Y'a du bash et du node typescript.
C'était pas évident au début de savoir où j'en étais entre les choses à faire et le reste, et sans fibre à la maison, impossible d'envoyer des dizaines de gigas en un temps acceptable. J'ai fini par adopter un flux de travail qui permet de réduire le temps entre la capture et la publication des photos.
C'est pas aussi simple qu'en utilisant juste son smartphone avec Open Camera et de balancer les photos dans un lieu disposant de la fibre: le local de l'association Linux en Essonne que j'ai l'honneur de présider, ou un espace de coworking, ou encore plus rarement avec la fibre des locaux d'un client.
* Flux de capture photo
Pour faciliter le flux, j'ai utilisé un système qui décrit l'avancement des étapes dans des dossiers à chemin prédéfini, et fait quelques scripts.
Dans mon dossier de gestion d'imageries gopro j'ai ces dossiers qui correspondent chacun à une étape de traitement:
- 'à ne pas envoyer sur panoramax'
- FIXME_a_verifier_si_envoyé
- hugin_assemblages_script_output
- INBOX_assemblage_fait
- A_ORIENTER
- FIXME_pas_de_gps_data
- INBOX_a_assembler
- INBOX_PTO_hugin
- PANORAMAX_envois_todo
- PANORAMAX_envois_en_cours
- PANORAMAX_fini
** Préparation
- Avoir une gopro vide de photos et bien chargée.
- Prévoir un chemin et des zones à capturer.
- Faire un chemin plus ou moins prévu en évitant de repasser aux mêmes endroits. On met la gorpo sur le casque vélo et zou, on peut faire de la capture à une photo seconde pendant environ 2h50. Y'a de quoi faire énorméments de surface en vélo ou en trottinette avec ça, surtout qu'avec le 360 on a pas besoin de passer dans les deux sens pour voir tous les côtés.
** Extraction
- Extraire les photos en sortant les cartes SD sur mon laptop. ça va bien plus vite que par câble usb-c, WTF.
- Copier les photos dans ma tour, qui dispose de pas mal de place et d'un dossier dédié aux traitements de gorpo.
- Remettre les cartes SD dans la GoPro, et formater les deux cartes SD. Mettre en charge la gopro par usb-c.
** Traitement
- Supprimer les mauvaises photos.
- Lancer la commande pour créer un script d'assemblage pour un dossier contenant des photos nommées au format gopro fusion.
La génération de ce script est très rapide. Si j'ai plusieurs séquences comme souvent, je peux créer tous les scripts avant d'aller plus loin. Exemple pour une séquence "123":
#+begin_src shell
ts-node /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/main.ts --goproSubFolder="INBOX_a_assembler/123"
#+end_src
Le script ne va prendre que les photos BACK et FRONT JPG du dossier donné. J'ai fait en sorte de garder une base en chemin absolu et de garder "INBOX_a_assembler" à préciser pour mieux me rappeller de ce qui est cherché en recherchant la commande en arrière dans mon terminal avec `ctrl+r`.
- Stitching (couture des photos). Lancer un script qui va faire appel au logiciel Nona, un sous logiciel de Hugin, appelé par hugin_executor, pour faire les assemblages à la chaine. Ce script tolère les interruptions et ne fera les assemblages que si l'image assemblée est absente dans le dossier de conversion.
Cette étape faisant travailler à fond les processeurs de ma tour, j'ai eu parfois droit à des plantages et il était difficile de savoir où relancer le tout. Après quelques essais de détection c'était résolu.
Les assemblages rectangulaires vont dans le dossier "hugin_assemblages_script_output" avec un nom qui reprend le numéro de la photo BACK et FRONT originale. Par exemple: assemblage_010500.jpg
On est plutôt sur du 10 à 30 secondes par photo selon la complexité des photos avec ma tour. Je ne sais pas pourquoi ma carte graphique n'est pas plus utilisée que ça, mais bon, ça fait tranquillou le boulot.
- Une fois que la génération des assemblages est faite, ils sont déplacés dans un dossier "A_ORIENTER" et le dossier qui contient les photos fisheye sont déplacés dans "ASSEMBLAGE_FAIT".
** Vérification
Je mets les photos assemblées dans JOSM pour vérifier le parcours, et corriger les placements, les orientations.
Pour mieux voir sur les côtés de rue dans laquelle je me déplace, j'oriente les objectifs de la gopro sur les côtés, toujours de la même façon. ça permet de mieux lire les détails sur les façades.
Dans JOSM je fais une modification des informations exif pour que l'azimut, l'orientation de la photo soit tournée de -90°. Ça permet d'avoir la navigation qui va bien sur panoramax en passant d'une photo à la suivante. D'ailleurs astuce en passant, si vous utilisez la touche "page up" ou "page down" au clavier sur la visionneuse photo, ça gardera l'orientation.
Breffe, une fois les orientations et les corrections faites, on va pouvoir envoyer. Mais avec une bonne connexion hein sinon dans 3 ans on y est encore.
** Envois
- Je copie les photos assemblées sur mon ordi portable, dans un dossier `~/Téléchargements/FIBRELAND`.
- Aller dans un lieu fibré. (tsss)
- Pour un ensemble de photos, je me place dans le dossier et lance la commande d'envoi vers panoramax dans le terminal:
#+begin_src shell
panoramax --api-url https://panoramax.openstreetmap.fr .
#+end_src
- Après l'envoi de toutes les séquences et après avoir constaté que les terminaux ne donnent pas d'erreur, je déplace les dossiers envoyés dans `~/Téléchargements/FIBRELAND/fait/`.
** Rangement des dossiers photos traités
- Plus tard, je vérifie que les séquences sont bien présentes dans panoramax, à l'endroit où elels sont censé être.
- Si tout est bon, je peux enfin mettre les dossiers de séquences faites vers la tour dans `PANORAMAX_fini`. ouf!
Bonne capture et bonne visite là où il n'y a pas de routes!