MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC,...

8
MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D 1 Vicente Domínguez González [email protected] 1 Alberto Martín Guerrero [email protected] 1 Antonio Adán Oliver [email protected] 1 Ricardo Chacón Chacón [email protected] 2 Santiago Salamanca Miño [email protected] 2 Emiliano Pérez Hernández [email protected] 2 Pilar Merchán García [email protected] 1 Escuela Superior de Informática. Ciudad Real. Universidad de Castilla La Mancha,. 2 Escuela de Ingenierías Industriales. Badajoz. Universidad de Extremadura Resumen El presente trabajo se refiere al establecimiento de estrategias computacionales eficientes para gestión de datos 3D en entornos de Visión por Computador. Su objetivo se centra en el desarrollo de técnicas para mejorar el tratamiento de grandes volúmenes de información procedentes de sensores de rango y está motivado por la dificultad y restricciones que ofrecen los computadores personales para trabajar en circunstancias de manejo masivo de datos. Aquí presentamos unas pautas de actuación que han permitido optimizar las prestaciones del computador utilizado. Estas pautas de procesado han sido utilizadas sobre conjuntos de imágenes de rango con el objetivo de desarrollar aplicaciones de digitalización, restauración y visualización de esculturas. El presente trabajo se esta desarrollando dentro del proyecto “Técnicas de digitalización completa 3D para piezas complejas de gran dimensión” DPI2006-14794-C02 en colaboración con el Museo Nacional de Arte Romano (MNAR) de Mérida. Palabras Clave: Digitalización 3D, Computador, Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización de objetos y mundos reales es un campo de investigación que por sí mismo se ha ido abriendo camino con fuerza a partir de la década de los años 90. En la actualidad se puede disponer de una alta tecnología sensorial que permite, no sólo simular, sino virtualizar la realidad con un asombroso grado de perfección y posibilidades. Los sistemas sensoriales 3D basados en visión (sensores de rango, sensores láser, sistemas basados en luz estructurada, etc.) proporcionan un gran volumen de datos sobre la escena visualizada, cuya dimensión depende de la propia resolución del sensor. Hoy en día existen sistemas basados en tecnología láser que generan millones de puntos en cada toma de la escena. Posteriormente, toda esta información es procesada dependiendo de la aplicación a seguir. En general, podemos decir que hay dos líneas de aplicación referentes a inteligencia artificial y a reconstrucción virtual. El contenido de este artículo se refiere al tratamiento de la información para la última de estas aplicaciones. En la reconstrucción de modelos sintéticos mediante digitalización, se pretende obtener a través de ingeniería inversa, una representación virtual lo más cercana posible al objeto real. En el proceso de tratamiento y representación digital 3D confluyen multitud de problemas de entre los que aquí destacamos la adquisición, procesamiento y visualización de grandes volúmenes de datos. Es obvio que, en este entorno de trabajo, se deben exigir unas prestaciones mínimas del computador en cuanto a velocidad de cálculo, tamaño de memoria y calidad de la tarjeta de video. Sin embargo, aun cumpliendo las exigencias mínimas, a menudo el uso de los recursos disponibles no es optimizado, lo que trae consigo un procesado y visualización ineficiente. Esta circunstancia acarrea problemas de actuación en entornos de computadores personales (portátiles) que son habitualmente utilizados en tareas de digitalización, máxime cuando se trabaja en exteriores o fuera del laboratorio. Para dar respuesta a este problema se presentan aquí una serie de estrategias y pautas a seguir en los procesos de movimiento y visualización de mallas muy densas, gestión multiventana, estructuras de datos para información 3D y gestión del adaptador de video, que aligeran la carga computacional y mejoran

Transcript of MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC,...

Page 1: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D 1Vicente Domínguez González [email protected]

1Alberto Martín Guerrero

[email protected]

1Antonio Adán Oliver [email protected]

1Ricardo Chacón Chacón [email protected]

2Santiago Salamanca Miño

[email protected]

2Emiliano Pérez Hernández [email protected]

2Pilar Merchán García [email protected]

1 Escuela Superior de Informática. Ciudad Real. Universidad de Castilla La Mancha,. 2Escuela de Ingenierías Industriales. Badajoz. Universidad de Extremadura

