home GIGA áreas de interés
investigación innovación desarrollo
docencia publicaciones imágenes

*Especificaciones.
*Componentes.
*Areas de Impacto.



Componentes de la aplicación NUT
 

Nut se compone de dos partes claramente diferenciadas:

    1. El algoritmo generador de la imagen
    2. La interfase con el usuario

1. El algoritmo generador de la imagen:

Este permite la visualización de una escena formada por las fuentes de luz , una cámara, un plano de corte, un vector de características de opacidad-color y el objeto a representar: una matriz tridimensional de datos voxelizados. La salida deja una serie de imágenes en formato bitmap.

  • El algoritmo de generación se ha dividido a su vez en otras dos partes:

1.1) Iluminación de la matriz de datos a partir de las fuentes de luz, desarrollado a partir del algoritmo de trazado de rayos de Heidelberg.

1.2) Trazado del rayo usando aritmética entera a partir de la generalización 3D del algoritmo de trazado de línea de Bresenham en 2D.

La especificación de la escena viene dada por un origen de coordenadas alrededor del cual giran los diferentes elementos:

La matriz de datos:

Es una matriz tridimensional que se trata como una función discreta de valores.

Esta formada por voxels, cada uno de los cuales almacena un valor, constante en su dominio, que define la característica a estudiar (densidad, opacidad, probabilidad de ocupación...) cuyo valor puede variar entre 0 y 255.

El formato de almacenamiento de la matriz de datos en disco viene dado por una pequeña cabecera de 3 enteros que definen las dimensiones de la matriz en el orden: Tamaño eje X, Y, Z; para a continuación almacenar los bytes (unsigned char) de la matriz de forma lineal siguiendo el mismo orden, primero las filas en el eje X, para luego seguir con el eje Y y el Z.

El centro geométrico de la matriz se sitúa en el origen de coordenadas de la escena.

También se puede redefinir por el usuario la relación de aspecto del voxel para tener en cuenta un mallado no uniforme del objeto a estudiar.

Fuentes de luz:

En la actualidad se dispone de 8 fuentes direccionales fijas seleccionables por el usuario y regulables en intensidad. Asimismo se dispone de un factor de luz ambiental.

Existen 6 fuentes perpendiculares a cada cara y dos más definidas por las diagonales positiva y negativa de la matriz.

Cámara:

Definida por sus coordenadas esféricas alrededor del origen, y orientada hacia el centro geométrico de la matriz.

Plano de corte:

Definido por su vector director que puede tomar cualquier orientación y translación alrededor del centro geométrico de la matriz de datos, permitiendo dividir a esta en dos mitades, una de las cuales tiene opacidad cero, permitiendo la observación de estructuras internas en el objeto voxelizado.

Vector de características:

Definido por un vector de 256 elementos que permiten asociar a cada valor de entrada posible, almacenado en un voxel, una opacidad y un color en formato RGB para su posterior proceso por el trazado de rayos (indexación).

 

2. La interfase con el usuario:

Esta permite la manipulación de las variables que definen los elementos de una escena a través de unos diálogos en forma gráfica, intuitiva y fácil de usar.

Se obtiene como salida una imagen en memoria que se presenta en la vista de la aplicación, siendo posible almacenarla en disco en formato Windows bmp.

La implementación final del interfase, así como la integración del algoritmo de generación de imagen realizado en ANSI C++, se ha realizado en el entorno de desarrollo de Microsoft Visual C++ 5.0 que a permitido una optimización del código para entornos tipo Windows NT.

Se ha dividido la interfase en 6 áreas diferenciadas:

    • Luces
    • Cámara
    • Materiales
    • Corte
    • Animación
    • Prosol (prototipado sólido)
    • Render

De las anteriores áreas se destaca el uso de materiales:

Un material se define como un intervalo continuo de valores de entrada a los que se le asocia una opacidad y color deseados para su posterior representación. Todos estos intervalos quedan finalmente almacenados en el vector de características lo que permite una segmentación de los datos de la matriz de forma interactiva por parte del usuario, ya que en todo momento tiene reflejado en pantalla, junto con el histograma de los datos, las modificaciones del vector de características.

También se ha incluido la posibilidad de crear secuencias animadas:

A través de la definición de diferentes ‘fotogramas clave’ en diferentes instantes de tiempo, se almacenan en cada un de ellos los valores de una escena (iluminación, punto de vista, plano de corte y materiales), para que posteriormente el programa interpole dichos valores entre los diferentes fotogramas dando como resultado una serie de imágenes en formato bitmap que se almacenan en disco duro para su posterior visualización.

Menú Prosol para la creación de prototipos físicos reales a partir de los datos volumétricos (para más información, ver el documento adjunto: ‘Especificación técnica de Prosol’).

Por último queda el dialogo de render:

En este dialogo se define el tamaño de la imagen en pixels, el uso de antialiasing, la relación de aspecto de pixels y voxels, es decir, los últimos parámetros necesarios para lanzar el calculo de la imagen final.

Sobre Nut: seron@posta.unizar.es; fermin@phoebe.cps.unizar.es