Por:
Rigel Alfredo Rodríguez Hernández
PROYECTO DE GRADO
Presentado ante la Ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero Electrónico
Por:
Rigel Alfredo Rodríguez Hernández
PROYECTO DE GRADO
Presentado ante la Ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero Electrónico
APROBADO: REPROBADO:
OBSERVACIONES:
Jurado Jurado
Tutor Académico
Co-Tutor Jurado
Nota: Colocar los sellos de los respectivos Departamentos. Para jurados externos, usar sello de la
Coordinación
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE INGENIERÍA ELECTRÓNICA
RESUMEN
Este proyecto de investigación se desarrolló, como parte del Programa de Intercambio 2007-
2008 que promueve la USB, en la Universidad Tecnológica de Nagaoka en Japón, bajo la tutoría
del Prof. Fukumoto, en el Laboratorio de Ingeniería Biomédica, el cual consistió en el desarrollo
de un algoritmo de detección automática de tumores en mamogramas basado en la clasificación
de la estructura de la glándula mamaria.
El diagnóstico temprano del cáncer de mama juega un papel muy importante en la reducción de
la mortalidad y en la mejora del pronóstico, siendo la mamografía la técnica actualmente
disponible más sensible en el diagnóstico del cáncer de mama, en especial cuando las anomalías
no se pueden determinar mediante el auto examen palpable. Sin embargo, debido al gran número
de mamogramas que tiene que analizar un radiólogo al día, existe el peligro de que el diagnóstico
se pueda ver afectado por un descuido por parte del médico que puede incurrir en algún error ya
sea por fatiga, falta de experticia o negligencia. Esta inexactitud, radica en la gran semejanza que
existe entre las estructuras de la glándula mamaria con la forma y densidad de tumores, factor que
conlleva a realizar un mal diagnóstico de la situación. Por esta razón, el propósito de esta tesis era
ofrecer una herramienta de apoyo para el diagnóstico de las mamografías por parte de los
radiólogos. Se desarrolló un sistema para detectar automáticamente tumores en mamas del tipo
graso y del tipo fibroglandular. En el desarrollo de este sistema se emplearon 3 imágenes del tipo
graso, 27 del tipo fibroglandular, 15 heterogéneamente densas y 2 altamente densas. La región de
la mama ha sido extraída a partir de estos mamogramas mediante el método de umbralización.
iv
Luego, la densidad promedio del área del musculo pectoral, el momento central del área de la
glándula mamaria y los valores de las características del histograma de la densidad de la glándula
mamaria fueron calculados.
La estructura de la glándula mamaria fue clasificada a partir de la distancia de Mahalanobis.
Como resultado, la correcta distinción entre estructuras de la glándula mamaria, fue de 93% para
mamas del tipo grasas y fibroglandulares y del 100% para mamas heterogéneas y altamente
densas. Para extraer el tumor de los mamogramas del tipo graso y fibroglandular previamente
clasificados, se empleó un Iris Filter para determinar la posición del tumor. Luego, se determinó
el centro y punto de control inicial del tumor mediante el algoritmo de Snakes, para proceder a
demarcar el borde del tumor y finalmente extraerlo de la imagen. La suma de las características
de forma, textura e histograma de densidad fueron calculadas para luego a través de la distancia
de Mahalanobis clasificar el tipo de carcinoma. La diferenciación fue del 100% tanto para
tumores benignos como malignos. Este sistema arroja resultados muy alentadores y se espera que
se someta a un banco de imágenes mayor, para corroborar su efectividad.
v
DEDICATORIA
A todos mis amigos, simplemente por existir y estar ahí tanto en los momentos de
apremio como en los momentos de alegría,
vi
AGRADECIMIENTOS
A mis amigos japoneses Koki San, Abe Kun y Guuchon, por haber estado ahí apoyándome en
la realización de esta investigación y por haber hecho mi estadía en Nagaoka una experiencia
inolvidable.
A mis padres, por su confianza y apoyo en cada una de las etapas de mi vida y de mi carrera.
Sin ustedes este éxito no habría sido posible.
A mis Profesores Juan Carlos Grieco y Gerardo Fernández, por su valiosa ayuda y por
brindarme una gran amistad.
A Ismail, Oliver, Ulderico, Oscar, Andrés, Christian y a todos mis amigos por estar allí
siempre, en las buenas y en las malas. A todos ustedes muchas gracias.
vii
ÍNDICE GENERAL
RESUMEN___________________________________________________________________ iv
DEDICATORIA _______________________________________________________________ vi
CAPÍTULO 1 _________________________________________________________________ 1
INTRODUCCIÓN ______________________________________________________________ 1
CAPÍTULO 2 _________________________________________________________________ 6
viii
2.8 Prevención ________________________________________________________________ 15
CAPÍTULO 3 ________________________________________________________________ 27
3.1 Características de las imágenes mamográficas utilizadas como objetos de estudio ______ 27
3.2 Diagrama de flujo del Sistema CAD de detección automática de tumores y clasificación en
mamografía digital ________________________________________________________________ 29
ix
CAPÍTULO 4 ________________________________________________________________ 52
CAPÍTULO 5 ________________________________________________________________ 60
REFERENCIAS _______________________________________________________________ 62
APÉNDICE__________________________________________________________________ 65
APÉNDICE A ________________________________________________________________ 65
x
ÍNDICE DE FIGURAS
Figura 2.1 Anatomía básica de la glándula mamaria _________________________________________ 7
Figura 2.2 Tipos de Cáncer de Mama determinados por el tejido donde se forman _______________ 11
Figura2.3 Lumpectomía _______________________________________________________________ 16
Figura 2.4 Mastectomía Parcial _________________________________________________________ 16
Figura 2.5 Masctetomía Radical_________________________________________________________ 16
Figura 2.6 Unidad de Mamografía Digital _________________________________________________ 17
Figura 2.7 Mujer a la que se le está tomando una mamografía ________________________________ 17
Figura 2.8 Proyección Medio Lateral Oblicua (MLO) _________________________________________ 19
Figura 2.9 Proyección Cranio Caudal (CC) _________________________________________________ 19
Figura 2.10 Mamografías en MLO _______________________________________________________ 19
Figura 2.11 Mamografías en CC _________________________________________________________ 19
Figura 2.12 Imagen Sospechosa ded constituir una masa (flecha) ______________________________ 20
Figura 2.13 Desaparición de la masa sospechosa tras compresión selectiva de la zona. Se trataba de
superposición de tejidos _______________________________________________________________ 20
Figura 2.14Tipos de Márgenes en una masa. ACircunscrito, B Microlobulado, C Oscuricido o mal definido,
D Espiculado ________________________________________________________________________ 21
Figura 2.15 Tipos de Forma en una Masa. A Redonda, B ovalada, C Lobular, D irregular. ____________ 21
Figura 2.16 Cinco tipos de lesiones mamarias clasificadas según la categoría del BIRADS. ___________ 23
Figura 2.17 Muestras de mamogramas clasificados según la estructura de la glándula mamaria _____ 24
Figura 3.1 Muestras de mamogramas clasificados según la estructura de la glándula mamaria utilizados
como objetos de estudio en la construcción del presente CAD _________________________________ 28
Figura 3.2 Muestras de mamogramas utilizados como objetos de estudio para el sistema de detección
automática de tumores mamarios. ______________________________________________________ 28
Figura 3.3 Diagrama de flujo del sistema de clasificación de la estructura de la glándula mamaria y del
sistema de detección automática de tumores para mamas Adiposas y Fibroglandulares. ____________ 29
Figura 3.4 Imagen original e imagen resultante tras convertirla a binario ________________________ 31
Figura 3.5 Área mamaria extraída mediante proceso de Labeling ______________________________ 31
Figura 3.6 Área del músculo pectoral_____________________________________________________ 32
Figura 3.7 Método de aprox. de Mín. Cuadrados ___________________________________________ 32
Figura 3.8 Área del seno previamente extraída_____________________________________________ 33
Figura 3.9 Área del seno donde ha sido eliminada el área del músculo pectoral ___________________ 33
xi
Figura 3.10 Histogramas de Densidad del cada una de las estructuras de glándulas mamarias y sus
características ______________________________________________________________________ 36
Figura 3.11 Determinación de las áreas de estudios _________________________________________ 38
Figura 3.12 Flujograma del método de clasificación de la estructura de la glándula mamaria ________ 39
Figura 3.13 Regiones de Interés del Histograma de Densidad __________________________________ 40
Figura 3.14 Determinación Región de Interés (Region of Interest: ROI) __________________________ 40
Figura 3.15 Diagrama del Iris Filter. Región circular. El píxel P en el centro de la región circular, cuyos
valores serán cambiados, se muestra junto con las medias líneas radiadas desde él. _______________ 43
Figura 3.16 Imagen resultante tras aplicar Iris Filter _________________________________________ 44
Figura 3.17 Modelo Snakes ____________________________________________________________ 45
Figura 3.18 Técnica de Snakes __________________________________________________________ 45
Figura 3.19 Extracción del domino de un tumor mediante el modelo de Snakes ___________________ 46
Figura 3.20 Esquema del método empleado donde se nota el centro O y puntos de control Si, S i+1 y la
curva que converge al borde del tumor ___________________________________________________ 47
Figura 3.21 Corte del tumor mediante esta técnica __________________________________________ 47
Figura 3.22 Muestra de Grey Level Run Length Matrix (GLRLM) para matriz 5x5___________________ 50
Figura 3.23 Flujograma de clasificación de tumores _________________________________________ 51
Figura 4.1 Mamogramas clasificados equívocamente en este estudio___________________________ 56
Figura 4.2 Imágenes fibroglandulares erróneamente clasificadas como heterogéneamente densas
___________________________________________________________________________________ 56
Figura 4.3 Histograma de densidad de la glándula mamaria usando como parámetro SKW ○2
___________________________________________________________________________________57
xii
ÍNDICE DE TABLAS
Tabla 2.1 Incidencia del Cáncer en Mujeres en Venezuela _____________________________________ 8
Tabla 2.2 Mortalidad del Cáncer en Mujeres en Venezuela _____________________________________ 8
Tabla 2.1 Número y tipo de imágenes utilizadas para el estudio del sistema CAD automático de tumores
en mamografías _____________________________________________________________________ 27
Tabla 4.1 Tasa de Clasificación de la estructura de la glándula mamaria mediante la distancia de
Mahalanobis________________________________________________________________________ 56
Tabla 4.2 Tasa de Clasificación de Tumores Benignos y Malignos ______________________________ 59
xiii
LISTA DE ABREVIATURAS
• BI-RADS: Breast Imaging Reporting and Data System (Informe de Imágenes del Seno y
Sistema de Datos)
• GRLM :Gray Level Run Length Matrix (Matrices de longitud de secuencias de niveles
de gris)
xiv
1
CAPÍTULO 1
INTRODUCCIÓN
1.1 Introducción
Se ha determinado, que el cáncer de mamas es la tumoración más frecuente en la población
femenina en diversas partes del mundo, y la segunda causa de muerte de mujeres que padecen
esta enfermedad. Según la Sociedad Americana del Cáncer, ACS (American Cancer Society), en
el año 2005, un estimado de 1.150.000 mujeres a nivel mundial fueron diagnosticadas con cáncer
de mamas y 411.000 murieron de esta enfermedad. Una de cada ocho mujeres ó 12.6% de todas
las mujeres, desarrollará cáncer de mamas a lo largo de su vida y una de cada 25 morirá por esta
enfermedad [1]. En Venezuela, el cáncer de mama representa la segunda tumoración con mayor
incidencia y la segunda causa de muerte en mujeres con cáncer, después del cáncer del cuello
uterino [2]. En Japón, donde se desarrolló esta investigación, el cáncer de mama ocupa el primer
lugar dentro de las afecciones de cáncer que sufren las japonesas entre 40 y 50 años. El celibato,
la no procreación y la occidentalización de los hábitos alimenticios, son considerados por los
nipones, algunas de las causas principales en el incremento progresivo de mujeres que sufren de
cáncer de mama en Japón, así como de aquellas que lo sufren cada vez a más temprana edad. De
allí, su preocupación por desarrollar métodos de avanzada tecnología que faciliten el diagnóstico
clínico.
Hoy en día, los radiólogos que examinan las mamografías normalmente tienen que diagnosticar
un gran número de casos al día. Esto, aunado a que hay lesiones difíciles de detectar por el ojo
humano, existe también la ocultación 2-D de objetos o tejidos, el cansancio, falta de
concentración y la enorme responsabilidad y presión a que se ven sometidos, constituyen factores
que hacen que sea de gran utilidad un sistema de ayuda al diagnóstico. Investigadores han
demostrado que el Diagnóstico Asistido por Computadora, conocido como CAD (por sus siglas
en inglés, Computer-Aided Diagnosis), puede reducir los errores de detección y dar una segunda
opinión a los especialistas a la hora de realizar un análisis. En este sentido, el presente proyecto
de grado ha pretendido desarrollar un sistema CAD con el fin de optimizar el reconocimiento y
clasificación de lesiones mamarias presentes en mamografías digitales, a través de técnicas de
procesamiento de imágenes, reconocimiento de patrones e implementación de métodos
estadísticos.
El sistema desarrollado en este trabajo pretende servir de ayuda al radiólogo, ofreciéndole más
elementos de juicio a la hora de establecer un diagnóstico y de decidir qué acciones han de
tomarse ante un determinado caso.
El tema tratado posee además un impacto social de mucho interés, debido a que una pequeña
mejora en la precisión diagnóstica podía suponer un enorme beneficio para los pacientes que
presentan este tipo de tumores.
Los resultados del presente trabajo de investigación, van dirigidos fundamentalmente a los
científicos en el área de procesamiento de imágenes médicas, y en especial a los radiólogos, ya
que se intenta contribuir en las líneas de investigación que facilitan y aumentan la fiabilidad de
las decisiones del radiólogo, intentando la integración del mismo como parte del sistema,
proporcionando una herramienta que sirva de apoyo a la hora de la toma de decisiones y que
abra nuevos caminos de investigación.
4
1.2 Objetivos
El presente proyecto de tesis, tiene como objetivo principal, crear un sistema de diagnóstico
asistido por computadora (CAD) para mamografía digital, que permita detectar y clasificar la
estructura de la glándula mamaria y las lesiones presentes en ella. Para ello se pretende emplear
diferentes técnicas de procesamiento de imágenes, combinado con métodos estadísticos que
permitan mejorar la detección y clasificación de patrones benignos y malignos, proporcionando
así, una herramienta útil a los radiólogos para optimizar el diagnóstico médico de la patología
mamaria.
Entre los objetivos específicos que enmarcan el desarrollo de este proyecto y que nos
permitirán alcanzar nuestro objetivo principal se encuentran los siguientes:
A continuación se hace una breve descripción del contenido de los capítulos y apéndices
contenidos en esta tesis. El trabajo presentado en este documento se ha estructurado en 5
capítulos, incluido éste. El contenido de los 4 capítulos restantes se resume a continuación.
• Apéndice A: Programas.
Se muestran los programas desarrollados en Lenguaje de Programación C++ mediante
el software Visual Studio 2005.
6
CAPÍTULO 2
MARCO TEÓRICO
Las células bajo condiciones normales, crecen de manera ordenada, bajo la coordinación de
sustancias reguladoras llamadas factores de crecimiento. En algunas oportunidades, las células
desobedecen a los factores de crecimiento y su crecimiento desordenado genera la formación de
tumores, que pueden ser benignos o malignos, dependiendo de ciertas características, como: el
daño que le produzcan a otros tejidos y la capacidad de hacer metástasis, o sea, de sembrarse en
lugares lejanos al tumor de origen. A los tumores malignos se les llama tumores cancerosos, o
cáncer[4].
El cáncer es una enfermedad de los genes, sean las mutaciones (cambios genéticos) heredadas
y transmitidas de padre/madre a hijo, o adquiridas, como resultado de la acción de agentes
ambientales, tóxicos o nocivos, que lesionan los genes, como el cigarrillo. En muchos casos
todavía se desconoce la causa[4] .
Cada seno está conformado por numerosos bulbos que producen leche, conocidos como
lóbulos, que están conectados por unos conductos al pezón; el resto de la glándula está
conformado en su mayoría por grasa, que es la que determina el tamaño del busto, ya que las
estructuras productoras de leche son más o menos las mismas en todas las mujeres.
7
A través de ese tejido graso también transcurren otros conductos: los conductos linfáticos.
Estos drenan linfa o líquido de los tejidos, el cual es retirado del seno y va hacia los ganglios
linfáticos y de allí a la circulación sanguínea. Los conductos linfáticos confluyen en ganglios
linfáticos, pequeñas estructuras con forma de fríjol, que se agrupan y se localizan en varias partes
del cuerpo, como en axilas, cuello, tórax e ingle, entre otros lugares. Dentro de la mama no hay
músculos, están por debajo, separándola de las costillas. Una muestra de la anatomía de la
glándula mamaria se puede apreciar en la Figura 2.2[4].
La cercanía y relación estrecha entre los lóbulos y los conductos lácteos y los conductos
linfáticos, determina que con frecuencia el tumor originado en las células de las estructuras
lácteas o glándula mamaria propiamente, invada o se extienda a los ganglios linfáticos de la
región, que tienen entonces importancia en el diagnóstico de la extensión de la enfermedad. El
crecimiento y extensión del cáncer de mama depende del tipo de células malignas que lo
compongan. También hay una gran variación en la tendencia a ramificarse que tiene este tumor
[4].
Por otro lado, considerando las estadísticas nacionales, el cáncer de mama es el segundo más
frecuente en Venezuela después del de Cuello uterino (20,55%). En la Tabla 2.1 se muestran los
tipos de cáncer y el porcentaje de incidencia en Venezuela para la población femenina [2].
8
Para el caso del cáncer de mama, en el año 2005 fallecieron 1425 mujeres en Venezuela a
causa de este mal, que representó el 15.75% del total de fallecimientos por cáncer de la
población femenina en Venezuela [2] como se muestra en la Tabla 2.2.
Tabla 2.2 Mortalidad del Cáncer en Mujeres en Venezuela
9
Las probabilidades de curación no son tan altas en etapas avanzadas de la enfermedad; aun así,
con los tratamientos actuales, existen buenas posibilidades de supervivencia. Esta enfermedad es
fatal si no se trata a tiempo. Es extremadamente importante que se realice un diagnóstico
temprano. En ausencia de una efectiva prevención, el diagnóstico precoz es un importante medio
para reducir la mortalidad [4][5].
Ya que puede ser difícil entender algunas de las palabras que los médicos utilizan para hablar
sobre esta enfermedad, a continuación se presentan los términos claves utilizados para describir
el cáncer de seno [5].
Carcinoma: este término se usa para describir un cáncer que ha comenzado en la capa de
revestimiento de órganos como el seno. Casi todos los cánceres del seno son carcinomas
(carcinomas ductales o carcinomas lobulillares).
Adenocarcinoma: éste es un tipo de cáncer que comienza en el tejido glandular (tejido que
produce y segrega una sustancia). Los conductos y los lobulillos del seno son tejidos glandulares
(producen leche), por lo que a los cánceres que comienzan en estas áreas algunas veces se les
llama adenocarcinomas.
Carcinoma “in situ”: este término se utiliza para la etapa temprana del cáncer, cuando sólo
sigue en la capa de las células donde se originó. Cuando se refiere al cáncer de seno, in situ
significa que las células cancerosas están solamente en los conductos (carcinoma ductal in situ) o
en los lobulillos (carcinoma lobulillar “in situ”). No se ha propagado al tejido más profundo en el
seno ni a otros órganos del cuerpo. Algunas veces se les conoce como cánceres no invasivos del
seno.
Sarcoma: éstos son cánceres que comienzan en los tejidos conectivos, tal como el tejido
muscular, el tejido adiposo o los vasos sanguíneos. Los sarcomas del seno ocurren muy pocas
veces.
10
Existen muchos tipos del cáncer de seno, aunque algunos de ellos ocurren en muy pocas
ocasiones. Algunas veces un tumor del seno puede ser una mezcla de estos tipos o ser una
combinación de los tipos “in situ” e invasivo [5]. En la Figura 2.3 [4], se pueden observar los
diferentes tipos de cáncer de mama determinados por el tejido donde se forman.
Carcinoma ductal “in situ” (DCIS): éste es el tipo más común de cáncer no invasivo del
seno. DCIS significa que el cáncer está solamente en los conductos y no se ha propagado a través
de las paredes de los conductos al tejido del seno. Casi todas las mujeres que tienen cáncer en
esta etapa logran una cura completa. A menudo, la mejor manera de detectar el carcinoma ductal
in situ a tiempo es con un mamograma.
Carcinoma lobulillar “in situ” (LCIS): esta condición se origina en las glándulas mamarias
(productoras de leche) y no atraviesa la pared de los lobulillos. Aunque no es un verdadero
cáncer, el carcinoma lobulillar “in situ” aumenta el riesgo de que una mujer desarrolle cáncer de
seno más adelante. Por este motivo, es importante que las mujeres con LCIS no dejen de
someterse a sus mamogramas periódicos.
Carcinoma ductal invasivo (infiltrante) (IDC): este es el cáncer de seno más común.
Comienza en un canal o conducto lácteo, penetra la pared del conducto e invade el tejido del
seno. Desde ese lugar es posible que pueda propagarse a otras partes del cuerpo. Es responsable
de aproximadamente ocho de diez de todos los casos de cáncer invasivo del seno.
Carcinoma lobulillar invasivo (infiltrante) (ILC): este cáncer comienza en las glándulas
mamarias o lobulillos. Puede propagarse a otras partes del cuerpo. Aproximadamente uno de
cada diez de los cánceres invasivos del seno son de este tipo.
Cáncer inflamatorio del seno (IBC): Este tipo de cáncer invasivo del seno no es
común. Representa aproximadamente del 1 al 3% de todos los cánceres del seno. Por lo general,
no se presenta una sola protuberancia o tumor, sino que el IBC hace que la piel del seno luzca
rojiza y se sienta acalorada. También causa un aspecto grueso en la piel con hoyuelos similar a la
cáscara de una naranja. El seno afectado puede volverse más grande, firme, sensible, o puede
presentar picazón. En sus etapas iniciales, este tipo del cáncer de seno a menudo se confunde con
una infección.
11
Debido a que no hay una masa definida, es posible que no aparezca en un mamograma, lo que
hace que sea aún más difícil detectarla temprano. Éste cáncer presenta usualmente una mayor
probabilidad de propagación y un peor pronóstico que el cáncer ductal invasivo o lobulillar
invasivo.
2.4 Causas
Se desconoce la causa precisa. Pero se conocen los siguientes factores de riesgo [6]:
Tabaquismo.
Obesidad.
Ingestión inmoderada de alcohol.
Raza blanca.
A pesar de lo que mucha gente piensa, el cáncer de mama no tiene relación con amamantar,
golpes, moretones o la actividad sexual.
2.6 Diagnóstico
La prevención más eficaz del cáncer de mama es la detección precoz y por ello la
autoexploración de mamas, de forma periódica, es fundamental. Además a partir de los 50 años y
antes si existen factores pre disponentes familiares, se deben realizar de forma periódica (cada
año) una exploración llamada mamografía. Esta exploración detecta pequeños tumores que
pueden pasar desapercibidos en la autoexploración [6].
13
La aparición de algún nódulo sospechoso indica la realización de una biopsia del mismo, esto
supone tomar un pequeño trozo del nódulo y analizarlo al microscopio para determinar la
presencia de células cancerosas. Normalmente la toma de la muestra se realiza mediante una
aguja que se introduce en el tejido mamario y por aspiración se recoge parte del tejido
sospechoso. La aspiración con aguja o biopsia con aguja de las masas de la mama pueden
mostrar si están llenas de líquido y proveer material para enviar al laboratorio para su análisis.
En el caso de anomalías muy pequeñas, visibles sólo en la mamografía, son necesarias técnicas
especiales [6].
Si el análisis detecta células cancerosas se realizarán otros estudios para ver la sensibilidad de
estas células con las hormonas femeninas (estrógenos y progestágenos). Según la sensibilidad a
estas hormonas se pueden sacar conclusiones sobre el tratamiento más correcto, ya que las
hormonas del crecimiento se utilizarán de forma diferente según la respuesta a las hormonas
femeninas de cada cáncer, y la probabilidad de recidivar será diferente en unos casos y en
otros[7].
La curación del cáncer de mama dependerá del estadio de extensión en el momento del
diagnóstico así como de la salud general de la persona afectada [6].
- Etapa II
- Etapa III
• La etapa III A
El nódulo canceroso es menor de 5 cm pero se ha extendido a los ganglios de la
axila que se encuentran abigarrados y pegados entre sí o a otras estructuras. O bien
si es mayor de 5 cm con diseminación axilar.
• La etapa III B
El nódulo canceroso se extiende por los tejidos cercanos a la mama, la piel, las
costillas, los músculos del tórax o a los ganglios linfáticos de la pared torácica.
- Etapa IV
Cuando las células cancerosas se han diseminado a otros tejidos del cuerpo (huesos, pulmones,
hígado o cerebro), también localmente a la piel y a los ganglios linfáticos del cuello y clavícula.
2.8 Prevención
Muchos de los factores de riesgo no se pueden controlar, pero es posible reducir los
riesgos a través de cambios en la dieta y en el estilo de vida.
El autoexamen de mamas, el examen clínico de las mamas por parte de un profesional
entrenado y la mamografía son las tres herramientas para la detección temprana.
La mayoría recomienda auto-exámenes de mama mensuales, la semana siguiente al
período menstrual si la persona tiene 20 años o más [6].
Consideraciones
• Cirugía
• Radioterapia
• Quimioterapia
• Terapia hormonal
Se están realizando estudios clínicos con terapia biológica y con el trasplante de medula ósea.
En primer lugar se utiliza la cirugía para extraer el nódulo canceroso de la mama, también se
extraen los ganglios linfáticos axilares para su análisis en el cancerosas analizadas tienen
receptores para estrógenos o progesterona.
16
• Cirugía conservadora
Lumpectomía, que consiste en la extracción del tumor canceroso y una zona de
seguridad a su alrededor y en ocasiones algún ganglio axilar. Se asocia
posteriormente con la radioterapia. Ver Figura 2.4.
Mastectomía parcial, en ella se extrae el cáncer con parte del tejido de alrededor del
mismo y el recubrimiento de los músculos del tórax debajo del tumor, con los
ganglios linfáticos axilares. También se aplica posteriormente la radioterapia. Ver
Figura 2.
• Cirugía agresiva o radical
Mastectomía radical, es la extracción de toda la mama y recubrimiento de los
músculos del tórax y de la pared torácica situados debajo del tumor, incluidos los
ganglios linfáticos axilares. En la mastectomía parcial modificada parte de los
músculos de la pared del tórax se conservan. Ver Figura 2.5.
2.11 Mamografía
La mamografía es un método para examinar los senos o mamas que utiliza pequeñas dosis de
radiación mediante el uso de una unidad de mamografía digital como la mostrada en la Figura
2.6 y en la Figura 2., para reproducir una radiografía llamada mamograma. Este simple
procedimiento sirve para detectar tumores y quistes muy pequeños, imposibles de descubrir con
un examen manual [8].
La mamografía de alta resolución mediante foco fino de 0,3 y 0,1 mm., permite determinar
lesiones del orden de fracciones de milímetros con gran sensibilidad y contraste.
La magnificación, es una técnica que permite aumentar el tamaño de la imagen, pudiéndose
estudiar convenientemente la morfología de la misma, con más elementos de juicio a la hora de
determinar diagnósticos más precoces.
La Estereotaxia es una técnica radiológica que permite dirigir una aguja mediante un
microcomputador a un sector de la mama, pudiéndose efectuar su punción para extracción de
material celular, evitando así biopsias innecesarias y lesiones.
La mamografía digitalizada es una técnica de estudio de la imagen radiológica de alta
definición, que permite descomponer la imagen en diferentes densidades, pudiéndose estudiar
estas imágenes en diferentes escalas de colores, imperceptibles al ojo humano y extraer
información de alta calidad de zonas que inicialmente pueden ser dudosas, para su correcta
catalogación y estudio.
La mamografía de las dos mamas dura como máximo unos 15 a 20 minutos, a no ser que las
imágenes obtenidas, a juicio del radiólogo, no sean de buena calidad, en cuyo caso el proceso
debe repetirse.
Medio-Lateral-Oblicua (MLO): Es la proyección que por sí sola que muestra más cantidad
de tejido mamario. En la Figura 2. podemos ver la técnica empleada y en la Figura 2.10 podemos
ver una muestra de un mamograma bajo este tipo de proyección.
Cráneo-caudal (CC): Esta proyección nos proporciona una visión axial de tejido mamario de
forma complementaria a la MLO, permitiéndonos ver la parte medial (yuxtatorácica), que tiende
a no salir en la MLO. Análogamente, podemos ver en la Figura 2. la técnica empleada y en
Figura 2.11 una muestra de un mamograma bajo este tipo de proyección..
Masas Mamarias
Uno de los objetivos primordiales de esta tesis es la detección del contorno de una masa o
nódulo mamario en mamografía digital.
Una vez obtenidas las mamografías digitalizadas, se elabora un método de segmentación, cuyo
fin es detectar los contornos de las masas presentes en la imagen radiológica digitalizada.
La detección de masas en las mamografías es una tarea compleja, debido a que el volumen de
niveles de grises que contienen puede ser muy elevado y a que los bordes de las masas no están
claramente definidos dentro de la imagen.
Para detectarlas, se parte del hecho de que las masas suelen ser más claras que el resto de la
imagen, tienen un tamaño considerablemente mayor que las microcalcificaciones y que las
pequeñas zonas claras son producidas a veces por el ruido [10].
Para la descripción de las masas contenidas en una mamografía emplearemos el sistema BI-
RADS (Breast Imaging Reporting and Data System) [13]. Es decir, la terminología estándar
desarrollada por el Colegio Americano de Radiología (ACR), donde una masa se define como
una lesión ocupante de espacio visible en al menos dos proyecciones; si sólo se identifica en una
proyección la teórica masa se denomina densidad, denominándose pseudomasa a la creada por la
superposición de tejidos (Ver Figura 2.6 y Figura 2.5).
Figura 2.5 Imagen Sospechosa ded constituir Figura 2.4 Desaparición de la masa
una masa (flecha) sospechosa tras compresión selectiva de la
zona. Se trataba de superposición de tejidos
21
Los hallazgos mamográficos de una masa real incluyen su forma, márgenes, densidad, tamaño,
localización y cualquier otro hallazgo asociado como calcificaciones, retracción de la piel etc.
Los márgenes de una masa, generalmente reconocido como el hallazgo más determinante para
el diagnóstico de malignidad [14], se describen como: circunscritos, microlobulados, oscurecidos
por tejido adyacente de densidad similar, mal definidos o indistinguibles y por último
espiculados. (Figura 2.7).
A B
Glándula
mamaria
C D
Figura 2.6 Tipos de Márgenes en una masa. ACircunscrito, B
Microlobulado, C Oscuricido o mal definido, D Espiculado
La forma de una masa puede ser: redonda, oval, lobular o irregular (Figura 2.8)
A B
C C D
Figura 2.7 Tipos de Forma en una Masa. A Redonda, B ovalada, C Lobular, D irregular.
22
Las características de forma y márgenes expuestas anteriormente, definen una clasificación por
categoría basada en la terminología del BIRADS [13] que se muestra a continuación.
Evaluación Incompleta
En la Figura 2.16 se pueden apreciar diversos tipos de lesiones clasificadas por su categoría
según la terminología utilizada en el BIRADS.
(Categoría 4) (Categoría 5)
Figura 2.16 Cinco tipos de lesiones mamarias clasificadas según la categoría del BIRADS.
24
Muchos diagnósticos erróneos pueden atribuirse a factores humanos. A pesar de que un mayor
tiempo dedicado al estudio de la mamografía o la doble lectura de la misma pueden mejorar los
resultados, no eliminan completamente los errores, el radiólogo no detecta la totalidad de los
carcinomas visibles en análisis retrospectivos de las imágenes, estos fallos son frecuentemente
secundarios a la sutileza de los cambios radiológicos representativos del carcinoma y su no
detección contribuye a elevar el número de carcinomas no identificados [10] .
Estos sistemas han sido diseñados para ayudar al radiólogo en la detección de masas y
microcalcificaciones sospechosas. La sensibilidad en la detección del carcinoma mamario,
aumenta significativamente cuando un radiólogo utiliza un sistema computarizado de ayuda a la
detección y diagnóstico Otros trabajos han demostrado la capacidad de los CADs en la detección
de aproximadamente la mitad de los carcinomas que han pasado inadvertidos[10]10][11][12].
Diferentes estudios [10] han encontrado que del 10 al 30% de los carcinomas mamarios,
visibles mamográficamente en lecturas retrospectivas, no han sido identificados en las lecturas
originales por diferentes razones.
Para terminar este capítulo se puede indicar que la detección del cáncer de mama en etapas
tempranas es muy importante, pues de esto depende en gran medida la vida de la persona que
tenga este padecimiento. Un método muy común para examinar los senos es la mamografía, la
cual permite detectar tumores o quistes muy pequeños. El cáncer de mama es uno de las causas
de muerte más importantes en la población femenina de nuestro país, incluso existen muchas
campaña a nivel nacional para generar conciencia de lo importante que es este mal. En este
capítulo se hizo una breve descripción de este cáncer, de sus tipos, y de los tratamientos más
comunes que existen.
27
CAPÍTULO 3
2. PROCEDIMIENTO EXPERIMENTAL
Todos los mamogramas utilizados en el presente estudio fueron imágenes tomadas a través del
equipo médico, Mamógrafo Toshiba MGV-100 con tubo de doble foco (0,1 y 0,3 mm de
diámetro) en el Hospital Central de Nagaoka, Niigata-Japón. Las condiciones asumidas para la
toma fueron de incidencia Medio Lateral Oblicuo (MLO), con resolución de 80 píxeles/cm, con 8
bits por píxel (256 niveles de gris de profundidad). El tamaño de las imágenes es de 4040x5420
píxeles y estaban almacenadas en formato tipo DICOM (Digital Imaging and Communication in
Medicine). Para facilitar el procesamiento,se redujeron a 404x542 píxeles y se transformaron a
formato RAW sin perder información relevante. Por otra parte, todas las imágenes manipuladas
fueron debidamente analizadas a través de la interpretación médica de mamogramas por parte de
radiólogos, usando el diagnóstico de clasificación por categoría basado en el BIRADS [13] del
ACR. El número y tipo de imágenes utilizadas para la construcción del CAD se muestran a
continuación en la Tabla 3.1 y ejemplos de las imágenes clasificadas según el tipo de estructura
de la glándula mamaria (densidad mamaria) se muestran en la Figura 3.1, así como ejemplos de
imágenes clasificadas que presentan algún tipo de tumor se muestran en la Figura 3.2.
Tabla 3.1 Cantidad y tipo de imágenes utilizadas para el estudio del sistema CAD automático
para detectar y clasificar tumores mamarios presentes en Mamogramas Digitales
CARACTERÍSTICAS DE FORMA
CÁLCULO DE CARACTERÍSTICAS ○
1
CARACTERÍSTICAS DE TEXTURA
DETERMINAR
LOCACIÓN DEL TUMOR VECTOR GRADIENTE DE DENSIDAD
SNAKES
EXTRACCIÓN DEL ÁREA TUMORAL
INTERPOLACIÓN LINEAL
CARACTERÍSTICAS DE FORMA
CÁLCULO DE CARACTERÍSTICAS ○
2
CARACTERÍSTICAS DE TEXTURA
Figura 3.3 Diagrama de flujo del sistema de clasificación de la estructura de la glándula mamaria
y del sistema de detección automática de tumores para mamas Adiposas y Fibroglandulares.
30
Los contrastes que se presentan en los valores de densidad dentro de una imagen mamográfica,
se deben a que la permeabilidad de los rayos X es diferente en el área del seno y su respectivo
fondo (background). Sin embargo, la alta densidad que se presenta en el músculo pectoral, en
tumores y en la composición de la glándula mamaria son producto de la baja permeabilidad de
los rayos X, y la baja densidad que se presenta en el tejido adiposo es producto, en cambio, de la
alta permeabilidad de los rayos X[14][14] . En este sentido, debido a que el borde entre el fondo
y en tejido graso (silueta del seno) no es nítido cómo se visualiza en la imagen de la Figura 3.4.1,
se procedió a detectar dicho borde mediante el método de umbralización binario fijo basado en el
histograma de densidad de la imagen. En el histograma de densidad, el valor de densidad del área
del fondo es más bajo que el de tejido graso, así como el número de píxeles de dicho fondo es
mucho mayor al de tejido graso. Por lo tanto, la diferencia entre la cantidad de píxeles de la
densidad adjunta y el valor de la baja densidad del fondo se consideró como valor de umbral para
separar de forma binaria las áreas de interés. El proceso de convertir en binario es una técnica
general utilizada para diferenciar áreas de interés en una imagen, sustituyendo por 1 los píxeles
mayores que el punto de umbral y por 0 aquellos que son menores. La imagen procesada de
forma binaria mediante este método, se muestra en la Figura 3. 3.2.
31
Método de
transformación a
binario
Por otro lado, los caracteres correspondientes a los datos del paciente e imagen, fueron extraídas
de la imagen original ya que no formaban parte del área mamaria a ser procesada. Luego, se
aplicó una técnica de Etiquetado (Labeling) a la imagen binaria, y el área donde el número de
píxeles(de cierta densidad) era máximo se asumió como la región del seno. “Labeling” es un
procedimiento que permite asignar un mismo número a un conjunto de elementos en común, para
poder conectarlos entre sí, a partir de los píxeles extraídos. Ejemplo de este proceso se muestra en
la Figura 3.5.
Procesamiento
mediante
Labeling
3.3.2 Extracción del músculo pectoral mediante el método de Aprox. de Mín. Cuadrados
Área del
Dir. músculo pectoral
F(x)
ymax
Y
Y
Figura 3.7 Área del músculo pectoral Figura 3.6 Método de aprox. de Mín. Cuadrados
El gradiente de concentración del músculo El límite entre el músculo pectoral y la glándula
pectoral y de la glándula mamaria es alto mamaria se puede aproximar a una curva de 2do orden
33
El área comprendida entre 0≦ y ≦ ymax y 0≦ x ≦ xmax fue asumida como el área del músculo
pectoral a partir del cálculo de la curva de aproximación de 2do orden para luego ser eliminada. El
resultado de la eliminación del músculo pectoral de la Figura 3.8 se muestra en la Figura 3.9.
Figura 3.8 Área del seno previamente Figura 3.9 Área del seno donde ha sido
extraída eliminada el área del músculo pectoral
El área del músculo pectoral todavía no El área del músculo pectoral fue removida
ha sido removida. mediante el método dinámico apropiado.
Dado que el presente trabajo de investigación tenía como uno de sus objetivos clasificar la
estructura de la glándula mamaria, se procedió a determinar las características que permiten
diferenciar las imágenes del tipo predominantemente adiposo, fibroglandulares,
heterogéneamente densas y altamente densas, a través del cálculo de las características basadas
en la textura y forma, que muestran la distribución de densidad de la imagen, el promedio de
concentración del área del músculo pectoral y las características del histograma de densidad del
área de la glándula mamaria. En este apartado se van a describir las técnicas más empleadas para
conseguir que dada una imagen, o una región dentro de una imagen, logremos extraer las
características más relevantes, que posteriormente serán utilizadas para clasificar la imagen en
una de las clases previamente definidas.
34
Dado que la geometría de una región plana se basa en el tamaño, la posición, la orientación y la
forma, todas estas medidas están relacionadas con los parámetros denominados momentos. Los
momentos son cantidades escalares que proveen de excelentes medidas para análisis de patrones
con propósitos de reconocimiento de objetos. Los momentos generales se pueden hacer
invariantes a traslaciones en el plano solo con calcularlos respecto del centro de gravedad de la
figura, obteniéndose los llamados momentos centrales. Puesto que el centro de gravedad ocupa
siempre la misma posición relativa respecto a todos los puntos del objeto, los momentos centrales
así calculados son invariantes a las traslaciones de los objeto.
Los parámetros calculados en este trabajo, son invariantes a la rotación, escala, translación y
reflexión de las imágenes. Para una imagen digital 2-D, f (x, y), el momento central alrededor del
centro de gravedad de la imagen de orden (p + q) está definido en la ecuación (3.2):
µ pq = ∑∑ (x − x ) p ( y − y )q f (x, y ) (3.2)
x y
Donde, x y y son las coordenadas del centro de gravedad, dado por las ecuaciones (3.3 a),
(3.3 b):
m10 m01
x= y=
m00 m00 (3.3 a) y (3.3 b)
El histograma de niveles de gris para cada tipo de densidades (tejido predominante de la mama)
se muestra en la Figura 3.10. El histograma, es un tipo de característica de la textura de la
imagen, representando un método estadístico de la distribución de los píxeles de la imagen. El
histograma permite determinar el valor de intensidad (brillo) concerniente a la zona donde se
busca conocer las características de la textura.
Para evitar que los valores del histograma sean muy dispares, se procedió a normalizarlos. Al
normalizar un histograma podemos manejar las características de la textura como una cantidad no
dependiente del tamaño de la imagen. De esta manera, se entiende que hay una característica
peculiar del histograma clasificado acorde a la estructura de la glándula mamaria. Los
histogramas de las mamas adiposas, fibroglandulares y altamente densas presentaron 2 puntos
máximos mientras que las mamas heterogéneamente densas presentaron un sólo punto máximo.
El punto máximo en las mamas de baja densidad muestra la composición adiposa de la mama,
mientras que el punto máximo en mamas densas muestra la estructura de glándula mamaria. Por
consiguiente, la forma de los histogramas tiende a ser similar para mamas adiposas y
fibroglandulares, inclinándose hacia donde la presencia de tejido adiposo es alta.
Por otra parte, la densidad de la glándula mamaria existe porque la estructura de la glándula
mamaria está concentrada en una parte limitada. En mamas heterogéneamente densas, la
densidad de la glándula mamaria tiende a ser bastante uniforme, por lo que se presenta un sólo
punto máximo cercano a la región que contiene tejido adiposo. En mamas altamente densas, la
forma del histograma tiende a concentrarse hacia la parte donde existe una mayor intensidad
(brillo).
36
2000
・ Puntos máx= 2
Cantidad de
・ Forma punteada
píxeles
・ Posición del pto máx
→Baja densidad
0
0 Densidad (Escala de grises) 255
(1) Histograma de Densidad del área mamaria en mamas
predominantemente adiposas
2000
・ Puntos máx= 2
Cantidad de
píxeles
・ Forma punteada
・ Posición del pto máx
→Baja densidad
0
0 Densidad (Escala de grises) 255
(2) Histograma de Densidad del área mamaria en
mamas fibroglandulares
2000
・ Un solo punto máximo
Cantidad de
píxeles
0
0 Densidad (Escala de grises) 255
(3) Histograma de Densidad del área mamaria en mamas
heterogéneamente densas
2000
・ Puntos máx= 2
Cantidad de
píxeles
・ Forma gradual
・ Posición del pto máx
→Alta densidad
0
0 Densidad (Escala de grises) 255
(4) Histograma de Densidad del área mamaria en mamas
altamente densas
Figura 3.10 Histogramas de Densidad del cada una de las estructuras de glándulas
mamarias y sus características
Características peculiares asociadas a cada tipo de estructura se pueden observar en las gráficas.
37
Las áreas de donde se extrajeron las características a partir del histograma, fueron determinadas
como se muestra en la Figura 3.11. Primero, se seleccionó un área de estudio ○
1 , que abarcaba la
mayor concentración de píxeles en los alrededores de los puntos máximos, tomando como
referencia los mínimos locales P y Q del histograma. Segundo, se consideró el área ○
2 , formada
entre el punto Q y el valor límite de la escala de grises del histograma (255), dado que la suma de
píxeles de dicha área era mayor a la suma de píxeles del punto Q. Luego, se procedió a calcular
dos cuantificadores estadísticos para cada área, como lo fueron el momento central de tercer
orden, conocido como Asimetría o Sesgo (Skewness: SKW), y el momento central de cuarto
orden, conocido, como Curtosis (Kurtosis: KRT), utilizados como características para la
clasificación de la textura. Las expresiones de estos parámetros se pueden ver en las Ecuaciones
3.5-3.8 mostradas a continuación.
Sea P (i) la suma de píxeles, para el valor de nivel de gris i, en el histograma de densidad
normalizado para (i = 0,1 ,・ ・ ・ ・ , n-1 ), las ecuaciones de Skewness y Kurtosis son:
∑ (i − MEN ) P
1 3
SKW1 = 3 2 1 (i ) (3.5)
VAR1 i=P
∑ (i − MEN )
1 4
KRT1 = 2 1 P(i ) (3.6)
VAR1 i=P
Q Q
Donde MEN1 = ∑ iP(i ) es la Media1 y VAR1 = ∑ (i − MEN1 )2 P(i ) es la Varianza1
i=P i=P
n −1
∑ (i − MEN )
1 3
SKW2= 3 2 2 P( i ) (3.7)
VAR2 i =Q
n −1
∑ (i − MEN )
1 4
KRT2= 2 2 P( i ) (3.8)
VAR2 i =Q
Q Q
Donde MEN2 = ∑ iP(i ) es la Media2 y VAR2 = ∑ (i − MEN 2 )2 P(i ) es la Varianza2
i=P i=P
38
2000
Área de estudio ○
1 Área de estudio ○
2
píxeles
Cantidad de
0
P Q
0 Densidad (Escala de grises) 255
Cuando se procede a realizar una mamografía, el técnico radiólogo opera el valor α y β como
fácilmente viendo la imagen enteramente. Debido a que la cantidad de rayos X cambia con cada
toma, el valor de radiación proyectada en el tejido por el especialista es diferente, incluso
tomando una nueva imagen sobre una misma mama. Por consiguiente, el histograma de densidad
cambiará también. Sin embargo, el radio de permeabilidad de los rayos X para cada tejido no
cambia. Por lo tanto, el promedio de densidad del área del músculo pectoral fue tomado en cuenta
como un peso a la cantidad de características del histograma de densidad de la glándula mamaria.
Se basa en correlaciones entre variables entre las cuales diferentes patrones pueden ser
identificados y analizados. Es una forma útil de determinar similitudes de un conjunto de
muestras desconocido a uno conocido. La Distancia Mahalanobis selecciona los datos de acuerdo
a la varianza y covarianza de las variables explicativas en el modelo. Es robusta a la
multicolinearidad y su interpretación estadística es simple.
Región Mamaria
Extraída
1era Clasificación
2da Clasificación
Mamas Mamas altamente
heterogéneamente densas densas
La locación del tumor fue determinada mediante la aplicación del método vector gradiente de
densidad. Luego, el área del tumor fue extraída usando el modelo de extracción de contornos
activos, conocido como SNAKES basado en la locación específica del tumor.
Dos puntos máximos existen en el histograma de densidad del seno, uno correspondiente a la
distribución del tejido adiposo, y otro a la composición de la glándula mamaria. La región con un
valor de densidad mayor al de la composición de la glándula mamaria es considerada como un
tumor. En este sentido, los píxeles cuyos valores eran mayores al valor de densidad del punto Q,
fueron asumidos como la región de interés (Region of Interest: ROI) para la detección del área
tumoral. La Figura 3.14 muestra el resultado de la extracción de la ROI a partir del área del seno.
2000
Tejido Composición de la Tumor
glándula mamaria
Cantidad de
adiposos
píxeles
0
P Q
0 Densidad (Escala de grises) 255
3.4.2 Extracción de la locación del tumor mediante el Vector Gradiente y Iris Filter
El Iris Filter fue diseñado para detectar regiones en un mamograma donde un tumor podría estar
presente. El algoritmo se basa en el análisis del promedio de orientación de los gradiente en un
región de interés (previamente identificada) conteniendo en su centro, el pixel cuyo valor va a ser
modificado. Este es un algoritmo eficiente para cuantificar estructuras de dos dimensiones como
las lesiones en un mamograma [16][17]. El grado de convergencia está relacionado con la
distribución de la orientación de los vectores gradientes. La región de soporte del Iris Filter está
controlada, es decir, que el grado de convergencia de los vectores gradiente en él se conviertan en
máximos. Esto significa que el tamaño y la forma de la región de soporte cambian
adaptativamente de acuerdo a la distribución de patrones de los vectores gradientes alrededor del
píxel de interés.
El Iris Filter asigna un nuevo valor a cada píxel de acuerdo al siguiente procedimiento. De
acuerdo a la Figura 3.15, una región circular de radio r, es definida alrededor del píxel de interés
cuyo valor va a modificarse. El píxel de interés se denota como el punto P(i,j), y M líneas de
longitud r radiadas desde P(i,j) son elegidas. Cada línea se denota como Li, i=0,1…, (M-1) y el
ángulo formado por dos líneas consecutivas es el mismo. En cuanto al píxel de interés, se procede
a calcular el vector gradiente g de un píxel P’(i,j), en donde θ es el ángulo formado por el vector
gradiente g en dicho punto y el vector unitario que apunta hacia P(i,j), donde r es la distancia
que conecta ambos puntos. Por otro lado, el ángulo φ, es aquel formado desde el origen del píxel
de interés hasta el pixel P’(i,j), como se muestra en la figura 3.15.
En este filtro, como se muestra en Figura 3.15 el punto P'(i,j) que dista una longitud r en la
dirección del ángulo φ con respecto al punto de interés P(i,j), se puede expresar como la
ecuación 3.9 [17][18].
El ángulo θ’ del vector gradiente del punto P'(i,j) se calcula mediante la expresión 3.10 que
utiliza la máscara del vector gradiente mostrado en la Figura 3.15.
El ángulo θ formado por el segmento de línea que une P(i,j) con P’(i,j) y el vector gradiente está
definido por la ecuación 3.11.
θ= φ+θ
’ (3.11)
En cuanto a la estimación del Iris Filter, si P’(i,j) se refiere al valor un píxel arbitrario en la
media línea Li de longitud 1, se define el grado de convergencia c i, j del vector gradiente g i,j en
P’(i,j) hacia P(i,j) por medio de la expresión 3.12
cos θ ij g ≠0
ci , j = (3.12)
0 g =0
La salida C del Iris Filter, en relación al pixel de interés de cada media línea, recorre el máximo
en cada media línea dentro de un rango de longitud 1, y está dada por la expresión 3.13,
obteniéndose el valor promedio del máximo grado de convergencia de cada media línea.
1 M 1 N
C= ∑ max
N ≤l N ∑c i, j
(3.13)
M i =0 i i j =1
La salida del Iris Filter varía entre -1 y +1. Un valor cercano a 1 indica que el píxel yace cerca del
centro de una característica (pixel de interés), teniendo valores de luminancia mayores que los de
sus alrededores. Es de esperarse a partir de la ecuación 3.13, que el Iris Filter asignará valores
cercanos a 1 a los píxeles que se encuentran en el centro de una característica ya que la mayoría
de los vectores gradientes apuntan hacia ellos.
43
Debido a que la salida de un píxel dado depende sólo del promedio de orientación del campo
gradiente en la región de soporte alrededor de él, y no de las magnitudes de sus gradientes, el
valor asignado será alto sin importar el contraste de una característica. Ésta es la particularidad
del Iris Filter, que cuenta con la capacidad de detectar características de bajo contraste, tales
como las lesiones incipientes en una mamografía [17]. Recurriendo a esta propiedad del Iris Filter,
se desarrolló un algoritmo que hace visible características de bajo contraste junto con
características de alto contraste.
Li
F7 F6 F5 F4 F3
L1
g
F8 F2 θ L0
1
φ
F9 F1 l L M-1
P
F10 F16
Figura 3.12 Diagrama del Iris Filter. Región circular. El píxel P en el centro de la región circular,
cuyos valores serán cambiados, se muestra junto con las medias líneas radiadas desde él.
Se fijaron medias líneas separadas por un ángulo constante y se calculó el grado de convergencia
o intensidad de la región
El Iris Filter, establece medias líneas radiadas del centro del píxel de interés, separadas por un
ángulo constante. Se procedió a calcular el mayor grado de concentración, y se asumió como
salida los valores de los máximos grados de intensidad. Se notó con esta técnica, que el grado de
convergencia crece en la región tumoral y en la frontera del área mamaria con su background
(fondo). Se fijó el número de medias líneas radiadas M=15, y se calcularon los puntos donde el
grado de convergencia era máximo. Un ejemplo de la imagen resultante, se muestra a
continuación en la Figura 3.16.
44
(1) Extracción de la ROI de la imagen (2) Resultado tras aplicar Iris Filter
Un esquema de segmentación basado en contornos activos tiene varias ventajas con respecto a
los esquemas de segmentación tradicionales. En un modelo geométrico continuo el contorno de
un objeto se considera como un todo y se usa como conocimiento a priori sobre la forma del
objeto a segmentar para limitar la búsqueda del objeto en la imagen. Además las propiedades de
continuidad y suavidad de los contornos activos pueden compensar las irregularidades que tienen
los métodos de segmentación tradicionales y que están presentes con mucha frecuencia en las
mamografías debido al ruido[20][21][21].
45
Como se muestra en la Figura 3.17, un Snake se define como una curva cerrada
X(s)= [x(s)’,y(s)’], donde s ∈ [0,1], que se mueve a través del dominio espacial de una imagen
para minimizar su energía funcional, guiada por fuerzas internas y externas provenientes de la
imagen, expresada en las ecuaciones . Aquí α , β y γ son parámetros de peso de cada punto de
control s, que controlan la tensión y rigidez de la Snake y donde X’(s) y X’’(S) denotan la
primera y segunda derivada de X(s) respecto a s [20][21].
1
{
Eint ernal ( x (s )) = α x (s )' + β x (s )"
2
2 2
} (3.15)
Eimage = ( x (s )) = − I ( x (s ))
2
(3.16)
Primeramente, se define el punto de control S formando una curva cerrada alrededor del objeto
(tumor). Luego el Snake varía su posición buscando un estado energético menor, de tal forma de
disminuir la Esnakes definida en la ecuación 3.14. Luego se transforma la curva cerrada, de tal
manera de hacer la longitud de la circunferencia S pequeña, suave y convergente a las vecindades
del borde del dominio del objeto (tumor) como se muestra en la Figuras 3.17 y 3.18.
s
O
Objeto
O: Centro
Sin embargo, existen ciertos problemas al utilizar el algoritmo de Snakes mediante la definición
original de Energía de Snakes descrita anteriormente. Esto se debe a que en los alrededores de un
tumor existen vasos sanguíneos y tejido mamario que representan un ruido en la imagen, lo que
impide extraer la forma cóncava del tumor. Para poder resolver esta dificultad, se estableció una
curva cerrada en el interior del tumor con un poco de ruido. Se asumió como centro del tumor O
para este método, el valor máximo arrojado por la salida del Iris Filter en la etapa anterior.
Además, se definió una nueva función de energía para el Snake para poder extraer el borde
cóncavo del tumor. Esta expresión se muestra en la ecuación 3.17
E control = X 2 +Y 2 (3.17)
(1) Imagen donde se fijó el punto de (2) Imagen resultante tras aplicar
Control “O” Snakes, donde se observa la curva que
converge al borde cóncavo del tumor
Como se puede observar en la figura 3.20, se fijó el punto “O” como el centro del tumor, y los
puntos Si y Si+1 como el punto de control y el punto de control siguiente del borde
respectivamente. De esta manera se forma un triángulo uniendo estos tres puntos de interés. Por
consiguiente, rodeando los segmentos de líneas que forman cada triángulo, se procedió a extraer
(cortar específicamente) el contorno del tumor, como se puede visualizar en la Figura 3.21
Si
Si+1
(1
(1) Puntos de control que convergen con el (2) Corte final del tumor
contorno del tumor
Figura 3.17 Corte del tumor mediante esta técnica
Se pudieron extraer exitosamente formas complicadas de tumores
48
La textura de una imagen está determinada por la forma en que están distribuidos los niveles de
gris de los píxeles. Aunque no existe una clara definición de textura, podemos definir una imagen
por sus propiedades tales como: irregularidad, homogeneidad, concavidad, convexidad...etc.
Todas estas características que nos determinarán lo que denominamos textura están extraídas a
partir de los niveles de gris de la imagen[24] [25] [26].
Si la distribución del histograma se inclina hacia una zona de alta densidad, la media y el
contraste alcanzan valores grandes. Cuando existen muchos valores de brillo remotos de la Media,
el valor de la Varianza aumenta. En cuanto a la Asimetría o Sesgo (Skewness), si la forma del
histograma es más baja que la media presentando una forma alargada de poco brillo, toma un
valor negativo, mientras que si presenta una forma alargada de alto brillo, toma un valor positivo.
En relación a la Curtosis, si el valor del histograma se concentra en la Media, toma valores
grandes.
Por otro lado, si la intensidad se concentra en un punto específico del histograma, la Energía
toma valores cercanos a uno, mientras que la Entropía (mide la uniformidad del histograma),
representa un parámetro de significado opuesto a la energía, dando como consecuencias
resultados inversos a ésta. Las expresiones de estas características se pueden observar en las
ecuaciones 3.18-3.24, mostradas a continuación.
49
n −1
Media (Mean) MEN = ∑ iP( i ) (3.18)
i =0
n −1
Contraste (Contrast) CNT = ∑ i 2 P( i ) (3.19)
i =0
n −1
VAR = ∑ (i − MEN ) P( i )
2
Varianza (Variance) (3.20)
i =0
n −1
∑ (i − MEN )
1
SKW =
3
Asimetría (Skewness) P( i ) (3.21)
VAR 3 2 i =0
n −1
∑ (i − MEN )
1
KRT =
4
Curtosis (Kurtosis) P( i ) (3.22)
VAR 2 i =0
n −1
EGY = ∑ P( i )
2
Energía (Energy) (3.23)
i =0
n −1
Entropía Entropy) EPY = − ∑ P( i ) log P( i ) (3.24)
i =0
3.5.1.2 GLRLM Gray Level Run Length Matrix (Matriz de longitud de secuencia de
niveles de gris)
Dado que las medidas de texturas basadas únicamente en histogramas (valores estadísticos de
primer orden) presentan la limitación de no contener información referente a la posición relativa
de cada pixel con respecto a los demás, se procedió a evaluar estadísticos de segundo orden que
permiten introducir esta información, es decir, añaden información sobre la posición de los
píxeles que tienen iguales o casi iguales valores de intensidad. En otras palabras, los estadísticos
de segundo orden miden las dependencias espaciales que caracterizan a una textura[23].
Se trata de obtener una nueva matriz a partir de la imagen original, siendo esta nueva matriz la
utilizada para realizar sobre ella diversos cálculos. En este caso se denomina esta nueva matriz
como (GLRLM), Grey Level Run Length Matrix, (Matriz de Longitud de secuencias de Niveles
de Gris (MLCNG)) [24][25].
Sea I(x, z) una imagen digital de dimensiones N x N y Ng niveles de gris. Se define una matriz
(GLRLM), P θ , para cada dirección (0o; 45o; 90o; 135o). Cada elemento de la matriz (i,j)
representa el número de veces que el nivel de gris i, (i = 0,1,…,Ng-1) aparece en la imagen con
una carrera de longitud j, (j = 1,2,…,Nr), es decir, una matriz de dimensiones Ng x Nr. Nr es la
mayor carrera posible. Para que las características de textura sean independientes ante rotaciones
de las imágenes, se suman las matrices en todas las direcciones[26][27].
A continuación en la Figura 3.22 se muestra un ejemplo del método GLRLM para una imagen
de 5x5 pixeles, con cuatro niveles de gris dentro del rango de 0 a 3 y se expresan los parámetros
calculados a partir de la GLRLM en las ecuaciones 3.25-3.29 [24][27][28].
1 2 3 4 5 j
2 1 1 3 3
0 3 2 0 0 0
3 1 0 2 2 1 4 2 0 0 0
Pθ =
3 3 1 1 2 2 3 1 0 0 0
0 2 1 0 1 3 1 2 0 0 0
0 0 1 0 0 i
Figura 3.18 Muestra de Grey Level Run Length Matrix (GLRLM) para matriz 5x5
En este ejemplo se muestra la GLRLM para Ɵ=0°
En relación a las características extraídas, el Short Runs Emphasis (SRE), toma valores más
altos cuanto mayor sea el número de secuencias pequeñas, mientras que El Long Runs Emphasis
(LRE) representa el caso contrario al SER. El Grey Level Non-uniformity (GLNU) toma valores
pequeños cuando las secuencias están equitativamente distribuidas. En cuanto al Run Length
Non-uniformity (RLNU), éste arroja valores pequeños cuando las longitudes de las secuencias
están equitativamente distribuidas. Por último el Run Percentage (RP), toma valores altos cuando
todas las secuencias son pequeñas.
51
n −1 l
Pθ (i, j ) n −1 l
Short Runs Emphasis SRE = ∑∑
i =0 j =1 j2
∑∑ Pθ (i, j )
i = 0 j =1
(3.25)
n −1 l n −1 l
Long Runs Emphasis LRE = ∑∑ j 2 Pθ (i, j ) ∑∑ Pθ (i, j ) (3.26)
i =0 j =1 i =0 j =1
2
ln −1 n −1 l
Gray Level Non-uniformity GLNU = ∑ ∑ Pθ (i, j ) ∑∑ Pθ (i, j ) (3.27)
i = 0 j =1 i = 0 j =1
2
l
n −1 n −1 l
Run Length Non-uniformity RLNU = ∑ ∑ Pθ (i, j ) ∑∑ Pθ (i, j ) (3.28)
j =1 i = 0 i = 0 j =1
n −1 l
Run Percentage RP = ∑∑ Pθ (i, j ) A1 (donde A1= área del objeto) (3.29)
i = 0 j =1
Tumor
extraído
Benigno Maligno
CAPÍTULO 4
RESULTADOS Y DISCUSIÓN
Debido a que el área del fondo de la imagen presenta un valor de poca intensidad (muy
obscuro) en la mayoría de los mamogramas, se pudo dividir el área del seno y su fondo
satisfactoriamente. Seguidamente, ya que el área del seno extraída está compuesta por el
músculo pectoral y la glándula mamaria en sí, se procedió a remover el área del músculo pectoral
de la imagen mediante el método de aproximación de cuadrados, ya que la frontera del músculo
pectoral y la glándula mamaria, se asemeja (en general) bastante a una curva de segundo grado.
Un factor preponderante que puede alterar la forma del histograma, es la manera en que el
especialista realice la toma de la mamografía. Varias tomas realizada incluso a un mismo seno,
pueden arrojar mamogramas considerablemente distintos, modificando de esta manera, la forma
del histograma de la imagen en estudio[9]. Para corregir este problema, se decidió tomar en
cuenta el promedio de densidad del área del músculo pectoral, como un valor de peso, que
permite modificar la forma del histograma.
Cabe señalar, que se partió de la premisa que dentro de cada mamograma existía como máximo
una región de interés (tumor), al cual se le extrajeron determinadas características que
permitieron clasificarlo según su categoría.
Como resultado, se obtuvo que la combinación de 2 de las características más apropiadas, como
lo fueron SKW1 y el promedio de concentración del área del músculo pectoral, alcanzaron una
clasificación del 93% de acierto para las estructuras predominantemente adiposas y
fibroglandulares, y una clasificación del 100% de acierto para las mamas heterogéneamente
densas y altamente densas. Sin embargo, cabe destacar que todos los mamogramas utilizados,
fueron previamente clasificados bajo el criterio de médicos radiólogos.
Luego, mediante la combinación de dos de las características más apropiadas: SKW1 y SKW2,
se produjo la segunda clasificación de la estructura de la glándula mamaria, lográndose alcanzar
un 100% de acierto para mamas de los tipos heterogéneamente densas y altamente densas.
Predominantemente
Heterogéneamente Altamente %
adiposas
Densas Densas Clasificación
Y Fibroglandulares
Predominantemente
adiposas y 28 2 0 93%
Fibroglandulares
Heterogéneamente
0 15 0 100%
Densas
800
Cantidad de
píxeles
0
1 Densidad (Escala de grises) 255
Histograma de la Figura 4.1 (1)
1200
Cantidad de
píxeles
0
1 255
Densidad (Escala de grises)
Histograma de la Figura 4.1 (2)
800 0,4
Heterogéneamente
densas
Cantidad de
Fibrogladular②
píxeles
Fibroglandular①
Altamente densas
0 0
1 255
Densidad (escala de grises)
Figura 4.3 Histograma de densidad de la glándula mamaria usando como parámetro SKW○
2
La forma de las mamas fibroglandulares se asemeja a la de las mamas heterogéneamente densas
Luego de haber efectuado la clasificación de las estructuras mamarias, se procedió a fijar una
región de interés para analizar las muestras de mamogramas heterogéneamente densos,
considerados muy difíciles de diagnosticar. La razón para ello, es la gran complejidad
computacional y analítica que posee el Iris Filter para detectar la locación del tumor.
58
En esa etapa, la región del histograma de densidad que contiene alto grado de concentración
(brillo) corresponde al dominio del área tumoral, que al compararlo con el dominio usado por la
característica SKW ○
1 mencionado anteriormente, presentó una densidad mucho mayor, lo que
El Iris Filter se considera una técnica apropiada por la propiedad de su vector gradiente de
presentar una forma cónica. Al aplicar esta técnica, se pudo determinar la localización de todos
los tumores analizados. Los tumores poseen en su centro el punto de mayor densidad (intensidad)
y disminuyen su concentración a medida que se acerca al borde del mismo, lo que podría
traducirse como que el vector gradiente presentase una forma cónica. Seguidamente, se procedió
a extraer el área del tumor de interés mediante el algoritmo de Snakes, tomando como punto de
control el valor máximo del vector gradiente del Iris Filter (centro del tumor).El procesamiento
del contorno de un objeto mediante el modelo de Snakes, se acerca bastante a la forma en que la
vista puede definir el borde. Asimismo, al tumor extraído mediante Snakes, se le calcularon un
total de 27 características diferentes asociadas a la forma, al histograma de densidad, a la textura
y a la secuencia de niveles de gris de la “Gray Level Run Length Matrix” (GLRLM).
Por último, cabe mencionar que el sistema creado presentó dificultades para detectar tumores en
mamas heterogéneamente densas. De hecho, de un total de 12 imágenes analizadas, sólo en 4 se
pudieron encontrar la locación del tumor (30% de aciertos). En el resto de las imágenes, no se
pudo detectar la región de interés, por lo que el sistema percibió a la imagen como la de una
mama normal sin anomalías. La posible causa de este resultado, es que las mamas
heterogéneamente densas presentan una forma, composición y densidad similar a las mamas de
tejido sano. Actualmente, debido a que el sistema desarrollado emplea un único algoritmo para
detectar anomalías, se considera necesaria la creación de nuevos métodos y técnicas de
procesamiento de imágenes para detectar tumores de una manera alterna, especialmente, para
mamas heterogéneamente densas.
60
CAPÍTULO 5
CONCLUSIONES Y RECOMENDACIONES
Este Sistema puede ser utilizado indistintamente, bien indicando el área sospechosa para ser
evaluada por el radiólogo, o, como un sistema de ayuda al diagnóstico tras la extracción de las
características de las mismas. A su vez, puede representan una herramienta útil para el
entrenamiento de médicos radiólogo en fase de aprendizaje.
Para la detección de las zonas sospechosas, se han empleando técnicas basadas en extracción
de características de histograma y de la textura de las imágenes, junto con algoritmos de
segmentación basados en contorno activos y análisis de la señal del histograma.
Se desarrolló una aplicación final mediante el Software Visual Studio 2005 utilizando el
lenguaje de programación C++ basado en el diseño orientado a objetos.
RECOMENDACIONES
Con la experiencia acumulada durante el desarrollo del proyecto, se pueden plantear las
siguientes líneas futuras:
REFERENCIAS
[1] American Cancer Society. Breast Cancer Facts and Figures. 2008.
[5] Organización Mundial del Cáncer. Cáncer de Seno 2008. Disponible en Internet:
http://www.cancer.org/docroot/ESP/content/ESP_4x_Cncer_del_seno_Resumen.a
sp?sit%09earea, consultado el 15 de Abril de 2009.
[9] American College of Radiology (ACR). Mammography quality control manual for
radiologists, Medical Physicist and Technologists. Reston, VA, American College
Of Radiology. 1999.
[13] Breast Imaging Reporting and Data System BI-RADS, second edition, American
College of Radiology ACR 1995.
63
[15] Gold RH, Montgomery CK, Rambo ON. Significance of margination of benign
and malignant infiltrative mammary lesions: Roentgenologic-pathologic
correlation. AJR Am J Roentgenol 1973; 118: 881 – 894.
[20] Chenyang Xu, Jerry L. Prince, Snakes, Shapes, and Gradient Vector Flow, IEEE
Transsactions on image processing, Vol 7, No 3, March 1998. 359
[23] M.M Galloway, Texture classification using gray level run length matrix.
Computer Graphics and Image Processing, 4:172-179, 1975
[24] M. Sonka, V Hlavac y R Boyle. Image Processing, Analysis and Machine Vision.
International Thomsom Publising (ITP), 1999.
[28] R.M Haralick, K Shanmugam, y L Dinstein, IEEE Transo n Systems, Man and
Cibertenics , 3(6): 610-621, 1973.
65
APÉNDICE
APÉNDICE A
#include "mammoCADsystemDoc.h"
#include "mammoCADsystemView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMammoCADsystemView
IMPLEMENT_DYNCREATE(CMammoCADsystemView, CView)
BEGIN_MESSAGE_MAP(CMammoCADsystemView, CView)
//{{AFX_MSG_MAP(CMammoCADsystemView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
ON_COMMAND(ID_SELECT_BREAST, OnSelectBreast)
ON_COMMAND(ID_PECTORALIS, OnPectoralis)
ON_COMMAND(ID_IRIS_FILTER, OnIrisFilter)
ON_COMMAND(ID_TUMOR_POINT, OnTumorPoint)
ON_COMMAND(ID_SNAKES, OnSnakes)
ON_COMMAND(ID_CAD, OnCad)
//}}AFX_MSG_MAP
// •W€ˆóüƒRƒ}ƒ“ƒh
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
ON_COMMAND(ID_Menu, &CMammoCADsystemView::OnShrinking)
ON_COMMAND(ID_Menu32778, &CMammoCADsystemView::ONChangesize)
66
ON_COMMAND(ID_IMAGEANALYSISOFMAM_XYCOORDINATES,
&CMammoCADsystemView::OnXY_coordinates)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMammoCADsystemView
CMammoCADsystemView::CMammoCADsystemView()
{
// TODO:
CMammoCADsystemView::~CMammoCADsystemView()
{
}
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMammoCADsystemView
void CMammoCADsystemView::OnDraw(CDC* pDC)
{
CMammoCADsystemDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
a = (CString)message_x;
b = (CString)message_y;
c = "coordenate x";
d = "coordenate y";
pDC->TextOut (1000,10,c);
pDC->TextOut (1000,30,d);
pDC->TextOut (1200,10,a);
pDC->TextOut (1200,30,b);
// TODO:
/////////////////////////////////////////////////////////////////////////////
67
// CMammoCADsystemView
BOOL CMammoCADsystemView::OnPreparePrinting(CPrintInfo* pInfo)
{
// return DoPreparePrinting(pInfo);
}
/////////////////////////////////////////////////////////////////on///////////
/
// CMammoCADsystemView
#ifdef _DEBUG
void CMammoCADsystemView::AssertValid() const
{
CView::AssertValid();
}
CMammoCADsystemDoc* CMammoCADsystemView::GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMammoCADsystemDoc)));
return (CMammoCADsystemDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMammoCADsystemView Input Images
void CMammoCADsystemView::GetInput()
{
int i,j;
{
int i,j,d;
CDC* pDC;
pDC=GetDC();
for(i=0;i<Y_SIZE;i++){
for(j=0;j<X_SIZE;j++){
d=image_in[i][j];
pDC->SetPixel(10+j,10+i,RGB(d,d,d));
}
}
}
void CMammoCADsystemView::OnFileOpen()
{
// TODO: CFileFind FileFind;
CString filename;
FILE *fp;
int i,j;
CFileDialog
FileDlg(TRUE,NULL,".raw",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"rawfile(*.raw)|*.raw||",NULL);
if(FileDlg.DoModal() != IDOK) return;
path = FileDlg.GetPathName(); //
if(!FileFind.FindFile(path)) return;
fp = fopen(path,"rb"); //Open Image
OnView();
}
void CMammoCADsystemView::OnFileSaveAs()
{
// TODO Save output image
CFileFind FileFind;
FILE *fp;
int i,j;
GetOutput();
CFileDialog FileDlg(FALSE,NULL,
".raw",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"raw(*.raw)|*.raw||",NULL);
69
fp = fopen(path, "wb");
GetInput();
OnView();
}
void CMammoCADsystemView::Median() // Median FILTER
{
int md,i,j,x,y,z,a,b;
unsigned char m[25];
}
}
image_out[i][j] = m[12];
}
}
GetInput();
OnView();
}
void CMammoCADsystemView::labelset() /// LABELING//
{
int i,j,cnt,im,ip,jm,jp;
image_label[ys][xs] = label;
for (;;){
cnt = 0;
for (i=0; i<Y_SIZE;i++){
for (j=0; j<X_SIZE;j++){
if(image_label[i][j] == label){
im = i-1; ip = i+1; jm= j-1; jp= j+1;
if(im < 0) im = 0; if(ip >Y_SIZE-1 ) ip =
Y_SIZE-1;
if(jm < 0) jm = 0; if (jp >X_SIZE-1 ) jp =
X_SIZE-1;
if( image_label[i ][jp] == HIGH){
image_label[i ][jp] = label;
cnt++;
}
if( image_label[im][jp] == HIGH){
image_label[im][jp] = label;
cnt++;
}
if( image_label[im][j ] == HIGH){
image_label[im][j ] = label;
cnt++;
}
if( image_label[im][jm] == HIGH){
image_label[im][jm] = label;
cnt++;
}
if( image_label[i ][jm] == HIGH){
image_label[i ][jm] = label;
cnt++;
}
if( image_label[ip][jm] == HIGH){
image_label[ip][jm] = label;
cnt++;
}
if( image_label[ip][j ] == HIGH){
image_label[ip][j ] = label;
cnt++;
}
if( image_label[ip][jp] == HIGH){
image_label[ip][jp] = label;
cnt++;
}
}
71
}
}
if (cnt == 0) break;
}
}
int CMammoCADsystemView::labeling()
{
int i,j;
cnt = 0;
label = L_BASE;
for (i=0; i<Y_SIZE;i++){
for (j=0; j<X_SIZE;j++){
if(image_label[i][j] == HIGH){
if(label >= HIGH){
MessageBox("too
label","error",MB_ICONINFORMATION | MB_OK);
return -1;
}
xs = j; ys = i;
labelset(); label++;
}
}
}
cnt = label - L_BASE;
return 0;
}
void CMammoCADsystemView::entory()//Entropy
{
int i,j,a,size;
int lno[HIGH];
a = 0;
size = 0;
size = 100;
72
GetInput();
OnView();
}
GetBreast();
Median();
labeling();
entory();
void CMammoCADsystemView::OnOtu()
{
int i,j,l,n,a,k,size,sum;
int hist[256];
double P[256];
double w0,w1,m0,m1,mt;
l = 0; n = 0; sum = 0; m_max=0;
//
for(i=0; i<Y_SIZE; i++){
for(j=0; j<X_SIZE; j++){
k = image_in[i][j];
hist[k]++;
}
size = Y_SIZE * X_SIZE ;
m_max=1;
for(k=2; k<=HIGH; k++){
if(P[m_max] < P[k])
m_max = k;
}
GetInput();
OnView();
}
n = 1.5;
max = 0;
d = (sqrt)(d1*d1 + d2*d2);
if(max < d) max = d;
}
}
for (i=0; i<Y_SIZE;i++){
for (j=0; j<X_SIZE;j++){
d = (sqrt)(d1*d1 + d2*d2);
image_out[i][j] = (int)((d/max)*HIGH);
}
}
GetInput();
OnView();
}
void CMammoCADsystemView::OnMinimalSquareApproximationMethod()
R = 0.0;
z = 3;
n = 0.0;
x0 = 0.0;
x1 = 0.0;
x2 = 0.0;
75
m = 0.0;
// -------------
//
for(k=1; k<HIGH; k++)
if(Q[k] == 0) Q[k] = (Q[k+1] + Q[k-1])/2;
//
for(i=0; i<250; i++) P[i] = (Q[i] + Q[i+1] + Q[i+2] + Q[i+3] + Q[i+4]
+Q[i+5] +Q[i+6]) / 7.0;
// --------------------------------------------------
Pl = 0;
for(k=0; k<HIGH; k++) if(Pl < P[k]) Pl = P[k]; //
Ph = Pl/10.0;
Pl = Pl/2.0;
for(i=0; i<5; i++){
j = 1;
plscnt = 1;
for(k=0; k<HIGH; k++) Q[k] = 0; //
for(k=0; k<HIGH; k++){
if(Pl < P[k]) Q[k]=plscnt;
if(Q[k] == j){
if(j == 1) j = 0;
if(j == 0 && Pl > P[k]) plscnt = 2;
}
}
for(k=0; k<HIGH; k++) if(Q[k] == 2) plscnt = 0;
if(plscnt == 0) break;
Pl = Pl - Ph;
}
Pl = 0; pls1 = 0;
for(k=0; k<HIGH; k++){
if(Q[k] == 1 && Pl < P[k]){
Pl = P[k];
pls1 = k;
}
}
//
Pl = 0; pls2 = 0;
77
calor = high; //
void CMammoCADsystemView::OnPectoralis()
{
// TODO: ‚Pectoral Muscle
int i, j,x,limit,size,horizon,cnt;
double muscle,a1,a2,ans;
OnSelectBreast();
OnOtu();
Median();
OnSobel();
limit = 0;
size = 0;
pm_max = 0; //‹
horizon = X_SIZE/2; // OJooo
muscle = 0.0; //
cnt = 0;
78
ans = 0;
OnMinimalSquareApproximationMethod();
//‹ o
muscle = muscle/cnt; // ³
m_muscle = muscle;
//////////////////////////Pectoral////////////////////////////////////////////
////////////////////
a1 = (muscle - 128.0)/((255.0 - muscle)*muscle);
a2 = 1.0 - 255.0*a1;
GetInput();
OnView();
SnKs();
}
void CMammoCADsystemView::OnHistgramTransrarion()
79
{
int i,j;
double max;
max = 0;
void CMammoCADsystemView::OnIrisFilter()
{
// TODO:
int ring;
int i,j,k,n,m,f[17],f1,f2,f3,f4,d,r,R,M,rcos,rsin,icolor[100];
//icolor[]‚ÍR‚ƈê
double sita,fai,rf,ci_max,ci,rf_rad,Cmax,Cmin,IC;
double CN[100][100],C; //
r = 18; //
R = 25; //
d = R-r; //•
M = 32; //
fai = 360.0/(double)M; //
Cmax = -1.0;
Cmin = 1.0;
///////////////////////////////////////////////////////////
for (i=0; i<60; i++)
for (j=0; j<60; j++)
CN[i][j] = 0;
f[1] = image_in[i+n][j+m+2];
80
f[2] = image_in[i+n-1][j+m+2];
f[3] = image_in[i+n-2][j+m+2];
f[4] = image_in[i+n-2][j+m+1];
f[5] = image_in[i+n-2][j+m];
f[6] = image_in[i+n-2][j+m-1];
f[7] = image_in[i+n-2][j+m-2];
f[8] = image_in[i+n-1][j+m-2];
f[9] = image_in[i+n][j+m-2];
f[10] = image_in[i+n+1][j+m-2];
f[11] = image_in[i+n+2][j+m-2];
f[12] = image_in[i+n+2][j+m-1];
f[13] = image_in[i+n+2][j+m];
f[14] = image_in[i+n+2][j+m+1];
f[15] = image_in[i+n+2][j+m+2];
f[16] = image_in[i+n+1][j+m+2];
f1 = f[3]+f[4]+f[5]+f[6]+f[7];
f2 = f[11]+f[12]+f[13]+f[14]+f[15];
f3 = f[1]+f[2]+f[3]+f[15]+f[16];
f4 = f[7]+f[8]+f[9]+f[10]+f[11];
// MasK“
}
}
k = 0; //
rf = 0.0;
ci_max = -1.0;
C = 0.0;
IC = 0.0;
for(n=0; n<R; n++) icolor[n] = 0;
}
else image_out[i][j] = LOW;
}
}
OnHistgramTransrarion();
GetInput();
OnView();
}
//////////////////////////////SNAKEÏ”/////////////////////////////////////
int vx0=0,vy0=0,vxb,vyb,vxn,vyn,lx,ly,mx,my;
int min_vx0=0,min_vy0=0,min_vxb,min_vyb,min_vxn,min_vyn;
double d1,d2,d3,d4,Esnake,Eint,Eimg,Elng1,Elng2;
int Sx[200],Sy[200];
//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////Zaguyo//////////////////////////////////////////
//
int Vxb(int n, int k, int m, int vx0) //lx‚ÌXÀ•W‚ÌŒvŽZ
{
int lx,k0;
if(k == 0) k0 = n-1;
else k0 = k-1;
vxb = Sx[k0] + m;
82
lx = vx0 - vxb ;
return lx;
}
int Vyb(int n, int k, int l, int vy0) //lx‚ÌYÀ•W‚ÌŒvŽZ
{
int ly,k0;
if(k == 0) k0 = n-1;
else k0 = k-1;
vyb = Sy[k0] + l;
ly = vy0 - vyb;
return ly;
}
int Vxn(int n, int k, int w, int vx0) //mx‚ÌXÀ•W‚ÌŒvŽZ
{
int mx,k0,n0;
n0 = n-1;
if(k == n0) k0 = 0;
else k0 = k+1;
vxn = Sx[k0] + w;
mx = vx0 - vxn;
return mx;
}
int Vyn(int n, int k, int z, int vy0) //mx‚ÌYÀ•W‚ÌŒvŽZ
{
int my,k0,n0;
n0 = n-1;
if(k == n0) k0 = 0;
else k0 = k+1;
vyn = Sy[k0] + z;
my = vy0 - vyn;
return my;
}
double energy(int ly,int lx,int my,int mx,double W1,double W2)
//Œ`óƒGƒlƒ‹ƒM[‚ÌŒvŽZ
{
double Eint,d1,d2,d3,d4;
return Eint;
}
double snakeiris(int vy0, int vx0,int x, int y,unsigned char
image_in[5000][5000]) //Iris value, center
{
int f[17],f1,f2,f3,f4;
double sita,fai;
f1 = f[3]+f[4]+f[5]+f[6]+f[7];
f2 = f[11]+f[12]+f[13]+f[14]+f[15];
f3 = f[1]+f[2]+f[3]+f[15]+f[16];
f4 = f[7]+f[8]+f[9]+f[10]+f[11];
//sita‚Ì’PˆÊ‚̓‰ƒWƒAƒ“
sita = (double)(f1-f2) /(double)(f3-f4);
//’
fai = (double)y/(double)x;
fai = atan(fai);
fai = fai*(2.0*PI/360.0); //Area Circle·
return Elng2;
}
int central_x;
int central_y;
///////////////////////////////////////////////////////////
double areavariance(unsigned char image_in[5000][5000]) //–ÊÏ‚Ì•ªŽU
{
int i,j,max_x,max_y,min_x,min_y,area,vx[10],vy[10],h,hist[256];
double mean,variance1,variance2,variance;
////////////‚Ú///////////////////////////////////////////////////
area = 0;
mean = 0;
for(h=0; h<=HIGH; h++) hist[h] = 0;
//’†S“_,S(i-1),(vx0,vy0)‚ÌŽOŠpŒ`‚Ì–ÊÏ
for(i=min_y; i<=max_y; i++){
for(j=min_x; j<=min_x; j++){
if(vy[3]<=i && i<=vy[4] || vx[3]<=j && j <=vx[4])
if(vy[5]<=i && i<=vy[6] || vx[5]<=j && j <=vx[6])
if(vy[7]<=i && i<=vy[8] || vx[7]<=j && j
<=vx[8]){
area++;
h = image_in[i][j];
hist[h]++;
mean += image_in[i][j];
}
}
}
//•ªŽU
mean = mean/(double)area;
for(h=0; h<HIGH; h++){
85
//’†S“_,S(i-1),(vx0,vy0)‚ÌŽOŠpŒ`‚Ì–ÊÏ
for(i=min_y; i<=max_y; i++){
for(j=min_x; j<=max_x; j++){
if(vy[3]<=i && i<=vy[4] || vx[3]<=j && j <=vx[4])
if(vy[5]<=i && i<=vy[6] || vx[5]<=j && j <=vx[6])
if(vy[7]<=i && i<=vy[8] || vx[7]<=j && j
<=vx[8]){
area++;
h = image_in[i][j];
hist[h]++;
mean += image_in[i][j];
}
}
}
//•ªŽU
mean = mean/(double)area;
for(h=0; h<HIGH; h++){
variance2 = sqrt(((hist[h] - mean)*(hist[h] - mean))/(area-1));
}
/////////////////////////////////////////////////////////
variance = variance1 + variance2;
return variance;
86
void interval(int n,int k,int i,int j,int i0, int j0,double W1,double
W2,double W3,double W4,double W5, unsigned char image_in[5000][5000]) //ŒvŽZ
{
int f,g,m,l,w,z,x,y;
double Emin;
int prueba,prueba2;
prueba=vx0;
prueba2=vy0;
//Œ`óƒGƒlƒ‹ƒM[‚ÌŒvŽZ
Eint = energy(ly,lx,my,mx,W1,W2);
//”Z“xƒGƒlƒ‹ƒM[‚ÌŒvŽZ
prueba=vy0;
prueba2=vx0;
Eimg = -(W3
*image_in[vy0][vx0]);
x = i0 - vy0;
y = j0 - vx0;
Elng1 = -W4 * (sqrt((double)(x*x +
y*y)));
Elng2 = 0;//W5 *
areavariance(image_in);//snakeiris(vy0,vx0,x,y,image_in);
//‘SƒGƒlƒ‹ƒM[‚ÌŒvŽZ
Emin = Eint + Eimg + Elng1 + Elng2;
min_vxb = vxb;
min_vyn = vyn;
min_vxn = vxn;
}
}
}
r = 15;
p_num = n-1;
n++;
p_num = n-1;
}
else if (0.5*r > R
for(m=l; m<=p_num; m++){
Sx[m] = Sx[m+1];
Sy[m] = Sy[m+1];
}
n--;
p_num = n-1;
}
else ;
}
/
R = sqrt((double)((Sx[0] - Sx[p_num])*(Sx[0] - Sx[p_num]) + (Sy[0] -
Sy[p_num])*(Sy[0] - Sy[p_num])));
if(r < R){
Sx[p_num+1] = Sx[p_num];
Sy[p_num+1] = Sy[p_num];
if(Sx[p_num] > Sx[0]) Sx[p_num] = (int)(0.5*(Sx[p_num] - Sx[0]) +
Sx[0]);
else Sx[p_num] = int(0.5*(Sx[0] - Sx[p_num]) + Sx[p_num]);
if(Sy[p_num] > Sy[0]) Sy[p_num] = (int)(0.5*(Sy[p_num] - Sy[0]) +
Sy[0]);
else Sy[p_num] = int(0.5*(Sy[0] - Sy[p_num]) + Sy[p_num]);
n++;
p_num = n-1;
88
}
else if(0.25*r > R){//
n--;
p_num = n-1;
}
else ;
return n;
}
int i,j;
void CMammoCADsystemView::OnSnakes()
{
// TODO: SNAKES EXTRACTION
int rcos,rsin,i0,j0,i,j,n,k,N;
double rf,rf_rad,W1,W2,W3,W4,W5,Esnake0;
//‰Šú‰»
d1 = d2 = d3 = d4 = Eint = Eimg = Esnake0 = N = 0;
W1 = 10; //d‚ÝŒW” 10 —ד¯Žm‚Ì‹——£
W2 = 20; //d‚ÝŒW” 300
W3 = 19; //d‚ÝŒW” 15 ”Z“x(ƒGƒbƒW‚Å‚Í‚È‚¢)
W4 = 200; //d‚ÝŒW” 300 ’†S‚©‚ç‚Ì‹——£
W5 = 20; //d‚ÝŒW”@5 3“_‚ÅŒ‹‚Ô–ÊÏ’†‚Ì”Z“x•ªŽU~‚Q
i0 = maxy; //175; //§Œä“_‚̉ŠúˆÊ’u‚Ì’†S
j0 = maxx; //175;
rf = 0; //Šp“x
n = 32; //§Œä“_‚Ì”@32‚͉Šú‚Ì”
central_x = maxx;
central_y = maxy;
//§Œä“_‚̉ŠúÝ’è
for (k=0;k<n; k++){
rf_rad = rf * (2.0*PI/360.0);
rcos = (int)(50.0 * cos(rf_rad));
rsin = (int)(50.0 * sin(rf_rad));
Sy[k] = i0 + rsin;
Sx[k] = j0 + rcos;
rf = rf + 11.25;
}
//SNAKE
while(1){
for (k=0;k<n; k++){
i = Sy[k];
j = Sx[k];
89
//‹——£‚ÌŒvŽZ
interval(n,k,i,j,i0,j0,W1,W2,W3,W4,W5,image_in);
//ƒGƒlƒ‹ƒM[‚ªÅ¬‚ÌÀ•Wmin_i,min_j‚ªŽZo‚³‚ê‚é
//§Œä“_‚̈ړ®
Sy[k] = min_vy0;
Sx[k] = min_vx0;
}
//§Œä“_‚̒ljÁEíœ
n = protchange(n);
//‰æ‘œ‚ɧŒä“_‚ðƒvƒƒbƒg‚·‚é
if(Esnake0 == Esnake){
prot(image_in,image_out,N,n);
break;
}
else {
Esnake0 = Esnake;
N++;
}
}
m_N = n;
void CMammoCADsystemView::CutOfTumor()
{
int
i,j,x,y,k,h,h1,h2,m,h0,m0,max_x,max_y,min_x,min_y,vx[10],vy[10],X[50],Y[50];
double a,b;
///////////‰ŠúÝ’è///////////////////////////////////////////////////
for(i=0; i<Y_SIZE*5; i++){
for(j=0; j<X_SIZE*5; j++){
image_bst[i][j] = LOW;
image_out[i][j] = LOW;
}
}
//
for(k=0; k<m_N; k++){
vx[0] = central_x; vy[0] = central_y;
if((m_N-1) == k){
90
//////////§Œä“_ŠÔ‚Ìü•ª‚ÌŒvŽZ////////////////////////////////////////
// y = C ‚Ìê‡
if(vy[1] == vy[2]){
if(vx[1] > vx[2]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h = vx[1];
vx[1] = vx[2];
vx[2] = h ;
}
h = vx[2] - vx[1];
for(m=0; m<=h; m++){
X[m] = vx[1] + m;
Y[m] = vy[1];
}
}
// x = C ‚Ìê‡
else if(vx[1] == vx[2]){
if(vy[1] > vy[2]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h = vy[1];
vy[1] = vy[2];
vy[2] = h ;
}
h = vy[2] - vy[1];
for(m=0; m<=h; m++){
X[m] = vx[1];
Y[m] = vy[1] + m;
}
}
// y = ax + b;
else{
a = (double)(vy[1] - vy[2])/(double)(vx[1] - vx[2]);
b = (double)(vy[1] - (a * vx[1]));
if(vx[1] > vx[2]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h1 = vx[1];
vx[1] = vx[2];
vx[2] = h1 ;
}
h1 = vx[2] - vx[1];
for(m=0; m<=h1; m++){
X[m] = vx[1] + m;
Y[m] = (int)(a * X[m] + b);
}
if(vy[1] > vy[2]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h = vy[1];
vy[1] = vy[2];
vy[2] = h ;
}
h2 = vy[2] - vy[1];
h = h1 + h2;
h1++;
for(m=0; m<=h2; m++){
91
Y[h1+m] = vy[1] + m;
X[h1+m] = (int)((Y[h1+m] - b)/a);
}
}
//////////central‚©‚çX,Y‚Ü‚Å‚Ìü•ª‚ðo—Í//////////////////////////////
for(m=0; m<=h; m++){
vx[0] = central_x; vy[0] = central_y;
// y = C ‚Ìê‡
if(vy[0] == Y[m]){
if(vx[0] > X[m]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h0 = vx[0];
vx[0] = X[m];
X[m] = h0 ;
}
h0 = X[m] - vx[0];
for(m0=0; m0<=h0; m0++){
x = vx[0] + m0;
y = vy[0];
image_bst[y][x] = HIGH;
}
}
// x = C ‚Ìê‡
else if(vx[0] == X[m]){
if(vy[0] > Y[m]){ //í‚É2‚ª‘å‚«‚¢‚悤‚É‚·‚é
h0 = vy[0];
vy[0] = Y[m];
Y[m] = h0 ;
}
h0 = Y[m] - vy[0];
for(m0=0; m0<=h0; m0++){
x = vx[0];
y = vy[0] + m0;
image_bst[y][x] = HIGH;
}
}
// y = ax + b;
else{
a = (double)(vy[0] - Y[m])/(double)(vx[0] - X[m]);
b = vy[0] - (a * vx[0]);
if(vx[0] > X[m]){ é
h1 = vx[0];
vx[0] = X[m];
X[m] = h1 ;
}
h1 = X[m] - vx[0];
for(m0=0; m0<=h1; m0++){
x = vx[0] + m0;
y = (int)(a * x + b);
image_bst[y][x] = HIGH;
}
if(vy[0] > Y[m]){ //
h2 = vy[0];
vy[0] = Y[m];
Y[m] = h2 ;
}
h2 = Y[m] - vy[0];
for(m0=0; m0<=h2; m0++){
y = vy[0] + m0;
92
x = (int)((y - b)/a);
image_bst[y][x] = HIGH;
}
}
}
}
for(i=min_y; i<max_y; i++){
for(j=min_x; j<max_x; j++){
if(image_bst[i-1][j-1] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i-1][j] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i-1][j+1] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i][j-1] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i][j] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i][j+1] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i+1][j-1] == HIGH) image_out[i][j] =
image_in[i][j];
else if(image_bst[i+1][j] == HIGH) image_out[i][j] =
image_in[i][j];
else image_out[i+1][j+1] = LOW;
}
}
CDC* pDC;
pDC=GetDC();
for(i=0;i<Y_SIZE;i++){
for(j=0;j<X_SIZE;j++){
k=image_in[i][j];
pDC->SetPixel(10+j,10+i,RGB(k,k,k));
}
}
}
void CMammoCADsystemView::OnTumorPoint()
{
//
CFileFind FileFind;
FILE *fp,*fpf;
93
int i,j;
char c_N[3];
//!!ATTENTION!!««"path"‚"maligrant folder"««
//path = "C:\Users\rigel\Desktop\Thesis\Imagenes de prueba\Original
tumor\fat_tumor\3.raw";
//C:\Users\rigel\Desktop\Thesis\Imagenes de prueba\Original
tumor\heterogeneous_tumor
path = "C:\\Users\\rigel\\Desktop\\Thesis\\Imagenes de prueba\\Original
tumor\\heterogeneous_tumor\\<num>.raw";
itoa(m_num, c_N, 10); //
path.Replace("<num>",c_N); /·
if(!FileFind.FindFile(path)) return;
fp = fopen(path,"rb");
for(i=0; i<Y_SIZE*5; i++)
for(j=0; j<X_SIZE*5; j++)
fread(&image_in[i][j],1,1,fp);
fclose(fp);
///////!!tumor point!!//////////////////
// maxx = coordenate_x-10;
// maxy = coordenate_y-10;
//maxx=location_x;
// maxy=location_y;
maxx = maxx*5;
maxy = maxy*5;
////////////////////////////////////////
OnSnakes();
CutOfTumor();
path.Replace(".raw","snake.raw"); //ƒ^ƒCƒgƒ‹–¼’uŠ·
for(i=0; i<=max_y;i++){
x=1;
for(j=0; j<max_x; j++){
y = image_in[i][j];
if(image_in[i][j] == image_in[i][j+1]) x++;
94
else {
Run_Lgh[y][x]++;
x = 1;
}
}
}
x = 1;
}
for(j=0; j<=max_x;j++){
x=1;
for(i=0; i<max_y; i++){
y = image_in[i][j];
if(image_in[i][j] == image_in[i+1][j]) x++;
else {
Run_Lgh[y][x]++;
x = 1;
}
}
}
x = 1;
}
//
void RunLengthMatrix45(int max_x,int max_y,int l,unsigned char
Run_Lgh[256][1000],unsigned char image_in[5000][5000])
{
int i,j,x,y,xx,yy,x0,y0,n; //
for(y=0; y<256; y++)
for(x=0; x<=l; x++)
Run_Lgh[y][x] = LOW;
}
}
for(n=max_x-1; n>=0; n--){
x0 = max_x - n;
i = 0;
x = 1;
for(j=x0; j<max_x; j++){
y = image_in[i][j];
yy = i+1;
xx = j+1;
if(yy >=max_y || xx >= max_x){
if(i >= max_y || j >= max_x) break;
Run_Lgh[y][x]++;
x = 1;
}
else if(image_in[i][j] == image_in[i+1][j+1]) x++;
else {
Run_Lgh[y][x]++;
x = 1;
}
i++;
}
}
x = 1;
}
//135
void RunLengthMatrix135(int max_x,int max_y,int l,unsigned char
Run_Lgh[256][1000],unsigned char image_in[5000][5000])
{
int i,j,x,y,x0,y0,xx,n; //y‚ÍPxCx
i = max_y-1;
x = 1;
for(j=x0; j<max_x; j++){
if(i < 0) break;
y = image_in[i][j];
xx = j+1;
if(i == 0 || xx >= max_x){
if(j >= max_x) break;
Run_Lgh[y][x]++;
x = 1;
}
else if(image_in[i][j] == image_in[i-1][xx]) x++;
else {
Run_Lgh[y][x]++;
x = 1;
}
i--;
}
}
x = 1;
}
int i,j;
double rlg0;
rlg0 = 0.0;
return rlg0;
}
/
double Sre(int l,double rlg0,unsigned char Run_Lgh[256][1000]){
int i,j;
double rlg;
rlg = 0.0;
rlg = 0.0;
rlg = 0.0;
rlg = 0.0;
void CMammoCADsystemView::OnFeature()
{
unsigned char Run_Lgh[256][1000]; //[‹P“x][‰æ‘œ‚Ì’·‚³]
int i,j,k,l;
FILE *fp;
double h[256],MEN,log_h,CNT,VAR,SKW,KRT,EGY,EPY; //features extraction
double SRE[4],LRE[4],GLN[4],RLN[4],RPC[4],rlg0,area; //RUN LENGTH MATRIX
//title
if(title_lock < 0){
path = "C:\mammographyimage.csv";
fp = fopen(path,"a"); //path Ok
fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,\n",
"MEN","CNT","VAR","SKW","KRT","EGY","EPY",
"SRE0","LRE0","GLN0","RLN0","RPC0",
"SRE45","LRE45","GLN45","RLN45","RPC45",
"SRE90","LRE90","GLN90","RLN90","RPC90",
"SRE135","LRE135","GLN135","RLN135","RPC135");
fclose(fp);
98
title_lock = 1;
}
//////”///////////////////////////////////////////////
//•½‹Ï
for(k=1; k<256; k++) MEN += k * h[k];
//ƒRƒ“ƒgƒ‰ƒXƒg
for(k=1; k<256; k++) CNT += k * k * h[k];
//•ªŽU
for(k=1; k<256; k++) VAR += pow((k - MEN),2.0) * h[k];
//˜c“x
for(k=1; k<256; k++) SKW += (1.0/(pow(VAR,1.5))) * pow((k - MEN),3.0) *
h[k];
//ë“x
for(k=1; k<256; k++) KRT += (1.0/(pow(VAR,2.0))) * pow((k - MEN),4.0) *
h[k];
//ƒGƒlƒ‹ƒM[
for(k=1; k<256; k++) EGY += pow(h[k],2);
//ƒGƒ“ƒgƒƒs[
for(k=1; k<256; k++){
if(h[k] == 0) log_h = 0.0;
else log_h = log(h[k]);
EPY += -(h[k] * log_h);
}
///////////////////////////////////////////////////////
if(maxx < maxy) l = maxy;
else l = maxx;
RunLengthMatrix0(maxx,maxy,l,Run_Lgh,image_in);
//
rlg0 = rlgbase(l,Run_Lgh);
SRE[0] = Sre(l,rlg0,Run_Lgh);
LRE[0] = Lre(l,rlg0,Run_Lgh);
GLN[0] = Gln(l,rlg0,Run_Lgh);
RLN[0] = Rln(l,rlg0,Run_Lgh);
RPC[0] = rlg0 / area;
//Valures for 45
RunLengthMatrix45(maxx,maxy,l,Run_Lgh,image_in);
//“Á’¥—Ê‚ÌŽZo
rlg0 = rlgbase(l,Run_Lgh);
SRE[1] = Sre(l,rlg0,Run_Lgh);
LRE[1] = Lre(l,rlg0,Run_Lgh);
GLN[1] = Gln(l,rlg0,Run_Lgh);
RLN[1] = Rln(l,rlg0,Run_Lgh);
RPC[1] = rlg0 / area;
99
//ƒValues for 90
RunLengthMatrix90(maxx,maxy,l,Run_Lgh,image_in);
rlg0 = rlgbase(l,Run_Lgh);
SRE[2] = Sre(l,rlg0,Run_Lgh);
LRE[2] = Lre(l,rlg0,Run_Lgh);
GLN[2] = Gln(l,rlg0,Run_Lgh);
RLN[2] = Rln(l,rlg0,Run_Lgh);
RPC[2] = rlg0 / area;
rlg0 = rlgbase(l,Run_Lgh);
SRE[3] = Sre(l,rlg0,Run_Lgh);
LRE[3] = Lre(l,rlg0,Run_Lgh);
GLN[3] = Gln(l,rlg0,Run_Lgh);
RLN[3] = Rln(l,rlg0,Run_Lgh);
RPC[3] = rlg0 / area;
//
//!!ATTENTION
path = "C:\\Users\\rigel\\Desktop\\mammographyimage.csv";
fp = fopen(path,"a"); //‡Œv27ŒÂ
fprintf(fp,"%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,
%f,%f,%f,%f,%f,%f,%f,\n",
MEN,CNT,VAR,SKW,KRT,EGY,EPY,
SRE[0],LRE[0],GLN[0],RLN[0],RPC[0],
SRE[1],LRE[1],GLN[1],RLN[1],RPC[1],
SRE[2],LRE[2],GLN[2],RLN[2],RPC[2],
SRE[3],LRE[3],GLN[3],RLN[3],RPC[3]);
fclose(fp);
}
void CMammoCADsystemView::OnCad()
{
//
OnPectoralis(); //Pectoral cut
OnIrisFilter(); //Filter
SnKs(); //Skewness
OnTumorPoint(); //coordenates
OnFeature(); //values
}
void CMammoCADsystemView::OnShrinking()
{
int i,j,m,n;
zx=0.5;
zy=0.5;
for (i=-ys;i<ys;i++){
100
for (j=-xs;j<xs;j++){
else m=(int)(i/zy+0.5);
if (j>0)n=(int)(j/zx + 0.5);
else n=(int)(j/zx+0.5);
if ((m>=-ys)&&(m<ys)&&(n>=-xs)&&(n<xs))
image_out[i+ys][j+xs]=image_in[m+ys][n+xs];
else image_out[i+ys][j+xs]=0;
}
}
GetInput();
OnView();
void CMammoCADsystemView::ONChangesize()
{
int i,j;
OnView();
void CMammoCADsystemView::OnXY_coordinates()
{
flag = 1;
coordenate_x=point.x; // save in coordenates variable the value of point.x
and ponint.y
coordenate_y=point.y;
101
CView::OnLButtonDown(nFlags, point);
Invalidate();
}