Nous annonçons la création de BESTREMA, un bureau d'études structure spécialisé dans les monuments anciens. Un des objectifs de cette société est de participer à la diffusion des connaissances sur la structure des monuments anciens auprès du grand public.

Les nouveaux articles que nous écrirons seront désormais mis en ligne sur bestrema.fr. Les anciens articles qui ont déjà été publiés ces deux dernières années resteront à votre disposition sur Combien ça porte. Nous vous remercions d'avoir suivi ce blog, et nous remercions tout particulièrement les lecteurs qui ont partagés avec nous leurs observations sur les structures des monuments anciens.


27 octobre 2013

MicMac - tutoriel de photogrammétrie sous Windows


Mise à jour septembre 2016 : une interface graphique est maintenant disponible pour MicMac (fournie avec le fichier d'installation de MicMac pour la version windows, voir le répertoire InterfaceCEREMA). Cette interface graphique facilitera l'accès à MicMac aux débutants.

Un nouveau tutoriel pour MicMac est proposé sur le site bestrema.fr. Ce tutoriel permettra aux utilisateurs non débutants de gérer les problèmes de divergence, d'utiliser des photos prises avec autofocus, et d'automatiser leur utilisation de MicMac sous windows.


1  Introduction

Après nous être intéressé dans un précédent article à VisualSFM, nous présentons aujourd'hui un autre logiciel de photogrammétrie, MicMac, permettant lui aussi de réaliser des nuages de points à partir de photos. Ce logiciel a été créé par Marc Pierrot Deseilligny de l'IGN, et 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). Il est plus difficile d'accès que VisualSFM, mais de récentes mises à jour ont grandement simplifié son utilisation sous windows, bien qu'il n'existe pas encore à notre connaissance d'interface graphique fonctionnant sous windows.
Ce tutoriel s'adresse aux personnes ayant un minimum de connaissances en photographie, mais pas de connaissance particulière en photogrammétrie. Il expose les éléments minimaux à connaître pour pouvoir utiliser MicMac.
MicMac est un logiciel qui peut être paramétré de façon très fine pour s'adapter à toutes les situations. C'est cette polyvalence qui fait sa force, mais qui le rend également d'accès complexe aux débutants. La présentation que nous faisons ci-dessous favorisera la simplicité et la rapidité de calcul (au détriment de la précision), de manière à permettre à des utilisateurs débutants d'obtenir des premiers résultats sans trop d'efforts.
Nous attirons tout de suite l'attention du lecteur sur la nécessité d'un certain nombre de prérequis pour l'utilisation de MicMac :
  • connaître les principes de base du fonctionnement d'un appareil photo (longueur focale, ouverture, mise au point, exposition etc.).
  • posséder un appareil photo dont on peut régler manuellement au moins la longueur focale, l'ouverture, et la mise au point - sinon il est toujours possible d'utiliser Micmac avec les exemples d'images fournis par l'IGN : voir le Boudha dataset sur la page de téléchargement de l'IGN.
  • savoir retoucher les images avec un logiciel de dessin (du type Gimp ou Photoshop).
  • connaître la base des expressions régulières pour la manipulation des chaînes de caractères
  • savoir manipuler les fichiers textes et renommer leurs extensions.
  • être patient - si vous n'avez aucune expérience en photogrammétrie il vous faudra probablement quelques heures avant d'obtenir vos premiers résultats probants.
Si ces prérequis vous découragent, ne baissez pas les bras, vous pouvez commencer à vous intéresser à la photogrammétrie à l'aide d'un autre logiciel plus facile d'accès (offrant peut-être moins de possibilités) et avec une interface graphique (voir notre tutoriel sur VisualSFM).
Rappelons le but principal de notre article, qui est d'offrir aux débutants une porte d'entrée à l'utilisation de MicMac sur windows à travers un exemple, et de permettre au lecteur d'acquérir quelques connaissances de base nécessaires pour aborder les documentations existantes sur MicMac. Ce tutoriel est donc avant tout un outil de vulgarisation pour les débutants en photogrammétrie ou avec MicMac.

2  Notions de bases

Les étapes principales pour la construction d'un nuage de points sont :
  • la 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)
  • l'orientation générale des photos
  • la corrélation entre une image maîtresse et ses images filles.
