bioMedImage

buildSurface

Descripción

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).

bioMedImage.buildSurface { images={<biomedimageTableIn>}, intensities={<double-1> <, double-2>, ...}, outputFaces={<casouttable>}, outputVertices={<casouttable>}, smoothing={<binarySmoothingParms>}, thresholds={{<buildSurfaceThresholds-1>} <, {buildSurfaceThresholds-2}>, ...} };
Parámetros
ParámetroDescripción
imagesEspecifica la tabla de entrada que contiene las imágenes biomédicas 3D.
intensitiesEspecifica una lista de valores de intensidad para los cuales se construirán las superficies. Es una alternativa al uso de umbrales.
outputFacesEspecifica la tabla de salida para almacenar las caras (triángulos) de la superficie generada.
outputVerticesEspecifica la tabla de salida para almacenar los vértices de la superficie generada.
smoothingEspecifica los parámetros para suavizar la malla de la superficie generada, como el número de iteraciones y el factor de relajación.
thresholdsEspecifica los rangos de umbral (bajo y alto) para definir las regiones de interés de las cuales se construirán las superficies.
Creación de Datos de Ejemplo

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.

¡Copiado!
1/* Primero, cargue la acción de procesamiento de imágenes */
2PROC CAS;
3image.loadImages / path='path/to/your/dicom/folder' casout={name='biomed_image_stack', caslib='CASUSER'};
4 
5RUN;
6 

Ejemplos

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2bioMedImage.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};
7RUN;

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2bioMedImage.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};
8RUN;

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2bioMedImage.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};
8RUN;

FAQ

¿Cuál es el propósito de la acción `buildSurface`?
¿Cuáles son los parámetros de entrada y salida requeridos para esta acción?
¿Cómo se pueden definir las regiones de interés para la construcción de la superficie?
¿Qué hace el parámetro `smoothing` y cuáles son sus sub-parámetros?
¿Qué información se almacena en las tablas de salida `outputFaces` y `outputVertices`?