Resumen

El presente trabajo se refiere al establecimiento de estrategias computacionales eficientes para gestión de datos 3D en entornos de Visión por Computador. Su objetivo se centra en el desarrollo de técnicas para mejorar el tratamiento de grandes volúmenes de información procedentes de sensores de rango y está motivado por la dificultad y restricciones que ofrecen los computadores personales para trabajar en circunstancias de manejo masivo de datos. Aquí presentamos unas pautas de actuación que han permitido optimizar las prestaciones del computador utilizado. Estas pautas de procesado han sido utilizadas sobre conjuntos de imágenes de rango con el objetivo de desarrollar aplicaciones de digitalización, restauración y visualización de esculturas. El presente trabajo se esta desarrollando dentro del proyecto “Técnicas de digitalización completa 3D para piezas complejas de gran dimensión” DPI2006-14794-C02 en colaboración con el Museo Nacional de Arte Romano (MNAR) de Mérida. Palabras Clave: Digitalización 3D, Computador, Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización de objetos y mundos reales es un campo de investigación que por sí mismo se ha ido abriendo camino con fuerza a partir de la década de los años 90. En la actualidad se puede disponer de una alta tecnología sensorial que permite, no sólo simular, sino virtualizar la realidad con un asombroso grado de perfección y posibilidades.

Los sistemas sensoriales 3D basados en visión (sensores de rango, sensores láser, sistemas basados en luz estructurada, etc.) proporcionan un gran volumen de datos sobre la escena visualizada, cuya dimensión depende de la propia resolución del sensor. Hoy en día existen sistemas basados en tecnología láser que generan millones de puntos en cada toma de la escena. Posteriormente, toda esta información es procesada dependiendo de la aplicación a seguir. En general, podemos decir que hay dos líneas de aplicación referentes a inteligencia artificial y a reconstrucción virtual. El contenido de este artículo se refiere al tratamiento de la información para la última de estas aplicaciones. En la reconstrucción de modelos sintéticos mediante digitalización, se pretende obtener a través de ingeniería inversa, una representación virtual lo más cercana posible al objeto real. En el proceso de tratamiento y representación digital 3D confluyen multitud de problemas de entre los que aquí destacamos la adquisición, procesamiento y visualización de grandes volúmenes de datos. Es obvio que, en este entorno de trabajo, se deben exigir unas prestaciones mínimas del computador en cuanto a velocidad de cálculo, tamaño de memoria y calidad de la tarjeta de video. Sin embargo, aun cumpliendo las exigencias mínimas, a menudo el uso de los recursos disponibles no es optimizado, lo que trae consigo un procesado y visualización ineficiente. Esta circunstancia acarrea problemas de actuación en entornos de computadores personales (portátiles) que son habitualmente utilizados en tareas de digitalización, máxime cuando se trabaja en exteriores o fuera del laboratorio. Para dar respuesta a este problema se presentan aquí una serie de estrategias y pautas a seguir en los procesos de movimiento y visualización de mallas muy densas, gestión multiventana, estructuras de datos para información 3D y gestión del adaptador de video, que aligeran la carga computacional y mejoran

Page 2: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

