Agisoft_Photoscan.odt (2.8MB)

Agisoft Photoscan


Source du document : https://www.3dvf.com/redaction/tutorials-1328-photogramm-ctrie-d-cbuter-avec-agisoft-photoscan-html/

PhotoScan : présentation et versions

Edité par la société russe Agisoft,  PhotoScan se présente comme un outil de photogrammétrie professionnel. Il permet donc de recréer des modèles 3D à partir de photos d’objets réels, mais pas seulement : il propose également des fonctions SIG (systèmes d’information géographique) comme la création de vues aériennes en orthomosaïque (autrement dit, en supprimant les effets de perspective), la génération de modèles d’élévation du terrain, des outils de mesure de précision (distances, surfaces, volumes), ou encore la gestion d’imagerie multispectrale (infrarouge, caméras thermiques). Il permet même d’assembler des panoramas et de capturer des scènes en “4D” (création d’une séquence de modèles 3D).
  • • L’outil se décline en deux versions :
–  PhotoScan Standard, relativement accessible, se focalise sur la photogrammétrie “pure” avec la génération de nuages de points et de modèles 3D texturés.
–  PhotoScan Professional, bien plus onéreux (20 fois le tarif de la version standard). Cette déclinaison comporte toutes les fonctions avancées décrites plus haut, mais aussi le scripting python et le traitement en réseau.
Ce tutoriel d’introduction s’appuiera sur la version standard, de façon à être le plus accessible possible. Il a été réalisé avec la version 1.3 du logiciel.
Matériel
L’éditeur propose quelques conseils sur l’équipement idéal pour faire fonctionner  PhotoScan. Le logiciel est gourmand : il est recommandé de disposer de 32Go de RAM au minimum, si possible davantage. La consommation de RAM augmente linéairement avec la résolution des photos, et grimpe avec le niveau de qualité de la reconstruction, le nombre de clichés et la façon dont ils ont été pris.
Un guide dans la FAQ donne des valeurs approximatives qui vous aideront à dimensionner votre matériel. Notez bien que pour de nombreux usages, il est inutile de faire appel au niveau de qualité maximal : nous vous conseillons de faire des essais avant d’investir massivement.
Du côté du CPU, un processeur multi-core rapide (au moins 3GHz) est recommandé. Enfin,  PhotoScan tire très bien parti des GPUs, via OpenCL et CUDA. Les cartes de type  GeForce haut de gamme offrent ici un bon rapport performances/prix.
Du côté de l’OS, vous avez le choix :  PhotoScan est proposé sous Linux, Windows 32/64 bits, OS X.

Premiers pas et optimisation

Une fois le logiciel téléchargé et installé, nous vous invitons à faire un tour dans le menu “Tools” puis “Preferences”.
Le premier onglet permet de passer l’interface en français, d’activer si nécessaire le mode High DPI. Il est possible de changer de thème graphique : nous resterons en mode “Classique” pour ce tutoriel.
Dans le second onglet, vous pouvez activer/désactiver l’utilisation d’un ou plusieurs GPUs ; si un GPU n’est pas visible, pensez à mettre à jour vos drivers.

Première étape : ajout de photos

Par défaut, le logiciel s’ouvre sur un projet vierge. Cliquer sur le second bouton du panneau »espace de travail, pour ajouter des photos.
Il est à noter que PhotoScan utilise de nombreux formats : jepg, TIFF , PNG ,  OpenEXR, DNG, mais aussi certains formats RAW d’appareils photos.

Une fois les photos ajoutées, on constate qu’elles sont visibles dans le panneau « Photos ». Dans l’espace de travail, un "chunk" a été créé, et autant de « Caméras » que de photos.
Les “Chunks” permettent de travailler par portion, par exemple en reconstruisant en 3D la portion basse d’un modèle dans un “chunk”, la portion haute dans un autre, puis en fusionnant l’ensemble.
L’intéret principal est : en ne travaillant que sur une partie des clichés à la fois, ona besoin de moins de mémoire, ce qui est utile si vous ne disposez de beaucoup de RAM.
Ce tutoriel étant axé sur les bases, nous ne détaillerons pas ce système ; nous allons travailler avec le mode par défaut, toutes les photos étant dans le même “chunk”. Image


Masquer les photos (étape facultative)

