Micmac – Tutoriel de photogrammétrie sous windows

1  Introduction

MicMac est un logiciel libre de photogrammétrie, permettant de réaliser des nuages de points 3D à partir de photos. Il a été créé initiallement par Marc Pierrot Deseilligny de l’IGN, et continue a être développé actuellement, notamment dans le cadre de projets de recherche (Culture 3D Cloud, Monumentum). Sa licence permet une utilisation libre en échange d’une obligation de citation (voir les détails de la licence CeCILL-B sur le site de l’IGN).
Ce tutoriel fait pendant à un autre tutoriel pour MicMac adressé aux débutants et publié en 2013 sur le site Combien ça porte. Le tutoriel proposé ici s’adresse aux personnes qui connaissent déjà MicMac et l’utilisent sous windows. Il intègre l’utilisation des nouveaux outils intégrés à MicMac et qui en simplifient l’utilisation (création interactive des masques 2D et 3D avec SaisieMasqQt, création automatique du nuage de point avecC3DC), ou qui en étendent les fonctions (filtrage des points homologues avec Schnaps et HomolFilterMasq). Une partie importante de ce tutoriel est dédiée à la recherche de l’orientation des photos (options avancées avec Tapas et Campari).
Ce tutoriel utilisera un script batch pour automatiser les différentes étapes de MicMac sous windows. Ce script est prévu pour être adaptable à des situations non standards (photos mal calibrées, photos avec faible recouvrement).
Pour les utilisateurs débutants de MicMac, il sera probablement nécessaire de se faire la main dans un premier temps avec l’interface graphique disponible depuis 2015, et qui est fournie avec le package d’installation de MicMac. Les prérequis pour ce tutoriel sont :
  • une connaissance de base de MicMac et des principes de la photogrammétrie
  • une connaissance de base des languages de programmation (concept de variables, de paramètres des programmes en ligne de commande)
  • de la patience
Pour mémoire, les étapes principales pour la construction d’un nuage de points avec MicMac, et les outils utilisés sont :
  • calcul des points clés des photos : Tapioca
  • détermination de la calibration intrinsèque de l’appareil photo dans le réglage qui a servi à faire les photos à la base du nuage de point (étalonnage), et l’orientation relative des photos : Tapas, Martini, Campari
  • en option, tri des points homologues : HomolFilterMasq, Schnaps
  • corrélation entre une image maîtresse et ses images filles pour créer une carte de profondeur : Malt, AperoChImSecMM
  • création d’un nuage de points et sa coloration : Nuage2Ply

2  Rappels sur les prises de vues

Avant de commencer avec le vif du sujet, rappelons que les prises de vues doivent répondre à des règles précises pour faciliter le traitement des images avec MicMac. Si ces règles ne sont pas respectées, il devient plus difficile (mais pas impossible) d’obtenir des résultats.
Il est préférable de fixer une fois pour toute les paramètres suivants au début de la séance de prise de vues :
  • longueur focale (ou éventuellement ne travailler qu’avec 2 ou 3 longueurs focales pour éviter les difficultés pour la calibration lors de l’utilisation de Tapas, c’est-à-dire la calibration et orientation des images)
  • mise au point (désactiver autofocus). Attention, certains appareils proposent une mise au point automatique « de sécurité », qui se déclenche avant la prise de vue pour régler plus finement la mise au point manuelle si besoin est. Il faut désactiver cette fonctionnalité si elle existe sur l’appareil.
  • désactivation de la stabilisation
  • balance des blancs (ne pas utiliser automatique)
Lors de la séance de prises de vues, il faut jouer entre l’ouverture du diaphragme, le temps de pose, et la sensibilité ISO du capteur pour avoir des photos nettes, bien exposées, sans bruit (si la sensibilité ISO est trop élevée) avec une profondeur de champ adaptée au sujet étudié.
Concernant l’exposition, il est possible de surexposer le ciel qui n’est pas utile (et même un obstable) pour la génération du nuage de point.
Il est généralement recommandé dans les guides concernant la photogrammétrie d’utiliser un appareil numérique reflex, mais il est en réalité possible d’utiliser un appareil compact, du moment que les photos sont nettes et bien exposées. Il est même possible désormais d’utiliser des photos prises sans controle du focus (avec autofocus enclenché). Dans ce dernier cas le traitement des photos sera un peu plus complexe (calibrage image par image présenté ci-dessous).
Concernant le format des photos, il faudrait travailler en toute rigueur avec des photos au format raw, ou aucune perte d’information (compression, nombres de couleurs) n’est à craindre. Cependant pour un usage amateur de MicMac, les photos au format jpg permettent d’obtenir des résultats déjà satisfaisants.

3  Installation