el rendimiento de aplicaciones software, relacionadas con la reconstrucción y visualización de objetos 3D. 1.2 INFORMACION 3D EN EL PROCESO En el laboratorio de investigación 3D Visual Computing & Robotics Lab (UCLM. http://isa.inf-cr.uclm.es/) se están llevando a cabo trabajos de digitalización de piezas escultóricas de tamaños que varían desde los tres centímetros hasta más de tres metros de altura (Figura 1). El procedimiento de trabajo consiste en realizar una secuencia de digitalizaciones sobre la pieza mediante el escáner láser VIVID 910 de Konica Minolta. Dependiendo del tamaño del objeto, el número de digitalizaciones puede variar entre 10 y 200 tomas. El número de puntos en cada una de las digitalizaciones individuales depende principalmente de la óptica acoplada al escáner, proporcionando valores máximos de hasta 300.000 puntos y más 600.000 polígonos, además de una imagen color de la escena de dimensión 640x480 píxeles. En cada una de las capturas se tiene que gestionar la siguiente información básica: - P : Puntos y coordenadas 3D pertenecientes a la superficie del objeto - M Estructura indexada sobre P referente a las facetas triangulares de la malla.. - N : Direcciones normales para cada uno de los puntos P - I : Imagen color de la vista capturada, conteniendo las componentes RGB de cada píxel de imagen. - C: Coordenadas de textura para cada punto. Sobre estas digitalizaciones se lleva a cabo un trabajo posterior para obtener el objeto completo. En primer lugar, se aplica un proceso de reconstrucción geométrica que consta de varias etapas: registro (con el fin de acoplar todas las vistas del objeto bajo el mismo punto de vista), mezclado de tomas (para obtener una única vista que cubre todo el objeto), rellenado de huecos y limpieza de posibles errores que se encuentren en el mallado resultante. En segundo lugar, se aplica un proceso de reconstrucción textural que permite proporcionar el color a la geometría completa, tomando como base imagen de cada una de las múltiples vistas parciales del objeto. La reconstrucción de un objeto de mediana dimensión puede llegar hasta 15000000 puntos y 30000000 polígonos, con la consecuente información N, I y C asociada a cada punto P. La cantidad de memoria principal y secundaria, la capacidad del procesador y las prestaciones del adaptador de video que demandan la mayoría de paquetes software comerciales sólo es satisfecha si se dispone de una

estación de trabajo multiprocesador de altas prestaciones. Sin embargo en la mayoría de las ocasiones no es posible acceder a este tipo de hardware y nos vemos obligados a optimizar los recursos en los ordenadores personales. En nuestro caso, para desarrollos software no optimizados y para computadores personales, se llega a un límite de trabajo de 400000 puntos y 800000 polígonos para la malla reconstruida. En estos límites, los procesos de lectura, visualización y cálculo son tan pesados que hace impracticable el uso del software. Por el contrario, este mismo software, pero siguiendo las pautas de optimización que se detallan en la siguiente sección se ha sido capaz de reconstruir objetos 3D de hasta 1500000 y 3000000 de polígonos, lo que ha supuesto una mejora apreciable.

Fig. 1: Digitalización de grandes piezas

escultóricas. Detalles de resolución en la malla 1.3 PAUTAS GENERICAS DE ACTUACION A través del manejo de cualquier tipo de software de tratamiento y/o visualización de objetos 3D, se utilizan los recursos del computador que resultan transparentes al usuario. Entre estas capacidades, las más importantes son: el tipo de procesador, memoria interna y adaptador de video. En particular, para desarrollos software que manejan grandes volúmenes de datos, los puntos críticos de optimización se centran en la gestión de la memoria principal y memoria secundaria, la carga de trabajo del procesador y la gestión del adaptador de vídeo. Idealmente, el software debe consumir la menor memoria principal posible, limitando al mínimo las lecturas y/o escrituras sobre la memoria secundaria y manteniendo el procesador con una carga de trabajo suficientemente pequeña para que la aplicación nos proporcione resultados sin bloquear otros procesos de usuario. Por otra parte, si se dispone de una memoria principal suficientemente amplia, se puede utilizar ésta para mejorar el rendimiento general del software y limitar los accesos a memoria secundaria. En

Page 3: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

cualquier caso, se debe tener en cuenta que la memoria debe mantenerse bajo el menor grado de ocupación posible, es decir, mantener en memoria los datos estrictamente necesarios en cada momento en la ejecución del programa. Esta exigencia depende a su vez, no sólo del diseño software, sino del propio lenguaje de programación utilizado. Por ejemplo en el lenguaje de programación Java dispone de una máquina virtual que actúa como recolector de basura liberando o reasignando las referencias a memoria de objetos que el recolector interpreta que ya no se utilizan. Obviamente se puede igualmente optar por utilizar el sistema operativo para controlar directamente la memoria. Por ejemplo los sistemas Windows dan soporte a sus usuarios para controlar la memoria mediante aplicaciones externas, pero esta posibilidad supondría un coste computacional muy alto, por lo que no es recomendable. Una opción más recomendable es utilizar un leguaje de programación que permita la gestión de la memoria principal a muy bajo nivel, como es C/C++. Con estos lenguajes y un diseño apropiado, se podría mantener la memoria totalmente optimizada, usando la exclusivamente necesaria en cada instante. La forma de trabajar con estos lenguajes se basará en reservar la memoria necesaria en cada subproceso y liberarla al término del mismo. La parte más lenta de computador es, sin duda, la memoria secundaria; por lo que minimizar el acceso a la misma, implica una mejora directa en el rendimiento del software. La principal operación de lectura, que un software de visualización 3D, lleva a cabo es la carga del objeto, desde memoria secundaria a memoria principal tras su procesado. En nuestro caso los objetos con los que se trabaja ocupan varios cientos de mega bytes. Si no existe un tamaño suficiente de memoria principal para cargar el objeto completo, se debe hacer una carga dependiendo de la memoria principal que disponga el sistema, lo que acarreará problemas de retardos en la imagen. Una parte muy importante para poder optimizar aplicaciones de visualización de objetos 3D, es la correcta utilización de las funciones del adaptador gráfico. Para desarrollo de aplicaciones de visualización 3D, lo más recomendable es usar librerías gráfica que nos proporcionan un interfase de abstracción del hardware gráfico utilizando todas sus prestaciones (por ejemplo, OpenGL y Direct3D). Por otra parte, el motor de renderizado, ya sea hardware o software, usa triángulos para computar las primitivas 3D. Consecuentemente, para aligerar los cálculos del adaptador de video, ahorrando los cálculos de conversión de polígonos, en la representación B_rep se deben utilizar polígonos triangulares.

2 PROPUESTAS DE MEJORAS EN LA GESTION DE DATOS 3D.

En esta sección se describen un conjunto de actuaciones que permiten mejorar el rendimiento de herramientas desarrolladas para la gestión de información 3D. 2.1 MOVIMIENTO ESPACIAL DE DATOS

3D. El movimiento de datos 3D se refiere a realizar las transformaciones básicas geométricas (rotación, traslación y escalado) sobre una malla de alta densidad. A efectos de visualización, una operación de movimiento de una malla densa, supone una compleja tarea que realiza el adaptador de video en la que se debe convertir los datos 3D originales a información 2D y representarlos en la pantalla con una cadencia de tiempo real. Como es sabido, el adaptador de video procesa los datos que le llegan y guarda su salida como una imagen para mostrar en su buffer de salida (operación de renderizado). En nuestro caso, ante un movimiento de un modelo sintetizado, un nuevo proceso de renderizado se ejecuta. Si la nueva imagen de salida no puede ser calculada en un tiempo menor que el refresco de la pantalla del computador, se solicitará soporte al procesador del PC, y si éste tampoco es capaz de procesar tanta información, se aborta el proceso y se pasa a procesar la siguiente posición. Si sucede tal cosa, se aprecian saltos discontinuos en el movimiento del objeto y la visualización es defectuosa. Suponiendo un monitor con refresco de 60 Hz, significará que debe recibir una imagen nueva cada 16.66 ms. Esto implica, en nuestro caso, que el adaptador de vídeo debe ser capaz de procesar entorno a los 3000000 de polígonos en 16.66 ms, acción que resulta prácticamente imposible con los computadores personales actuales. Este problema se ha abordado a través de una técnica de reducción de puntos que existe en otros software comerciales. La idea se basa en que, normalmente, el usuario mueve la pieza sintetizada para acceder a otro punto de vista desde el que puede ver otra apariencia o detalles que antes no percibía, siendo el movimiento un aspecto accesorio y siendo la posición final el aspecto clave en esta tarea. Sin embargo, si el usuario no visualiza en tiempo real el movimiento que está ejerciendo sobre el objeto, no puede controlar la vista final deseada. Por lo tanto, ya que durante el movimiento el usuario no requiere alta precisión, se reduce significativamente el volumen de datos a procesar por el adaptador de video cuando se realizan operaciones de rotación con los objetos 3D,

Page 4: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

evitando al mismo tiempo sobrecargar el procesador del PC. En la práctica este procedimiento es implementado de la siguiente forma. Supongamos que el usuario interactúa con el computador a través de ratón (aunque podría hacerlo por cualquier otro interfase) y que el sistema se encuentra en un momento t, en el cuál el usuario se posiciona con el ratón sobre el objeto 3D (Fig. 2-a). Cuando el usuario produce un evento con el ratón (por ejemplo, pulsando el botón izquierdo) en un momento t+1, se ejecuta una subrutina que provoca que se almacene el estado de la vista actual (tipo de visualización: polígonos texturados, polígonos con color sintético, puntos y mallado y matriz de rotación) y que el adaptador de video muestre una nueva vista con un número máximo de puntos indicado por el usuario (Fig. 2-b). Cuando, en un momento t+2, el usuario realiza movimientos con el ratón, se ejecuta otra subrutina que envía las órdenes de rotación al adaptador de video, produciéndose éstas sobre la vista reducida, y almacenamos la rotación acumulada (Fig. 2-c). Cuando, en un momento t+3, el usuario produce otro evento con el ratón (soltando el botón izquierdo) se sustituye la vista reducida por la vista almacenada y se aplica la rotación acumulada de la vista reducida sobre la vista actual (Fig. 2-d). La figura 3 presenta un diagrama de flujo que ilustra la funcionalidad durante el proceso de rotación. El porcentaje de reducción puede ser escogida por el usuario. Nuestra experiencia es que se soporta una visualización sin discontinuidades con volúmenes de por debajo de 800000 puntos.

Fig. 2: Proceso de reducción de puntos.

Seleccionar ventana

¿Pulsa botón 

izquierdo del ratón?

Seleccionar ventana

Guardar estado actual

Reduce puntos Visualizar

¿Suelta botón 

izquierdo del ratón?

Restaurar estado anterior

Visualizar

¿Mueve ratón?

Actualizar matriz de rotación

Aplicar rotación

Visualizar

Si

No

No

No

Si

Si

Fig. 3: Diagrama de flujo del proceso de

reducción de puntos. 2.2 VISUALIZACIÓN DE INFORMACIÓN

3D. La visualización de un objeto 3D puede realizarse mostrando distintos tipos de representaciones y añadiendo igualmente componentes externos concernientes a temas de reflectancia e iluminación. Por ejemplo, es usual que una herramienta de visualización considere representaciones de puntos, malla y poligonos añadiendo o no propiedades de color por punto o por polígono y considerando color original o sintético. El conjunto de todos estos tipos de representación 3D ocupan un tamaño importante en memoria principal. La tabla 1 muestra varias representaciones de un mismo objeto con 300000 puntos y la memoria ocupada en cada caso. Por lo tanto gestionar correctamente la construcción y visualizado de estos objetos repercutirá en el rendimiento de la aplicación desarrollada. En las aplicaciones desarrolladas por nuestro grupo se han desarrollado dos modos de visualización que son activados teniendo en cuenta la memoria disponible en el computador. La primera opción consiste en mantener todas las representaciones en memoria principal y visualizar la requerida en cada momento sin realizar ningún proceso accesorio. Consecuentemente se minimiza el tiempo de permutación entre objetos o representaciones a expensas de un abuso de memoria principal. Para sistemas con 4 GB de memoria principal en adelante esta estrategia puede dar en la práctica resultados satisfactorios. Sin embargo, sistemas con prestaciones menores apenas soportan cambios continuos de representación pudiendo entrar en estado de bloqueo.

Page 5: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

Tabla 1: Tipos de vistas de un objeto 3D y su tamaño aproximado en memoria. Objeto con

300000 puntos.

Vista Representación Memoria aprox.

Polígonos con color real

60 MB

Polígonos con color sintético

56 MB

Puntos 27 MB

Malla 90 MB

La segunda opción optimiza la carga en memoria generando únicamente el tipo de representación solicitado en cada momento por el usuario y liberando memoria ante cambios de representación. La figura 4 muestra un esquema con los pasos de actuación en este caso, mientras que la figura 5 ilustra el proceso seguido cuando se selecciona una nueva representación junto con el de la memoria principal. La ilustración incluye el visualizador de objetos 3D desarrollado en el laboratorio.

Esperar selección objeto 

3D

Seleccionar tipo vista del objeto 3D

Liberar vista objeto 3D anterior

Construir vista objeto 3D seleccionado

Visualizar vista seleccionada del objeto 3D

Fig. 4: Diagrama de flujo del proceso de construcción de objetos 3D a petición sin almacenamiento en memoria principal.

Estructuras de datos

Objetos construidos

Memoria principal

1 2

34

Fig. 5: Esquema del proceso de construcción de objetos 3D y estado de la memoria principal sin

almacenamiento en memoria. El proceso sigue los siguientes pasos:

(1) El proceso se inicia con una acción del usuario, seleccionando un tipo de representación incluido en el menú.

(2) Se libera la memoria ocupada por el objeto 3D anterior.

(3) Se construye el nuevo objeto 3D, a partir de las estructuras de datos.

(4) Se visualiza el nuevo objeto 3D en la aplicación.

Una opción añadida en la aplicación consiste en el mantenimiento en memoria de las últimas representaciones que han sido cargados en una misma sesión. Si el mismo tipo es seleccionado de nuevo, la permutación entre objetos se hace de forma más rápida. Esta opción se basa en la idea de que si en una sesión un usuario selecciona un tipo de representación para ser visualizado, lo más probable es que lo vuelva a seleccionar en poco tiempo en la misma sesión. Esta opción es ampliable a una sesión donde se requiera visualizar varios objetos

Page 6: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

secuencialmente. En este caso, se puede almacenar la última representación de cada objeto en memoria evitando accesos a memoria secundaria ante una nueva petición.

Esperar selección objeto 3D

Seleccionar tipo vista del objeto 3D

Construir vista objeto 3D seleccionado

Visualizar vista seleccionada del objeto 3D

¿Esta en memoria?

Si

No

Fig. 6: Diagrama de flujo del proceso de construcción de objetos 3D a petición con almacenamiento en memoria principal.

En la figura 7 se ilustra el proceso seguido para esta última opción junto con la ocupación de la memoria.

Estructuras de datos

Objetos construidos

Memoria principal

1 2

34

Fig. 7: Esquema del proceso de construcción de objetos 3D y estado de la memoria principal con

almacenamiento en memoria. El proceso sigue los siguientes pasos:

(1) El proceso se inicia con una acción del usuario, seleccionando una vista cualquiera, en el menú.

(2) Se comprueba en la memoria principal si existe ya el objeto construido.

(3) Si no existe el objeto construido en memoria principal se construye el nuevo objeto 3D, a partir de las estructuras de datos.

(4) Se visualiza el nuevo objeto 3D en la aplicación

Los dos procesos anteriores, se han descrito para una herramienta monoventana, es decir, un entorno en el que se muestra un solo objeto a la vez. Pero ambos se pueden aplicar a una herramienta multiventana. Las figuras 8 y 9 muestran la herramienta con interfaz multiventana en la que cada una de las ventanas contiene un objeto 3D o vista distinta de un mismo objeto, al que se le aplican los procesos anteriormente descritos.

Fig. 8: Aplicación de reconstrucción multiventana

con 12 vistas visualizadas. A continuación se muestran un conjunto de resultados referentes al consumo de memoria de la aplicación multiventana junto con el número de puntos totales gestionados, sumando todas las vistas construidas en memoria de todas las ventanas (tablas 2 y 4). Además se muestran los tiempos de carga total, es decir, el tiempo que transcurre desde que se lanza la acción de abrir hasta que se muestran en la pantalla los objetos seleccionados, junto con el tiempo de permuta entre tipos de representación en una sola ventana (tablas 3 y 5). Los procesos sometidos a prueba han sido los siguientes:

• Proceso I: Proceso de construcción de objetos 3D a petición con almacenamiento en memoria y todas las representaciones (poligonal texturada, poligonal sin textura, malla y puntos) construidas en memoria para todas las ventanas.

• Proceso II: Proceso de construcción de objetos 3D a petición sin almacenamiento en memoria y visualizando la representación poligonal texturada en todas las ventanas.

• Proceso III: Proceso de construcción de objetos 3D a petición sin almacenamiento en memoria y visualizando la representación de puntos en todas las ventanas.

La tabla 6 muestra una comparativa del tiempo de carga en memoria para un mismo objeto y para distintas resoluciones entre nuestra herramienta de gestión de información (VOB 3D) y distintos

Page 7: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

software comerciales. La lectura de los archivos se ha realizado bajo formato standard VMRL. Se aprecia una significativa reducción de tiempo como consecuencia de las mejoras introducidas en la gestión de lectura y almacenamiento en memoria. Para tamaños por encima del millón de puntos la gestión de información se hace ineficiente en el resto de las aplicaciones. Tabla 2: Tabla de consumos de memoria para la

ejecución que se muestra en la figura 8. Prueba Nº de

ventanas Nº de

puntos totales

Nº de polígonos

totales

Consumo de

memoria principal

Proceso I

12 1440000 2880000 273 MB

Proceso II

12 480000 960000 131 MB

Proceso III

12 480000 960000 125 MB

Tabla 3: Tabla de tiempos de carga total y de permuta entre representaciones para la ejecución

que se muestra en la figura 8. Prueba T. de carga total T. de permuta

Proceso I 1 min 27 seg 0.018 seg Proceso II 1 min 20 seg 0.113 seg Proceso III 1 min 18 seg 0.113 seg

Fig. 9: Aplicación de reconstrucción multiventana

con 15 vistas visualizadas. Tabla 4: Tabla de consumos de memoria para la

ejecución que se muestra en la figura 9. Prueba Nº de

ventanas Nº de

puntos totales

Nº de polígonos

totales

Consumo de

memoria principal

Proceso I

15 4200000 8400000 880 MB

Proceso II

15 1050000 1100000 354 MB

Proceso III

15 1050000 1100000 241 MB

Tabla 5: Tabla de tiempos de carga total y de permuta entre vistas para la ejecución que se

muestra en la figura 9. Prueba T. de carga total T. de permuta

Proceso I 1 min 0.12 seg Proceso II 52 seg 0.45 seg Proceso III 51 seg 0.45 seg

Tabla 6. Comparativa de tiempos de lectura y almacenamiento en memoria

Tiempo Aplicación 170637 puntos 341782 puntos 684520 puntos 913241 puntos 1218085 puntos 162497 puntos VOB 3D 6 seg 13 seg 19 seg 25 seg 33 seg 41 seg

RapidForm 33 seg 1 mim 32 seg 5 min 04 seg 8 min 22 seg 14 min 13 seg 24 min 16 seg Deep Exploration 4 min 11 seg + de 20 min A partir de aquí se hace inviable cargar los objetos 3D

EON CAD 5 min 11 seg

14 min 22 seg A partir de aquí se hace inviable cargar los objetos 3D

2.3 GESTIÓN DE LAS ESTRUCTURAS DE

DATOS INTERNAS. La elección de una estructura de datos que alivie la carga del procesador en la tarea de acceso (lectura) y escritura en memoria principal puede optimizar la velocidad de los procesos tratados en las secciones anteriores. En el caso que nos ocupa, la información de puntos P, índices M, normales N, color I y coordenadas de color C, es estructurada de manera simple y eficiente Como regla general se ha mantenido que la simplificación de las estructuras a la que se hace referencia consiste en utilizar un paradigma de

programación estructurada (no orientado a objetos), para minimizar el número de llamadas a funciones innecesarias, y minimizar el tamaño que ocupan en memoria principal. Si los datos fuesen almacenados utilizando el paradigma de programación orientada a objetos, sucederían múltiples llamadas a funciones entre los mismos. Esto, internamente en el computador, se traduce en un coste computacional añadido, debido a que en cada llamada a función, el sistema operativo almacena el estado del procesador, registros, flags, etc, en la pila del programa. En nuestro caso, cada punto de P del objeto posee asociada una coordenada de textura mediante la que se extraen las componentes de color RGB sobre la imagen de la escena. Si se desea obtener el color de

Page 8: MEJORAS EN EL TRATAMIENTO MASIVO DE INFORMACIÓN 3D€¦ · Visualización 3D, Memoria de PC, Tiempo de CPU, Adaptador de video. 1 INTRODUCCION 1.1 MOTIVACION DEL TRABAJO La sintetización

polígonos triangulares se debería acceder además al vector de índices y normales. Si se mantuvieran estas estructuras vectoriales y matriciales de memoria secundaria en memoria principal, resultaría ineficiente realizar este proceso cada vez que se pretenda acceder a las componentes de color del objeto 3D. Teniendo en cuenta lo anterior, se ha creado un vector de color, T, en el que cada punto 3D posee sus componentes RGB. Por consiguiente, la información C e I no es conservada en memoria principal.

Px1

y1

z1

x2

y2

z2

Ttx1

ty1

tx2

ty2

tx3

ty3

x

y

Punto 1

Punto 2

a b c a) P N T M

