Photogrammétrie

De POLR
Révision datée du 11 juillet 2019 à 13:41 par Nicopa01 (discussion | contributions) (→‎OpenDroneMap : bonne pratiques ODM et DOCKER)
Sauter à la navigation Sauter à la recherche

DJI Mavic 2 Pro

Mode hyperlapse

Mode photo

exiftool filename.jpg

Paramètres pertinents:

Absolute Altitude
Relative Altitude 
GPS Altitude

Mode vidéo

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. Avant de les lire, il faut convertir ces fichiers, ce qui peut être fait avec l'application suivante:

https://airdata.com/

Compte et Logiciels

machine de traitement d'images Canot

adresse IP : 10.4.30.227

adresse DNS (à venir) : 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

Google

compte : polr.drone@gmail.com

mot de passe : polrismer

DJI

compte : polr.drone@gmail.com

mot de passe : polrismer2

Drone Harmony +

compte : polr.drone@gmail.com

mot de passe : polrismer


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.

Modèle 3D de la zone marginale de glace à Anse à capelan réalisée à partir de 44 images prisent avec un MavicPro1
orthomosaique de la zone marginale de glace à Anse à capelan réalisée à partir de 44 images prisent avec un MavicPro1

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 aeriennes que vous souhaitez traiter:

mkdir <mon_repertoire_ortho>
cd <mon_repertoire_ortho>
mkdir <images>

Creez votre première orthomosaique:

sudo docker run -it --rm --memory="6g"\
   -v $(pwd)/images:/code/images:Z \
   -v $(pwd)/odm_texturing:/code/odm_texturing:Z \
   -v $(pwd)/odm_orthophoto:/code/odm_orthophoto:Z \
   opendronemap/odm --fast-orthophoto

la synthaxe est docker run [arguments pour docker] opendronemap/odm [arguments pour ODM].

  1. Dans cet exemple, la commande docker run permet d’exécuter le programme opendronemap/odm. les argument de cette commande sont:
    • -it : permet de pouvoir interagir avec le programme
    • --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 <répertoire_local>:<répertoire_conteneur> : Permet de faire un lien entre un répertoire existant et l'emplacement "virtuel" dans le conteneur. Vous devez au minimum faire le lien vers le répertoire image/. les repertoires /code/odm_texturing et /code/odm_orthophoto sont les répertoires conteneurs où seront produits les résultats (respectivement, le modèle 3D .obj et l'orthomosaique en format Géotiff .tif ). Il est à noter que si vous ne faites pas les liens vers des répertoires locaux, tous les résultats contenu dans les répertoires conteneurs seront effacés directement une fois que le programme sera terminé à cause de la commande --rm

Tous les arguments de la commande docker run sont explicités ICI

  1. Dans cet exemple, nous donnons un seul argument pour ODM:
    • --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/

Utilisation du GUI make_GCP

Exemple:

sudo docker run -it --rm \
   -v $(pwd)/images:/code/images \
   -v $(pwd)/odm_orthophoto:/code/odm_orthophoto \
   -v $(pwd)/odm_texturing:/code/odm_texturing \
   opendronemap/odm --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

ODM

  • Placer les images brutes sur le disque d'archive /archive/PHOTOGRAMMETRIE/ et faire un lien symbolique ln -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 faciliter le traitement d'une grosse banque d'images, utiliser l'option --resize-to 2048 pour redimensionner les images lors du traitement
  • 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 ID
  • sudo docker stats affiche la RAM/CPU réservé pour les conteneurs et leurs pourcentages d'utilisation
  • sudo 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 et Ctl-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"

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