All Classes Functions Variables Enumerations Pages
Warum ein Face Center Point nicht in der Mitte eines Voxels platziert werden darf

Einführung FaceCenterPoints Zyklenberechnung VESTA-Zyklen Triangulierung Abstandsgesetz Ergebnisse Ausblick Anwendung Quellennachweise


Wie bereits im Abschnitt über die Berechnung der Face Center Points festgestellt, sollte ein Face Center Point niemals in der Mitte eines aktiven Voxels platziert werden. Dieser Fall könnte eintreten, wenn der Isowert mit dem (Dichte-) Wert eines einzelnen aktiven Voxels identisch ist, denn dann gilt für alle diesem Voxel benachbarten Face Center Points

dislocation = (value-isoValue)/(value-adjacentValue) = (isoValue-isoValue)/(isoValue-adjacentValue) = 0

Was das bedeutet, demonstriert folgende Abbildung:

Abb25.png
Abb. 25: Ein einzelner aktiver Voxel mit dislocation=0.5 (a), dislocation=0.3 (b), dislocation=0.1 (c) und dislocation=0 (d).

Befindet sich der Face Center Point genau in der Mitte zwischen aktivem und inaktivem Voxel (was zum Beispiel der Fall wäre, wenn der Isowert gleich 50, der Wert des aktiven Voxels gleich 100 und der Wert des inaktiven Voxels gleich 0 wäre), dann ist dislocation=0.5 und der Fall 25 (a) liegt vor: Ein Zyklus der Länge 3 wird korrekt gezeichnet. Setzt man den Isowert sukzessive hoch (oder erniedrigt man den (Dichte-)Wert des aktiven Voxels), dann wandern alle sechs Face Center Points in Richtung der Mitte des aktiven Voxels (Abbildung 25 (b) und (c)). Im Grenzfall, wenn der Isowert mit dem Wert des aktiven Voxels identisch ist, liegen alle sechs Face Center Points übereinander (Abbildung 25 (d)). Das Problem ist, dass jetzt kein echtes Dreieck mehr gezeichnet wird. Zwar liegen sechs unterschiedliche Vertex-Handles vor, die man zu einem geometrischen Objekt verbinden könnte, allerdings stellen die Flächenelemente dieses Objektes keine Dreiecke mehr dar, und die Oberfläche, die man erhält, schließt somit auch kein Volumen ein. Um die Konnektivität der Oberfläche zu gewährleisten, ist es aber notwendig, dass solche Fälle nicht vorkommen.

Um das Auftreten derartiger Artefakte zu verhindern, wurde in dieser Implementation mittels der Variablen minSpacing festgesetzt, dass dislocation eine Mindestgröße von 0.00001 besitzt. Dieser Wert ist groß im Sinne numerischer Stabilität, aber klein im Sinne der Auflösung des im ILATO-Projekt verwendeten bildgebenden Verfahrens: es entspricht dort genau einem Nanometer (=0.00001 mm).
Da auch am Rand des Voxelgitters solche Fälle auftreten, sobald zwei oder drei Face Center Points in den Mittelpunkt eines aktiven Voxels gesetzt werden, so wird hier ganz analog das borderOffset grundsätzlich auf einen von Null verschiedenen Wert gesetzt.

weiter


Einführung FaceCenterPoints Zyklenberechnung Vesta-Zyklen Triangulierung Abstandsgesetz Ergebnisse Ausblick Anwendung Quellennachweise