Una tercera parte del modelo fue propuesta, en la que utilizando OGRE 3D pudieran verse planos de una imagen 3D, es decir, que se pudiera seleccionar un corte que hacer a la imagen 3D para observar únicamente esta parte.
Ilustración : Tercera parte del modelo de integración
Descripción del modelo de integración Image_File
Este primer componente se refiere a un archivo de imagen médica 3D que será leído con ITK, para extraer un plano de la misma y mostrarlo con un BillboardSet de OGRE 3D.
ITK_Image
El segundo es ITK_Image, que se refiere a la clase Image de ITK, ya que las imágenes médicas son leídas con el manejo de lectura y escritura de ITK (Ver sección Manejo de lectura y escritura de imágenes [17]. ITK se encargará de leer una imagen médica y almacenarla en su clase Image.
Esta será una imagen 3D de la cual se obtendrá un corte con el filtro explicado a continuación.
ExtractImageFilter
Este componente es un filtro de ITK que permite extraer una imagen a partir de otra, en este caso será una imagen 2D o plano, a partir de una imagen 3D.
ITK_Image(Slice)
Esta es la nueva imagen 2D extraída de la imagen original en 3D.
CreateParticles
Este componente es el módulo que permite crear un sistema de partículas de OGRE 3D a partir del plano obtenido anteriormente y almacenado en una imagen 3D de ITK. Este componente debe acceder a la información de cada pixel de la imagen y crear una partícula en el sistema de partículas de OGRE 3D que tenga las características de tamaño, ubicación en el espacio y color del pixel correspondiente en la imagen de ITK.
Ogre_BillboardSet
Este último componente corresponde a la representación gráfica en OGRE 3D del plano obtenido de la imagen 3D original. Toma el nombre de Ogre_BillboardSet debido a que el componente utilizado para crear el sistema de partículas en OGRE 3D fue un BillboardSet o un conjunto de billboards (Ver sección Sistema de partículas de OGRE) y la razón por la cual se utilizó un BillboardSet y no un sistema de partículas directamente se explica en la sección Primer prototipo.
Cuarto prototipo -
La última adición realizada a la aplicación fue la implementación de la tercera parte del modelo (Ver sección Tercera parte del modelo).
En esta implementación se utilizó el filtro ExtractImageFilter de ITK, este filtro permite decidir de qué manera será cortada la imagen 3D y obtiene un plano de la imagen en la sección del corte. Un ejemplo del resultado de la visualización de un plano es la siguiente.
Ilustración : Corte de una imagen representado con un sistema de partículas
Este es un plano en XY sacado de la mitad de la imagen 3D de prueba.
Conclusiones del cuarto prototipo
Los resultados fueron satisfactorios porque se logró visualizar un corte de una imagen médica cargada con ITK usando OGRE 3D, por lo tanto fue posible concluir que la tercera parte del modelo de integración planteado (Ver sección Tercera parte del modelo) funcionó y probar que la idea era válida. El siguiente paso era determinar los beneficios o pérdidas brindados por este modelo de integración a la visualización de imágenes médicas. (Ver sección Beneficios y pérdidas del uso del modelo).
-
Finalmente, el modelo de integración planteado quedó compuesto de 3 partes:
Visualización de imágenes con un sistema de partículas
La primera parte del modelo permite utilizar ITK para cargar una imagen médica en 3D y obtener su información para crear un sistema de partículas en OGRE 3D implementado con BillboardSets.
Ilustración : Modelo: Visualización con un sistema de partículas
La descripción de este modelo se encuentra en la sección Descripción del modelo de integración.
Visualización de mallas ITK con mallas de OGRE 3D
La segunda parte del modelo inicialmente utilizaba ITK para cargar una imagen que se convertía en una malla de ITK, de la cual se obtenía la información necesaria para generar una malla de OGRE 3D.
Ilustración : Modelo: Visualización con mallas
El modelo anterior no funcionó debido a que el filtro “itkBinaryMask3DMeshSource” utilizado para convertir la imagen a una malla solo funcionaba con máscaras binarias, por lo tanto, se utilizó un filtro que convierte la imagen 3D a una máscara binaria y luego si utiliza el filtro “itkBinaryMask3DMeshSource” para generar la malla.
Además de esto, OGRE 3D no permite visualizar cualquier malla creada debido a que existen restricciones de memoria, por lo tanto, fue necesario usar un filtro de decimación (Ver sección Filtro de decimación) que redujera el número de caras de la imagen a un número específico.
Luego de determinar que era necesario introducir el uso de estos filtros para poder visualizar la malla, se decidió que los filtros fueran usados aparte de la visualización en OGRE 3D es decir, las mallas no se generan ni se reducen en ejecución, sino que sirven como una herramienta de apoyo para generar las mallas que serán visualizadas.
La versión final del modelo luego de corregirlo es la siguiente.
Ilustración : Modelo: Visualización con mallas corregido
Este modelo carga un archivo de malla generado con anterioridad, para este fin usa ITK_Mesh de ITK que en este caso será de tipo QuadEdgeMesh. La clase ITK_Mesh permite obtener la información necesaria para generar la malla de OGRE 3D.
Finalmente, fue necesario usar un filtro de la clase QuadEdgeMesh llamado “NormalQuadEdgeMeshFilter” que dado un objeto de esta clase, retorna otro de la misma que contiene además de la información original, el cálculo de los vectores normales de vértices y caras.
Esta información de los vectores normales fue utilizada en OGRE 3D para que la iluminación de la malla fuera correcta.
La descripción de este modelo se encuentra en la sección Descripción del modelo de integración.
Visualización de cortes de imágenes 3D
Finalmente se planteó que fuera posible ver cortes de la imagen 3D haciendo uso de los sistemas de partículas de OGRE 3D como se hacía en la primera parte del modelo.
Con el fin de obtener los cortes deseados, se utilizó el filtro ExtractImageFilter de ITK que dada una imagen 3D y la información sobre cómo realizar el corte, devuelve una imagen de tipo Image de ITK de 2D que corresponde a el corte realizado.
Ilustración : Modelo: Visualización de cortes
La descripción de este modelo se encuentra en la sección Descripción del modelo de integración.
Dostları ilə paylaş: |