Segmentación de Imágenes medicas para detección de detalles Matias, J. ; Becilla, C. ; Chavez, P. )1( )1( )2( 1 Miembros de la materia, Egresados, Facultad de Ingeniería Eléctrica y Computación (FIEC) 2 Director de la materia, profesor e investigador de la ESPOL. Facultad de Ingeniería en Electricidad y Computación Escuela Superior Politécnica del Litoral Campus Prosperina, Km. 30.5 vía Perimetral, Guayaquil, Ecuador jmatias@fiec.espol.edu.ec, cbecilla@fiec.espol.edu.ec, pchavez@fiec.espol.edu.ec Resumen El Procesamiento Digital de Señales aplicado a las imágenes tiene como objetivo visualizar o analizar algunos detalles de la imagen que no son perceptibles en su forma original. La correcta visualización de detalles en las imágenes radiológicas, que en muchos casos se presentan en escala de grises, es un factor fundamental en los diagnósticos médicos y toma de decisiones que son de vida o muerte. El presente trabajo realiza un análisis de las imágenes médicas, entre las cuales tenemos radiografías y tomografías, logrando segmentar regiones de interés y comparar entre distintos métodos de segmentación los resultados para determinar en cuál se obtiene un mejor detalle del área de interés a ser estudiada. Para el desarrollo del presente trabajo se utiliza el programa Matlab, el cual constituye una poderosa herramienta para el análisis de este tipo de señales, y que facilita la tarea de construir una aplicación específica. Palabras Claves: Segmentación, Imágenes medicas, MatLab. Abstract Digital signal processing applied to the image processing field has as a main propose to display and analyze image details witch are no noticeable on its in its original form. The correct visualization of details on radiologic images, which in many cases are presented in gray scale, it is a key factor in medical diagnostics and decisions that are life threatening. This paper conducts an analysis of medical images like have X-rays and scans, we will get to segment regions of interest and compare between different methods of segmentation and we will determine which one gets a better detail of the area of interest to be studied. For the development of this work we used MatLab, which is a powerful tool for analyzing these signals, and facilitates the task of building a specific application. Keywords: Segmentation,medical images,MatLab . 1. Introducción En la actualidad existen diversos tipos de imágenes para diagnostico médico las cuales están basadas principalmente en los métodos de adquisición, el correcto procesamiento de dichas imágenes constituye una herramienta para facilitar el diagnostico de determinadas dolencias y, de esta manera, permitir al médico alcanzar mayor fiabilidad y eficacia al momento de prescribir un tratamiento. La segmentación de imágenes médicas en regiones de interés juega un papel importante en el reconocimiento de estructuras anatómicas. Matlab es uno de los programas de análisis matemático más importantes, el cual cuenta además con un módulo para el procesamiento de imágenes, es por eso que se ha seleccionado a este programa como herramienta para el desarrollo del proyecto. 2. Segmentación 2.1 Generalidades La segmentación de imágenes se define como la partición de una imagen en sus regiones constituyentes, las cuales no deben estar solapadas y además son homogéneas respecto a alguna característica como por ejemplo la intensidad, así pues, dada una imagen cuya entera región es representada por R, podemos definir la segmentación como el proceso que divide a R en n subregiones R1,R2,R3…,Rn que cumplen con las siguientes condiciones[1]: • Cada pixel debe de estar en un región ڂ ܴ௜ ൌ ܴ௡௜ୀଵ . • Los puntos en una determinada región deben de estar conectados en algún sen e ido. tido pr defin • o de ser disjuntas ܴ௜ ת j tal que i≠j. Las regi nes deben ௝ܴ ൌ ׎ para todo i y • ܲሺܴ௜ሻ ൌ ݒ݁ݎ݀ܽ݀݁ݎ݋ para i=1,2,3, …, n. ௜ሻ d de intensidad de los i. ܲሺܴ define similitu puntos de la región R • ܲ൫ܴ௜ ׫ ௝ܴ൯ ൌ ݂݈ܽݏ݋ para cualquier región adyacente Ri y Rj 2.2 Vecindad y Conectividad La vecindad define la relación entre un pixel y su entorno. El pixel p=(x,y) tiene 2 vecinos verticales y 2 vecinos horizontales, conocidos como vecindad de cuatro o vecindad directa. ( ) ( ) ( ) ( )⎪⎪⎩ ⎪⎪⎨ ⎧ −= += −= += = 1, 1, ,1 ,1 )(4 yxd yxc yxb yxa pN Figura 1. Vecindad vertical y horizontal La vecindad diagonal, denotada por ND(p), está definida por las siguientes coordenadas: ( ) ( ) ( ) ( )⎪⎪⎩ ⎪⎪⎨ ⎧ −−= +−= −+= ++= = 1,1 1,1 1,1 1,1 )( yxh yxg yxf yxe pNd Figura 2. Vecindad diagonal La vecindad de ocho denotada por NS(p) es la unión de las dos vecindades anteriores. Figura 3. Vecindad de ocho Finalmente la conectividad entre dos pixeles p y q está dada por los siguientes criterios: • Vecindad: p y q son vecinos directos o indirectos. • Similitud: p y q comparten alguna propiedad, como por ejemplo el nivel de gris. 3. Algoritmo utilizado 3.1 Contornos Activos En el presente trabajo se utiliza un método iterativo de segmentación [2] basado en contornos activos. El método de contorno activo consiste en delimitar un determinado objeto dentro de una imagen [3], produciendo un contorno alrededor de este. Requiere de un contorno inicial y en cada ejecución del algoritmo se mejorara atrayéndolo a los limites del objeto analizado, finalmente se delimita el objeto en cuestión. 3.2 Algoritmo de Chan-Vese En el programa implementado en MATLAB se utiliza el algoritmo planteado por Chan y Vese [2] para lograr la segmentación, a continuación se describe dicho algoritmo. Se asume una imagen ݑ଴ que está formada por dos regiones, cada una de ellas tiene una intensidad aproximadamente constante con valores ݑ଴௜ y ݑ଴௢ y el objeto a ser detectado es representado por el valor de ݑ଴௜ ; se asume también que el contorno de este objeto es denotado por ܥ଴, se tiene entonces que ݑ଴ ൎ ݑ଴௜ dentro del objeto o dentro de ܥ଴ y que ݑ଴ ൎ ݑ଴௢ fuera del objeto o fuera de ܥ଴ , se define también las siguientes funciones: ∫ ∫ −= −= C C dxcuCF dxcuCF 2 202 2 101 )( )( Donde C es otra curva variable; y las constantes c1 y c2 constituyen el valor promedio de la intensidad de u0 dentro y fuera de C respectivamente. El siguiente paso es analizar los posibles casos que se puedan presentar, así pues si la curva F esta fuera del objeto como se muestra en la figura 4 se obtiene entonces que ܨଵሺܥሻ ൐ 0 y ܨଶሺܥሻ ൎ 0 . Figura 4. Curva C fuera del objeto. Si la curva C esta dentro del objeto como se muestra en la figura 5 entonces ܨଵሺܥሻ ൎ 0 y ܨଶሺܥሻ ൐ 0. Figura 5. Curva C dentro del objeto. E Si la curva C se encuentra dentro y fuera del objeto como se muestra en la figura 6 entonces ܨଵሺܥሻ ൐ 0 y ܨଶሺܥሻ ൐ 0 , y finalmente si la curva C se encuentra delineando el contorno del objeto como se muestra en la figura 7 entonces que ܨଵሺܥሻ ൎ 0 y ܨଶሺܥሻ ൎ 0, por lo tanto para lograr la segmentación lo que se debe hace e ሻ ൅ ܨଶሺܥሻ de tal manera que: r s minimizar ܨଵሺܥ ܨଵሺܥሻ ൅ ܨଶሺܥሻ ൎ 0 Figura 6. Curva C dentro y fuera del objeto. Figura 7. Curva C rodeando al objeto. 3. Resultados experimentales Uno de los principales problemas encontrados en la implementación de este proyecto fue inicializar correctamente la curva que se recibe como entrada para la ejecución de este algoritmo, y permitir además al usuario delimitar la región a segmentar. La solución fue utilizar una función para dibujar líneas entre dos puntos dados [5]; se elaboro el código de tal manera que permita al usuario seleccionar la cantidad de puntos y las coordenadas de los mismos, estos puntos constituyen los vértices del polígono que a su vez es la curva de inicialización . En la figura 8 se muestra la ventana en la cual se le permite al usuario seleccionar los puntos que constituirán la curva de inicialización, en el primer experimento se selecciono 4 puntos dentro de la figura 8 [6]. Figura 8. Selección de puntos en la imagen. Los resultados que se obtuvieron utilizando la figura 8 se los muestra a continuación: Figura 9. Imagen original y curva de inicialización. En la figura 9 se muestra la imagen original a tratar y la curva de inicialización dibujada una vez que el usuario selecciono 4 puntos aleatoriamente dentro de la imagen y cercanos al objeto a segmentar . Luego de aplicar la segmentación se obtuvo el resultado mostrado en la figura 10, teniendo esta imagen como referencia, se procedió a reemplazar los valores de las coordenadas de la región encontrada con los valores originales de la figura 8. En la figura 11 se muestra el resultado final, el detalle encontrado luego de haber realizado la segmentación de la figura 8, con los valores originales de intensidad de gris para dicha región. Figura 10. Resultado de la segmentación aplicada a la tomografía. Figura 11. Segmentación de tomografía con niveles de gris originales. 4. Problemas presentados Para el siguiente experimento se utilizo la figura 12 [7], que presenta una región menos uniforme en relación a la intensidad del nivel de gris Figura 12. Resonancia magnética del cerebro Como se puede notar en la figura 13 el resultado muestra la región extraída y además las discontinuidades dentro de la misma, si se toma esta imagen como referencia para generar una nueva con los valores de gris originales para esta región el resultado que se conseguirá se muestra en la figura 14. Figura 13. Segmentación de resonancia magnética del cerebro Figura 14. Segmentación de resonancia magnética del cerebro con niveles de gris originales. Si el objetivo es encontrar la región en su totalidad se debe proceder a rellenar las subregiones encontradas con los valores originales de gris sin embargo esto sirve para detectar los detalles o cambios de niveles dentro de la región a analizar. 4. Conclusiones • Establecer un método eficaz de segmentación de imágenes para hallar regiones de interés y detalles constituye una tarea complicada, hay que tener en cuenta el enfoque del análisis para cada aplicación y que es lo que se quiere encontrar, es decir cuál es el objetivo que se persigue al segmentar la imagen, este puede ser simplemente detectar anomalías que se interpretan como discontinuidades o cambios de intensidad dentro de la imagen a estudiar, o la separación de regiones para su posterior análisis. • El método iterativo utilizado en este proyecto demostró ser eficaz para segmentar regiones que se encuentran delimitadas de alguna manera, sin embargo la existencia de discontinuidades dentro de la misma y la naturaleza del algoritmo de forzar la curva de inicialización hacia los límites de la región provocaba que los resultados se muestren incompletos sin la presencia de los valores originales de intensidad de gris para estas discontinuidades dentro de la región segmentada, requiriendo así posterior procesamiento si el objetivo inicial de la segmentación es mostrar por completo esta región inclusive las subregiones existentes dentro de la misma. 5. Referencias [1] González y Woods, Procesamiento digital de imágenes usando MATLAB. [2] T. Chan and L.Vese, Active contours without edges. [3] http://en.wikipedia.org/wiki/Active_contour [4] http://es.wikipedia.org/wiki/Operador_Sobel [5] Medical images database and MRI http://www.mathworks.com/matlabcentral/fileexchang e/15374 [6] Medical images database and MRI www.akneurosurgery.com/img/cases/braintumor2.jpg [7] Medical images database and MRI www.akneurosurgery.com/img/cases/braintumor.jpg [8] Matlab File exchange at Mathworks http://www.mathworks.com/matlabcentral/fileexchang e/19567. [9] Matlab file exchange at mathworks http://www.mathworks.com/matlabcentral/fileexchang e/15374 [10] González y Woods, Procesamiento digital de imágenes usando MATLAB. [11] Faúndez Marcos, Tratamiento digital de voz e imagen y aplicación a la multimedia. ________________________ Ing. Patricia Chavez Profesor de la Materia