En visualización científica y gráficos por computadora , la representación de volumen es un conjunto de técnicas utilizadas para mostrar una proyección 2D de un conjunto de datos muestreados discretamente en 3D , típicamente un campo escalar 3D .
Un conjunto de datos 3D típico es un grupo de imágenes de cortes 2D adquiridas mediante un escáner CT , MRI o MicroCT . Por lo general, se adquieren en un patrón regular (por ejemplo, un corte por cada milímetro de profundidad) y suelen tener una cantidad regular de píxeles de imagen en un patrón regular. Este es un ejemplo de una cuadrícula volumétrica regular, donde cada elemento de volumen o vóxel está representado por un único valor que se obtiene al muestrear el área inmediata que rodea al vóxel.
Para generar una proyección 2D del conjunto de datos 3D, primero hay que definir una cámara en el espacio en relación con el volumen. Además, hay que definir la opacidad y el color de cada vóxel. Esto se suele definir mediante una función de transferencia RGBA (para rojo, verde, azul, alfa) que define el valor RGBA para cada valor de vóxel posible.
Por ejemplo, se puede visualizar un volumen extrayendo isosuperficies (superficies de valores iguales) del volumen y representándolas como mallas poligonales o representando el volumen directamente como un bloque de datos. El algoritmo de cubos en marcha es una técnica común para extraer una isosuperficie de los datos de volumen. La representación directa del volumen es una tarea que requiere un uso intensivo de recursos computacionales y que se puede realizar de varias maneras.
Otro método de renderizado de volumen es la marcha de rayos .
La representación de volumen se distingue de las presentaciones de tomografía de corte fino y también se distingue generalmente de las proyecciones de modelos 3D, incluida la proyección de intensidad máxima . [1] Aún así, técnicamente, todas las representaciones de volumen se convierten en proyecciones cuando se ven en una pantalla bidimensional , lo que hace que la distinción entre proyecciones y representaciones de volumen sea un poco vaga. Sin embargo, los epítomes de los modelos de representación de volumen presentan una combinación de, por ejemplo, coloración [2] y sombreado [3] para crear representaciones realistas y/o observables.
Un renderizador de volumen directo [4] [5] requiere que cada valor de muestra se asigne a la opacidad y a un color. Esto se hace con una " función de transferencia ", que puede ser una rampa simple, una función lineal por partes o una tabla arbitraria. Una vez convertido a un valor de modelo de color RGBA (para rojo, verde, azul, alfa), el resultado RGBA compuesto se proyecta en el píxel correspondiente del búfer de cuadros. La forma en que esto se hace depende de la técnica de renderizado.
Es posible combinar estas técnicas. Por ejemplo, una implementación de deformación de corte podría utilizar hardware de texturización para dibujar los cortes alineados en el búfer fuera de pantalla .
La técnica de proyección de rayos de volumen se puede derivar directamente de la ecuación de renderizado . Proporciona resultados de muy alta calidad, generalmente considerados como los que proporcionan la mejor calidad de imagen. La proyección de rayos de volumen se clasifica como una técnica de renderizado de volumen basada en imágenes, ya que el cálculo emana de la imagen de salida, no de los datos de volumen de entrada como es el caso de las técnicas basadas en objetos. En esta técnica, se genera un rayo para cada píxel de imagen deseado. Utilizando un modelo de cámara simple, el rayo comienza en el centro de proyección de la cámara (generalmente el punto del ojo) y pasa a través del píxel de la imagen en el plano de imagen imaginario que flota entre la cámara y el volumen que se va a renderizar. El rayo se recorta por los límites del volumen para ahorrar tiempo. Luego, el rayo se muestrea a intervalos regulares o adaptativos en todo el volumen. Los datos se interpolan en cada punto de muestra, se aplica la función de transferencia para formar una muestra RGBA, la muestra se compone sobre el RGBA acumulado del rayo y el proceso se repite hasta que el rayo sale del volumen. El color RGBA se convierte en un color RGB y se deposita en el píxel de imagen correspondiente. El proceso se repite para cada píxel de la pantalla para formar la imagen completa.
Se trata de una técnica que sacrifica la calidad por la velocidad. En ella, cada elemento de volumen se proyecta , como dijo Lee Westover, como una bola de nieve, sobre la superficie de visualización en orden de atrás hacia adelante. Estas proyecciones se representan como discos cuyas propiedades (color y transparencia) varían diametralmente de manera normal ( gaussiana ). También se utilizan discos planos y otros tipos de distribución de propiedades según la aplicación. [6] [7]
El enfoque de deformación de corte para la representación de volumen fue desarrollado por Cameron y Undrill, popularizado por Philippe Lacroute y Marc Levoy . [8] En esta técnica, la transformación de visualización se transforma de manera que la cara más cercana del volumen se alinea con el eje de un búfer de datos de imagen fuera de la pantalla con una escala fija de vóxeles a píxeles. Luego, el volumen se renderiza en este búfer utilizando la alineación de memoria mucho más favorable y factores de escala y mezcla fijos. Una vez que se han renderizado todas las porciones del volumen, el búfer se deforma a la orientación deseada y se escala en la imagen mostrada.
Esta técnica es relativamente rápida en software, pero el costo es que el muestreo es menos preciso y la calidad de imagen es potencialmente peor en comparación con la proyección de rayos. Existe una sobrecarga de memoria para almacenar varias copias del volumen, para la capacidad de tener volúmenes alineados cerca del eje. Esta sobrecarga se puede mitigar utilizando la codificación de longitud de ejecución .
Muchos sistemas de gráficos 3D utilizan el mapeo de texturas para aplicar imágenes o texturas a objetos geométricos. Las tarjetas gráficas de PC de consumo son rápidas en el texturizado y pueden renderizar eficientemente porciones de un volumen 3D, con capacidades de interacción en tiempo real. Las GPU de estaciones de trabajo son aún más rápidas y son la base de gran parte de la visualización del volumen de producción que se utiliza en imágenes médicas , petróleo y gas y otros mercados (2007). En años anteriores, se utilizaban sistemas dedicados de mapeo de texturas 3D en sistemas gráficos como Silicon Graphics InfiniteReality , el acelerador de gráficos HP Visualize FX y otros. Esta técnica fue descrita por primera vez por Bill Hibbard y Dave Santek. [9]
Estos cortes se pueden alinear con el volumen y renderizar en un ángulo respecto del espectador, o bien alinear con el plano de visualización y muestrear a partir de cortes no alineados a través del volumen. Para la segunda técnica se necesita compatibilidad con hardware gráfico para texturas 3D.
La texturización alineada con el volumen produce imágenes de calidad razonable, aunque a menudo hay una transición notable cuando se gira el volumen.
Debido a la naturaleza extremadamente paralela de la renderización de volumen directa, el hardware de renderización de volumen de propósito especial fue un tema de investigación rico antes de que la renderización de volumen de GPU se volviera lo suficientemente rápida. La tecnología más citada fue el sistema de proyección de rayos en tiempo real VolumePro, desarrollado por Hanspeter Pfister y científicos de Mitsubishi Electric Research Laboratories , [10] que utilizó un gran ancho de banda de memoria y fuerza bruta para renderizar utilizando el algoritmo de proyección de rayos. La tecnología se transfirió a TeraRecon, Inc. y se produjeron y vendieron dos generaciones de ASIC. El VP1000 [11] se lanzó en 2002 y el VP2000 [12] en 2007.
Una técnica recientemente explotada para acelerar los algoritmos tradicionales de renderizado de volumen, como el ray-casting, es el uso de tarjetas gráficas modernas. A partir de los sombreadores de píxeles programables , la gente reconoció el poder de las operaciones paralelas en múltiples píxeles y comenzó a realizar cálculos de propósito general en las unidades de procesamiento gráfico (GPGPU). Los sombreadores de píxeles pueden leer y escribir aleatoriamente desde la memoria de video y realizar algunos cálculos matemáticos y lógicos básicos. Estos procesadores SIMD se utilizaron para realizar cálculos generales, como renderizar polígonos y procesamiento de señales. En las últimas generaciones de GPU , los sombreadores de píxeles ahora pueden funcionar como procesadores MIMD (ahora capaces de ramificarse de forma independiente) utilizando hasta 1 GB de memoria de textura con formatos de punto flotante. Con tal poder, prácticamente cualquier algoritmo con pasos que se puedan realizar en paralelo, como el ray-casting de volumen o la reconstrucción tomográfica , se puede realizar con una tremenda aceleración. Los sombreadores de píxeles programables se pueden utilizar para simular variaciones en las características de iluminación, sombra, reflexión , color emisivo, etc. Estas simulaciones se pueden escribir utilizando lenguajes de sombreado de alto nivel .
El objetivo principal de la optimización es omitir la mayor cantidad de volumen posible. Un conjunto de datos médicos típico puede tener un tamaño de 1 GB. Para reproducirlo a 30 fotogramas por segundo se necesita un bus de memoria extremadamente rápido. Omitir vóxeles significa que se necesita procesar menos información.
A menudo, un sistema de renderización de volumen tendrá un sistema para identificar regiones del volumen que no contienen material visible. Esta información se puede utilizar para evitar la renderización de estas regiones transparentes. [13]
Esta es una técnica que se utiliza cuando el volumen se renderiza en orden de adelante hacia atrás. Para un rayo que atraviesa un píxel, una vez que se ha encontrado suficiente material denso, las muestras adicionales no harán una contribución significativa al píxel y, por lo tanto, pueden ignorarse.
El uso de estructuras jerárquicas como octree y BSP -tree podría ser muy útil tanto para la compresión de datos de volumen como para la optimización de la velocidad del proceso de proyección de rayos volumétricos.
La segmentación de imágenes es un procedimiento manual o automático que se puede utilizar para seccionar grandes porciones del volumen que se considera poco interesante antes de la renderización; la cantidad de cálculos que se deben realizar mediante el ray casting o la combinación de texturas se puede reducir significativamente. Esta reducción puede ser de O(n) a O(log n) para n vóxeles indexados secuencialmente. La segmentación de volumen también tiene importantes beneficios de rendimiento para otros algoritmos de trazado de rayos . La segmentación de volumen se puede utilizar posteriormente para resaltar o exponer [14] estructuras de interés.
Al representar regiones menos interesantes del volumen con una resolución más gruesa, se puede reducir la sobrecarga de entrada de datos. En una observación más detallada, los datos de estas regiones se pueden completar ya sea mediante la lectura de la memoria o el disco, o mediante interpolación . El volumen con una resolución más gruesa se vuelve a muestrear a un tamaño más pequeño de la misma manera que se crea una imagen de mapa MIP 2D a partir del original. Estos volúmenes más pequeños también se utilizan por sí mismos mientras se rota el volumen a una nueva orientación.
La representación de volumen preintegrada [15] es un método que puede reducir los artefactos de muestreo al precomputar gran parte de los datos necesarios. Es especialmente útil en aplicaciones aceleradas por hardware [16] [17] porque mejora la calidad sin un gran impacto en el rendimiento. A diferencia de la mayoría de las demás optimizaciones, esta no omite vóxeles. En cambio, reduce la cantidad de muestras necesarias para mostrar con precisión una región de vóxeles. La idea es representar los intervalos entre las muestras en lugar de las muestras en sí. Esta técnica captura material que cambia rápidamente, por ejemplo, la transición de músculo a hueso con mucho menos cálculo.
El mallado basado en imágenes es el proceso automatizado de creación de modelos informáticos a partir de datos de imágenes 3D (como MRI , CT , CT industrial o microtomografía ) para análisis y diseño computacional, por ejemplo, CAD, CFD y FEA.
Para una vista de pantalla completa, solo se requiere mostrar un vóxel por píxel (el frontal) (aunque se pueden usar más para suavizar la imagen); si se necesita animación, los vóxeles frontales que se mostrarán se pueden almacenar en caché y su ubicación relativa a la cámara se puede recalcular a medida que se mueve. Cuando los vóxeles de la pantalla se alejan demasiado para cubrir todos los píxeles, se pueden encontrar nuevos vóxeles frontales mediante proyección de rayos o algo similar, y cuando hay dos vóxeles en un píxel, se puede conservar el frontal.
{{cite book}}
: Mantenimiento CS1: fecha y año ( enlace ){{cite book}}
: Mantenimiento CS1: fecha y año ( enlace )