L'ensemble de ces concepts sont définis dans le protocole pour prises de vue d'éléments architecturaux (page 5 à 11) du laboratoire MAP/GAMSAU du CNRS. Nous conseillons vivement la lecture de ce protocole avant de poursuivre cet article, car il définit clairement les concepts de photogrammétrie essentiels pour l'utilisation de MicMac.
Nous allons voir que MicMac réalise successivement cet étalonnage, orientation et corrélation, et nous reparlerons donc de ces étapes dans la suite.

3  Prises de vues

La prise des photos doit répondre à des règles précises. Contrairement à VisualSFM qui offre une certaine souplesse dans le choix des photos, il ne sera pas possible d'obtenir de résultats probants avec MicMac si les règles de bases pour les prises de vues détaillées ci-dessous ne sont pas respectées.

3.1  Appareil photo

La précision des photos conditionne la précision du nuage de point, et la qualité de l'appareil photo a donc une incidence sur la qualité du nuage de point. Il est généralement recommandé dans les guides d'utiliser un appareil numérique reflex, mais il est en réalité également possible d'utiliser un appareil compact, du moment que ce dernier permette de fixer les paramètres ci-dessous, et que les photos soient nettes et bien exposées.
Il est obligatoire d'avoir le contrôle sur les paramètres suivants lors de la réalisation des prises de vues :
  • longueur focale
  • ouverture du diaphragme
  • mise au point
  • balance des blancs
  • désactivation de la stabilisation

3.2  Réglage pour les prises de vues

Nous proposons les réglages suivants lors des prises de vues. A chaque fois qu'un paramètre a été fixé, il ne faut plus y toucher tant que l'on a pas fini de réaliser le groupe de photo qui servira de base au travail.
  1. Passer l'appareil photo en mode manuel.
  2. Choisir comme format JPG1, en choisissant la plus grande résolution possible.
  3. Désactiver la stabilisation.
  4. Fixer la balance des blancs.
  5. Fixer la longueur focale (c'est à dire le niveau de zoom).
  6. Réduire l'ouverture du diaphragme au minimum (ce qui correspond à un nombre d'ouverture élevé) de manière à avoir une profondeur de champ maximale.
  7. Faire la mise au point automatique sur l'objet, puis passer l'appareil en mise au point manuelle (et ne plus y toucher). 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, car elle modifie un des paramètres essentiel de l'appareil à chaque prise de vue.
Les paramètres précédents étant fixés, il ne reste plus qu'à régler le temps de pose et la sensibilité ISO du capteur de manière à obtenir une photo bien éclairée et nette. Ces paramètres peuvent varier pour chaque photo si nécessaire.
  • Régler le temps de pose à 1/100e, ou plus si le niveau de zoom est élevé, de manière à avoir une photo nette
  • Régler la sensibilité ISO du capteur de manière à avoir un bon contraste sur les zones d'intérêt de l'image (inutile de tenir compte du ciel par exemple, cette zone peut être surexposée).
D'autres choix de réglages sont possibles. Par exemple si l'objet est suffisamment plan, il est possible d'augmenter l'ouverture du diaphragme, ce qui diminue la profondeur de champ (dont nous n'avons pas besoin si l'objet est suffisamment plan), mais en contre partie permet d'avoir plus de lumière et donc de diminuer le temps de pose (pour avoir des photos plus nettes) ou la sensibilité ISO du capteur (pour diminuer le bruit).
Il faudra dans tous les cas que les photos soient :
  • nettes dans les zones d'intérêt
  • correctement exposées dans les zones d'intérêt
  • sans objets changeant à chaque prises de vues, comme la végétation, des piétons ou voiture en mouvement, des vitres avec reflets, etc.
  • prises avec le même jeu de paramètres. Il est possible de faire plusieurs groupes de photo, chacune avec un jeu de paramètres distinct, mais le traitement est alors plus compliqué et sort du cadre de cet article d'introduction (voir l'exemple du mur Saint-Martin dans la documentation de MicMac).
Pour terminer sur les prises de vues, les documentations et sites suivants proposent des protocoles et conseils pour réussir cette étape :

3.3  Création des masques de corrélation

