PDF de programación - Procesamiento de imágenes 3D en GPU

Imágen de pdf Procesamiento de imágenes 3D en GPU

Procesamiento de imágenes 3D en GPUgráfica de visualizaciones

Publicado el 15 de Septiembre del 2020
57 visualizaciones desde el 15 de Septiembre del 2020
751,6 KB
17 paginas
Creado hace 10a (12/04/2010)
Trabajo final

PROCESAMIENTO DE IMÁGENES 3D EN

GPU



Para la materia de posgrado: Procesamiento digital de imágenes



Dictada por el Profesor: Dr. Claudio Delrieux

Propuesta presentada por

Ing. Juan P. D’Amato

Tandil – 2010

Objetivos

Se plantea como objetivo y como finalización del curso de posgrado, desarrollar una

herramienta para procesar imágenes 2D y 3D, la que incluirá las siguientes capacidades:

• Filtros de procesamiento por pixel (brillo, contraste, etc.)
• Filtros morfológicos (Erosión/Dilatación)
• Filtros basados en vecindario (Gradientes, promedios, medianas, media)
• Aplicar técnicas de cambio de tamaño (linear sampling, bicubic, MinMax

gradient) y algún filtro no convencional ( bilateral)

• Realizar aritmética de imagen : Suma-Resta-Max-Min-Promedio

Adicionalmente, se espera que la herramienta tenga la capacidad de:;

• Abrir y visualizar mapas de bits 3D de algún formato conocido (RAW,

BMP,LATTICE,VTK)

Importar mallas 3D y convertirlas en formato de mapa 3D


• Modificar la función de Transferencia
• Definir planos de corte de forma sencilla
• Soporte GPU / MultiCore, detectando y notificando si hay compatibilidad
• Extracción y comparativa de tiempos de procesamiento



Descripción de la aplicación .......................................................................................................... 4

Render volumétrico ....................................................................................................................... 5

Definición de la función de transferencia ................................................................................. 7

Archivos soportados ...................................................................................................................... 8

Detalles de implementación del módulo de ejecución de filtros ................................................. 9

Filtros de procesamiento ............................................................................................................ 10

Resultados ................................................................................................................................... 12

Anexo 1 : Implementación del filtro bilateral ............................................................................. 15

Filtro bilateral con implementación Better Brute-force ......................................................... 15

Anexo 2 : Min-Max Gradient ................................................................................................... 15



Descripción de la aplicación


La aplicación de procesamiento 3D es una aplicación CPU/GPU generada en Delphi compatible

con Windows que utiliza la placa gráfica a través de OpenCL para realizar los procesamientos y

la visualización. En caso que la PC no incluya una placa gráfica apropiada, la aplicación ejecuta

en modo CPU siempre.

La aplicación de procesamiento 3D se compone de las siguientes partes:

- Un render volumétrico basado en RayCasting (1) y un módulo de definición de la

función de transferencia (3)

- Un módulo para importar y convertir archivos desde múltiples formatos al formato

base( 3D monocromático)

- Un módulo de ejecución de filtros y operaciones sobre imágenes 2D y 3D



(6) Menú de Acceso rápido

(2) Lista de imágenes

(3) Función de Transferencia

(4) Historial de Operaciones

(1) PANEL RENDER VOLUMÉTRICO

(5) Distrib. de Intensidades



Figura 1: Vista principal de la aplicación

Cada vez que se carga una nueva imagen, se añade la Lista de Imágenes(2) , se marca como

activa y se calcula la Distribución de Intensidades correspondientes (5).

Cuando se ha realizado alguna modificación sobre la imagen, se indica la misma en el Historial

de operaciones(4).

Para activar/desactivar el renderizado por GPU, hacer clic en el siguiente Checkbox

. Dado que el modo CPU es mucho más lento, se baja la definición del render.

Para modificar el color de fondo, seleccionarlo del siguiente combo de colores

.

Las imágenes por defecto se encuentran normalizadas en el cubo [0..1,0..1,0..1]. Para trabajar

con la imagen en las proporciones originales, hacer clic en el checkbox

.

Importante: Como la versión utilizada de OpenCL no permite la ejecución en CPU, se re-

implementaron los métodos equivalentes.

Render volumétrico


La técnica utilizada para el renderizado de imágenes 3D con transparencia en la aplicación es

un ray-casting. Por cada pixel de la pantalla, se tira un rayo de forma normal al plano que la

forma, y se computa el color del pixel de salida, como la acumulación de transparencia en la de

los pixeles del volumen que se encuentran en la dirección del rayo dado, tal como se

esquematiza en la Figura 2.

Figura 2: Esquema de un render de ray-casting



Como se está trabajando con imágenes monocromáticas, a cada valor leído en la imagen de

entrada se le asocia una función de coloreo o función de transferencia. A cada valor de pixel,

