3D Volumenmodell

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hutschafu
User
Beiträge: 2
Registriert: Mittwoch 14. April 2010, 08:49

Hallo zusammen,
ich habe die Aufgabe aus 3D Daten eine Volumenmodell mit Python zu erstellen.
Es geht darum zum einem das gescannte Objekt zu visualisieren und Später auch das Volumen des Objekts zu bestimmen.
Eine Oberfläche lässt sich mit dreiecken zusammensetzen eine Volumen Körper mit Tetraedern so wie ich gelesen habe.
Jetzt die Frage gibt es eine Funktion die mir aus aus einer Punktewolke die in einem Array vorliegt ein Modell erstellt?

Ich hoffe jemand von euch kann mir helfen.

Grüße manuel
Benutzeravatar
Käptn Haddock
User
Beiträge: 169
Registriert: Freitag 24. März 2006, 14:27

http://www.cgal.org/

Vielleicht hilft dir das weiter, da gibts auch Python-Bindings für.

Gruß Uwe
---------------------------------
have a lot of fun!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hallo und willkommen im Forum,

das ist nicht trivial - aber es gibt schon Lösungen dafür! Ich möchte Dir Mayavi empfehlen.

In welcher Weise liegen denn Deine Daten vor? Als Bildschnitte aus denen Du eine Dichte rekonstruieren möchtest oder etwas Ähnlichem? In dem Fall kann ich Dir ein Beispiel geben.

In jedem Fall aber: Vorher numpy (für das Arrayhandling) und ggf. auch scipy anschauen ansonsten wird die Lernkurve schnell ein wenig steil ;-).

HTH
Christian

edit: Grammatik ... :roll:
hutschafu
User
Beiträge: 2
Registriert: Mittwoch 14. April 2010, 08:49

CM hat geschrieben:Hallo und willkommen im Forum,

das ist nicht trivial - aber es gibt schon Lösungen dafür! Ich möchte Dir Mayavi empfehlen.

In welcher Weise liegen denn Deine Daten vor? Als Bildschnitte aus denen Du eine Dichte rekonstruieren möchtest oder etwas Ähnlichem? In dem Fall kann ich Dir ein Beispiel geben.

In jedem Fall aber: Vorher numpy (für das Arrayhandling) und ggf. auch scipy anschauen ansonsten wird die Lernkurve schnell ein wenig steil ;-).

HTH
Christian

edit: Grammatik ... :roll:
Hallo und schon mal vielen Dank für die schnelle Antwort.

Lässt sich dieses Programm Mayavi den in Python einbinden aufrufen oder etwas der gleichen?

Meine Daten liegen in einem nympy Array als Bildschnitte vor!
Ziel ist es mehr später das Volumen des gescannten Objekts zu bestimmen.
Die Visualisierung ist nicht all zu wichtig.

Wäre nett wenn du mir dein Programm mal zeigen könntest oder evtl.
auch andere Lösungen hast.

Grüße
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

mayavi ist ein Tool zum visualisieren (in Python geschrieben) und kann wohl auch über die Konsole gesteuert werden wenn ich mich richtig erinnere. Auf jeden FAll bietet es selbst eine interaktive Konsole.

Bei der Visualisierung kommt es eben auf des Datenformat drauf an das man verwendet (z.B. VTK) dafür kann man pyvtk verwenden um aus den Arrays vtk-Dateien zu erzeugen. Es gibt auch direkte Bindings zu vtk so dass man damit visualisieren kann,...

Ich denke zur Zeit ist Paraview (auch vtk) recht angesagt unter den freien Visualisierungstools, hängt aber natürlich auch stark vom Einsatzbereich ab. Ich denke was du evtl. machen möchtest ist eher deine Objekte zu rendern, da denke ich gibt es wohl bessere Sachen.

Wie man aber Volumen berechnet ist befürchte ich wohl eine ganz andere Geschichte,..lasse mich aber eines besseren belehren (denke nicht das Mayavi/Paraview das können)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