Cette étape consiste à créer sur les photos un masque autour de l’objet à scanner, pour éliminer les zones que vous ne voulez pas reconstruire. Elle n’est pas obligatoire : dans bien des cas, le logiciel donnera des résultats tout à fait corrects directement.
Néanmoins, les masques ont des avantages :
– ils permettent d’améliorer la précision ;
– ils évitent certains artefacts de reconstruction ;
– ils sont très utiles si un élément de la scène bouge, par exemple si un passant est présent sur plusieurs clichés : le masquer aidera l’algorithme lors de la reconstruction ;
– enfin, ils s’avèrent quasi indispensables si vous travaillez avec un objet placé sur une table tournante.
Pour commencer, double-cliquer sur un cliché dans le panneau  « Photos ». Il s’affichera au dessus du viewport dans un onglet dédié.
Vous pouvez ensuite zoomer avec la molette de la souris, déplacer la zone affichée en cliquant-glissant.

Dans le menu supérieur, plusieurs outils sont à votre disposition pour sélectionner des portions de la photo.

De gauche à droite :

– sélection rectangulaire

– ciseaux intelligents, qui permet de tracer un polygone fermé par clics successifs ; pour fermer le tracé, il suffit de cliquer à nouveau sur le premier point. La touche Ctrl permet d’activer le “snapping” : le logiciel tente de détecter des contours courbes entre le dernier point placé et la position du curseur

– un “pinceau intelligent” qui permet de peindre une sélection à la souris et ajoute au fur et à mesure des régions (fonctionne plus ou moins bien selon la texture des objets visibles)

– une “baguette magique” semblable à celle de Photoshop : cliquez, elle sélectionnera une région ayant une couleur relativement uniforme. Elle dispose d’un menu avec une option d’ajustement de la tolérance, pour affiner sa sensibilité.

Ci-dessous, aperçu des outils de masquage :

à gauche, le tracé d’une forme, à droite les fonctions d’ajout/soustraction au masque et inversion.


Une fois qu’une zone est sélectionnée, on peut l’ajouter au masque de la photo en cliquant sur le premier bouton de masquage.
Le second permet, lui, de soustraire une zone, (par exemple si vous avez masqué par erreur une portion de l’objet).
Le troisième permet d’inverser la sélection, ce qui peut être très utile : on pourra ainsi, au lieu de faire une sélection des zones qui entourent l’objet, faire une sélection de l’objet lui-même, inverser la sélection, puis ajouter cette nouvelle sélection au masque. Dans certains cas, cette méthode est plus rapide.

Quelques précisions :
– Le menu Photo permet d’annuler (supprimer) le masque ;
– Lorsque vous travaillez sur une photo, appuyez sur la touche Ctrl pour ajouter une sélection à la zone déjà sélectionnée ;
– La touche Echap permet d’annuler la sélection en cours.
Notez qu’il est possible d’importer des masques via le menu Outils/Importer.
Plusieurs options sont proposées :
- import à partie de la couche alpha
- import à partir de fichiers images(un masque par photo)
- import d’un fond(utile dans le cas d’un plateau tournant)
- import à partir de modèle : dans ce dernier cas, PhotoScan utilise le modèle 3D reconstruit pour générer un masque.

Il est donc possible d’utiliser des workflows variés, et notamment de créer des masques dans votre outil 2D favori puis de les importer. Un bon point, puisque les outils de masquage proposés en interne sont assez limités.

Ci-dessous une photo avec un masque créé à gauche à l’aide de la baguette magique, à droite avec des sélections rectangulaires.
L’affichage des miniatures des masques a été activé à l’aide de l’avant dernière option du panneau  « Photos »(rond sur fond bleu) : très pratique pour voir rapidement quelles photos possèdent un masque.









Aligner les photos


Dans le menu “Traitements”, choisissez “Aligner les photos”. Le menu qui s’ouvre propose différentes options. L’alignement n’était pas une étape très longue (en particulier depuis la version 1.3, qui l’accélère par GPU), nous vous conseillons de rester en précision “haute”.
Dans les options avancées, activez “restreindre les caractéristiques par masques” si vous avez créé des masques qui cachent des objets en mouvement : par exemple des passants et nuages. Dans tous les autres cas, vous pouvez laisser cette case décochée.
Pour le reste, laissez les paramètres par défaut, cliquez sur OK.