normalizado en el rango [0..1], se lo utiliza como índice en una tabla de coloreo que describe

tanto el color RGB como la transparencia.

A su vez, como las imágenes se encuentran en el espacio tri-dimensional, es posible operar

sobre las mismas, cambiando el punto de vista. Las operaciones básicas involucradas son:

rotación, traslación y escala, cada una se corresponde con los siguientes botones.

. Para aplicar alguna de estas transformaciones, se debe hacer click en el botón

correspondiente y mover el mouse sobre el panel del Render manteniendo el botón izquierdo

apretado.

Como estas operaciones son muy frecuentes, y en especial en los casos que la aplicación solo

es compatible con el modo CPU, la visualización tiene un modo “Motion” en la cual se

renderiza la vista con menor resolución, para mantener la interactividad con el usuario. En

caso que el usuario libere el mouse, se renderiza la imagen con buen nivel de detalle En la

figura 3 se ven ambos casos.



Figura 3: (izq) Modo “Motion” (der) Modo “Normal”

Parámetros del Render

Para acceder a la configuración del Rendering, hacer click en

y mostrará la siguiente

ventana.

Figura 4: Ventana de configuración del Rendering



Los parámetros a modificar son:

• Brillo : ajuste de brillo de la visualización

• Density : multiplicador de transparencia por pixel. Cuando el valor es mayor, el objeto

se vuelve más opaco.

• Transferencia: multiplicador de transferencia entre pixeles

• Offset: desplazamiento sobre la función de transferencia

• Render Precission : calidad en proporción a la cantidad de pixeles que recorre el

render. La mayor precisión, implica que se evalúan mucho más pixeles, y la peor, la

menor cantidad.

• Box Size XYZ: Proporción de tamaño de cada eje del cubo normalizado que contiene la

parte visible de la imagen.

• Offset XYZ: desplazamiento del centro cubo que contiene la imagen.

Importante: Para definir un plano de corte en algún eje, llevar el tamaño de la caja al

mínimo y desplazarse con las barras de Offset.

Definición de la función de transferencia
Como se nombró, la función de transferencia es una tabla de coloreo o paleta, codificada en

una imagen 1D. La función que se está utilizando en el momento, se muestra en la pantalla

principal de la siguiente forma. Para modificar la función de transferencia, existe un editor, que

se accede haciendo Doble Click en la imagen en la imagen de la paleta.



El editor tiene la siguiente presentación vista:



Figura 5: Vista del Editor de Escalas

Las operaciones que se pueden hacer por Paleta son:

• Para elegir la paleta activa, seleccionarla de la lista.

• Para añadir una nueva paleta, hacer click en el botón “New”

• Para quitar una paleta, seleccionar de la lista y hacer click en “Remove”

• Para salvar el estado de las paletas, hacer click en “Save”. Solo en este caso se guarda

la configuración

Para editarla, es necesario operar sobre la imagen de la paleta. Los puntos de edición se

indican con un círculo, y el resto de la imagen se calcula por interpolación entre estos puntos.

Esta paleta siempre está asociada al rango 0..1.

• Para añadir un punto o seleccionar, hacer click izquierdo sobre la imagen

• Para quitar un punto, hacer click derecho

• Para modificar los valores, primero seleccionar el punto , luego

o Elegir el color del combo



o La transparencia se ingresa manualmente en el siguiente campo



o El valor escalar es de solo lectura

Luego de cambiar algún atributo, la paleta se re-calcula automáticamente.

Archivos soportados
La herramienta soporta distintos tipos de archivos tipo Bitmap 3D, siendo:

• BMP (si el alto es mucho mayor que el ancho, se procesa como si fuera una tira de

imágenes)

• RAW (8 bits) : es necesario ingresar manualmente las dimensiones del archivo

• VTK (formato texto)

También se incluye un importador, el cual toma mallas 3D basadas en triángulos, y mediante

un algoritmo de discretización por celdas regulares, genera el bitmap 3D correspondiente;

distinguiendo celdas interiores de exteriores. Como dato de entrada se requiere solamente la

resolución máxima deseada.

Detalles de implementación del módulo de ejecución de filtros


Para la implementación de filtros, se definió un módulo capaz de ejecutar filtros u operaciones

tanto en GPU como en CPU. Dicho módulo no es visual, sino interno de la aplicación, y forma

parte del diseño de la misma.

Para el mismo, se definieron clases que abstraen la información de las operaciones utilizadas,

de forma similar a como se invocan en OpenCL. Cada filtro es representado por un kernel

encargado de procesar píxeles, el cual se genera internamente por dos formas, con un Script

compilado para la GPU o por una referencia a una implementación.

Las clases invo
  • Links de descarga
http://lwp-l.com/pdf18205

Comentarios de: Procesamiento de imágenes 3D en GPU (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad