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.
| Parameter | Beschreibung |
|---|---|
| images | Gibt die Eingabe-Bildtabelle an, die die zu verarbeitenden 3D-Bilder enthält. |
| intensities | Gibt eine Liste von Intensitätswerten an. Für jeden Wert wird eine separate Oberfläche erstellt. |
| outputFaces | Gibt die Ausgabetabelle an, die die Flächen der erstellten Oberfläche(n) enthält. Jede Fläche wird durch drei Eckpunkte definiert. |
| outputVertices | Gibt die Ausgabetabelle an, die die Eckpunkte (Koordinaten) der erstellten Oberfläche(n) enthält. |
| smoothing | Gibt 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. |
| thresholds | Gibt 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. |
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.
| 1 | PROC 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_'}; |
| 8 | RUN; |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | bioMedImage.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 | |
| 5 | RUN; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | bioMedImage.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 | |
| 5 | RUN; |
| 6 |
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...
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...
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...