hutschafu hat geschrieben:Lässt sich dieses Programm Mayavi den in Python einbinden aufrufen oder etwas der gleichen?
Na ja, anschauen mußt Du es schon selbst - dann hättest Du gesehen, daß mayavi entweder als Modul in Python importiert wird oder als Standaloneprogramm zu nutzen ist. Ich dachte eher an die Verwendung als Modul, etwa wie numpy, nur das es weitere Abhängigkeiten gibt. (Aber dazu gibt es Hilfen auf der verlinkten Seite und schwer ist die Installation wirklich nicht.)
hutschafu hat geschrieben: Meine Daten liegen in einem nympy Array als Bildschnitte vor!
Ziel ist es mehr später das Volumen des gescannten Objekts zu bestimmen.
Die Visualisierung ist nicht all zu wichtig.
Was heißt "das Volumen des Objektes bestimmen"? Das eingeschlossene Volumen errechnen? Das würde einfach Zählen der besetzten Voxel und anschließendes multiplizieren der Zahl mit der Voxelgröße bedeuten. Eine Möglichkeit wäre (Pseudocode)

Code: Alles auswählen

import numpy
a = arange(9).reshape((3,3))
count = sum(a > threshold)
volume = count * voxel_size
Visualisierung: http://code.enthought.com/projects/maya ... -with-mlab
Einfach durch die Docs klicken - da steht ziemlich sicher, was Du brauchst.

Gruss,
Christian

edit: Warnung: Wenn das Volumen komplexere Eigenschaften hat, mag mein Beispiel zu primitiv sein!
Ivan
User
Beiträge: 1
Registriert: Mittwoch 23. Oktober 2013, 13:46

Hallo zusammen,

ich habe ein ähnliches Problem - Ich möchte Daten visualisieren, wobei jeder Punkt mit x,y,z und einem zusätlichen Wert (z.B. Energie - E) definiert ist, sprich E = f(x,y,z). E soll entsprechend mit einer Farbe etc. in einem 3D-Diagramm dargestellt werden.
Ich habe die früher Beiträge gelesen und die Links auch schon angeschaut, leider finde ich mich damit irgendwie nicht ganz zu recht, bin noch ein ziemlicher Anfänger bei dem Thema.

Mein Input ist eine ganz normale Textdatei, wobei die Parameter x y z E in einzelnen Spalten untereinander weg aufgeführt sind. Inzwischen kriege ich es hin mein Input mit.. :
>>> import numpy as np
>>> data=np.loadtxt("dat.txt", delimiter ' ')

..einzulesen und kann dann das array mit "data" ausgeben. Die Ausgabe sieht dabei wie folgt aus:

>>> data
array([[ 2.05 , 1.5 , 1.2 , -971.91345119],
[ 2.05 , 1.5 , 1.25 , -971.91836961],
[ 2.05 , 1.5 , 1.3 , -971.92253649],
...,
[ 2.3 , 3. , 3.1 , -972.15581509],
[ 2.3 , 3. , 3.15 , -972.1559417 ],
[ 2.3 , 3. , 3.2 , -972.15604375]])

Jetzt möchte ich die einzelnen Spalten entsprechend definieren, also z.B. Spalte 1 = x , Spalte 2 = y , Spalte 3 = z , Spalte 4 = E , und anschließend E als Funktion der drei Raumkoordinaten definieren, und schließlich als "Volumen" darstellen.

Wie könnte ich dies im einzelnen am besten bewerkstelligen?

Für die anschließende Darstellung habe ich als Hilfspaket Easyviz runtergeladen, kennt sich jmd damit evntl. aus bzw. kann mir eine andere Freeware empfehlen (ausser der zuvor genannten)

Vielen Dank im Voraus - für jegliche Hilfe, Links, eine einfache Anleitung "to get started" etc. bin ich sehr dankbar.

BG
Ivan
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Schau doch mal bei matplotlib in die Gallery, vielleicht ist da etwas für dich dabei.
Das Leben ist wie ein Tennisball.
Antworten