Photogrammétrie
DJI Mavic 2 Pro
Informations de vol
Les fichiers FlightRecord enregistrés sur le cellulaire qui a servi à piloter le drone contiennent beaucoup d'information concernant le vol et les paramètres d'image. Par exemple, il est possible d'obtenir l'altitude et la direction du drone à différents temps. Afin de pouvoir les lire, il faut convertir ces fichiers. Cela peut être fait avec l'application suivante:
https://airdata.com/
Les fichiers peuvent ensuite être ouverts dans Microsoft Excel, Matlab ou tout autre langage de programmation.
Lorsqu'on désire faire une orthomosaïque, il est important de sélectionner le mode intervallomètre sur le drone afin de prendre des photos à intervalle régulier plutôt que de filmer tout en se déplacant. Les photos contiennent des métadonnées (nommées informations EXIF) plus élaborées que celles des vidéos, notamment l'altitude et la position auxquelles la photo a été prise. Ces métadonnées sont ensuite utilisées par le logiciel Open Drone Map (ODM) pour reconstruire une orthomosaïque avec précision.
Liens utiles à la préparation d'un vol
Lien pour commander une carte aéronautique de NAV Canada
Outil NAV Drone pour demander des permissions de vol près d'un aérodrome
Lien pour commander le supplément de vol de NAV Canada
Lien pour consulter les METAR/TAF
Lien pour déterminer l’indice KP
Compte et Logiciels
machine de traitement d'images Canot
adresse IP : 10.4.30.227
adresse DNS : canot.uqar.ca
caractéristiques
CPU : Intel Xeon W-2145 (3.7GHz, 4.5GHz Turbo, 8C, 11MB Cache)
RAM : 64GB (4x16GB) 2666MHz
Mémoire : 1 TB SSD + 4TB HDD
carte graphique : NVIDIA GeForce GTX 1080
compte : polr.drone@gmail.com mot de passe : polrismer2
DJI
compte : polr.drone@gmail.com mot de passe : **********
Drone Harmony +
compte : polr.drone@gmail.com mot de passe : *********
accès à l'application sur le web : app.droneharmony.com
Possibilité de charger / enregistrer des zones/plans de vols préalablement fait depuis l'application mobile.
OpenDroneMap
(OpenDroneMap ) est un software Open Source qui permet de créer des orthomosaiques géoréférencées et des modèles 3D de terrain à partir d'images aériennes de drone.
Installation
ODM a originellement été développé pour la distribution Linux Ubuntu.16.04 (Xenial) mais peut facilement s'installer sur n'importe quelle distribution Linux,MAC ou Windows grâce à l'application (Docker).
Docker peut être installé sur à peu près n'importe quel distribution ou système d'exploitation. Pour connaître la marche à suivre pour une distribution particulière, référez-vous à: https://docs.docker.com/install/
Pour CentOS 7:
Dans un terminal:
su - yum install docker
Une fois l'installation terminée, vous devez démarrer Docker:
systemctl start docker
Assurez vous que Docker fonctionne correctement:
systemctl status docker docker run hello-world
Pour démarrer automatiquement Docker lors de chaque démarrage de votre ordinateur
systemctl enable docker.service
Vous êtes maintenant prêt à utiliser OpenDroneMap. En effet l'image du programme est directement disponible à partir des librairies Docker Hub (docker.io/opendronemap/odm
), vous n'avez donc en théorie pas besoin de télécharger le code source de ODM et créer vous même l'image dans Docker. Si toutefois vous desirez le faire afin de posséder une image comprenant tous les derniers ajouts et modifications du code (Beta), vous pouvez vous référer à la documentation https://docs.opendronemap.org/building.html
à propos de Docker:
Docker peut être assimilé à une sorte de machine virtuelle. Le but étant de faire fonctionner des programmes développés pour un système d'exploitation donné sur n'importe quel système. Docker créer un conteneur qui rassemble le code source ainsi que toutes les dépendances nécessaire pour créer une image du programme qui pourra fonctionner comme un programme standalone.
Utilisation
Bases
OpenDroneMap s'utilise en ligne de commande. Pour votre première utilisation, ouvrez un terminal et créez un répertoire de travail ainsi qu'un sous-répertoire images/
qui contiendra les images aériennes que vous souhaitez traiter:
mkdir <mon_repertoire_ortho> cd <mon_repertoire_ortho> mkdir images
Créez votre première orthomosaique:
sudo docker run -it --name BHH_5cm --rm --memory="15g"\ -v $(pwd)/:/datasets/code:Z \ opendronemap/odm --project-path /datasets --fast-orthophoto
la synthaxe est docker run [arguments pour docker] opendronemap/odm [arguments pour ODM]
.
- Dans cet exemple, la commande
docker run
permet d’exécuter le programmeopendronemap/odm
. les argument de cette commande sont:-it
: permet de pouvoir interagir avec le programme--name
: donne un nom au traitement-d
: fait tourner le script en arrière plan (optionnel)--rm
: efface tout le contenu du conteneur créé une fois la tâche effectuée.--memory
: Maximum de mémoire vive que peut utiliser docker. Il est important d'utiliser cette argument en fonction de la capacité de votre machine. En effet, docker va utiliser de base toute la mémoire nécessaire pour effectuer la tâche. Or le traitement d'image, notamment effectuer des modeles 3D nécessitent beaucoup de mémoire vive. Si vous traitez beaucoup d'images, votre RAM risque d'être saturée par le programme et votre ordinateur ne sera plus capable d'effectuer aucune tâche.-v $(pwd)/:/datasets/code:Z
: Permet de faire un lien entre le répertoire local et l'emplacement "virtuel" dans le conteneur. Cette synthaxe va faire tourner le script sur le disque contenant votre répertoire local (/archives
ou/home
par exemple).
Tous les arguments de la commande docker run
sont explicités ICI
- Dans cet exemple, nous donnons à ODM uniquement les arguments suivant :
--project-path /datasets
: ODM va créer l'arborescence des répertoires nécessaire pour le projet, dans le répertoire local. Il est important d'utiliser cette synthaxe pour être capable de relancer un traitement à mi-chemin (--rerun-from odm_meshing
par exemple) une fois la traitement initial achevé.--fast-orthophoto
: permet de réaliser une orthomosaique sans faire de modèle 3D. Les resultats sont généralement passablement moins bons mais le temps d'execution est nettement plus rapide.
Tous les arguments pour ODM sont explicités ICI
Ground Control points
Les points de contrôle sont des points de coordonnées connues (LON,LAT,ALT) qui permettent d'augmenter l'efficacité et la précision du traitement. Par exemple des cibles de couleurs visible sur les images dont on prend les coordonnées à l'aide d'un DGPS.
Pour utiliser des points de contrôle on utilisera l'argument:
--gcp <path>
où <path> est le chemin vers un fichier nommé gcp_list.txt
dans lequel les coordonnées des points de contrôle correspondent aux pixel (x,y) de l'image. Ce fichier devra être placé dans votre repertoire image/
Exemple:
sudo docker run -it --name BHH_5cm --rm --memory="15g"\ -v $(pwd)/:/datasets/code:Z \ opendronemap/odm --project-path /datasets --gcp /code/images/gcp_list.txt
Une bonne documentation pour l'utilisation des points de contrôle est disponible ICI.
Le fichier gcp_list.txt
doit avoir un formatage précis. Pour faciliter la création de ce fichier un GUI matlab est disponible: Fichier:Groundcontrolpoints.zip
Fonctionnement
Bonnes pratiques
photos
Renommer les images des drones avec fonction suivante :
exiftool '-filename<CreateDate' -d 'XXX_YYY_%Y%m%dT%H%M%S%Z.jpg' repertoire
ou XXX correspond au nom de la mission (BWO pour BicWin Observation) et YYY au type d'instrument/données (OPC pour Observatoire du Pic Champlain)
ODM
- Placer les images brutes sur le disque d'archive
/archive/PHOTOGRAMMETRIE/
et faire un lien symboliqueln -s
vers votre répertoire de travail - Pour de meilleurs résultats, enlever la distorsion des images brutes en utilisant le script python disponible dans
/archive/PHOTOGRAMMETRIE/CameraCalibration
, comme ci-dessous pour les images du Mavic 2 PRO :
python undistort.py --matrix /archive/PHOTOGRAMMETRIE/CameraCalibration/mavic/mav_matrix.txt --distortion /archive/PHOTOGRAMMETRIE/CameraCalibration/mavic/mav_distortion.txt "/path/to/images/"
- Les images prises par le drone sont volumineuses (~10 Mo), pour accélérer le traitement d'une grosse banque d'images, utiliser l'option
--feature-quality medium|low
. Cette dernière ajuste la qualité des structure identifiées par ODM, une qualité plus basse génère donc une orthophoto plus rapidement mais potentiellement avec plus d'erreurs. De base, la valeurhigh
est associée à cette option. - Pour générer un modèle numérique de terrain (MNT ou DTM), utiliser l'option
--dtm
. Les options--smrf-*
vont influencer la qualité/précision du MNT (cf ODM création de MNT)
Docker
- lancer docker avec l'option
-d
(daemon) pour faire tourner le conteneur en arrière-plan sudo docker ps
affiche les conteneurs actifs et leurs IDsudo docker stats
affiche la RAM/CPU réservé pour les conteneurs et leurs pourcentages d'utilisationsudo docker logs ID
affiche les dernières lignes de la sortie standard du conteneur (utile pour vérifier l'état d'avancement du conteneur)sudo docker attach ID
met le conteneur en avant-plan etCtl-p Ctl-q
le remet à l'arrière plan
Drone Harmony Plus
Drone Harmony Plus génére des plans de vols avec prises de vue pour la création d'orthophotographies et de modèles numériques de terrain. L'application permet de simuler un environnement de vol à l'aide de polygones, puis de créer des zones d'interêts à partir desquels seront générées des plans de vols. L'ensemble de ces étapes préliminaires peut être sauvegarder via l'application et synchroniser entre plusieurs appareils (connecté au compte polr.drone@gmail.com).
Afin d'éviter les interférences entre l'application DJI GO 4 et DH+, quitter DJI GO 4 pour que la connexion avec le drone soit optimale. Ne pas oublier de se connecter au compte DJI sur DH+ via le menu "drone --» connexion à DJI".
Plan de vol
Banque d'images pour orthophotographie : utilisation du mode "balayage"
Banque d'images pour modèle 3D : utilisation du mode "quadrillage"
ATTENTION ! vérifier que la vitesse d'obturation soit ≤ 1/100 (photos floues dans le cas contraire)
tips
- altitude > 100 m
- recouvrement ~80%
- désactiver l'option "prendre des images avec intervalles de temps"
- "réseau triple" pour modèle 3D
- vérifier le temps de vol théorique en cliquant sur le bouton ⓘ (en haut à droite) à la vitesse désirée (8 à 12 m/s)
- lors du lancement du plan de vol, choisir la prise de "photos aux points de controles, pas d'arrêt"
- Essayer le limiter le temps de vol théorique à 15~18min
Volumétrie
Estimation de l'épaisseur et du volume de glace
à l'aide de la calculatrice RASTER, on obtient la différence d'élévation (l'épaisseur de glace si elle est posée au fond) avec la formule suivante :
((raster bathy - raster glace) < 0) * (raster bathy - raster glace) * -1
Pour la différence en négatif, on utiliserait la formule suivante :
((raster bathy - raster glace) > 0) * ( raster bathy - raster glace)
Une fois le raster d'épaisseur obtenu, on peut extraire différentes statistiques sur une région d'intérêt. Pour cela, il faut :
- créer un shapefile (polygone) couvrant cette zone d'intérêt
- découper le raster selon le polygone (Raster --» Extraction --» Clip) en utilisant l'option de découpe par masque
- ce dernier raster peut être utiliser tel quel pour connaitre la répartition de l'épaisseur de glace dans la zone
- on peut sortir des statitiques de volumes en utilisant la commande Raster --» Statistique de zone. On obtient alors différentes statistiques du raster au sein du polygone, dont la somme des valeurs d'élévation. En multipliant la superficie d'un pixel par la somme des élévations, on obtient le volume total de gain/perte entre le raster bathymétrique et de la surface de glace.
Attention, cette méthode est valable uniquement quand la glace de mer est posée sur le fond. Une autre méthode permettant de supprimer la hauteur d'eau associé à la marée pourrait être mise en place. À SUIVRE !!