Les masques sont des fichiers images en noir et blanc au format tif. Ils permettent de ne conserver que les zones intéressantes sur les images maîtresses. Voici un protocole possible pour créer un masque en utilisant GIMP (la démarche est similaire avec Photoshop) :
  • Ouvrir l'image maîtresse MonImage.JPG avec GIMP
  • Peindre en noir les zones à exclure, et en blanc les zones à conserver
  • Convertir l'image en mode noir et blanc, même si les seules couleurs à l'écran sont déjà le noir et blanc : Image / Mode / Couleurs indexées / Utiliser la palette noir & blanc (1-bit)
  • Enregistrer l'image ainsi modifiée avec le nom MonImage_Masq.tif au format TIF, en choisissant la compression Aucune
Ce masque doit être accompagné d'un fichier XML. Les fichiers XML sont de simples fichiers textes avec l'extension XML au lieu de l'extension TXT. Pour créer ce fichier :
  • Créer un nouveau fichier texte, portant le nom MonImage_Masq.txt
  • Ouvrez le fichier, et copier coller le texte ci-dessous dans ce fichier. Le code proposé ici a été posté sur le forum MicMac par Luc Girod.
  • Modifier le nom du masque (MonImage_Masq.tif par défaut ci-dessous) et de la taille de l'image (4000 3000 par défaut ci-dessous), avec vos propres paramètres
  • Enregistrer et fermer le fichier
  • Modifier l'extension du ficher de txt en xml
<?xml version="1.0" ?>
<FileOriMnt>
     <NameFileMnt>MonImage_Masq.tif</NameFileMnt>
     <NombrePixels>4000 3000</NombrePixels>
     <OriginePlani>0 0</OriginePlani>
     <ResolutionPlani>1 1</ResolutionPlani>
     <OrigineAlti>0</OrigineAlti>
     <ResolutionAlti>1</ResolutionAlti>
     <Geometrie>eGeomMNTFaisceauIm1PrCh_Px1D</Geometrie>
</FileOriMnt>


4  Utilisation de MicMac sous windows


4.1  Installation

Téléchargez le fichier zip binaires Windows x86 32bits sur la page de l'IGN consacrée à MicMac. Dézippez le répertoire micmac contenu dans le fichier zip à la racine de votre disque dur. 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.

4.2  Répertoire de travail

L'ensemble des images sur lesquels vous travaillez doivent ce trouver dans un même répertoire, de préférence proche de la racine du disque et avec un nom simple (sans espaces ni accent) pour éviter les erreurs. Nous utilisons le répertoire C:/micmac_data dans la suite. Les fichiers masques, dont nous parlons ci-dessus, doivent se trouver dans ce même répertoire. Les résultats des calculs (images de corrélation, nuages de points etc.) se trouveront dans le dossier Resultats que nous allons définir ci-dessous.

4.3  Déclaration de l'appareil photo

Il faut commencer par s'assurer que votre appareil photo est connu par MicMac. Si vous ne trouvez pas le nom de votre appareil photo dans le fichier : C:/micmac/include/XML_MicMac/DicoCamera.xml, il faut alors créer le répertoire puis le fichier C:/micmac/include/XML_User/DicoCamera.xml, et y copier le texte suivant après l'avoir adapté à votre appareil photo :
<?xml version="1.0" ?>
<MMCameraDataBase>
 <CameraEntry>
  <Name> Canon PowerShot S110 </Name>  <!--  Nom de votre appareil photo -->
  <SzCaptMm>    5.58  7.44  </SzCaptMm> <!-- Taille du capteur en mm -->
  <ShortName> XXXX </ShortName>  <!--  non utilisé par ce tutoriel -->
 </CameraEntry>
</MMCameraDataBase>


4.4  Exécution de MicMac

