wisescootering / infrareddrone

Aerial infrared photography
GNU Affero General Public License v3.0
15 stars 4 forks source link

Option pour limiter le nombre de paires d'images à traiter dans la version 1.3 #29

Closed AlainNeveu closed 1 year ago

AlainNeveu commented 1 year ago

Choisir les paires d’images à aligner dans la version 1.3 de IRdrone.

1) La classe class ShootPoint qui décrit un point Pt de prise de vue de la mission s’enrichie de trois nouveaux attributs :

self.alignment : cet attribut prend la valeur 1 si la paire d’image associé au shootPoint est retenue pour le process d’alignement et 0 sinon. Valeur par défaut : 0

self.bestSynchro : cet attribut prend la valeur 1 si la paire d’image associée au shootPoint possède un écart de synchronisation inférieur ou égal à : *`TimeLapseDJI ratioSynchro**. La valeur par défaut de **ratioSynchro** est 0.25 (25% de la période de time lapse de la caméra du drone DJI) Le mode opératoire conseillé lors des missions est de photographier en mode HYPERLASE avec **TimeLapseDJI` = 2 s ce qui correspond à un écart de synchronisation admissible de 0,5 s. A noter que la période minimale d’enregistrement du DJI en mode RAW est très légèrement supérieure à 2 s (~2,019 s). Mais les données Exif donnant la date de prise de vue sont à la seconde près. Ainsi toutes les 50 images environ l’intervalle déduit des dates contenues dans les données Exif est de 3 s au lieu de 2 s. D’autre part la période minimale d’enregistrement de la SJCam M20 en mode RAW+jpg est généralement inférieure à 3 s. Cependant cet enregistrement peut échouer. Dans ce cas l’image n’est pas enregistrée et l’intervalle entre image déduit des données Exif sera de 6 s. Pour ces raisons l’option 'best-synchro' revient à sélectionner _environ**_ une image sur trois.

Valeur par défaut : 0

self.bestMapping : cet attribut prend la valeur 1 si la paire d’image associée au shootPoint est retenue pour le mapping avec ODM. Les paires sont choisies parmi celles ayant un écart de synchronisation tel que self.bestSynchro =1. Entre deux points de prise de vue pour le mapping les images doivent avoir un taux de recouvrement dans le sens de déplacement du drone donné par la variable _overlapy. (valeur par défaut 0.75). A noter que si overlap_y =1 toutes les points de prise de vue qui sont bien synchronisés seront sélectionnés pour le mapping. A l’inverse il est déconseillé de choisir une valeur de recouvrement inférieure à 50%. Avec les paramètres par défaut et un vol à 100m au-dessus du sol cette option revient à ne traiter qu’une image sur 9 ou 10 environ. Valeur par défaut : 0

2) La sélection des images pour le processus d'alignement des paires VIS/NIR se fait par l’intermédiaire de la variable optionAlignment. Cette variable peut prendre les valeurs suivantes :

valeur par défaut: None Equivalent à ‘all-images’ 'all-images'
Tous les points de prise de vue Pt disponibles dans le dossier AerialPhotography de la mission sont retenus pour le processus d’alignement. La valeur de l’attribut Pt.alignment est fixée à 1.

'best-synchro'
Seuls sont retenus pour le processus d’alignement les points de prise de vue vérifiant le critère de synchronisation entre les images VIS et NIR. Les attributs Pt.alignment et Pt.bestSynchro sont fixés à 1.

'best-mapping'
Seuls sont retenus pour le processus d’alignement les points de prise de vue vérifiant le critère de mapping. Les attributs Pt.alignment, Pt.bestSynchro et Pt.bestMapping sont fixés à 1.

Pour une utilisation en ligne de commande on peut imaginer la syntaxe - - optionAlignment best-synchro

3) La sélection des images pour le mapping se fait par l’intermédiaire de la variable createMappingList. Cette variable logique peut prendre les valeurs suivantes :

False Le dossier de mapping n’est pas généré.

True Le dossier de mapping est généré. Il contient : Le fichier …/ camera/camera.IRdrone.json avec les paramètres de la caméra « virtuelle » qui aurait pris les images alignées (la focale prend en compte la calibration mais aussi le rognage des images).

Le dossier …/images qui contient un ensemble de quadruplets d’images (R | V | B | NIR) associée aux points de prise de vue dont l’attribut Pt.bestMapping est égal à 1. Ces images sont au format .tif . Elles sont numérotées par incrément de 1 à partir de 0001. 0001_1.tif <=> B 0001_2.tif <=> G 0001_3.tif <=> R 0001_1.tif <=> NIR On peut retrouver les références des images originales en lisant le fichier …/dir-mission /Flight Analytics /FlightSummary.xlsx
ou par programme en lisant …/dir-mission /Flight Analytics /MissionSummary.npy

4) La sélection des images nécessite de connaître la trajectoire du drone (X,Y,Z), les dates exactes de prise de vue et l’attitude des caméras (yaw, pitch, roll) avec la plus grande précision. C’est le préprocesseur d’IRDrone qui est chargé de réaliser ces calculs. Pour cela on considère l’intégralité des points de prise de vue de la mission. Toutes ces informations sont mises en mémoire dans la liste shootingPts des points de prise de vue. La sélection des images pour le processus d’alignement et pour le mapping est opérée à la toute fin du préprocesseur d’IRDrone.

5) L’analyse a posteriori de l’alignement entre les images VIS et NIR est disponible en fin de traitement. Les angles d’alignement Yaw et Pitch sont tracées en fonction du temps défini par la « time line » (ou temps vrai). Les valeurs théoriques sont disponibles pour tous les points de prise de vue. Les angles Yaw et Pitch du processus d’alignement grossier (Coarse process) sont disponibles seulement pour les images traitées en fonction du choix de l’option optionAlignment. Si l’option analysisAlignment= True les quatre courbes sont représentées sur le même graphique. Est aussi tracé la dispersion Pitch en fonction de Yaw. Les deux graph sont sauvegardés dans le dossier …/dir-mission/Flight Analytics Les options showAnglPlot= True et showDisperPlot= True permettent d’afficher ces graphiques à l’écran à la fin du traitement (valeur par défaut : False)

balthazarneveu commented 1 year ago

Added --selection option in run.py

Supports best-synchro, best-mapping & all by default.

Put best-mapping in run.bat for default operator to limit the amount of processed data!

Example of best-synchro

image

image