x1 nx1 R1 m1p1

y1 ny1 G1 m1p2

z1 nz1 B1 m1p3

x2 nx2 R2 m2p1

y2 ny2 G2 m2p2

z2 nz2 B2 m2p3

… … … …b)

Fig. 10: a) Proceso de extracción de componentes RGB por punto desde memoria secundaria. b)

Estructuras de datos en memoria principal. La estructura de datos que contiene la información completa del objeto (P, N, T, M) se define como un array donde cada columna corresponde a un tipo de datos, manteniendo la misma indexación para todas las columnas. Así, en las estructuras P, N, y T, los índices se comparten, de manera que para acceder a toda la información de un único punto i se debe acceder a la posición i·3, i·3+1 e i·3+2 de cada vector. En la estructura M, los puntos se encuentran indexados por el índice que poseen en el vector P, por lo que su acceso es directo. Con esta estructura de datos se logra que se reduzca al mínimo las llamadas a funciones. Sin embargo; como inconveniente podríamos decir que se deben realizar operaciones de multiplicación y suma cada vez que se accede a un índice, aunque este tipo de operaciones ya están implementadas a nivel hardware en la UAL del computador.

3. CONCLUSIONES En este artículo se presentan un conjunto de estrategias computacionales que tiene por objeto mejorar las prestaciones de ordenadores personales en la gestión de información masiva 3D. Los aspectos sobre los que se han realizado actuaciones se refieren a problemas de procesamiento sobre información geométrica y de color de objetos sintetizados en entornos de ingeniería inversa. En concreto se abordan situaciones de bloqueo o intermitencias en el renderizado ante movimiento espacial de mallas densas, gestión eficiente de memoria en situaciones de multi-representación 3D, soluciones para representaciones multiventana y mejoras en tiempo de acceso a estructura de datos 3D. Este trabajo se enmarca dentro de proyectos de digitalización completa de piezas escultóricas en los que se están utilizando tecnologías láser con un alto volumen de datos. A través de este conjunto de actuaciones se han obtenido unos resultados altamente satisfactorios, permitiendo ampliar las posibilidades y realizaciones prácticas de procesamiento en casos en los que hasta ahora era inviable hacerlo con computadores personales. Agradecimientos Nuestro agradecimiento al Museo Nacional de Arte Romano de Mérida por su colaboración e interés en el proyecto. Extendemos el agradecimiento al Ministerio de Educación y Ciencia así como a la Junta de Comunidades de Castilla La Mancha por su financiación en los proyectos DPI 2006-14794-C02 y PBI05-028. Referencias [01] Schildt, H., “C Manual de Referencia”,

McGraw-Hill, 2001. [02] Eckel, B. “Thinking in C++, Volume 1”, 2000. [03] Eckel, B. y Allison C., “Thingking in C++,

Volume 2”, 2003. [04] J.O., Coplien, "Advanced C++ Programming

Styles and Idioms", Addison-Wesley, 1992. [05] Neider, J., Davis T. y Woo M., “OpenGL

Programming Guide”, Addison Wesley, 1995. [06] “OpenGL Reference Manual”, Addison

Wesley, 1992. [07] Silberschatz , A., Peterson , J. y P. Galvin,

“Sistemas Operativos. Conceptos fundamentales”, Addison Wesley, 1994.

[08] Richter, J., “Advanced Windows”, Microsoft Press, Anaya Multimedia, 1996.

[09] Custer, H., “El libro de windows-NT”,Microsoft Press, Anaya Multimedia, 19.