Fichier de commandes dos   Après ces longs préalables, nous arrivons au cœur du sujet : la création du nuage de point.
Micmac est en réalité composé d'une succession de programmes qui réalisent les opérations requises : Tapioca, Tapas, AperiCloud, Malt, Nuage2Ply etc. Micmac est lui-même un de ces programmes. Il est lancé par Malt, et il n'apparaîtra pas nommément dans nos exemples, mais est au cœur du processus.
Il faut donc exécuter ces programmes les uns après les autres, en leur donnant à chacun les paramètres nécessaires. Le lancement des programmes est réalisé au moyen d'un fichier de commande dos.
Nous proposons ci-dessous un processus de base. Nous allons commenter les différentes phases dans la suite. Pour utiliser cet exemple, copiez le texte ci-dessous dans un fichier texte, enregistrez et fermez le fichier, puis modifiez son extension en BAT au lieu de TXT. Enfin, doublez cliquez sur ce fichier pour lancer le processus. Une fenêtre de commande apparaîtra avec les messages d'avancement des différents programmes.
:: Définition des options
:: ----------------------
:: Répertoire des EXE de MicMac
set BIN_DIR=C:/micmac/bin
:: Répertoire de travail où se trouvent les photos
set WORKING_DIR=C:/micmac_data/CCP
:: Sous-répertoire où seront enregistrés les résultats
set RESULT_SUBDIR=Resultats
:: Noms des images pour la création du nuage de point, utilisant une expression régulière
set IMG_NAMES=POR_[0-9]{4}.JPG
:: Noms des images pour la calibration intrinsèque de l'appareil, pour les réglages correspondant à ce jeu de photos
set CAL_NAMES=%IMG_NAMES%
:: Noms de l'image maîtresse
set IMG_MASTER=POR_0127.JPG
set IMG_MASTERZoom=POR_0127Zoom4.JPG
:: Phase 1 - recherche des correspondances
:: ----------------------
"%BIN_DIR%/mm3d" Tapioca All "%WORKING_DIR%/%CAL_NAMES%" 1000
"%BIN_DIR%/mm3d" Tapioca MulScale "%WORKING_DIR%/%IMG_NAMES%" 300 1000
:: première recherche avec les images réduite à 300pixels, puis recherche complète avec image réduite à 1000pixels
:: Phase 2 - Calibration, pour trouver les réglages intrinsèques de l'appareil photo correspondant à ce jeu de photos
:: ----------------------
"%BIN_DIR%/mm3d" Tapas RadialExtended "%WORKING_DIR%/%CAL_NAMES%" Out=Cal1
:: Phase 3 - Orientation externe des images les unes par rapport aux autres, en connaissant déjà la calibration intrinsèque
:: ----------------------
"%BIN_DIR%/mm3d" Tapas AutoCal "%WORKING_DIR%/%IMG_NAMES%" InCal=Cal1 Out=Ori1
:: Phase 4 - Création du nuage de point grossier, avec position des prises de vues - pour vérification du bon déroulement des 3 premières phases
:: ----------------------
"%BIN_DIR%/mm3d" AperiCloud "%WORKING_DIR%/%IMG_NAMES%" Ori1 Out=PosCams.ply
:: Phase 5 - Calcul de la carte de profondeur
:: ----------------------
"%BIN_DIR%/mm3d" Malt GeomImage "%WORKING_DIR%/%IMG_NAMES%" Ori1 "Master=%IMG_MASTER%" "DirMEC=%RESULT_SUBDIR%" UseTA=true ZoomF=4 ZoomI=32 Purge=true AffineLast=false
:: Phase 6 - Exportation et coloration du nuage de point dense (Dense point cloud)
:: ----------------------
"%BIN_DIR%/mm3d" Nuage2Ply "%WORKING_DIR%/%RESULT_SUBDIR%/NuageImProf_STD-MALT_Etape_6.xml" Attr="%WORKING_DIR%/%IMG_MASTERZoom%"
:: Pour voir les éventuels messages d'erreur avant disparition de la fenêtre commande :
pause

