Story Transcript
SEMINARIO DE PROYECTOS
UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA
RECONSTRUCCIÓN TRIDIMENSIONAL DEL TÓRAX A PARTIR DE IMÁGENES DE TOMOGRAFÍA AXIAL COMPUTADA (TAC) EN 2D
Torres Jiménez Alejandra Licenciatura en Ingeniería Biomédica
Asesora: Dra. Sonia Charleston Villalobos
Trimestres 05-I y 05-P
Reconstrucción 3D torácica a partir de imágenes TAC 2D
SEMINARIO DE PROYECTOS
RECONSTRUCCIÓN TRIDIMENSIONAL DEL TÓRAX A PARTIR DE IMÁGENES DE TOMOGRAFÍA AXIAL COMPUTADA (TAC) EN 2D
Torres Jiménez Alejandra Licenciatura en Ingeniería Biomédica
Dra. Sonia Charleston Villalobos Asesora
Ing. Gerardo Edmundo Urbina Medal Coordinador de la Licenciatura en Ingeniería Biomédica
Reconstrucción 3D torácica a partir de imágenes TAC 2D
SEMINARIO DE PROYECTOS
1. INTRODUCCIÓN……………………………………………………………………………………1 2. OBJETIVO…………………………………………………………………………………………….2 3. ANTECEDENTES……………………………………………………………………………….…..2 3.1 Nociones básicas relacionadas al término imagen ………………………………….........2 3.2 Procesamiento digital de imágenes…………………………………………………..……….3 3.2.1 Métodos en el dominio espacial……………………………………………………....4 3.2.2 Filtrado espacial………………………………………………………………………..4 3.2.2.1 Filtros que suavizan…………………………………………………………….5 Filtrado espacial pasa bajas………………………………………………...5 Filtro mediana………………………………………………………………..6 3.2.2.2 Filtros que resaltan o enfatizan………………………………………………6 Filtrado espacial pasa altas …………………………………………………6 Filtrado con énfasis en altas frecuencias……………………………………7 3.2.3 Segmentación de imágenes…………………………………………………………....7 3.2.3.1 Detección de contornos……………………………………………………....7 Conceptos básicos…………………………………………………………....8 Filtros derivativos…………………………………………………………....8 Gradiente…………………………………………………………................9 Laplaciano………………………………………………………….............11 3.2.4 Esquemas de representación de imágenes………………………………………….11 3.2.4.1 Códigos de cadena…………………………………………………………..11 3.2.4.2 Morfología Matemática ………………………………………………...…..12 Definiciones básicas………………………………………………………...12 Dilatación…………………………………………………………………...13 Erosión……………………………………………………………………....13 Apertura …………………………………………………………………….14 Cierre ……………………………………………………………………….14 Esqueleto………………………………………………………...................15 3.2.4.3 Aproximación poligonal………………………………………………........15 3.3 Imágenes adquiridas por tomografía axial computada…………………………………..16 4. METODOLOGÍA……………………………………………………………………………….…..17 4.1 Creación de una interfaz gráfica de usuario (GU)………………………….…..17 4.1.1 Estructura de la GUI…………………………………….....………….…...17 4.1.2 Menús implementados…….…………………….…………….…………….18 4.1.3 Mensajes de error…………………………………………………………...21 4.1.4 Botones para procesamiento manual de la imagen…………………….22 4.1.5 Despliegue de imágenes sobre la GUI…………………………………...23 4.2 Procesamiento Digital de Imágenes vía MATLAB……………………………..24 4.2.1 Transformación de las imágenes tomográficas…………………………24 4.2.2 Implementación de filtros que suavizan la imagen……………………..24 4.2.2.1 Implementación del filtrado pasa bajas……............……………………24 4.2.2.2 Implementación del filtrado por mediana …………………………………24 4.2.3 Implementación de filtros que enfatizan la imagen…………………….25 4.2.3.1 Filtrado pasa altas……….........………………………………………..25 4.2.3.2 Filtrado con énfasis en altas frecuencias…………..........……………..25 4.2.4 Extracción de contornos…………………………………………….……..25 4.2.4.1 Filtros derivativos…………………………………………………………..26 4.2.4.2 Filtros morfológicos………………………………………………………...26 4.2.4.3 Laplaciano………………………………………………………................27 4.2.4.4 Perímetro………………………………………………………..................27 4.3 Obtención del contorno exterior de cada corte………………………................27 4.4 Poligonalización del contorno…………………………………………………..…28 4.4.1 Algoritmos desarrollados para encontrar los vértices……………………………29 4.4.1.1 Algoritmo que describe a la función ciclo.m……………………….………29 4.4.1.2 Algoritmo de la función polígono.m …………………………………….…29
Reconstrucción 3D torácica a partir de imágenes TAC 2D
SEMINARIO DE PROYECTOS
4.5 4.6
Triangularización……….............................……………………………………….30 Diagramas a bloques de las metodologías desarrolladas………….….………..31 4.6.1 Diagrama de la estructura de la GUI…………………….…….………..31 4.6.2 Diagrama de la metodología seguida …………………………..………..32 5. RESULTADOS………………………………………………………………………………………33 5.1 Interfaz gráfica de usuario para la reconstrucción 3D (GUI)………………………….33 5.1.1 Despliegue de imágenes………………………………………………………………33 5.1.2 Botones dentro de la GUI…………………………………………………………….36 5.2 Procesamiento digital de la imagen………………………………………………………….37 5.2.1 Filtros que suavizan la imagen………………………………………………………37 5.2.2 Filtros que enfatizan la imagen……………………………………………………...38 5.2.3 Extracción de contornos………………………………………………………………39 5.2.3.1 Resultados al aplicar filtros derivativos……………………………………39 5.2.3.2 Resultados al aplicar filtrado morfológico………………………………..42 5.2.4 Obtención del contorno exterior de cada corte…………..............………………44 5.2.4.1 Contornos exteriores de cada corte ……………………...……………..45 5.3 Poligonalización de los contornos……………………………………………………………47 5.3.1 Determinación del eje mayor y los dos primeros vértices…………..............…..47 5.3.2 Determinación de los vértices principales…………………………….............….47 5.3.3 Extracción de los vértices que definen al contorno …………......…........………48 5.3.4 Polígonos de los diez cortes empleados………………………………...………….51 5.4 Reconstrucción en 3D…………………………………………………………………………52 6. CONCLUSIÓNES Y DISCUSIÓN………………………………………………………….54 7. REFERENCIAS…..……………………………………………………………………………56
Reconstrucción 3D torácica a partir de imágenes TAC 2D
SEMINARIO DE PROYECTOS
RECONSTRUCCIÓN TRIDIMENSIONAL DEL TÓRAX A PARTIR DE IMÁGENES DE TOMOGRAFÍA AXIAL COMPUTADA (TAC) EN 2D 5.
INTRODUCCIÓN La práctica médica para el estudio de trastornos relacionados con el sistema
respiratorio se basa, en una primera fase, en la técnica de auscultación pulmonar que permite al médico escuchar los sonidos producidos en regiones específicas bajo ciertas maniobras respiratorias.I Además, la práctica depende de la visualización de imágenes para analizar la correlación entre estructuras anatómicas y las funciones biológicas anormales observadas en el paciente, con el fin de detectar y tratar enfermedades y traumas que perturban o amenazan el proceso normal de la vida. Tradicionalmente estas visualizaciones han sido directas vía biopsia o cirugía, o indirectas requiriendo una reconstrucción mental de imágenes entregadas por diversas modalidades de imagen como las técnicas de rayos X, de tomografía computada (TC), de resonancia magnética nuclear (MRI) y de tomografía por emisión de positrones (PET).II La imageneología multidimensional en medicina se define como la adquisición, transformación, presentación e interacción con datos e imágenes médicas y/o biológicas multidimensionales entregadas por las modalidades de escaneo. La técnica produce información cualitativa y cuantitativa acerca de un objeto bajo estudio, que puede ser rígido, deformable, estático, dinámico o una entidad conceptual (regiones de actividad en PET, SPECT, MRI y superficies de isodósis en radioterapia).III Recientemente, el empleo de la reconstrucción computacional en 3D de imágenes anatómicas del tórax ha tenido como objetivo facilitar la interpretación y el análisis de datos médicos e histológicos volumétricos, reduciendo la visualización limitada de despliegues en 2D que dependen de aproximaciones y medidas indirectas. Por lo que la reconstrucción 3D proporciona nuevas oportunidades en el diagnóstico y tratamiento médico. En nuestros días la aplicación del análisis computarizado del sonido respiratorio permite cuantificar y caracterizar sonidos anormales, además de ubicar su localización en el ciclo respiratorio para detectar una posible alteración, incluso es posible adquirir varias señales acústicas simultáneas (mapeo acústico del tórax).IV A largo plazo, un objetivo importante será lograr la fusión entre las imágenes acústicas obtenidas por mapeo acústico del tórax y las imágenes anatómicas torácicas en tercera dimensión con
Reconstrucción 3D torácica a partir de imágenes TAC 2D
1
SEMINARIO DE PROYECTOS
el fin de crear una herramienta diagnóstica, y de seguimiento, para los trastornos del sistema respiratorio que facilite, por ejemplo, la localización de las fuentes de sonidos involucrados en la génesis de diversas patologías respiratorias como la estenosis traqueal, el asma, la enfermedad pulmonar obstructiva crónica, el síndrome de apnea obstructiva del sueño, y la fibrosis pulmonar, entre otras . 6.
OBJETIVO El presente trabajo incluye los esfuerzos realizados en los seminarios de proyectos
uno y dos, y se enfoca a la creación de una interfaz gráfica de usuario (GUI) cuyo fin es reconstruir de forma tridimensional el tórax de un sujeto a partir de imágenes en dos dimensiones (2D) obtenidas por tomografía axial computada (TAC). El desarrollo se realizó utilizando como herramienta de trabajo la plataforma MATLAB (versión 6.5). 7.
ANTECEDENTES Los antecedentes de este trabajo se encuentran en los conceptos y técnicas del
procesamiento digital de imágenes. Para establecer estos elementos es necesario introducir primeramente el concepto de imagen y el de manipulación de los elementos de una imagen en el denominado dominio espacial. Estos dos elementos nos permitirá construir las bases para del filtrado espacial, operación que se requiere para dos propósitos fundamentales: eliminación del ruido presente en las imágenes y la extracción de un contorno. La reconstrucción 3D requiere además del concepto de contorno o borde de la imagen y, adicional a las técnicas tradicionales de filtrado, se presentan también las técnicas que proporciona la morfología matemática para los propósitos antes mencionados. Finalmente, en esta sección se introducirá elementos de la tomografía axial computada que permitirá conocer el tipo de imágenes que conforman el stack de datos para la reconstrucción 3D. 7.1 Nociones básicas relacionadas al término imagen Un objeto es un conjunto multidimensional de propiedades definidas en el espacio que pueden ser medidas; una imagen es por lo tanto, una representación en dos o más dimensiones de las propiedades de un objeto. En procesamiento digital de imágenes el término de imagen monocromática, o simplemente imagen, se refriere a una función de Reconstrucción 3D torácica a partir de imágenes TAC 2D
2
SEMINARIO DE PROYECTOS
la intensidad luminosa en dos dimensiones f ( x, y ) donde x y y denotan las
coordenadas espaciales y el valor de f en cualquier punto ( x, y ) es proporcional al nivel de gris de la imagen en ese punto. Una imagen digital es una imagen f ( x, y ) que ha sido discretizada tanto en coordenadas espaciales como en intensidad. Una imagen digital puede considerarse como una matriz cuyos índices de fila y columna identifican un punto en la imagen y el valor correspondiente dentro de la matriz corresponde al nivel de gris en ese punto. Los elementos de este arreglo digital son llamados elementos de imagen o píxeles, por lo que podemos decir que una imagen digital representa una imagen como un arreglo rectangular de enteros. V En MATLAB una imagen de tipo intensidad es una matriz de datos cuyos valores representan intensidades o niveles de gris, tal que el 0 corresponde al negro y la intensidad 1, 255 ó 65535 al blanco. Cada elemento de la matriz representa un píxel en la imagen.VI 7.2 Procesamiento digital de imágenes 7.2.1
Métodos en el dominio espacial
Los métodos de dominio espacial son los que actúan directamente sobre el arreglo de píxeles. Las funciones de procesamiento de imágenes en el dominio espacial se expresan como g ( x, y ) = T f ( x , y )
(3.2-1)
y ( x, y )
imagen
x Figura 3.1 Vecindad de 3 x 3 alrededor de un punto ( x, y ) en una imagen.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
3
SEMINARIO DE PROYECTOS
7.2.2
Filtrado espacial
El filtrado espacial se realiza trasladando una matriz rectangular de dos dimensiones (llamada también ventana) que contiene "pesos" o ponderaciones. Se evalúa el píxel central de la ventana de acuerdo con los píxeles de alrededor de la imagen y los valores de ponderación de la ventana. Cuando un nuevo valor se calcula y se deposita en la imagen resultante, se desplaza la ventana sobre el siguiente píxel de la imagen de entrada, realizando la misma operación. Este proceso de evaluar la vecindad ponderada del píxel se denomina "convolución bidimensional", y a la matriz de filtro se le conoce como “kernel”.v Existen filtros espaciales lineales y no lineales, pero independientemente del filtro utilizado la aproximación básica consiste en sumar los productos entre
los
coeficientes de la máscara o "kernel de convolución” y las intensidades de los píxeles de la imagen bajo la máscara, dada una localización específica. La figura 3.2 muestra una máscara de 3 x 3 con coeficientes o pesos arbitrariamente asignados. Los niveles de gris de los píxeles de la imagen bajo la máscara en cualquier lugar se denotan como z1 , z 2 , ..., z 9 y la respuesta de una máscara lineal está dada por:
R = w1 z1 + w2 z 2 + ... + w9 z 9
Figura 3.2
(3.2-2)
Máscara de 3x3 con coeficientes arbitrarios.
Con referencia a la figura 3.1 si el centro de la máscara se encuentra en la posición ( x, y ) en la imagen, el nivel de gris correspondiente a este punto es reemplazado por R. La máscara se mueve entonces hacia el siguiente píxel y se repite el proceso hasta cubrir la imagen completa. La figura 3.3 muestra las formas de respuestas al impulso necesarias para implementar filtros espaciales. v
Reconstrucción 3D torácica a partir de imágenes TAC 2D
4
SEMINARIO DE PROYECTOS
Figura 3.3 Línea Superior: Formas básicas de filtros en el dominio de la frecuencia. Línea inferior: Filtros correspondientes en el dominio espacial.
3.2.2.1 Filtros que suavizan (smoothing)
Estos filtros se utilizan para reducción de ruido pero el procedimiento tiene la desventaja de generar una imagen resultante difusa o borrosa. El suavizar una imagen se utiliza en el pre-procesamiento para remover pequeños detalles antes de la extracción de objetos o para rellenar pequeños huecos en líneas o curvas. v Filtrado espacial pasa bajas
La forma de la respuesta al impulso necesaria para implementar un filtro espacial pasa bajas debe de tener todos los coeficientes positivos como puede apreciarse en la figura 3.3. El filtro pasa bajas más simple implementa una máscara de 3 x 3 con coeficientes de valor 1. Sin embargo, de acuerdo a la ecuación 3.2-2, la respuesta sería la suma de los niveles de gris de nueve píxeles de la imagen lo cual podría causar que
R esté fuera del rango válido para niveles de gris, por lo que la respuesta se divide entre 9. La máscara resultante se muestra en la figura 3.4.
Figura 3.4
Máscara de 3x3 para un filtro espacial pasa bajas.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
5
SEMINARIO DE PROYECTOS
Filtro mediana
Una de las desventajas del filtrado pasa bajas es que elimina la nitidez a contornos y a otros detalles. Si el objetivo es eliminar el ruido presente en la imagen, probablemente se más conveniente utilizar un filtrado mediana el cuál reemplaza el nivel de gris de cada píxel de la imagen por el valor de la mediana de los píxeles en la vecindad de éste, en lugar de reemplazarlo por el promedio entre ellos. v 3.2.2.2 Filtros que resaltan o enfatizan.
El objetivo principal de este tipo de filtros es resaltar los detalles finos, es decir, los bordes de una imagen o realzar los detalles que fueron borrados ya sea por un error o por efectos naturales del método utilizado para la adquisición de la imagen. v Filtrado espacial pasa altas básico
La forma de respuesta al impulso necesaria para implementar un filtro pasa altas espacial indica que los coeficientes deben de tener valores positivos cerca del centro y negativos hacia la periferia (figura 3.3). En una máscara de 3 x 3 se cumple ésta condición al elegir el valor central positivo y el resto negativos. La figura 3.5 muestra la implementación clásica de un filtro para enfatizar la imagen utilizando una máscara de 3 x 3. En ésta la suma de los coeficientes es cero por lo que cuando la máscara se encuentra sobre un área con nivel de gris constante o con muy poca variación, la salida del filtro es cero o muy pequeña, obteniéndose el realce de contornos sobre un fondo oscuro. v
Figura 3.5
Máscara de 3x3 para un filtro espacial pasa altas
Reconstrucción 3D torácica a partir de imágenes TAC 2D
6
SEMINARIO DE PROYECTOS
Filtrado con énfasis en altas frecuencias (High-boost)
Un filtro pasa altas puede calcularse como la diferencia entre la imagen original y una versión filtrada por pasa bajas, esto es:
Pasa altas = Original – Pasa bajas
(3.2-3)
Un filtro por alto impulso o con énfasis en altas frecuencias se obtiene al multiplicar la imagen original por un factor de amplificación denotado por A . Cuando A = 1 el resultado es similar al de un filtro pasa altas. Cuando A > 1 una parte de la imagen original es añadida al resultado del filtrado pasa altas lo cual restaura parcialmente los componentes de baja frecuencia perdidos. La imagen resultante de un filtrado con amplificación de altas frecuencias es similar a la imagen original con un incremento en la nitidez de los contornos que depende del valor de A (ecuación 3.2-4). v
Filtrado con énfasis en altas frecuencias = A(Original) – Pasa bajas Filtrado con énfasis en bajas frecuencias = (A – 1)(Original) + Pasa altas 3.2.3
(3.2-4)
Segmentación de imágenes
Generalmente el primer paso en el análisis de imágenes es la segmentación, la cuál consiste en subdividir la imagen en las partes que la constituyen o en objetos. El nivel de segmentación depende del problema a resolverse, y se detiene cuando el objeto de interés se aísla. Las principales áreas de interés en segmentación son la detección de puntos aislados y la detección de líneas y contornos. En el segundo caso, las aproximaciones principales se basan en el manejo de umbrales (thresholding), crecimiento de regiones, división de regiones (splitting) y técnica por combinación (merging). El concepto de segmentar una imagen basándose en la discontinuidad o en los valores de niveles de gris de los píxeles es aplicable a cualquier tipo de imágenes. v 3.2.3.1 Detección de contornos
La detección de contornos es la aproximación más común para detectar discontinuidades en niveles de gris. Reconstrucción 3D torácica a partir de imágenes TAC 2D
7
SEMINARIO DE PROYECTOS
Conceptos básicos
Un contorno es la frontera entre dos regiones con niveles de gris relativamente distintos. La idea en la detección de contornos es el cálculo de un operador local derivativo. La figura 3.6 (a) muestra la imagen de una franja clara en un fondo oscuro, el perfil del nivel de gris a través de una línea de la imagen y las derivadas primera y segunda de este perfil. A través del perfil se aprecia que un contorno es modelado como un cambio paulatino en el nivel de gris y no como un cambio abrupto. La figura 3.6 (a) muestra que la primera derivada del perfil de niveles de gris es positiva en la primera zona de cambio, negativa en la segunda, y nula en niveles constantes de gris. La segunda derivada es positiva en la zona de transición asociada con el lado oscuro del contorno, negativa en la asociada con el lado luminosos del contorno, y nula en las áreas de niveles de gris constantes. Por lo tanto la magnitud de la primera derivada puede utilizarse para detectar la presencia de contornos en una imagen mientras que el signo de la segunda derivada puede ser usado para determinar cuando un píxel se encuentra del lado oscuro o del lado luminoso del contorno. Además, la segunda derivada cruza por cero cuando se tiene una transición en niveles de gris. v La primera derivada en un punto cualquiera de una imagen se obtiene utilizado la magnitud del gradiente en ese punto (ecuación 3.2-6). La segunda derivada se obtiene utilizando el laplaciano (ecuación 3.2-18). Filtros derivativos
Estos filtros típicamente crean una imagen con fondo gris y líneas blancas y negras rodeando los bordes de los objetos y características de la imagen. Promediar los valores de los píxeles en una región tiende a borrar detalles en una imagen. Como promediar es análogo a integrar, la diferenciación puede tener el efecto inverso y por lo tanto, enfatizar los bordes que rodean a un objeto en una imagen para hacerla más fácil de analizar. v
Reconstrucción 3D torácica a partir de imágenes TAC 2D
8
SEMINARIO DE PROYECTOS
Figura 3.6. Detección de contornos por operadores derivativos: (a) línea clara en un fondo oscuro; (b) línea oscura en un fondo claro. Perfil horizontal y derivadas primera y segunda de éste.
Gradiente
El método más común en diferenciación de imágenes y procesamiento digital es el gradiente. Para una función f ( x, y ) el gradiente de f en las coordenadas ( x, y ) está definido como el vector: ∂f ∇ f = ∂x ∂f ∂ y
(3.2-5)
con magnitud:
∂f 2 ∂f 2 ∇f = + ∂x ∂y
1
2
(3.2-6)
La ecuación 3.2-6 constituye la base para varias aproximaciones a la diferenciación de la imagen. Considerando la región de la imagen mostrada en la figura 3.7 donde los coeficientes z 1, z 2 , ... z 9 indican los valores de nivel de gris, la forma más
Reconstrucción 3D torácica a partir de imágenes TAC 2D
9
SEMINARIO DE PROYECTOS
simple para aproximar la ecuación 3.2-6 en el punto z 5 consiste en utilizar la diferencia
(z5 − z 8 ) en la dirección
[
x y ( z 5 − z 6 ) en la dirección y de la forma:
∇f ≈ (z 5 − z 8 ) + (z 5 − z 6 ) 2
2
]
1
2
≈ z5 − z 8 + z5 − z6
(3.2-7)
Otra aproximación consiste en utilizar diferencias cruzadas:
[
∇f ≈ (z 5 − z 9 ) + (z 6 − z 8 ) 2
2
]
1
2
≈ z5 − z 9 + z6 − z 8
(3.2-8)
Las ecuaciones 3.2-7 y 3.2-8 se pueden implementar tomando el valor absoluto de la respuesta a máscaras de 2 x 2 y sumando los resultados. Estas máscaras son conocidas como los operadores Roberts de gradiente cruzado y se muestran en la figura 3.7.
Una aproximación de la ecuación 3.2-6 en el punto z 5 pero utilizando una
vecindad de 3 x 3 está dada por la ecuación: ∇f ≈ (z 7 + z 8 + z 9 ) − (z1 + z 2 + z 3 ) + (z 3 + z 6 + z 9 ) − (z1 + z 4 + z 7 )
(3.2-9)
Las máscaras que pueden utilizarse en este caso se muestran en la figura 3.7 y son conocidas como operadores Prewitt y operadores Sobel. La diferencia entre la primera y la tercera fila aproxima la derivada en la dirección x y la diferencia entre la primera y la tercera columna aproxima la derivada en y . v
Figura 3.7. Región de 3 x 3 de una imagen (los coeficientes z son niveles de gris) y varias máscaras utilizadas para calcular la derivada en el punto z 5 , en éstas la suma de los coeficientes es nula dando una respuesta 0 en áreas constantes, tal como ocurre con un operador derivativo.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
10
SEMINARIO DE PROYECTOS
Laplaciano
El Laplaciano de una función 2-D f ( x, y ) es una derivada de segundo grado definida como: ∇2 f =
∂2 f ∂2 f + 2 ∂x 2 ∂y
(3.2-10)
Como en el caso del gradiente, el Laplaciano puede ser implementado en forma digital para una región de 3 x3 a partir de ∇ 2 f = 4 z5 − ( z2 + z 4 + z6 + z 8 )
(3.2-11)
El requerimiento básico para implementar el Laplaciano es que el coeficiente asociado con el píxel central sea positivo y los coeficientes asociados a los píxeles de la periferia sean negativos (Fig.3.8). Como el Laplaciano es una derivada, la suma de los coeficientes debe de ser nula. Por lo que la respuesta es nula cuando el punto en cuestión y sus vecinos tienen el mismo valor. v
Figura 3.7 Máscara espacial de 3x3 para computar un laplaciano siguiendo la ecuación 3.2-11
3.2.4
Esquemas de representación de imágenes
3.2.4.1 Códigos de cadena
Los códigos de cadena son utilizados para representar una frontera utilizando una secuencia conectada de segmentos de rectas de una longitud y dirección específicas. Generalmente esta representación se basa en segmentos de conectividad 4 u 8. v
Figura 3.9
Direcciones para un código cadena (a) 4-direccional y (b) 8-direccional.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
11
SEMINARIO DE PROYECTOS
La dirección de cada segmento está codificada utilizando un esquema numérico como los que se muestran en la figura 3.9. 3.2.4.2 Morfología Matemática (Filtrado no lineal)
La morfología matemática es un método no lineal para procesar imágenes digitales basándose en formas; el objetivo es la cuantificación de estructuras geométricas. Los filtros en la morfología matemática se definidos por medio de un elemento estructurante. El lenguaje de la morfología matemática es la teoría de conjuntos, de manera que las formas de objetos en una imagen, por ejemplo, en una imagen binaria, es el conjunto de todos los píxeles negros lo que constituye una descripción completa de la imagen. La morfología matemática se puede usar, entre otros, con los siguientes objetivos: Pre-procesamiento de imágenes (supresión de ruido, simplificación de formas). Destacar la estructura de los objetos (extraer el esqueleto, detección de objetos, envolvente convexa, ampliación, reducción) Descripción de objetos (área, perímetro) Definiciones básicas
Sea Z 2 el espacio entero en 2D y A, B conjuntos definidos en éste con componentes a = (a1 , a 2 ) y b = (b1 , b2 ) , respectivamente.
La translación de A por x = ( x1 , x2 ) , denotada ( A)x se define como:
( A)x = {c c = a + x,
para a ∈ A }
(3.2-12)
∧
La reflexión de B, denotada B se define como ∧
B = {x x = −b, para b ∈ B }
(3.2-13)
El complemento del conjunto A es A c = {x x ∉ A}
Reconstrucción 3D torácica a partir de imágenes TAC 2D
(3.2-14)
12
SEMINARIO DE PROYECTOS
Finalmente, la diferencia de dos conjuntos A y B denotada como A − B se define como A − B = {x x ∈ A, x ∉ B} = A ∩ B c
(3.2-15)
Dilatación
Este operador es comúnmente conocido como 'relleno', 'expansión' o 'crecimiento'. Puede ser usado para rellenar 'huecos' de tamaño igual o menor que el elemento estructurante con la que se opera la dilatación.VII Usado con imágenes binarias, donde cada píxel es 1 ó 0, la dilatación es similar a la convolución. Sobre cada píxel de la imagen se superpone el origen del elemento estructurante. Si el píxel de la imagen no es cero, cada píxel que cae en la estructura es añadido al resultado aplicando el operador 'or'. La notación
representa la
dilatación de una imagen A por un elemento estructurante B, se puede escribir:
(3.2-16)
Donde (A)b representa la traslación de A por b. Intuitivamente, para cada elemento no nulo bi,j de B, A es trasladado a la posición i,j y sumado a C usando el operador 'or'. Erosión
La erosión es lo opuesto a la dilatación; en este caso, también existe un elemento estructurante que se utiliza para operar con la imagen. Los efectos son de 'contracción', o 'reducción'. Puede ser utilizado para eliminar zonas menores en tamaño que el elemento estructurante. VII Sobre cada píxel de la imagen se superpone el origen del elemento estructurante. Si cada elemento no cero de dicho elemento está contenido en la imagen, entonces el píxel de salida es puesto a 1. La erosión de una imagen A por el elemento estructurante B se puede definir como: Reconstrucción 3D torácica a partir de imágenes TAC 2D
13
SEMINARIO DE PROYECTOS
(3.2-17)
Donde (A)-b representa la traslación de A por b. B puede ser visto como una 'sonda' que se desliza a lo largo de toda la imagen A, examinando la naturaleza espacial de A en cada punto. Si B trasladado a la posición i, j puede ser contenido en A (poniendo el origen de B en i, j), entonces la posición i, j pertenece a la erosión de A por B. Apertura (opening)
La 'apertura' de una imagen B por un elemento estructurante K, se define como: (3.2-18)
que, en palabras, establece que la apertura de B por K es simplemente la erosión de B por K, seguido de la dilatación del resultado por K. Si B no cambia con la apertura con K diremos que B es abierto respecto a K. VII Cierre (closing)
El 'cierre' de la imagen B por elemento estructurante K se define como:
(3.2-19)
que, en palabras, establece que la clausura de B por K es simplemente la dilatación de B por K, seguido de la erosión del resultado por K. Si B no cambia con la clausura por K diremos que B es cerrado respecto a K. El resultado de aplicar dilataciones y erosiones en forma iterativa es la eliminación del detalle específico en la imagen de dimensiones menores que el elemento estructurante, sin la distorsión geométrica global de características no suprimidas. Por ejemplo, 'abrir' una imagen con una estructura en disco, suaviza los contornos, rompe istmos y elimina pequeñas islas, picos y cabos. 'Cerrar' una imagen con un elemento estructurante en forma de disco, elimina pequeños huecos y rellena brechas en los contornos. VII
Reconstrucción 3D torácica a partir de imágenes TAC 2D
14
SEMINARIO DE PROYECTOS
Esqueleto
El esqueleto de un conjunto A puede ser expresado en términos de erosiones y aperturas. Esto es, con S(A) notando el esqueleto de A, se puede probar que: K
S ( A) = U S k ( A)
(3.2-20)
k =0
con: K
S k ( A) = U {( AΘkB ) − [( AΘkB) o B]}
(3.2-21)
k =o
donde AΘkB denota la aplicación sucesiva de k erosiones a A y K es el último paso iterativo antes de que A se erosione a un conjunto vacío. En otras palabras: K = max{k /( AΘkB) ≠ ∅}
(3.2-22)
La formulación dada en las ecuaciones anteriores establece que el esqueleto de A puede obtenerse como la unión de los subconjuntos de esqueletos Sk(A). Puede probarse también que: K
A = U ( S k ( A) ⊕ kB)
(3.2-23)
k =0
Donde ( S k ( A) ⊕ kB) denota las k dilataciones sucesivas de Sk(A). VII 3.2.4.3 Aproximación poligonal
Un contorno digital puede ser aproximado con una cierta precisión por un polígono. Para una curva cerrada, la aproximación es exacta cuando el número de segmentos del polígono es igual al número de puntos en la frontera de manera que cada par de puntos adyacentes define un segmento en el polígono. En la práctica, el objetivo de la aproximación poligonal es capturar la esencia de la forma del contorno con el menor número de segmentos. V Un método para aproximar por un polígono una frontera es la división (splitting) de un segmento sucesivamente en dos partes, hasta que se satisfaga un criterio dado. Por
Reconstrucción 3D torácica a partir de imágenes TAC 2D
15
SEMINARIO DE PROYECTOS
ejemplo, un requerimiento podría ser que la distancia perpendicular máxima de un punto en la periferia a una recta que une los puntos más alejados de ésta no exceda un umbral determinado, si lo hace el punto más alejado es un vértice que divide el segmento inicial en dos subsegmentos. Esta aproximación tiene la ventaja de encontrar puntos de inflexión. Por ejemplo, la figura 3.10 (a) muestra la frontera de un objeto, en el inciso (b) se muestra la subdivisión de ésta a partir de sus puntos más alejados. El punto marcado como c tiene la distancia perpendicular más grande a partir del segmento superior a la línea ab, de forma similar el punto d representa la distancia mayor a partir del segmento inferior. En la figura 3.10 (c) se muestra el resultado de utilizar el procedimiento de división (splitting) con un umbral igual a 0.25 veces la distancia de la línea ab. El procedimiento termina con el polígono mostrado en la figura 3.10 (d). V
Figura 3.10. Aproximación poligonal utilizando división. (a) frontera original; (b) división de la frontera basada en cálculo de distancias; (c) unión de los vértices; (d) polígono resultante.
3.3
Imágenes adquiridas por tomografía axial computada
La tomografía axial computada (TAC) es una modalidad de imagen médica que produce imágenes del cuerpo humano en planos transaxiales, de hecho tomografía proviene del griego thomos que significa rebanada. Comparada con una radiografía convencional, que es la imagen de muchos planos superpuestos, la imagen obtenida por tomografía axial computada muestra una mejora significativa en el contraste de los tejidos.VIII Una imagen de tomografía es reconstruida matemáticamente a partir de un gran número de proyecciones en una dimensión del plano elegido. Estas proyecciones son adquiridas electrónicamente
Reconstrucción 3D torácica a partir de imágenes TAC 2D
16
SEMINARIO DE PROYECTOS
utilizando un arreglo de detectores de estado sólido y una fuente de rayos x que gira alrededor del paciente. La tomografía axial computada se usa rutinariamente en exámenes radiológicos para diagnóstico y en aplicaciones especiales como planeación de tratamiento en radioterapia o en imagenología tridimensional para planeación quirúrgica.IX Para mayor información acerca de la modalidad de imagen referirse a X y XI. 4
METODOLOGÍA
La metodología que se siguió en presente trabajo se puede dividir en las etapas siguientes: a) Desarrollo de Interfase de Usuario (GUI). b) Procesamiento digital de imágenes vía Matlab. i. Transformación de las imágenes tomográficas. ii. Extracción de Contornos. iii. Obtención de polígono de cada corte tomográfico. iv. Obtención de la reconstrucción 3D a partir de los vértices del polígono. A continuación se detallan cada una de las etapas de la metodología. 4.7 Creación de una interfaz gráfica de usuario (GUI)
Se desarrolló una interfaz gráfica de usuario en la plataforma MATLAB 6.5 con ayuda de GUIDE (Graphical User Interface Development Environment) un conjunto de herramientas de diseño enfocadas a la creación de interfaces, con el fin de que la reconstrucción en 3D del tórax se lleve a cabo en un ambiente amigable que permita al usuario escoger los cortes tomográficos con los que quiere trabajar y con los que desea realizar la reconstrucción. 4.7.1
Estructura de la GUI
La interfaz gráfica de usuario (GUI) desarrollada consta de dos tipos de archivos: el archivo con extensión *.fig (FIG-file), que contiene una descripción
Reconstrucción 3D torácica a partir de imágenes TAC 2D
17
SEMINARIO DE PROYECTOS
completa del diseño de la GUI y de sus componentes, y un archivo con extensión *.m (M-file) que contiene el código o programación que controla a la GUI y los procedimientos que son requeridos dentro de ésta (callbacks). El archivo *.fig de la interfaz realizada contiene un eje (axes1) sobre el cual se realiza el despliegue de los cortes tomográficos elegidos por el usuario, cuatro botones para manejo manual de la imagen (acercamiento, alejamiento, valores de coordenadas y selección de una región a suprimir), además de una barra que contiene tres menús principales conformados por varios submenús (Fig.4.1).
Cuatro botones para manejo manual de la imagen Eje para despliegue de las imágenes seleccionadas
Figura 4.1 Estructura de la interfaz gráfica de usuario (GUI) desarrollada
4.7.2
Menús implementados
Como se mencionó anteriormente se implementaron tres menús principales conformados de varios submenús utilizando el comando Menu Bar del editor de menús (Menu Editor): Menú Datos. Este menú permite cargar, desplegar y/o guardar un corte, varios
cortes o la serie completa de cortes que definen el tórax (stack). En la figura 4.2 se muestra la estructura de éste menú dentro del editor. Dentro de éste menú, el submenú cargar establece comunicación con el usuario a través de cuadros de diálogo que le permiten definir el número de cortes con los que desea trabajar (Fig.4.3). y cargarlos en su espacio de trabajo (Fig.4.4). También se tiene la
Reconstrucción 3D torácica a partir de imágenes TAC 2D
18
SEMINARIO DE PROYECTOS
posibilidad de cargar directamente el conjunto de todos los cortes como stack. (Fig. 4.5.)
Figura 4.2. Estructura del menú de datos implementado en la GUI utilizando el editor de menús de GUIDE
Figura 4.3 Cuadro de diálogo para definir el número de cortes
Figura 4.4 Cuadro de diálogo para elegir los cortes
Reconstrucción 3D torácica a partir de imágenes TAC 2D
19
SEMINARIO DE PROYECTOS
Figura 4.5 Cuadro de diálogo que permite cargar un conjunto de cortes (stack)
Figura 4.6 Cuadro de diálogo que permite salvar los datos desplegados en pantalla
El submenú desplegar permite al usuario elegir de una lista conformada por los cortes que cargó, los cortes que desea desplegar (Fig. 4.7). Finalmente la opción salvar datos despliega un cuadro de texto que permite guardar la imagen desplegada en la pantalla bajo el nombre y el tipo que el usuario prefiera (Fig.4.6).
Figura 4.7 Lista que permite elegir los cortes a desplegar en pantalla
Reconstrucción 3D torácica a partir de imágenes TAC 2D
20
SEMINARIO DE PROYECTOS
Menú Procesamiento. A partir de éste se tiene acceso a los comandos que
permiten al usuario realizar filtrado espacial sobre la imagen desplegada, extraer los contornos de ésta y poligonalizarlos (Fig.4.10). Menú Reconstrucción. En este menú se encuentran los comandos que permiten
la reconstrucción del volumen del tórax a partir de los polígonos de los cortes seleccionados mostrándolo en pantalla (Fig.4.8).
Figura 4.8. Estructura del menú de reconstrucción implementado , éste contiene los comandos para obtener el volumen del tórax a partir de los polígonos encontrados. 4.7.3
Mensajes de error
Para la interfaz de usuario se implementaron varios cuadros de diálogo con mensajes de error (fig.4.9) que aparecen cuando: a) el usuario intenta desplegar imágenes y éstas no han sido cargadas, b) intenta realizar procesamiento y no existen imágenes desplegadas en pantalla o c) cuando se encuentra trabajando con cortes seleccionados por él e intenta procesarlos como si fueran un stack.
Figura 4.9 Cuadros de error implementados en la interfaz desarrollada
Reconstrucción 3D torácica a partir de imágenes TAC 2D
21
SEMINARIO DE PROYECTOS
Figura 4.10. Estructura del menú de procesamiento implementado , éste contiene los comandos para realizar filtrado especial sobre la imagen desplegada y para el manejo y extracción de contornos.
4.7.4
Botones para procesamiento manual de la imagen
En la interfaz gráfica de usuario se implementaron cuatro botones para el manejo manual de la imagen (Fig.4.1), los cuales se describen a continuación:
Reconstrucción 3D torácica a partir de imágenes TAC 2D
22
SEMINARIO DE PROYECTOS
(Zoom in): Este botón permite que el usuario realice un acercamiento o zoom sobre una región de la imagen, ya sea utilizando el botón izquierdo del mouse sobre la región deseada o encerrando el área deseada, manteniendo apretado este mismo botón y liberándolo al definir la sección que se desea expandir.
(Zoom out): Este botón regresa la imagen a su tamaño original solamente con presionarlo, tras haber realizado un acercamiento.
(Valor del píxel): Este botón despliega información de forma iterativa acerca del valor de los píxeles de la imagen. Esta función instala una barra en la parte inferior de la figura donde se despliegan las coordinadas (x, y) y la información sobre el color del píxel donde se ubica el cursor. Si el usuario selecciona una imagen y mantiene presionado el botón izquierdo del mouse mientras mueve el cursor, en la barra se despliega el valor de la distancia euclidiana entre el punto inicial y el punto sobre el cual se localiza el cursor. Además, aparece sobre la imagen una línea que une ambos puntos para mostrar la distancia medida, esta línea desaparece cuando se suelta el botón del mouse.
(Seleccionar región): Utilizando este botón, el usuario selecciona dentro de un polígono los elementos de la imagen que desea suprimir con el fin de obtener el contorno exterior de cada corte, es decir, se puede obtener sólo el contorno conformado por la superficie exterior de la caja torácica. Para definir el polígono se debe presionar el botón izquierdo del mouse para fijar un vértice y presionando el botón derecho o con la tecla Enter, se suprimen los elementos de la imagen dentro del área seleccionada. 4.7.5
Despliegue de imágenes sobre la GUI
Sobre los ejes definidos como axes1 se realiza el despliegue de los cortes y los resultados del procesamiento digital de imágenes. A partir de la concatenación de
Reconstrucción 3D torácica a partir de imágenes TAC 2D
23
SEMINARIO DE PROYECTOS
arreglos es posible mostrar varias imágenes o varios cortes sobre la misma figura, como se mostrará más adelante en la sección de resultados. 4.8 Procesamiento Digital de Imágenes vía MATLAB.
En el archivo con extensión *.m (M-file) de la interfaz desarrollada se implementaron las funciones y los procedimientos destinados al procesamiento digital de la imagen y a la reconstrucción en 3D. 4.8.1
Transformación de las imágenes tomográficas.
Para manejar las imágenes de los cortes tomográficos con la plataforma MATLAB 6.5 es necesario transformar la imagen del formato JPEG a formato de intensidad o escala de grises. Esta transformación se lleva a cabo dentro de la función que responde a la llamada del usuario para cargar cortes, cuando éste selecciona el nombre del corte que desea cargar. 4.8.2
Implementación de filtros que suavizan la imagen
Una vez que se encuentran desplegados los cortes con los que desea trabajar, el usuario puede realizar el procesamiento en el dominio espacial con filtros que suavizan la imagen para eliminar el ruido. 4.8.2.1 Implementación del filtrado pasa bajas
Se implementó un filtro espacial pasa bajas con la función imfilter de MATLAB y se utilizó una máscara de 5 x 5 con pesos unitarios multiplicada por 1/25 para que R no se encuentre fuera del rango válido (ecuación 3.2-2.). 4.8.2.2 Implementación del filtrado por mediana
Se implementa el filtrado por mediana vía una mascara de 3 x 3 con coeficientes de ponderación unitarios utilizando la función medfilt2 para la imagen desplegada, el
Reconstrucción 3D torácica a partir de imágenes TAC 2D
24
SEMINARIO DE PROYECTOS
filtro realiza una operación no lineal y se emplea para reducir el ruido preservando los contornos. 4.8.3
Implementación de filtros que enfatizan la imagen.
Para pronunciar los detalles finos y contornos se programaron filtros espaciales dentro del archivo *.m de la interfaz realizada 4.8.3.1 Filtrado pasa altas
El callback del filtrado pasa altas realiza primero un filtrado por mediana para eliminar el ruido y posteriormente, el filtrado pasa altas utilizando el comando imfilter y la máscara mostrada en la figura 3.5 4.8.3.2 Filtrado con énfasis en altas frecuencias
El filtrado por alto impulso o con énfasis en altas frecuencias (High-boost) se utiliza para resaltar los contornos, sin eliminar el resto de la imagen. El resultado se obtiene a partir de la diferencia entre la imagen original multiplicada por un factor mayor que 1 y la imagen resultante al realizar un filtrado pasa bajas de la imagen original. En el callback se utilizó una máscara de 3 X 3 de coeficientes unitarios y el comando imfilter para obtener el filtrado pasa bajas, el factor de amplificación aplicado siguiendo la fórmula de la ecuación 3.2-4 fue de 1.05. Finalmente, la imagen obtenida es transformada a tipo binario para resaltar los contornos obtenidos y eliminar artefactos u objetos en escalas de gris. 4.8.4
Extracción de contornos
Se programaron diversos métodos para la obtención de contornos comparando los resultados obtenidos al emplear cada uno de ellos, con el fin de definir el método que obtuviera los contornos más definidos y continuos.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
25
SEMINARIO DE PROYECTOS
4.8.4.1 Filtros derivativos
Para programar los filtros derivativos descritos anteriormente en el apartado 3.2.3.1, se utilizaron dos métodos. En el primero se usó la función edge de MATLAB, que toma una imagen de tipo intensidad como entrada y regresa una imagen binaria del mismo tamaño, con valores unitarios en los puntos donde la función detecta contornos en la imagen y ceros en el resto. Esta función implementa tres métodos distintos para localizar contornos a partir de las aproximaciones: Sobel, Prewitt y Roberts, y se utilizó dentro de los callbacks asociados con los comandos Roberts_umbral, Sobel_umbral y Prewitt_umbral dentro del submenú de filtros derivativos. El segundo método consistió en la implementación de los filtros a partir de las máscaras características de cada método y empleando la función imfilter de MATLAB, la cual filtra el arreglo multidimensional de entrada, en este caso la imagen, con la máscara“h” dada por el usuario. Para programar el método Roberts de gradiente cruzado se definió una máscara h = [1 0;0 -1] y se realizó el filtrado utilizando imfilter. Posteriormente, se realizó el filtrado de la imagen original con la máscara h rotada 90° y se sumó los resultados de ambas extracciones. En la imagen resultante se realizó un filtrado por mediana para eliminar el ruido y finalmente, la imagen se binariza para obtener una imagen con valores uno o cero, es decir, en blanco y negro. En los métodos Sobel y Prewitt, las máscaras utilizadas se obtuvieron a partir de la función fspecial y se realizó el filtrado utilizando en cada caso la máscara y su transpuesta correspondiente. De manera similar a lo realizado en la implementación del método Roberts, las imágenes obtenidas para cada método se sumaron y se filtraron por mediana para reducir artefactos de ruido y se transformaron a formato binario. 4.8.4.2 Filtros morfológicos
Para realizar filtrado morfológico sobre los cortes desplegados fue necesario transformarlos a tipo binario, para utilizar el comando bwmorph de MATLAB que
Reconstrucción 3D torácica a partir de imágenes TAC 2D
26
SEMINARIO DE PROYECTOS
aplica sobre
una imagen binaria dada, alguna de las siguientes operaciones
morfológicas Apertura (open): implementa la erosión de la imagen, seguida de la dilatación. Clausura (close):realiza la dilatación de la imagen seguida de la erosión. Esqueleto(skel): elimina los píxeles en los límites o fronteras de objetos pero sin que éstos dejen de tener una conexión. Remover (remove): Este comando define el valor de un píxel como 0, si sus cuatro vecinos conexos presentan un valor unitario, dejando solamente los píxeles de la frontera. 4.8.4.3 Laplaciano
Para extraer contornos utilizando el método por laplaciano, se utilizó también la función imfilter con la máscara mostrada en la figura 3.8. Posteriormente, se filtro por mediana para eliminar el ruido y se transformó a tipo binario la imagen resultado, como en los métodos anteriormente descritos. 4.8.4.4 Perímetro
Otro método utilizado para extraer contornos fue la obtención del perímetro de los objetos definidos dentro del corte utilizando la función bwperim, la cual proporciona una imagen binaria que contiene solamente los píxeles que no son nulos y que se encuentran conectados con al menos un píxel de valor cero, ésta función utiliza la erosión para obtener el perímetro de las imágenes. 4.9 Obtención del contorno exterior de cada corte
Con los métodos de extracción anteriormente mencionados se obtienen los contornos de todos los objetos que se encuentran en la imagen tomográfica, sin embargo para la reconstrucción del tórax es necesario definir solamente el contorno más externo del corte por lo que se implementó una función manual descrita en la sección 4.1.4 y que es llamada por el usuario al presionar el botón
de la interfaz gráfica. El
Reconstrucción 3D torácica a partir de imágenes TAC 2D
27
SEMINARIO DE PROYECTOS
callback asociado a éste implementa dentro de la región seleccionada por el usuario un filtrado utilizando una máscara de 3 x 3 de ceros, con el fin de anular los valores de todos los píxeles que se encuentran dentro del área. . 4.10Poligonalización del contorno
Una vez que se ha obtenido el contorno del corte, se realiza una aproximación poligonal de éste empleando el método de splitting o división definido en la sección 3.2.4.2. fijando como criterio para la obtención de un vértice que la distancia normal máxima sea mayor o igual al 0.5 % del total de la distancia del eje mayor. Para desarrollar este método fue necesario seguir el algoritmo que se describe a continuación: Implementación de las ecuaciones que definen los cuatro bordes de la figura Determinación de los puntos más alejados dentro del contorno, definición del eje mayor del corte, de la distancia máxima y de los dos primeros vértices del polígono utilizando la función distancia_mayor.m. Localización del tercer vértice principal del corte a partir de la generación de trece rectas normales al eje mayor definido, calculando la distancia que existe entre la intersección de cada una de ellas con éste y con la región superior del contorno. Selección de la normal con mayor distancia y verificación de que ésta cumpla con el criterio establecido, si es así se fija el valor de la intersección de la normal con el corte como un vértice. Se realiza la misma operación calculando la distancia de las normales entre el eje mayor y la región inferior del contorno para localizar el cuarto vértice principal. Los vértices encontrados son guardados en un arreglo siguiendo la posición que tienen dentro del polígono utilizando la función vértices.m. A partir de los cuatro vértices encontrados se divide el corte en cuatro cuadrantes y se aplica la función ciclo.m que encuentra y guarda los vértices del corte comprendidos en cada cuadrante.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
28
SEMINARIO DE PROYECTOS
Esta función se corre un número n de veces hasta que el criterio establecido ya no se cumple en ninguno de los cuatro cuadrantes, obteniéndose los vértices que definen al polígono representativo del contorno. 4.10.1 Algoritmos desarrollados para encontrar los vértices que definen al contorno a partir de los cuatro vértices principales.
A partir de los cuatro vértices encontrados se dividió el contorno en cuatro cuadrantes (superior izquierdo, superior derecho, inferior izquierdo e inferior derecho) y se implementó la función ciclo.m descrita a continuación. 4.10.1.1
Algoritmo que describe a la función ciclo.m
El algoritmo se inicia en el cuadrante superior izquierdo y gira en el sentido de las manecillas del reloj hasta llegar nuevamente al cuadrante de inicio. Dentro de cada cuadrante por el que se va pasando se desarrollan los siguientes procesos: Definición del cuadrante en el que se está trabajando Llamada a la función polígono.m, la cual obtiene las coordenadas de un vértice, si es que éste existe, entre dos vértices consecutivos. El vértice encontrado se guarda en el arreglo de vértices siguiendo su localización dentro del polígono a través de la función vértices.m. 4.10.1.2
Algoritmo de la función polígono.m
Las función polígono.m regresa las coordenadas del vértice que se encuentra en la región limitada por dos vértices consecutivos encontrados anteriormente, si se satisface el criterio establecido. Los pasos que describen su funcionamiento se presenta a continuación: Definición de un nuevo eje que une a dos vértices consecutivos y cálculo de la recta que lo determina .
Reconstrucción 3D torácica a partir de imágenes TAC 2D
29
SEMINARIO DE PROYECTOS
Cálculo de la pendiente de ésta recta, de la pendiente que define a cualquier recta normal al eje y de las ordenas al origen de las rectas normales que pasan por los vértices que definen al nuevo eje. Llamada a la función eje_mayor.m, la cuál regresa las coordenadas de las intersecciones del nuevo eje con el contorno del corte. Llamada a la función define_cruce.m , la cual reduce el número de píxeles en un cruce a un promedio entre ellos, con el fin de establecer un solo punto por intersección. Determinación del número de ocasiones en que el eje corta al contorno. Para cada segmento de la recta comprendido entre los puntos de cada intersección se localiza si el contorno del corte se encuentra por arriba o por abajo del eje utilizando la función dirección.m. Para cada segmento se llama a la función normal.m, la cual genera las rectas normales comprendidas entre dos puntos dados y regresa la distancia y las coordenadas del probable vértice. Se elige el valor del vértice con mayor distancia y finalmente se llama a la función vértices.m, para comparar la distancia encontrada con el criterio establecido, si éste se cumple se guardan las coordenadas del nuevo vértice. 4.11Triangularización
Una vez que se obtuvieron los vértices que definen a cada corte se grafican juntos dando una separación de cien unidades entre cada uno utilizando la función fill3.m de MATLAB, se realiza la triangularización a partir de las funciones de delaunay3.m y con la función tetramesh.m se grafica el volumen obtenido. La triangularización de Delaunay consiste en un conjunto de líneas que conectan cada punto perteneciente a un grupo de puntos coplanares con sus vecinos más cercanos. La función delaunay.m regresa como triangularización un conjunto de triángulos de manera que cada uno de éstos no se encuentre contenido en ningún otro triángulo circunscrito.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
30
SEMINARIO DE PROYECTOS
4.12Diagramas a bloques de las metodologías desarrolladas
Diagrama de la estructura de la GUI
Acercamiento
Despliegue de uno o varios cortes
Alejamiento
Despliegue del stack completo
Valores de un píxel Seleccionar una región manualmente
BARRA DE BOTONES
EJES
INTERFAZ GRÁFICA DE USUARIO
DATOS
Cargar Cortes
PROCESAMIENTO
RECONSTRUCCIÓN
FILTRADO ESPACIAL
Triangularización
Cargar Stack
Suavizar
Sólido
Desplegar Cortes
Pronunciar
Movimiento
Desplegar Stack
CONTORNOS Extracción
Guardar
Suavizar Poligonalización
Reconstrucción 3D torácica a partir de imágenes TAC 2D
31
SEMINARIO DE PROYECTOS
Diagrama de la metodología seguida para la generación del tórax en tercera dimensión
Cargar imagen o imágenes a procesar
Transformarlas de tipo JPEG a tipo intensidad
Desplegar la imagen deseada
Selección manual de las regiones a eliminar
Aplicación de procesamiento de extracción de contornos
Procesamiento para suavizar la imagen (Cuando se desee)
Obtención del contorno exterior del corte
Extracción de los vértices que definen al contorno
Obtención de los vértices de cada uno de los cortes
Obtención de la reconstrucción en 3D del tórax
Tetraedirización de los polígonos obtenidos
Generación del polígono de cada corte
Reconstrucción 3D torácica a partir de imágenes TAC 2D
32
SEMINARIO DE PROYECTOS
8.
RESULTADOS
A continuación se muestran los resultados obtenidos tanto de la implementación de la interfaz gráfica de usuario, como del procesamiento sobre las imágenes desplegadas, la extracción de contornos, la poligonalización de éstos y la reconstrucción del tórax. 8.1
Interfaz gráfica de usuario para la reconstrucción 3D (GUI).
Tras el desarrollo de la metodología explicada en el apartado 4.1 se obtuvo la interfaz gráfica de usuario que se muestra en la figura 5.1.
Barra de menús
Botones para manejo de la imagen
Zona de despliegue de las imágenes Figura 5.1. Interfaz gráfica de usuario desarrollada
8.1.1
Despliegue de imágenes
Dentro de ésta interfaz es posible desplegar el número de imágenes que el usuario elija a partir de los cuadros de dialogo mostrados en la sección 4.1. En las siguientes figuras se muestra el despliegue en pantalla de un corte tomográfico, varios cortes y el stack completo.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
33
SEMINARIO DE PROYECTOS
Figura 5.2. Despliegue en pantalla de un corte tomográfico
Figura 5.3. Despliegue en pantalla de dos cortes tomográficos
Reconstrucción 3D torácica a partir de imágenes TAC 2D
34
SEMINARIO DE PROYECTOS
Figura 5.4. Despliegue en pantalla de tres cortes tomográficos
Figura 5.5. Despliegue en pantalla de seis cortes tomográficos
Reconstrucción 3D torácica a partir de imágenes TAC 2D
35
SEMINARIO DE PROYECTOS
Figura 5.6. Despliegue en pantalla del conjunto completo de cortes (stack)
8.1.2 Botones dentro de la GUI
El resultado obtenido al aplicar un acercamiento a la imagen (zoom in) se muestra en la figura 5.7, mientras que al presionar el botón de zoom out se obtiene la imagen original. En la figura 5.8 se muestra la barra donde se despliegan los valores del píxel sobre el cual se encuentra el cursor del mouse y donde se muestra la distancia euclidiana entre dos puntos seleccionados manualmente por el usuario.
Figura 5.7. Acercamiento sobre el cuadrado definido en la imagen original utilizando el botón de zoom in.
Reconstrucción 3D torácica a partir de imágenes TAC 2D 36
SEMINARIO DE PROYECTOS
Línea que muestra la distancia entre dos puntos seleccionados por el usuario al dar clic con el botón derecho del mouse sobre cada uno de ellos
Barra donde se despliegan los valores de las coordenadas (x ,y) del píxel, su valor, en este caso igual a cero y el valor de la distancia euclidiana a partir del punto (541.249, 26.292) Figura 5.8 Barra que despliega los valores de las coordenadas del píxel en un punto dado y la distancia euclidiana con otro punto de la imagen
8.2
Procesamiento digital de la imagen
Se implementaron una serie de filtros espaciales y morfológicos para el procesamiento digital de la imagen desplegada ya sea para enfatizar una imagen o para la obtención de contornos. 8.2.1
Filtros que suavizan la imagen
Sobre la figura 5.9 se muestra el resultado de aplicar el filtro pasa bajas descrito dentro de las secciones 3.2.2.1. y 4.2.2.1. y el filtrado por mediana desarrollado tal como se establece en las secciones 3.2.2.2 y 4.2.2.2 se muestra en la figura 5.10
Figura 5.9. Imagen obtenida tras aplicar un filtrado pasa bajas
Reconstrucción 3D torácica a partir de imágenes TAC 2D
37
SEMINARIO DE PROYECTOS
En la figura 5.9 se observa que el corte se vuelve más difuso, sobre todo se nota una pérdida en la definición en los contornos y del brillo de la imagen al compararla con la original. Mientras, en la figura 5.10 el resultado que se aprecia al aplicar el filtrado por mediana es una imagen más homogénea que no elimina la definición de los contornos. Este método es el que se utiliza comúnmente para eliminar ruido dentro de las imágenes.
Figura 5.10. Imagen obtenida tras aplicar un filtrado por mediana
8.2.2
Filtros que enfatizan la imagen
A continuación se presentan los resultados obtenidos al aplicar a la imagen desplegada un filtrado que enfatiza la imagen resaltando contornos, remarcando pequeños detalles. En la figura 5.11 se observa la imagen resultante al aplicar un filtrado pasa altas al corte desplegado dentro de la interfaz gráfica de usuario. Dentro de la GUI es visible la reducción de contraste dentro de la imagen, obteniéndose sobre todo el realce de contornos en blanco sobre un fondo negro. En las figuras se presentan los negativos de las imágenes obtenidas.
Figura 5.11. Imagen obtenida tras aplicar el filtro pasa altas Reconstrucción 3D torácica a partir de imágenes TAC 2D
38
SEMINARIO DE PROYECTOS
Figura 5.12. Imagen obtenida tras aplicar el filtrado con énfasis en altas frecuencias
En la figura 5.12 se aprecia el resultado de filtrar con énfasis en altas frecuencias (high boost), esta imagen se parece a la original pero muestra un realce en blanco en los contornos, mientras que no elimina por completo el fondo, como en el caso del filtrado pasa altas. 8.2.3
Extracción de contornos
Tal como se dijo anteriormente los contornos de los cortes pueden ser extraídos utilizando ya sea filtros derivativos o filtros morfológicos a continuación se presentan los resultados obtenidos al aplicar cada uno de éstos métodos. 8.2.3.1 Resultados al aplicar filtros derivativos Roberts
Figura 5.13. Imagen obtenida tras aplicar el filtro derivativo por el método de Roberts Reconstrucción 3D torácica a partir de imágenes TAC 2D
39
SEMINARIO DE PROYECTOS
Prewitt
Figura 5.14. Imagen obtenida tras aplicar el filtro derivativo por el método de Prewitt
Sobel
Figura 5.15. Imagen obtenida tras aplicar el filtro derivativo por el método de Sobel
Roberts_umbral
Figura 5.16. Imagen obtenida tras aplicar el filtro derivativo implementado como umbral con el método de Roberts
Reconstrucción 3D torácica a partir de imágenes TAC 2D
40
SEMINARIO DE PROYECTOS
Prewitt_umbral
Figura 5.17. Imagen obtenida tras aplicar el filtro derivativo implementado como umbral con el método de Prewitt
Sobel_umbral
Figura 5.18. Imagen obtenida tras aplicar el filtro derivativo implementado como umbral con el método de Sobel.
Se precia que los contornos obtenidos en los tres primeros casos son demasiado gruesos, es decir el contorno se forma de más de un píxel, y no continuos, por lo que no son útiles para los propósitos de reconstrucción. Los contornos obtenidos mediante umbrales son más definidos y delgados, pero tampoco son continuos, por lo que no definen los contornos exteriores del tórax y no son útiles. En las siguientes figuras se muestran los contornos obtenidos mediante filtrado morfológico empleando las técnicas descritas en la sección 4.2.4.2.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
41
SEMINARIO DE PROYECTOS
8.2.3.2 Resultados al aplicar filtrado morfológico Laplaciano
Figura 5.19. Imagen obtenida tras aplicar el método de Laplaciano
Perímetro
Figura 5.20. Extracción del perímetro de las figuras contenidas en el corte utilizando entre otras la función bwperim.
Apertura
Figura 5.21. Apertura (opening) de la imagen original por filtrado morfológico.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
42
SEMINARIO DE PROYECTOS
Clausura
Figura 5.22. Clausura (close) de la imagen original obtenida por filtrado morfológico.
Esqueleto
Figura 5.23. Esta figura muestra el esqueleto obtenido con una iteración de filtrado.
Remover
Figura 5.24. Contornos obtenidos al aplicar la opción remover (remove) la cual obtiene solamente los píxeles que definen una frontera.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
43
SEMINARIO DE PROYECTOS
De la figuras 5.20 a 5.24 se observa que solamente los contornos obtenidos por medio del perímetro o por la función remover, son delgados, continuos y definen el contorno exterior de los cortes. Mientras que en los otros casos no se obtiene el contorno sino el corte en color blanco. Cualquiera de éstos dos métodos es útil para obtener los contornos que definirán al tórax. En este trabajo se empleó el perímetro para la obtención de todos los contornos. 5.3.4
Obtención del contorno exterior de cada corte
De los métodos anteriormente mostrados, se eligió el resultado de filtrar la imagen por el comando perímetro, ya que con éste se obtienen los contornos más delgados y cerrados, además de que elimina muchos de los componentes del interior del contorno. A partir de la imagen obtenida se procede a seleccionar manualmente los objetos interiores para obtener el contorno exterior solamente, esto se realiza utilizando la función selecciona _ región asociada al botón
descrito en la sección 4.3, a
continuación se muestra una secuencia de imágenes donde se pueden observar los pasos seguidos para eliminar los contornos interiores de la imagen.
Figura 5.25 Imagen obtenida tras aplicar las operaciones morfológicas que extraen el perímetro de los objetos presentes en el corte tomográfico .Sobre ésta se efectúa la selección de la región a eliminar para obtener solamente el contorno exterior.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
44
SEMINARIO DE PROYECTOS
Figura 5.26 Pasos seguidos para seleccionar la región a eliminar, esto se logra al dar clic con el botón derecho del mouse cuando se desea fijar un punto del polígono que contiene a los contornos internos.
Figura 5.27 Polígono que contiene el área a eliminarse y obtención del contorno exterior del corte a partir del cual se va a trabajar para obtener la poligonalización.
5.3.4.1 Contornos exteriores de cada corte
El método mostrado en el inciso anterior se empleó para la extracción del contorno exterior de cada corte. Los resultados obtenidos se muestran las siguientes figuras.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
45
SEMINARIO DE PROYECTOS
Figura 5.28 Contornos exteriores de cada corte tomográfico
Reconstrucción 3D torácica a partir de imágenes TAC 2D
46
SEMINARIO DE PROYECTOS
5.4
Poligonalización de los contornos
Los pasos seguidos en la poligonalización del contorno del primer corte se muestran en las siguientes figuras, se escogió este corte porque en él se presenta el caso donde el eje definido corta en varias ocasiones el contorno del corte. 5.4.1
Determinación del eje mayor y los dos primeros vértices
Este es el paso inicial de la poligonalización y consiste en localizar los puntos más alejados dentro del contorno y trazar una recta que los una (fig. 5.29) además de identificarlos como los primeros vértices del polígono.
Primer vértice
Segundo vértice
Figura 5.29 Obtención de la distancia mayor entre los puntos que definen al contorno
5.4.2
Determinación del vértice superior principal y el vértice inferior principal
El siguiente paso consiste en localizar mediante la generación de trece normales, el vértice superior del corte, siguiendo la metodología descrita anteriormente en este trabajo (figura 5.30), posteriormente se encuentra el vértice inferior del corte siguiendo el mismo desarrollo (figura 5.31). La obtención de los cuatro vértices es el paso más importante ya que éstos dividen al corte en los cuatro cuadrantes de estudio.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
47
SEMINARIO DE PROYECTOS
Tercer vértice
Figura 5.30 Obtención del tercer vértice
Cuarto vértice
Figura 5.31 Obtención del cuarto vértice
5.4.3
Extracción de los vértices que definen al contorno a partir de los cuatro vértices principales.
A partir de los cuatro vértices anteriormente encontrados se extraen todos los vértices que definen al contorno según el criterio establecido. En la figura 5.32 se muestra el caso en el que la recta que une dos vértices consecutivos, en este caso el Reconstrucción 3D torácica a partir de imágenes TAC 2D
48
SEMINARIO DE PROYECTOS
cuarto y primer vértices, corta en varias ocasiones el contorno del corte, en esta figura se aprecia como el programa encuentra la dirección en la que se encuentra el corte y genera las normales en dirección a éste, encontrando el punto más alejado.
Figura 5.32 Localización del vértice entre el primer y el cuarto vértice
En la figura 5.33 se muestra el resultado de la primera vuelta del algoritmo que localiza los vértices del polígono, y en la figura 5.34 se observa el resultado al aplicar la segunda vuelta del algoritmo para encontrar alrededor de dieciséis vértices para el polígono que define al corte.
Figura 5.33 Primera vuelta para encontrar los vértices
Reconstrucción 3D torácica a partir de imágenes TAC 2D
49
SEMINARIO DE PROYECTOS
Figura 5.34 Segunda vuelta para encontrar los vértices
Tras haber encontrado los vértices que definen el contorno del corte, se genera la figura 5.35 donde se muestran los puntos ubicados en la periferia y en la figura 5.36 se presenta el polígono resultante.
Figura 5.36 Puntos del polígono del primer corte
Figura 5.37 Polígono del primer corte
Reconstrucción 3D torácica a partir de imágenes TAC 2D
50
SEMINARIO DE PROYECTOS
5.4.4
Polígonos de los diez cortes empleados
Se obtuvieron en total ciento trece puntos a partir de los cuales utilizando la función fill.m de MATLAB se obtuvieron los polígonos de siete de los diez cortes tomográficos, a partir de los puntos o vértices encontrados utilizando el método anteriormente descrito. En la figura 5.38 se muestran los polígonos por separado. No se emplearon los diez cortes por que en los tres últimos es necesario eliminar los contornos de los brazos.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
51
SEMINARIO DE PROYECTOS
Figura 5.38 Polígonos de los cortes empleados para la reconstrucción.
5.5
Reconstrucción en 3D
A partir de los polígonos obtenidos se obtuvo la reconstrucción tridimensional del tórax, esto se logró asignando a una separación de 100 unidades en el eje z entre cada corte. La localización espacial de los siete polígonos se obtuvo utilizando la función fill3.m de MATLAB y se muestra en la figura 5.39. Posteriormente se realizó la tetraedrización o triangularización utilizando la teslación de Delaunay a partir de los comandos delaunay3.m y tetramesh.m. La reconstrucción resultante se muestra en la figura 5.40 en color blanco y en escala de grises. En las figuras posteriores se observa la reconstrucción obtenida rotada en varios ángulos.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
52
SEMINARIO DE PROYECTOS
Figura 5.39 Localización espacial de los siete polígonos encontrados
Figura 5.40 Vista anterior del volumen reconstruido
Figura 5.41 Vista posterior del volumen reconstruido
Reconstrucción 3D torácica a partir de imágenes TAC 2D
53
SEMINARIO DE PROYECTOS
Figura 5.42 Vista inferior del volumen
Figura 5.42 Vista superior del volumen
6. CONCLUSIÓNES Y DISCUSION
El objetivo de obtener una interfaz gráfica que permitiera el manejo de imágenes tomográficas, su procesamiento y que a partir de éstas generara la reconstrucción tridimensional del tórax fue alcanzado. Se obtuvo una GUI fácil de manejar que permite al usuario obtener una reconstrucción en 3D a partir de los cortes que él mismo seleccione. Además el volumen obtenido representa el tórax de una persona en el cuál es posible diferenciar la parte anterior que contiene a los pectorales, de la parte posterior correspondiente a la espalda, son visibles también la cintura y la zona de los hombros.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
54
SEMINARIO DE PROYECTOS
Las limitaciones de esta reconstrucción consistieron en que el número de imágenes tomográficas con el que se contó fue pequeño, por lo que la separación entre cada corte es de alrededor de diez centímetros y si se quiere obtener un tórax más definido es necesario interpolar entre los valores que se tienen o emplear un grupo de imágenes más grande con menos espaciamiento entre ellas. También, el algoritmo para encontrar los vértices y realizar la poligonalización de los contornos emplea una cantidad de tiempo razonable, alrededor de quince minutos por corte en una computadora con procesador Pentium® 4 CPU 3.40 GHz con 1.00 GB de RAM. La extracción de los vértices de los contornos es computacionalmente demandante y se obtienen pocos puntos para definir los polígonos. Además, los puntos de inflexión de algunos contornos no son detectados bajo el criterio establecido. Además, el algoritmo desarrollado para la extracción de vértices solamente puede extraer máximo dieciséis puntos por corte, en el mejor de los casos, por lo que el número total de vértices para obtener la reconstrucción fue de ciento seis. Por este motivo el tórax reconstruido muestra una forma gruesa y en algunas zonas se encuentra poco definido. Cabe señalar que la reconstrucción se realizó utilizando solamente siete de los diez cortes tomográficos con los que se contaba. Esto debido a que en los tres últimos es necesario eliminar los contornos correspondientes a los brazos y realizar una interpolación con los valores de la imagen para obtener un contorno cerrado que solamente represente el tórax de la persona. A largo plazo se requiere realizar la reconstrucción torácica con un conjunto mayor de imágenes, desarrollar un algoritmo que permita extraer los contornos pertenecientes a los brazos e interpolar la imagen para obtener solamente el contorno exterior del tórax. Además es necesario realizar la optimización de la programación con el fin de obtener un mayor número de puntos a partir de los cuales sea posible obtener un volumen más definido en un tiempo más corto. Otra posibilidad es utilizar la teoría de los snakes para el mismo propósito.
Reconstrucción 3D torácica a partir de imágenes TAC 2D
55
SEMINARIO DE PROYECTOS
REFERENCIAS I
CHI LEM Georgina , GONZALEZ CAMARENA Ramón. Nuevas perspectivas en la evaluación automatizada de los sonidos respiratorios. Rev Inst Nal Enf Resp Mex. [online]. oct./dic. 2001, vol.14, no.4 [citado 05 Diciembre 2005] Disponible en la World Wide Web: . ISSN 0187-7585
II
RICHARD A. Robb , Perspectives on 3D and 4D Medical Imaging . Disponible en la World Wide Web:www.mayo.edu/bir/PDF/priv-hosp-hlthcre-eur-pap2001.pdf III
HABIB Zaidi, Medical Imaging: Current status and future perspectives. Disponible en la World Wide Web: http://www.unesco.org/webworld/public_domain/tunis97/com_35/ com_35.html
IV
GONZÁLEZ CAMARENA, R. CARRASCO SOSA, S. CHARLESTON VILLALOBOS, S. GAITÁN GONZÁLEZ, J.M. RAMOS MARTÍNEZ, G.R. CHI LEM, G.PÉREZ PADILLA, J.G. Sistema para el análisis cuantitativo de los sonidos respiratorios. Revista Mexicana de Ingeniería Biomédica [On line] • Vol XVIII • No.2 • ISSN 0188-9532 • mayo 1997. Disponible en la World Wide Web: itzamna.uam.mx/rmib/Vol%20XVIII%20No%202.pdf V
GONZALEZ Rafael, WOOODS Richard. Digital image processing , Addisson-
We 21 sley USA 1998 VI
MATLAB versión 6.5.0 Image Processing Toolbox 3.2 User's Guide, © 1994-2005 The MathWorks, Inc.
VII
Robert FISHER, Simon PERKINS, Ashley WALKER and Erik WOLFART, Mathematical Morphology . Disponible en la World Wide Web: http://homepages.inf.ed.ac.uk/rbf/HIPR2/ matmorph.htm VIII
GREG Michael. X-ray computed tomography. Medical physics special feature. Disponible en la World Wide Web: www.iop.org/Journals/PhysEd.
IX
Medline Plus Enciclopedia médica en español . TC torácica . Disponible en la World Wide Web: http://www.nlm.nih.gov/medlineplus/spanish/ency/article/003788.htm#visualContent.
Reconstrucción 3D torácica a partir de imágenes TAC 2D