340 likes | 657 Views
Aplicación para la visualización de imágenes 2D y 3D empleando VTK. Nuria Paniagua. Sumario del proyecto. Objetivos Imágenes *.pic obtenidas del confocal Reconstrucción de imágenes 3D VTK (Visualization Toolkit) Reconstrucción de imágenes con VTK Algoritmo visualización 2D y 3D
E N D
Aplicación para la visualización de imágenes 2D y 3D empleando VTK Nuria Paniagua GVA-ELAI-UPM-PFC083-04
Sumario del proyecto • Objetivos • Imágenes *.pic obtenidas del confocal • Reconstrucción de imágenes 3D • VTK (Visualization Toolkit) • Reconstrucción de imágenes con VTK • Algoritmo visualización 2D y 3D • Aplicación GUI con MFC • Ventana de visualización de imágenes 2D y 3D GVA-ELAI-UPM-PFC083-04
1. Objetivos • Reconstrucción tridimensional • Funcionamiento y uso de librerías VTK • Algoritmo de visualización 2D y 3D • Aplicación GUI a partir de MFC GVA-ELAI-UPM-PFC083-04
2. Imágenes *.pic obtenidas del confocal • Microscopia confocal • Obtención de imágenes 3D GVA-ELAI-UPM-PFC083-04
2.1 Microscopia confocal • Microscopio óptico • Microscopio confocal GVA-ELAI-UPM-PFC083-04
Microscopio confocal • Diafragma de detección (elimina luz del plano focal) • Diafragma de iluminación GVA-ELAI-UPM-PFC083-04
2.2 Obtención de imágenes 3D • Adquisición de imágenes 3D con el microscopio confocal • Archivos *.pic GVA-ELAI-UPM-PFC083-04
Obtención de imágenes 3D obtenidas del confocal • Imágenes obtenidas del confocal son siempre imágenes digitales • Los fotodetectores transforman la señal lumínica en señal eléctrica que mediante el sistema informático acoplado se traduce en un píxel • Píxel: • Localización tridimensional del punto excitado • La intensidad lumínica de dicho punto • Almacenamiento de imágenes digitales en ficheros gráficos GVA-ELAI-UPM-PFC083-04
Archivos *.pic • Ficheros gráficos que almacenan imágenes digitalizadas • Formato: • Cabecera: datos relativos al gráfico que se almacena (ancho, alto,relación entre píxel y unidad de medida, unidad de medida, tipo de imagen (color o blanco y negro), codificación del color, método de compresión si lo hay) • Datos del gráfico o de la imagen digitalizada. • Almacenan: • Imagen digitalizada por fichero en tonos de gris o en color • Secuencia de imágenes en cada fichero GVA-ELAI-UPM-PFC083-04
Secuencia de imágenes • Formato del fichero: • Cabecera: 6 enteros (4 bytes cada uno) • Slices: cada una de las imágenes que contiene el fichero (en tonos de gris) • Formato de los datos de las imágenes: • Matriz de bytes sin comprimir, por cada unos de los diferentes slices que componen la imagen,donde se almacena el valor de los píxeles por filas GVA-ELAI-UPM-PFC083-04
Posición y significado de cada byte GVA-ELAI-UPM-PFC083-04
3. Reconstrucción de imágenes 3D • Introducción • Fases de la reconstrucción tridimensional GVA-ELAI-UPM-PFC083-04
3.1 Reconstrucción tridimensional • Visualización de datos basada en el uso de algoritmos que transformen estos • Clasificación de algoritmos según: • Estructura: efectos que la transformación tiene en la topología y geometría del dataset • Tipo: tipo de dataset sobre el que operan los algoritmos • Escalares: técnica de contorneado GVA-ELAI-UPM-PFC083-04
Técnica de contorneado • Construir límites entre regiones distintas de valores de datos constantes • Estos límites corresponden a líneas de contorno (en 2D) y superficies (en 3D) GVA-ELAI-UPM-PFC083-04
3.2 Fases de la reconstrucción tridimensional a) Marching cubes b) Reducción puntos de mallado c) Suavizado del mallado GVA-ELAI-UPM-PFC083-04
a) Marching cubes • Cada punto de la malla del dataset tiene un valor escalar asociado • Cada superficie tiene un valor de contorno constante • Un contorno sólo puede atravesar una celda de un número finito de formas • Se elabora una tabla de casos que enumera todos los estados topológicos posibles de una celda, dadas las combinaciones de valores escalares en los puntos de la celda GVA-ELAI-UPM-PFC083-04
b) Reducción de puntos de mallado • A tratar cada celda por separado pueden crearse vértices y aristas duplicados en los límites comunes • Se eliminan empleando una técnica de fusión de puntos coincidentes • La interpolación en cada arista debe realizarse en la misma dirección • Si no se cumple, pueden generarse puntos que no coincidan exactamente debido al redondeo numérico, y no serán fusionados correctamente GVA-ELAI-UPM-PFC083-04
c) Suavizado del mallado • Para una celda existen 256 combinaciones de valores escalares dadas por los estados de los 8 vértices • Pueden reducirse a 15 por rotaciones y simetrías • Aparecen casos ambiguos en el contorneo • Pueden aparecer “huecos” en la superficie según el caso elegido GVA-ELAI-UPM-PFC083-04
4. VTK (Visualization Toolkit) • VTK • CMake • Arquitectura de VTK en C++ GVA-ELAI-UPM-PFC083-04
4.1 VTK • Librerías de código libre basadas en la programación orientada a objetos • Subsistemas componentes: • Librería de clases en C++ • Intérpretes para la manipulación de las clases • Visualización, procesamiento de imágenes, creación de objetos gráficos en 2D y 3D GVA-ELAI-UPM-PFC083-04
4.2 CMake • Herramienta multiplataforma de código libre • Configurar y dirigir proceso de construcción de aplicaciones • Ficheros CMakeLists.txt para describir proceso de construcción y establecer dependencias • Crea ficheros necesarios para compilar la aplicación • Compilar VTK y trabajar con herramientas propias de la plataforma empleada GVA-ELAI-UPM-PFC083-04
4.3 Arquitectura de VTK Modelos de objetos: a) Graphics model b) Visualization model GVA-ELAI-UPM-PFC083-04
a) Graphics model • Transformación de datos gráficos en imágenes • Objetos principales: • vtkActor • vtkCamera • vtkLight • vtkMapper • vtkRenderer • vtkRenderWindow • vtkRenderWindowInteractor GVA-ELAI-UPM-PFC083-04
b) Visualization model • Crea datos gráficos a partir de la información aportada • Objetos principales: • vtkDataObject:Datos estructurados llamados dataset (estructura geométrica y topológica de puntos y celdas y atributos asociados) • Process object: Algoritmos del sistema llamados filtros. Junto con los anteriores porman los pipelines de visualización GVA-ELAI-UPM-PFC083-04
Tipos de process objects a) Fuentes: Generan datos leyendo o construyendo uno o más data objects b) Filtros:Transforman varios data objects en la entrada, y generar uno o más data objects en la salida c) Mappers: Transforman los data objects en datos gráficos, que son renderizados posteriormente Se enlazan formando el pipeline GVA-ELAI-UPM-PFC083-04
Pipeline render fuente > filtro > mapper > actor El render inicia la petición de datos, que se comunica a través del pipeline Las partes del pipeline queno estén actualizadas son reejecutadas Una vez actualizados los datos al final del pipeline, son rederizados por el actor GVA-ELAI-UPM-PFC083-04
5 Reconstrucción de imágenes con VTK • Creación de imágenes tridimensionales a partir de imágenes bidimensionales de cortes transversales • Programa para visualizar, por separado o conjuntamente, las diferentes superficies que componen un cuerpo • Construcción de un pipeline genérico útil para diferentes casos GVA-ELAI-UPM-PFC083-04
Creación de una aplicación 1. Construir un pipeline de datos para procesar los datos: • Conectar: • Fuentes (crear datos) • Filtros (procesar datos) • Mappers (transformar datos en gráficos) GVA-ELAI-UPM-PFC083-04
Creación de una aplicación 2. Crear los objetos gráficos para interpretar esos datos: • Ventada de renderización para trabajar en ella • Render • Interactor (interactuar con los datos) • Uno o más actores (cada uno unido a un mapper) • Renderizar GVA-ELAI-UPM-PFC083-04
Algoritmo visualización 2D y 3D GVA-ELAI-UPM-PFC083-04
Algoritmo visualización 2D y 3D GVA-ELAI-UPM-PFC083-04
6. Aplicación GUI con MFC • Introducción • Programación con Visual C++ • Librería de clases MFC GVA-ELAI-UPM-PFC083-04
6.1 GUI • GUI (Interfaz gráfica de usuario) • Windows (entorno multitarea basado en ventanas, que representan programas) • Desarrollo de programas mediante una librería de rutinas y funciones que permiten gestionar componentes como menús, diálogos, ventanas, etc. GVA-ELAI-UPM-PFC083-04
6.2 Programación con Visual C++ • Entorno integrado de desarrollo que permite la programación orientada a objetos (POO) conjuntamente con el sistema de desarrollo de Windows denominado API • Incluye herramientas de desarrollo como un editor de texto, compilador,depurador, visor de datos y pendencias, etc GVA-ELAI-UPM-PFC083-04