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.- 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.
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.
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.- 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.- Passer l'appareil photo en mode manuel.
- Choisir comme format JPG1, en choisissant la plus grande résolution possible.
- Désactiver la stabilisation.
- Fixer la balance des blancs.
- Fixer la longueur focale (c'est à dire le niveau de zoom).
- 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.
- 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.
- 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).
- 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).
- Protocole pour prises de vue d'éléments architecturaux du laboratoire MAP/GAMSAU du CNRS, et dont nous avons déjà parlé plus haut
- Protocole pour prises de vue de façades proposé par le même laboratoire
- Tutorial (en anglais sur le forum MicMac)
- La documentation de l'interface graphique qui existe pour la version Linux de MicMac donne des conseils intéressants pour les prises de vues (pages 52-56).
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
- 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 :- Package redistribuable Microsoft Visual C++ 2010 (x86)
- Package redistribuable Microsoft Visual C++ 2005 (x86)
- Microsoft .NET Framework 2.0 Service Pack 2
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
:: 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
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.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.:: 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
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.
- 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.
- 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).
- vérifiez que votre appareil photo est déclaré dans le dictionnaire des appareils photos connus par MicMac (voir ci-dessus).
- 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.
- mêmes vérifications que pour la phase 2
- 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.
- 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.
- 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)
- 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).
- 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).
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.
Fig 2: Image maîtresse et masque
Portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris
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
Portail du Couronnement de la Vierge de la façade occidentale de Notre-Dame de Paris
Fig 4: Nuage de point grossier obtenu avec AperiCloud à la fin de la phase 4, avec position des prises de vues
affichage avec MeshLab
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
A gauche angle de vue proche de l'image maîtresse, à droite vue de face
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.6 Conclusion
- 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.
Article mis en ligne le : 27/10/2013.
Révisé le : 07/06/2014.