La acción `buildSurface` construye superficies tridimensionales a partir de una pila de imágenes biomédicas 2D. Utiliza un algoritmo de cubos marchantes para generar una malla de triángulos que representa la superficie de los objetos definidos por umbrales de intensidad o valores de intensidad específicos en la imagen 3D. Esta acción es fundamental en la visualización y análisis de estructuras anatómicas, como órganos o tumores, a partir de datos de imágenes médicas como MRI o CT scans. Genera dos tablas de salida: una para los vértices de la malla y otra para las caras (triángulos).
| Parámetro | Descripción |
|---|---|
| images | Especifica la tabla de entrada que contiene las imágenes biomédicas 3D. |
| intensities | Especifica una lista de valores de intensidad para los cuales se construirán las superficies. Es una alternativa al uso de umbrales. |
| outputFaces | Especifica la tabla de salida para almacenar las caras (triángulos) de la superficie generada. |
| outputVertices | Especifica la tabla de salida para almacenar los vértices de la superficie generada. |
| smoothing | Especifica los parámetros para suavizar la malla de la superficie generada, como el número de iteraciones y el factor de relajación. |
| thresholds | Especifica los rangos de umbral (bajo y alto) para definir las regiones de interés de las cuales se construirán las superficies. |
Este bloque de código crea una tabla CAS de ejemplo llamada `biomed_image_stack` que contiene una pila de imágenes 2D para simular una imagen biomédica 3D. Estos datos se utilizarán en los ejemplos siguientes para construir una superficie.
| 1 | /* Primero, cargue la acción de procesamiento de imágenes */ |
| 2 | PROC CAS; |
| 3 | image.loadImages / path='path/to/your/dicom/folder' casout={name='biomed_image_stack', caslib='CASUSER'}; |
| 4 | |
| 5 | RUN; |
| 6 |
Este ejemplo construye una superficie 3D para una región con una intensidad de 250. Las caras y los vértices de la superficie se guardan en las tablas `surface_faces` y `surface_vertices` respectivamente.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name='biomed_image_stack'}} |
| 4 | intensities={250} |
| 5 | outputFaces={name='surface_faces', caslib='CASUSER', replace=true} |
| 6 | outputVertices={name='surface_vertices', caslib='CASUSER', replace=true}; |
| 7 | RUN; |
Este ejemplo construye una superficie 3D utilizando un rango de umbral de 700 a 1200. Además, aplica un suavizado a la malla resultante con 10 iteraciones y un factor de relajación de 0.5 para obtener una superficie más lisa.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name='biomed_image_stack'}} |
| 4 | thresholds={{low=700, high=1200}} |
| 5 | smoothing={iterations=10, relaxationFactor=0.5} |
| 6 | outputFaces={name='smoothed_surface_faces', caslib='CASUSER', replace=true} |
| 7 | outputVertices={name='smoothed_surface_vertices', caslib='CASUSER', replace=true}; |
| 8 | RUN; |
Este ejemplo demuestra cómo construir múltiples superficies en una sola llamada. Se genera una superficie para la región con intensidad 250 y otra para la región definida por el umbral entre 800 y 1000. Esto es útil para visualizar diferentes tejidos o estructuras simultáneamente.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name='biomed_image_stack'}} |
| 4 | intensities={250} |
| 5 | thresholds={{low=800, high=1000}} |
| 6 | outputFaces={name='multi_surface_faces', caslib='CASUSER', replace=true} |
| 7 | outputVertices={name='multi_surface_vertices', caslib='CASUSER', replace=true}; |
| 8 | RUN; |