Une fois le calcul fini, la vue « Modèle » affichera un nuage de points très clairsemés et des rectangles bleus qui correspondent aux positions des différentes photos.
A ce stade, vous avez déjà une petite idée de la réussite du scan.
Cliquer-glisser avec le bouton gauche de la souris permet de faire pivoter la vue ; avec le bouton droit, de déplacer horizontalement et verticalement la vue.
Ci-dessous : vue après alignement. Le rectangle couleur saumon correspond à la position de la caméra associée à la photo sélectionnée.
On note des artefacts et un bout de statue sur la gauche : à ce stade, ce n’est pas un problème.


Optimiser les caméras


Cette étape optionnelle permet d’améliorer le calcul des paramètres de prise de vue. Via “Outils”/”Optimiser les caméras”, vous ouvrirez un menu dédié.Laissez les paramètres par défaut, cliquez sur OK, l’optimisation ne prend que quelques secondes.


Positionner la région de reconstruction


Une fois l’alignement finalisé, vous avez sans doute remarqué autour du nuage de points clairsemé la présence d’une boîte englobante. Appelée “région”, celle-ci correspond à la zone qui sera traitée par la suite, lors de la création du nuage dense : aucun point ne sera créé en dehors. Elle permet donc de limiter la zone sur laquelle le calcul doit se faire.
Par défaut, la région se positionne automatiquement sur la zone que  PhotoScan détecte comme étant le sujet, mais vous pouvez l’ajuster via le bouton “redimensionner la région” puis en utilisant les poignées sur les coins du volume.
On peut aussi faire pivoter le volume à l’aide d’un bouton dédié puis en cliquant-glissant dans le viewport. Un gizmo au centre du volume englobant peut faciliter la rotation selon un axe précis.
Pour faciliter le positionnement de la région, nous vous conseillons de désactiver l’affichage des caméras (menu “Vue” puis “Afficher/Cacher les objets”) et de passer en vue orthographique (menu “Vue”, ou touche “5” du clavier). Le viewport sera moins encombré et plus clair.
Ci-dessous : volume englobant ajusté autour de la zone qui nous intéresse. On note que l’objet n’est pas aligné sur les axes : nous corrigerons ceci plus tard.
Entourés en rouge, les deux boutons permettant de redimensionner et faire pivoter la “région”.


Construire un nuage dense


Cette phase est de loin la plus longue en temps de calcul.
Dans le menu “Traitements”, choisissez “construire un nuage dense”. Là encore, plusieurs options :
– Qualité : il peut être tentant d’utiliser le paramètre maximal, mais la reconstruction est alors très longue et la consommation de RAM peut exploser. “Moyenne” ou “Haute” sont de bons compromis. Basse/la plus basse serviront si vous voulez un résultat rapide et approximatif.
– Filtrage de la profondeur :  PhotoScan filtre les points pour éliminer ceux qui semblent mal placés, par exemple si la prise de vue était mauvaise (photos floues, bruit lié à une sensibilité trop élevée).
Si la surface de l’objet à scanner est relativement lisse, (par exemple une vue aérienne), choisissez « Agressif ». Si des détails fins en relief doivent être conservés,
opter pour « Léger », « Modéré » est un compromis.

Lancer ensuite la reconstruction. Durant le calcul, les zones que vous aviez masquées sur les photos seront automatiquement ignorées.


Une fois le nuage dense calculé, il ne s’affiche pas automatiquement:aller dans le menu »Vue »
Une fois le nuage dense calculé, il ne s’affiche pas automatiquement : allez dans le menu “Vue” (ou utilisez le bouton de la barre d’outils composé de carrés colorés).
Vous pouvez utiliser les outils de sélection de la barre d’outils (en pointillés) pour nettoyer le résultat si nécessaire : par exemple si des artefacts sont présents.

Comme la reconstruction de mesh se fera depuis le nuage dense, ce nettoyage évitera d’obtenir des polygones inutiles.

Ci-dessous : notre nuage de points dense, avec beaucoup d’artefacts liés au fait que nous n’avons pas créé de masques. Entourés : les outils permettant de sélectionner des points. Dans le viewport, une sélection est en train d’être effectuée ; on appuiera ensuite sur la touche Suppr pour effacer les points.

Construire le Mesh 


