bioMedImage

buildSurface

Beschreibung

Erstellt Oberflächen aus 3D-biomedizinischen Bildern. Diese Aktion verwendet einen Marching-Cubes-Algorithmus, um eine Iso-Oberfläche aus einem 3D-Bild zu extrahieren. Das Ergebnis sind zwei Tabellen: eine für die Eckpunkte (Vertices) und eine für die Flächen (Faces), die zusammen ein 3D-Modell der angegebenen Regionen definieren.

proc cas; bioMedImage.buildSurface / images={table={name='input_table'}}, outputFaces={name='face_output', replace=true}, outputVertices={name='vertex_output', replace=true}, intensities={value1, value2, ...} | thresholds={{low=val, high=val}, ...}, smoothing={iterations=N, relaxationFactor=R}; run;
Einstellungen
ParameterBeschreibung
imagesGibt die Eingabe-Bildtabelle an, die die zu verarbeitenden 3D-Bilder enthält.
intensitiesGibt eine Liste von Intensitätswerten an. Für jeden Wert wird eine separate Oberfläche erstellt.
outputFacesGibt die Ausgabetabelle an, die die Flächen der erstellten Oberfläche(n) enthält. Jede Fläche wird durch drei Eckpunkte definiert.
outputVerticesGibt die Ausgabetabelle an, die die Eckpunkte (Koordinaten) der erstellten Oberfläche(n) enthält.
smoothingGibt die Parameter für die optionale Glättung der Oberfläche an, um Artefakte zu reduzieren.
iterations(Unterparameter von smoothing) Gibt die Anzahl der Glättungsiterationen an. Standardwert ist 0.
relaxationFactor(Unterparameter von smoothing) Gibt den Grad der Glättung in jeder Iteration an (ein Wert zwischen 0 und 1). Standardwert ist 1.
thresholdsGibt eine Liste von Schwellenwertbereichen (low und high) an, um die zu extrahierenden Regionen zu definieren.
high(Unterparameter von thresholds) Gibt den oberen Schwellenwert für die Intensität an.
low(Unterparameter von thresholds) Gibt den unteren Schwellenwert für die Intensität an.
Vorbereitung der 3D-Bilddaten

Bevor die Oberflächenerstellung durchgeführt werden kann, müssen die 3D-Bilddaten in eine CAS-Tabelle geladen werden. Dieses Beispiel zeigt, wie DICOM-Dateien mit der Aktion `loadImages` geladen werden. Der Pfad sollte auf ein Verzeichnis auf dem Server verweisen, das die DICOM-Dateien enthält.

Kopiert!
1PROC CAS;
2 LOADACTIONSET 'image';
3 /* Annahme: DICOM-Dateien befinden sich im Server-Pfad '/path/to/dicom/files' */
4 image.loadImages /
5 path='path/to/dicom/files'
6 casout={name='my_3d_images', caslib='casuser', replace=true}
7 addColumns={'_DIMENSION_', '_RESOLUTION_', '_SPACING_'};
8RUN;

Beispiele

Dieses Beispiel erstellt eine Oberfläche für alle Bereiche im 3D-Bild, die einen Intensitätswert von 400 haben. Die resultierende Geometrie wird in den Tabellen 'vertices_simple' und 'faces_simple' gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3bioMedImage.buildSurface / TABLE={name='my_3d_images', caslib='casuser'}, intensities={400}, outputVertices={name='vertices_simple', caslib='casuser', replace=true}, outputFaces={name='faces_simple', caslib='casuser', replace=true};
4 
5RUN;
6 
Ergebnis :
Die Aktion erstellt zwei Tabellen in der 'casuser' Caslib: 'vertices_simple' (enthält die XYZ-Koordinaten der Eckpunkte) und 'faces_simple' (definiert die Dreiecke, die die Oberfläche bilden).

Dieses Beispiel extrahiert eine Oberfläche aus einem dichteren Gewebebereich, indem ein Intensitätsschwellenwert zwischen -800 und -200 festgelegt wird. Anschließend wird eine Glättung in 10 Iterationen mit einem Relaxationsfaktor von 0.3 angewendet, um eine glattere und visuell ansprechendere Oberfläche zu erzeugen.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3bioMedImage.buildSurface / TABLE={name='my_3d_images', caslib='casuser'}, thresholds={{low=-800, high=-200}}, smoothing={iterations=10, relaxationFactor=0.3}, outputVertices={name='vertices_detailed', caslib='casuser', replace=true}, outputFaces={name='faces_detailed', caslib='casuser', replace=true};
4 
5RUN;
6 
Ergebnis :
Erstellt die Tabellen 'vertices_detailed' und 'faces_detailed'. Die Geometrie in diesen Tabellen repräsentiert eine geglättete Oberfläche, die den Gewebestrukturen im angegebenen Dichtebereich entspricht.

FAQ

Was ist die `buildSurface`-Aktion?
Welche Parameter sind für die `buildSurface`-Aktion erforderlich?
Wie kann ich die erzeugte Oberfläche glätten?
Was bewirkt der Parameter `intensities`?
Wie funktionieren die `thresholds` (Schwellenwerte)?

Zugehörige Szenarien

Anwendungsfall
Extraktion einer Knochenoberfläche für die Chirurgieplanung

Eine orthopädische Abteilung möchte aus CT-Scans patientenspezifische 3D-Modelle von Knochenbrüchen erstellen, um komplexe Operationen präoperativ zu simulieren. Hierbei ist die...

Anwendungsfall
Erstellung und Glättung einer Gehirnoberfläche aus MRT-Daten

Ein neurologisches Forschungsinstitut analysiert das Volumen der grauen Substanz. Aufgrund des Rauschens in den MRT-Bildern muss die generierte Oberfläche stark geglättet werden...

Anwendungsfall
Robustheitstest bei fehlenden Zielstrukturen (Leere Menge)

In einer automatisierten Pipeline zur Qualitätskontrolle werden tausende Scans verarbeitet. Das System muss robust reagieren, wenn ein Scan fehlerhaft ist oder die gesuchte anat...