Définition des options   Cette première partie définit des paramètres qui sont utilisées de façon répétés par les différentes phases. On peut voir sur ce premier exemple très simple que nous utilisons les photos du site de corrélation également pour la calibration intrinsèque de l'appareil photo.
Phase 1 - Recherche des correspondances   Le programme Tapioca recherche les points-clés puis les correspondances, c'est à dire les points qui se ressemblent sur les photos. Ces informations sont stockées dans le répertoire Homol et réutilisées dans la suite. Nous réalisons cette recherche à la fois pour les photos de calibration, et sur les photos du site de corrélation (Dans ce premier exemple comme nous n'utilisons pas de photos de calibration particulière, on pourrait supprimer une des deux lignes - nous la conservons par généralité, car elle sera utile pour le second exemple).
Phase 2 - Calibration intrinsèque   A partir de ces correspondances, le programme Tapas calcule le paramétrage intrinsèque de l'appareil photo utilisé lors de la prise de vues. Ce paramétrage, qui comprend la longueur focale, la position du centre optique, des informations sur la distorsion de l'image, etc. est stocké dans le dossier Ori-Cal1 du répertoire de travail.
Phase 3 - Orientation externe   Les paramètres intrinsèques des photos de calibration doivent être les mêmes que celles des photos du site de corrélation. Connaissant cette calibration, le programme Tapas calcule l'orientation externe des photos, c'est à dire le point de leur prise de vue et la direction dans laquelle cette dernière est prise. Lors de ce processus, les positions dans l'espace des points-clés mentionnés ci-dessus sont calculées.
Phase 4 - Création du nuage de point grossier   Les résultats de la phase 3 peuvent être transformés en un nuage de point avec représentation des positions des caméras, grâce au programme AperiCloud. Le fichier PosCams.ply peut être ouvert avec Meshlab (voir un exemple sur la figure 4).
Phase 5 - Calcul de la carte de profondeur   Cette avant-dernière phase est la plus longue. Le programme Malt2 cherche pour chaque pixel de l'image maîtresse qui n'est pas masqué par le masque défini plus haut le pixel équivalent sur les images filles, et en déduit la profondeur de ce pixel, c'est à dire son éloignement par rapport à la position de la photo maîtresse (Le processus réel est bien plus complexe que cette description sommaire).
Il faut noter qu'une des particularités de MicMac est de réaliser ce calcul de la position des pixels de la photo maîtresse plusieurs fois, à plusieurs échelles : sur les images 32 fois plus petites, puis 16 fois plus petites, puis 8 fois, 4 fois, 2 fois plus petite, et enfin à la taille initiale. Il compare les résultats à chaque étape pour les améliorer (nous avons donc choisi le terme de phase ci-dessus pour ne pas confondre ces phases avec les étapes de Malt). Le zoom de la première étape est défini dans les paramètres de Malt par l'attribut ZoomI=32 ici, et au lieu de descendre jusqu'à 1, nous nous arrêtons dans cet exemple à un zoom final ZoomF=4 (image finale 4 fois plus petite que l'image d'origine), afin de diminuer le temps de calcul (au détriment évidemment de la précision et de la densité du nuage de point obtenu).
Phase 6 - Exportation et coloration du nuage de point dense   La dernière phase est l'exportation du nuage de point, et la coloration de ce dernier. Il semble que les couleurs de l'image maîtresse sont projetées sur le nuage. Il faut donc créer une copie de l'image maitresse (IMG_MASTERZoom), et redimensionner cette copie pour que sa taille corresponde au ZoomF de la dernière étape de Malt. C'est pourquoi nous utilisons la variable IMG_MASTERZoom et non IMG_MASTER comme attribut de Attr dans les paramètres du programme Nuage2Ply.

4.5  Vérification de l'avancement des calculs

Les indications qui apparaissent en ligne de commande permettent de suivre l'évolution des calculs. Cependant la phase 5 est particulièrement longue : elle est divisée en plusieurs étapes qui correspondent la plupart du temps à un niveau de zoom chacune. Par exemple le texte BEGIN ETAPE, , Num=5, DeZoomTer=4, DeZoomIm=4 qui apparaît sur la console indique que nous sommes à l'étape 5, avec le zoom 4. Ce message peut apparaître plusieurs fois si Malt traite l'image maîtresse par bloc. Comme les images de corrélation sont construites progressivement, il est possible de se donner une idée de l'avancement en affichant ces images. Nous donnons ci-dessous l'image de corrélation d'un exemple à mi-parcours, et l'image de corrélation lorsque l'étape est terminée. Attention cependant, il y a peut-être des risques de bloquer cette image en écriture en l'affichant, ce pourrait faire échouer les calculs. L'utilisation du logiciel Irfanview pour l'affichage ne semble pas poser ce problème.