A ce stade, nous avons un nuage de points, qui devrait reproduire fidèlement (sans gros trou) l’objet scanné.
Le nuage de points pourrait être exporté, mais nous allons ici continuer sous  PhotoScan pour construire un véritable objet 3D.
Dans le menu “Traitements”, choisissez “construire un maillage”. Une fois de plus, un menu s’ouvre :
– Type de surface : laissez “arbitraire” ;
– Source de données : “Nuage Dense” ;
– Nombre de faces : le nombre de triangles estimé de l’objet. A vous de voir ici en fonction de l’objet scanné : si la forme comporte de nombreux détails, un niveau élevé sera recommandé.
– Interpolation, dans les options avancées : activé.

Cliquez sur OK pour lancer le calcul.


Après le calcul, vous obtenez un objet 3D. A l’aide d’un des trois boutons entourés ci-dessous, vous pouvez l’afficher de trois manière :
– ombré en couleurs (il ne s’agit pas d’une texture mais de couleurs attribuées aux vertex) ;
– ombré monochrome ;
– filaire.

Pour cette capture, nous n’avions volontairement supprimé que les artefacts de la partie gauche du nuage de points. On voir bien le résultat : à droite, les artefacts ont donné des formes inutiles. D’où l’intérêt d’utiliser les masques et outils de nettoyage afin d’obtenir un modèle propre.

Calcul de la texture


Dans le menu “Traitements”, choisissez “construire une texture”. Laissez les deux premiers paramètres par défaut (mappage générique, fusion mosaïque).
Dans “Taille/nombre de texture”, vous pouvez ajuster la largeur/hauteur de la texture en pixels. Le “x1” peut être modifié pour créer un atlas de textures et non un unique fichier.
Enfin, les deux derniers paramètres permettent d’ajuster automatiquement la couleur (utile en cas de fortes variations de luminosité entre les clichés, mais coûteux en ressources : désactivez par défaut) et de remplir les trous : laissez activé, lancez le calcul.
A noter : nous n’aborderons pas ce point en détail pour ce tutoriel, mais il est possible de désaciver les images de mauvaise qualité (par exemple, les photos floues) à ce stade pour améliorer la texture qui sera calculée.



Export


Une fois la texture calculée, un bouton permet d’afficher le modèle texturé.
Un autre bouton la pyramide avec des flèches bleues) permet d’activer le mode de rotation de l’objet : les commandes de rotation de la vue (cliquer-glisser avec le bouton gauche) ne font plus tourner les axes, mais l’objet 3D.
Vous pouvez alors, si besoin, orienter correctement le modèle selon les axes x,y,z. Avec le menu “Vue” puis “Vues prédéfinies”, vous pourrez afficher des vues classiques (face, profil etc) qui faciliteront le travail d’orientation du modèle.
Enfin, le menu “fichier” vous permettra :
– avec “enregistrer”, de sauvegarder le fichier de travail
– avec “exporter le modèle 3D”, d’enregistrer le mesh dans différents formats. Des options seront proposées (grisées si non supportées par le format) : incorporer ou non les caméras, la texture, UDIM, etc.
Ci-dessous : entourés, les boutons “Pivoter l’objet” et celui permettant d’afficher l’objet texturé.
Plus bas, un export en OBJ.


Problèmes courants :


En suivant ce tutoriel ou lors de vos essais, vous rencontrerez sans doute deux problèmes classiques.
Tout d’abord, la présence d’artefacts : points flottants, “blobs” et autres formes créées dans le vide.
Ces problèmes sont le plus souvent liés au fait que vous n’avez pas utilisé de masque, ou mal masqué le fond et les totalement zones floues de l’objet.
Autre problème classique : une surface peu définie, cabossée.
Ce problème survient par exemple si le sujet est mal éclairé
(trop de bruit numérique), que la surface comporte trop peu de détails (statue de marbre blanc sans défaut).
Si le défaut n’est présent que sur une partie de l’objet, il s’agit sans doute d’une zone mal éclairée : plus de clichés (quitte à changer l’exposition) ou un trépied (pour baisser la sensibilité) aideront.
Si l’objet lui-même pose problème (peu de texture), l’idéal sera de pouvoir rajouter des marqueurs, de la texture (par des projections de peinture, par exemple). Evidemment, cela nécessite de pouvoir intervenir sur le sujet.
Une autre option sera, bien entendu, de retraiter l’objet en aval, sous ZBrush ou Meshlab par exemple (ce dernier, gratuit, dispose d’outils de suppression du bruit)