2016-04-08 7 views

Antwort

2

ich mein Problem gelöst, wenn es sehr nützlich sein kann. Marching Cubes-Algorithmus ist gut, aber es funktioniert nicht gut auf binarisierten Arrays. So: 1) Gaussian Filter angewandt auf den 3D-Array (scipy.filters) 2) Algorithmus laufenden Würfel es mesh (scikit-Image Tool) 3) Summe bis die Flächen der Dreiecke (scikit-Image Tool)

1

Ich kann ein paar Optionen je nach Ihrer Anwendung sehen: 3D konvexen Rumpf oder marschierende Würfel.

3D-konvexe Hülle

Zunächst müssen Sie eine Reihe von all den Voxel 3D erhalten Koordinaten, wo das Array 1

Später gleich ist, können Sie scipy.spatial.ConvexHull verwenden. Scipy Methoden sind im Grunde ein Wrapper für die qhull-Bibliothek. Bei Verwendung von qhull ist eine der Ausgabeoptionen (FA) zur Berechnung der Gesamtfläche und des Gesamtvolumens erforderlich.

Sie können mehr Informationen finden Sie hier: http://scipy.github.io/devdocs/generated/scipy.spatial.ConvexHull.html http://www.qhull.org/html/qconvex.htm

Marschieren Würfel

Wenn Sie Höhlungen halten müssen, dann wird die vorherige Option nicht ausreichen. Marschierende Würfel sind eine gute Alternative. Es gibt bereits eine Python-Implementierung in scikit-image.

http://scikit-image.org/docs/dev/auto_examples/plot_marching_cubes.html

Sie werden wieder müssen alle Punkte, wie im vorherigen Fall zu erhalten. Sie berechnen die Verben/Gesichter mit:

http://scikit-image.org/docs/dev/api/skimage.measure.html#marching-cubes

Und der Sie die Fläche berechnen mit:

http://scikit-image.org/docs/dev/api/skimage.measure.html#mesh-surface-area

+0

Danke, es sieht gut aus. Ich kann leicht ein Array der Koordinaten erhalten, wo ich 1 habe. Ich nehme an, es ist ---> 'coordinates = numpy.where (array == 1)'. Jetzt studiere ich scipy.convexHull und ich bin bald zurück :-) –

+0

Lass mich wissen, wie es geht und wenn es dir nichts ausmacht, denke daran, die Antwort zu akzeptieren, wenn du es nützlich findest. – purpletentacle

+0

Es ist eine schöne Algorithm und funktioniert gut. Das Problem entsteht, wenn mein Stein etwas konkav ist. Es findet nur den kürzesten Weg und schneidet die Konkavität aus! –

Verwandte Themen