Image de corrélation à mi-parcours des blocs par Micmac Image finale de corrélation par Micmac
Fig 1: Images de corrélation

4.6  Résultats

Après la fin de l'exécution de l'ensemble des programmes, les résultats du processus se trouvent dans le sous-répertoire choisi dans les options ci-dessus (Resultats dans le cas présent). On trouvera dans ce répertoire :
  • les images de corrélation pour chaque étape Correl_STD-MALT_Num_X.tif avec X le numéro de l'étape
  • les cartes de profondeur en 16bits pour chaque étape Z_NumX_DeZoomY_STD-MALT.tif avec X le numéro de l'étape et Y le niveau de zoom de l'étape. Ces cartes de profondeur doivent faire l'objet d'un traitement pour être affichées (voir ci-dessous)
  • le fichier du nuage de point NuageImProf_STD-MALT_Etape_X avec X le numéro de l'étape pour lequel le nuage de point a été calculé
  • le fichier récapitulatif des paramètres choisis pour le programme Malt : param_STD-MALT_Ori.xml

4.7  Améliorations du processus

L'exemple de processus ci-dessus a été choisie pour sa simplicité et sa rapidité d'exécution. Pour obtenir un nuage de point plus précis et afficher les cartes de profondeur, il est possible d'apporter les modifications suivantes.
Options   Nous n'avons pas utilisé dans le premier exemple les photos du site de calibrage, et c'est pourquoi les variables CAL_NAMES et IMG_NAMES étaient égales. L'étape 3 n'était donc pas utile. Si nous utilisons des photos de calibrage, il faut alors définir ces dernières avec la variable CAL_NAMES.
Phase 1 - Tapioca   Il est peut-être possible d'améliorer la précision de la recherche des points-clés et des correspondances, en remplaçant la valeur 1000 (qui correspond à la plus grande dimension des images) par une valeur plus élevé. 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.
Phase 5 - Malt   Pour obtenir rapidement un résultat, nous avons dans le premier exemple choisi ZoomF=4. Pour affiner le résultat, nous pouvons choisir un zoom plus faible (2, voir 1 mais attention dans ce dernier cas les temps de calculs peuvent devenir très longs). Nous pouvons également supprimer l'option AffineLast=false, afin de conserver l'étape complémentaire de Malt (qui est activée par défaut), qui reprend les résultats du zoom final ZoomF et affine les résultats.
Il est également possible de ne pas considérer de masque, et ainsi utiliser l'ensemble de l'image maîtresse, en utilisant UseTA=false dans les attributs de Malt.
Enfin la carte de profondeur peut être affichée en nuance de gris en transformant les images 16bit Z_NumX_DeZoomY_STD-MALT.tif, qui ne peuvent pas être affichées par les logiciels généralement, en image 8bit. Il faut simplement ajouter la ligne ci-dessous à la fin de la phase 5, en remplaçant X avec le numéro de l'étape et Y avec le niveau de zoom de l'étape.
:: Ajouter à la fin de la Phase 5 - Calcul de la carte de profondeur
:: ----------------------
"%BIN_DIR%/mm3d" to8Bits "%WORKING_DIR%/%RESULT_SUBDIR%/Z_NumX_DeZoomY_STD-MALT.tif

Il peut être nécessaire dans ce cas d'avoir réorienté lors de la phase 3 le repère des photos en utilisant le programme SBGlobBascule (non traité dans ce tutoriel).

4.8  Accélérer les calculs