Le fichier zip contenant une version compilée (prête à l’emploi) des binaires Windows est disponible sur la page de l’IGN consacrée à MicMac. Le programme d’installation de micmac créera le dossier à la racine de votre disque dur (du type C:/MicMac64bits).
Il vous faudra ensuite installer les packages suivants s’ils n’existent pas déjà sur votre ordinateur : Le fichier C:/micmac/LISEZMOI contient des indications complémentaires relatives à l’installation si les indications précédentes étaient insuffisantes.
Note pour utilisateurs avancés : il est possible d’utiliser pour un même projet plusieurs versions différentes de MicMac sur un même PC, en indiquant les liens vers le répertoire bin de chaque version (ligne set BIN_DIR=C:/MicMac64bits6706/bin dans le script ci-dessous).
Dernier avertissement : la version windows de MicMac est moins stable que celle sous Linux, et il est conseillé par les créateurs du logiciels d’utiliser Linux. Si malgré tout vous ne pouvez pas utiliser Linux, ce tutoriel est fait pour vous.

4  Script batch pour MicMac sous windows

4.1  Préalable

L’ensemble des commandes de MicMac seront executés depuis un fichier batch, contenant le script des commandes. Ce fichier est téléchargeable ici, et son contenu est donné également à la fin de l’article. Il a été développé pour la version x64 rev6706 de MicMac (2016).
Copier le fichier dans un dossier C:/micmac_data/nom_projet1 et renommer son extension de txt en bat. Copier l’ensemble des photos dans ce même répertoire. La première partie du fichier correspond aux options à modifier pour indiquer les répertoires d’installation de MicMac et Meshlab (si disponible), la description du nom des images, etc. Le reste du script est donné par phases, que nous allons détailler une à une dans la suite.
Pour pouvoir facilement activer ou désactiver certaines phases, des switchs sont intégrés au script. Par exemple, utiliser set DoPhase1=true pour activer la phase 1 (recherche des points clés). Lorsque le script sera relancé (par exemple lorsque vous rechercherez une meilleure orientation), utiliser set DoPhase1=false pour ne pas relancer à nouveau le programme de la phase 1.
On rappelle les points principaux pour l’utilisation du fichier batch :
  • les lignes de commentaire commencent par ::, les commentaires en fin de ligne commencent pas & REM
  • l’opérateur set permet de définir les variables. Chaque variable est appelée par son nom entouré par %, ou par ! à l’intérieur des boucles for et if
  • ne pas utiliser de exit pour sortir prématurément du script, car cela empécherait la bonne lecture des fonctions dos prédéfinies en pied de page du script. Utiliser la commande pause & goto:eof à la place de exit.
  • la commande dos help macommande vous donnera sur la console les informations relatives à la commande dos macommande (pour l’aide avec les commandes MicMac taper mm3d macommande help)
  • on évitera les accents et les espaces dans les noms de répertoire et de fichier
  • on évitera de sauter ou de commenter des lignes au milieu d’un bloc de commande délimité par les parenthèses
Les quatre phases de calcul contenues dans le script sont décrites maintenant.

4.2  Phase 1 – Recherche des points clés et des correspondances

Le programme Tapioca recherche les points-clés (tie points avec algorithme Sift) puis les correspondances entre ces points-clés, également appelés points homologues (ou matches). Ces informations sont stockées dans le répertoire Homol et réutilisées dans la suite pour trouver l’orientation des photos.
Tapioca est lancé dans le script avec l’option MulScale : la recherche des correspondances est faite sur des images réduites à 300 pixels (rapide), puis à 800 pixels pour les couples d’images qui présentes des correspondances à 300 pixels. D’autres possibilités sont présentées dans les variantes plus loin dans le tutoriel. Attention utiliser une résolution élevée est couteux en temps de calcul.
Il est peut-être possible d’améliorer la précision de la recherche de l’orientation, en remplaçant la valeur 1000 (qui correspond à la plus grande dimension des images) par une valeur plus élevée, et en produisant ainsi plus de points-clés et de correspondances. Cependant la valeur la plus souvent utilisé dans les exemples de la documentation de MicMac est autour de 1000 (800 – 1500). Peut-être n’y-a-t-il pas d’intérêt particulier à augmenter cette valeur. Dans un article consacré à MicMac, Friedt indique à ce sujet 1: ,,Il semble accepté que la plus haute résolution soit de l’ordre du tiers à la moitié de la résolution des photographies ».
Ajouter paramètre Detect=digeo à Tapioca pour utiliser l’algorithme digeo au lieu de sift pour la recherche des points homologues. La documentation de MicMac indique que digeo est plus rapide, mais a été moins testé que sift qui est utilisé par défaut.
Les dossiers créés par Tapioca lors de cette phase sont : Tmp-MM-Dir qui contient notamment informations tirées de l’exif des photos, Pastis qui contient les informations des points-clés, Homol et Homol_SRes (si utilisation MulScale) pour le stockage des correspondances (points homologues).

4.3  Phase 2 – Calibration intrinsèque des objectifs et Orientation relative des images

Pour faciliter l’explication de la suite, nous supposons que toutes les photos ont été prises avec un seul appareil photo (Canon_PowerShot_S110), deux longueurs focales (ou niveau de zoom) que nous appelons par simplicité objectifs dans la suite : un objectif 5.2mm et un objectif 10.8mm. Pour chaque objectif une seule et même mise au point (focus) a été utilisé lors des prises de vues. Par conséquent toutes les photos prises avec un objectif partagent (théoriquement) les mêmes caractéristiques.
L’appel à la fonction Tapas sur l’ensemble des photos va rechercher :
  • les paramètres de l’objectif 5.2mm