web-dev-qa-db-fra.com

algorithme robuste pour la reconstruction de surface à partir d'un nuage de points 3D?

J'essaie de comprendre quels algorithmes existent pour effectuer la reconstruction de surface à partir de données de plage 3D. À première vue, il semble que l'algorithme de pivotement à billes ( BPA ) et la reconstruction de la surface de Poisson sont les méthodes les plus établies?

  • Quels sont l'algorithme établi et plus robuste dans le domaine autre que le BPA et l'algorithme de reconstruction de surface de Poisson?
  • Publications de recherche recommandées?
  • Existe-t-il du code source disponible?
59
Fredriku73

Je fais face à ce dilemme depuis quelques mois maintenant et j'ai fait des recherches exhaustives.

Des algorithmes

Il existe principalement 2 catégories d'algorithmes: la géométrie de calcul et les surfaces implicites.

Géométrie de calcul

Ils ajustent le maillage sur les points existants.

L'algorithme le plus célèbre de ce groupe est probablement powercrust , car il est théoriquement bien établi - il garantit un maillage étanche.

Ball Pivoting est breveté par IBM. En outre, il ne convient pas aux nuages ​​de points avec une densité de points variable.

Fonctions implicites

On ajuste les fonctions implicites sur le nuage de points, puis utilise un algorithme semblable à un cube de marche pour extraire le zéro de la fonction dans un maillage.

Les méthodes de cette catégorie diffèrent principalement par les différentes fonctions implicites utilisées.

Poisson , Hoppe's , et MPU sont les algorithmes les plus connus de cette catégorie. Si vous êtes nouveau sur le sujet, je vous recommande de lire la thèse de Hoppe, elle est très explicative.

Les algorithmes de cette catégorie peuvent généralement être implémentés de manière à pouvoir traiter très efficacement d’énormes entrées, et on peut adapter leur compromis de qualité <-> vitesse. Ils ne sont pas perturbés par le bruit, la densité ponctuelle variable, les trous. Leur inconvénient est qu'ils nécessitent des normales de surface orientées de manière cohérente aux points d'entrée.

Implémentations

Vous trouverez un petit nombre d'implémentations gratuites. Cependant, cela dépend si vous allez l'intégrer dans un logiciel libre (dans ce cas, la licence GPL est acceptable pour vous) ou dans un logiciel commercial (dans ce cas, vous avez besoin d'une licence plus libérale). Ce dernier est très rare.

L'un est dans VTK . Je soupçonne qu'il est difficile à intégrer (aucune documentation n'est disponible gratuitement), il a une architecture étrange et trop compliquée et n'est pas conçu pour des applications hautes performances. A également quelques limitations pour les nuages ​​de points d'entrée autorisés.

Jetez un oeil à l'implémentation de this Poisson, et après cela, partagez votre expérience avec moi s'il vous plaît.

Aussi: ici sont quelques algorithmes hautes performances, avec une reconstruction de surface parmi eux.

CGAL est une célèbre bibliothèque 3D, mais elle est gratuite uniquement pour les projets gratuits. Meshlab est une application célèbre avec GPL.

Aussi (Ajouté en août 2013): La bibliothèque PCL a un module dédié à la reconstruction de surface et est en développement actif (et fait partie du Google Summer of Code). Le module de surface contient un certain nombre d'algorithmes différents pour la reconstruction. PCL aussi a la capacité d'estimer les normales de surface, au cas où vous ne les auriez pas fournies avec vos données ponctuelles, cette fonctionnalité peut être trouvée dans les fonctionnalités module . PCL est publié sous les termes de la licence BSD et est un logiciel open source, il est gratuit pour un usage commercial et de recherche.

91
libeako

Si vous voulez faire des expériences directes avec différents algorithmes de reconstruction de surface, vous devriez essayer MeshLab, le système de traitement de maillage, c'est open source et il contient des implémentations de nombreux algorithmes de reconstruction de surface précédemment cités, comme:

  • Recon surface de Poisson
  • une approche basée sur MLS,
  • une implémentation pivotante à billes
  • une variante de l'approche basée sur le volume Curless
  • Techniques basées sur Delaunay (formes Alpha et filtrage Voronoi)
  • outils pour calculer des normales à partir d'ensembles de points dispersés
  • et de nombreux autres outils pour comparer/mesurer/nettoyer/simplifier les mailles résultantes.

Les sources sont protégées par GPL, vous ne pouvez donc pas les utiliser dans un projet commercial à source fermée, mais il est très important d'avoir une bonne idée des propriétés des différents algorithmes de reconstruction de surface (leur sensibilité au bruit, la vitesse, la robustesse vis-à-vis des valeurs aberrantes, comment ils préservent les détails fins, etc.

11
ALoopingIcon

Vous pourriez commencer à regarder certains travaux récents dans le domaine - actuellement quelque chose comme reconstruction MLS en streaming à faible mémoire rapide de surfaces échantillonnées ponctuellement par Gianmauro Cuccuru, Enrico Gobbetti, Fabio Marton, Renato Pajarola et Ruggero Pintus . Ses citations peuvent vous faire parcourir la littérature assez rapidement.

5
Paul Lalonde

Bien qu'il ne s'agisse pas d'une représentation maillée, un ex-collègue m'a recommandé ce lien vers le code source pour une méthode Thin Plate Spline:

Lien

Quelqu'un l'a essayé?

4
Fredriku73

Je ne sais pas si cela convient parfaitement à votre cas, car il semble étrange que vous l'ayez omis, mais cubes en marche est couramment mentionné dans des cas comme ceux-ci.

3
unwind

Ici sur GitHub, est un open source Mesh Processing Library en C++ par Dr. Hugues Hoppe , dans lequel le programme de reconstruction de surface Recon est une bonne option pour votre problème ...

1
user6043040

Comme j'avais aussi ce problème, j'ai développé et implémenté mon propre algorithme de croûte de nuages ​​de points. Les sources ainsi que la documentation se trouvent sur github.com: https://github.com/ricebean-net/PointCloudCrust . L'algorithme est implémenté en Java.

Peut-être que cela peut vous aider. Vous pouvez également trouver un court script python sur la page qui illustre comment utiliser la bibliothèque. Amusez-vous!

1
Stefan M

Il y a outil 3D Delaunay par Geometric Tools . Cet outil est utilisé DirecX et OpenGL. Malheureusement, vous devrez peut-être acheter un livre pour voir l'exemple de code réel de la bibliothèque. Vous lisez toujours le code et découvrez.

Matlab a également introduit un outil de reconstruction de surface utilisant Delaunay, classe delaunayTriangulation .

1
Cloud Cho

Vous pourriez être intéressé par Alpha Shapes .

0
ESRogs