Les calculs peuvent rapidement devenir très long, avec l'augmentation du nombre d'images ou de leur taille. Il est possible d'utiliser les paramètres suivants pour augmenter la vitesse de calcul, mais ce gain ce fera toujours au détriment de la précision du nuage de point obtenu (source : Forum Mic-Mac - MICMAC.exe more faster).
  • augmenter la valeur ZoomF pour Malt. Cette valeur doit être une puissance de 2 : 1 2 4 8. La valeur 4 permet généralement d'obtenir des résultats rapidement.
  • augmenter la valeur ZPas pour Malt. La valeur par défaut est 0,4 (car nous avons choisi l'option GeomImage pour Malt).
  • augmenter la valeur Regul pour Malt. La valeur par défaut est 0,02 (car nous avons choisi l'option GeomImage pour Malt).
  • supprimez la dernière étape d'affinage de Malt, en utilisant le paramètre AffineLast=false.

4.9  Problèmes courants

En cas de difficultés pour obtenir votre nuage de point, voici quelques indications pour essayer de trouver une solution
  • simplifiez votre problème pour accélérer les calculs et diminuer les risques d'erreur.
    • travaillez sur un nombre plus réduit de photos : 5 photos maximum. Vous pouvez par exemple travailler avec vos photos de corrélation, et essayer d'obtenir un nuage de point pour ces dernières.
    • limitez le niveau de zoom final ZoomF de Malt à 4 ou 8. Une fois obtenu un réglage qui donne des résultats cohérents, il sera possible de remettre ZoomF égal à 1 ou 2.
    • supprimez la dernière étape d'affinage de Malt, en utilisant le paramètre AffineLast=false.
  • Problèmes en phase 2 - Tapas
    • vérifiez que votre appareil photo est déclaré dans le dictionnaire des appareils photos connus par MicMac (voir ci-dessus).
    • vérifiez la qualité des photos (netteté ? recouvrement suffisant ? absence d'objets gênants comme vitres avec reflet, piétons ou voitures en mouvement, végétation, objets identiques répétés ?).
    • vérifiez que les paramètres des photos sont fixes (informations EXIF disponibles dans les JPG : longueur focale, ouverture du diaphragme, mode de mise au point).
  • Problèmes en phase 3 - Tapas
    • mêmes vérifications que pour la phase 2
    • vérifiez que la valeur de Residu Liaisons Moyen a pu converger lors de l'étape 2 vers une valeur assez basse (0,5 - 1,0). Si la valeur est trop grande, il y a peut-être un problème d'étalonnage de l'appareil photo.
  • Problèmes en phase 4 - AperiCloud
    • Si le programme indique une erreur avec le message Radial distorsion abnormally high, cela signifie que l'étalonnage de l'appareil photo calculé lors de la phase 2 n'est probablement pas correct. Remplacer RadialExtended par RadialBasic dans la phase 2 (étalonnage de l'appareil photo avec Tapas) permet parfois de régler ce problème.
    • Si la solution ci-dessus ne permet pas de régler le problème, c'est peut-être que les images choisies pour la calibration ne sont pas correctes pour cet usage. Vérifier que les prises de vues respectent les conditions mentionnées dans la partie "réglages pour les prises de vues" ci-dessus.
  • Problèmes en phase 5 - Malt
    • Si le masque n'est pas pris en compte, il est parfois nécessaire de préciser son extension, en ajoutant le paramètre MasqIm="Masq" - voir le billet du forum Micmac à ce sujet (en anglais)
  • Problèmes en phase 6 - Nuage2Ply
    • vérifiez que le numéro d'étape dans NuageImProf_STD-MALT_Etape_6.xml (ici 6) correspond bien à l'étape pour laquelle vous souhaitez produire le nuage de point (normalement la dernière étape).
    • supprimez l'attribut Attr et vérifiez que le nuage de point non coloré est cohérent.
    • ajoutez l'attribut Attr, en vérifiant que l'image que vous indiquez est à la bonne échelle par rapport au zoom de l'étape que vous considérez (généralement ZoomF de Malt).

5  Exemples de résultats


5.1  Le portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris

Le processus présenté ci-dessus a été appliqué à un groupe de 5 photos, prises au niveau du portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris. Nous présentons ci-dessous quelques unes images obtenues au cours de la création du nuage de point avec MicMac.
Le nuage de points ci-dessous a été obtenu avec des images JPG 4000x3000 pixels et les paramètres suivants pour Malt : UseTA=true ZoomF=4 ZoomI=32. Il comporte environ 420k points.

Image maîtresse et masque du portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris
Fig 2: Image maîtresse et masque
Portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris

Images filles de l'image maîtresse ci-dessus, pour le portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris
Fig 3: Images filles de l'image maîtresse ci-dessus
Portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris
Les images filles ci-dessus ne respectent pas exactement les préconisations des protocoles dont nous avons parlé plus haut pour le choix des images de calibrage, mais elles ont permis néanmoins d'obtenir la calibration intrinsèque de l'appareil.

Nuage de point grossier avec positions des prises de vues obtenu avec AperiCloud
Fig 4: Nuage de point grossier obtenu avec AperiCloud à la fin de la phase 4, avec position des prises de vues
affichage avec MeshLab


Fig 5: Nuage de point du portail
A gauche angle de vue proche de l'image maîtresse, à droite vue de face
La différence entre la figure de gauche et la figure de droite ci-dessus illustre la problématique des parties cachées sur l'image maîtresse. Ces parties non visibles depuis le pied de la cathédrale où ont été réalisés ces photos (au dessus des parties saillantes des statues - têtes genoux, mains) constituent des trous dans le nuage de point obtenu, sauf si on se replace à peu près dans la situation de la prise de vue (à gauche ci-dessus).

5.2  Arc-boutant du chevet de Notre-Dame-de-Paris

Les photos du portail de la cathédrale ont servi à réaliser la calibration de l'appareil photo utilisé pour faire les photos des arcs-boutants au niveau du chevet, dont nous allons présenter le nuage de point.
Comme on peut le voir sur la figure 6, il n'y a pas de vue dégagée depuis le sol vers l'arc-boutant en raison de plusieurs obstacles (arcs-boutants voisins, pinacles, balustrade etc.). L'orthoimage de la figure 7 a donc été obtenue en combinant les nuages de points issues de deux images maîtresses, qui présentaient chacune des zones d'ombres différentes. On voit sur cet exemple que les parties basses, qui ne sont visibles que sur une des photos du groupe de photos à chaque fois, n'ont pas pu être capturées.

Arc-boutant du chevet de Notre-Dame de Paris vu depuis la rue du cloître Notre-Dame
Fig 6: Arc-boutant du chevet de Notre-Dame de Paris, côté Nord


Fig 7: Orthoimage d'un arc-boutant du chevet de Notre-Dame de Paris
Affichage avec MeshLab
Notre objectif était ici de voir s'il était possible d'obtenir une coupe de l'arc boutant en utilisant les moyens les plus simples possibles. La coupe ci-dessus a été obtenues à partir de photos prises depuis le niveau du sol dans la rue, avec un appareil photo compact (Canon S110). Le nuage de point est construit avec les options de bases de MicMac (UseTA=true ZoomF=2 ZoomI=32 AffineLast=true). Il a ensuite été traité avec Meshlab de manière positionner les points du parement dans le plan YZ (Transform : Rotate to fit a plane), en utilisant ensuite une rotation manuelle (Manipulator) pour s'assurer que les assises soient bien horizontales.

6  Conclusion

Notre présentation du logiciel n'utilise qu'une toute petite partie des capacités de MicMac. Il est par exemple possible d'utiliser plusieurs jeux de photos, chacun réalisé avec un objectif différent, et d'unir les nuages de points. L'utilisation du logiciel que nous avons présenté ici est très basique. Si vous souhaitez approfondir l'utilisation de MicMac, nous vous conseillons de lire la documentation rédigée en anglais par son auteur, Marc Pierrot Deseilligny, disponible sur la page de téléchargement de l'IGN.
Les autres ressources concernant MicMac et disponibles sur internet sont consultables sur les sites suivants :
  • Tapenade, un site du laboratoire MAP-Gamsau du CNRS et de l'IGN, dont sont tirés les protocoles pour les prises de vue dont nous avons parlé plus haut (en français).
  • Le forum Micmac, principalement en anglais, avec quelques messages en français.
Concernant l'utilisation de Meshlab pour la manipulation des nuages de points, nous vous proposons de vous référer à la seconde partie de notre précédent article sur la photogrammétrie.

Article mis en ligne le : 27/10/2013.
Révisé le : 07/06/2014.

Notes:

1 Les guides d'utilisation en photogrammétrie conseillent de travailler avec des images RAW, beaucoup plus lourdes que les JPG, mais qui conservent toute l'information disponible lors de la prise de vue. Nous proposons d'utiliser les JPG ici aux débutants de manière à manipuler des fichiers plus légers.
2 En réalité il semble que Malt ne fait qu'appeler le programme MicMac, qui réalise les calculs de corrélation pour chaque niveau de zoom.