Photogrammétrie sur Meshroom

:warning: cet article est un brouillon: beaucoup de sections ne sont pas finalisées.

Colorimétrie

RAW vs JPG

:exclamation_question_mark: A tester! Meshroom a(vait) des soucis avec les formats RAW, mais on devrait normalement avoir de meilleurs résultats.

Color Checker

Meshroom supporte la détection automatique d’un étalonneur. Plusieurs formats sont proposés: mcc24, sg140, Vinyl18

Le plus courant est le mcc24 (Macbeth ColorChecker) - Qu’on trouve aussi sous le nom « Calibrite 24 »:

Le sg140 est simplement une |version 140 couleurs](https://www.xrite.com/categories/calibration-profiling/colorchecker-digital-sg) du même principe.

Le dernier format courant, Vinyl18 (Digital Kolor Kard 12-6) est composé de 6 rectangles en échelle de gris et 12 couleurs.

Il faut ensuite ajouter deux nodes, ColorCheckerDetection et ColorCheckerCorrection au début du pipeline:

  • Pour gagner du temps, on peut décocher process all images dans le ColorCheckerDetection et donner le nom d’une image ou l’étalonneur est présent.
  • Par défaut, ColorCheckerCorrection* ne modifie que la luminance. Il dispose d’un mode balance des blancs ou full.

Echelle

Meshroom peut dimensionner automatiquement l’objet en utilisant des marqueurs cctag3, cctag4, Apriltag 16h5

Exemple: tag16h5.pdf (1,7 Mo) - attention à la taille d’impression…

CCTags

Documenté sur le wiki de meshroom: CCTAG-Scaling

  1. Placer 2 (on peut en placer davantage mais la mise à l’échelle en nécessite exactement 2 #907) marqueurs dans la scène à une distance connue au moment de prendre des photos
  2. Activer le DescriberType cctag3 dans le node FeatureExtraction
  3. Ajouter un node SfMTransform avant Meshing
  4. Dans SfMTranform selectionner Method: from_markers et Describer Types: cctag3. Insérer les ID des deux marqueurs utilisés dans le champ Markers

Renseigner la position souhaitée des deux marqueurs. Par exemple, si la distance entre les deux marqueurs était de 20cm, placer Marker0 à -0.1, 0, 0 et Marker1 à 0.1, 0, 0 (échelle en mètres).

Note: Il est aussi possible d’utiliser les CCTAG pour d’autres usages: aligner plusieurs scènes, par exemple.

Modifications expérimentales

Branche develop du code d’AliceVision* ou de Meshroom

SfMBootStrapping - SfMExpanding

Remplacement du node StructureFromMotion par deux étages: SfMBootStrapping → SfMExpanding**. Le premier identifie la meilleure paire avec laquelle commencer la reconstruction. Le suivant ajoute ensuite des images de manière itérative.

Ajoutés au pipeline Photogrammetry, mais pas encore aux pipelines spécialisés (turntable, object, two sides, etc.)

Repose sur l’utilisation de TracksBuilding et RelativePoseEstimating pour créer une première approximation des positions de caméra à partir de features qui ont été détéctée depuis plusieurs points de vue.

Tester les performances sur des datasets variés.

TODO: