Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Equation Chapter 1 Section 1
Proyecto Fin de Carrera Ingeniería de Telecomunicación
Desarrollo De Una Herramienta De Software De Análisis De Imágenes Médicas
Autor: Rania Marah
Tutor: Prof.Dr. Emilio Gómez González
Departamento de Física Aplicada III Escuela Técnica Superior de Ingeniería
Universidad de Sevilla Sevilla, 2018
ii
iii
Proyecto Fin de Carrera
Ingeniería de Telecomunicación
Desarrollo De Una Herramienta Software
De Análisis De Imágenes Médicas
Autor:
Rania Marah
Tutor:
Prof.Dr. Emilio Gómez González
Departamento de Física Aplicada III
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2018
iv
v
Proyecto Fin de Carrera: Desarrollo de una herramienta software de análisis
de imágenes médicas
Autor: Rania Marah
Tutor: Prof.Dr. Emilio Gómez González
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2018
El Secretario del Tribunal
vi
vii
A Emilio, por entregarme sus conocimientos
y por su paciencia conmigo.
A mis padres Fatiha y Hassan y mis hermanos
Rim, Romaissaa y Rafik, por apoyarme
y tener fe en mí.
A Saad, por estar ahí todos estos años en
lo bueno y lo malo.
viii
ix
Resumen
Las contribuciones y los aportes de la física a la biomedicina siempre han sido muy importantes y con el tiempo se ha ido incrementando el interés de los investigadores físicos y biomédicos en trabajar juntos para mejorar la salud humana. El Grupo de Física Interdisciplinar de la Universidad de Sevilla, en el que se ha desarrollado este trabajo, es un claro ejemplo. En este proyecto se ha diseñado y desarrollado una aplicación software de análisis de imágenes médicas denominada ‘PROCESA’. Este programa, elaborado en el lenguaje de programación Matlab®, permite la apertura de ficheros tanto en formatos gráficos convencionales como en el estándar médico DICOM e incorpora un conjunto de herramientas de segmentación, análisis y el procesado de las imágenes médicas. Asimismo, dispone de un conjunto amplio de módulos pre-construidos en los que se pueden insertar, de forma muy sencilla, otros códigos de procesado específicos de aplicaciones propias del usuario.
x
xi
Abstract
The contributions and contributions of physics to biomedicine have always been very important
and over time the interest of physical and biomedical researchers in working together to
improve human health has increased. The Interdisciplinary Physics Group of the University of
Seville, in which this work has been developed, is a clear example.
In this project, a medical image analysis software application called 'PROCESA' has been
designed and developed. This program, developed in the programming language Matlab®,
allows the opening of files in conventional graphic formats as well as in the DICOM medical
standard and incorporates a set of tools for segmentation, analysis and processing of medical
images. Also, it has a wide set of pre-built modules in which you can insert, in a very simple
way, other processing codes specific to the user's own applications.
... -translation by google-
xiii
Índice
Resumen .............................................................................................................................. iX
Abstract ............................................................................................................................... Xi
Índice ................................................................................................................................. Xiii
Índice de Figuras ................................................................................................................. XV
1. Introducción ...................................................................................................................... 1
1.1. Objetivos ........................................................................................................................... 5
1.2. Requisitos específicos .…………………………………………………………………………………………………6
2. ENTORNO DE TRABAJO ...................................................................................................... 9
2.1. Especificaciones del ordenador ......................................................................................... 9
2.2. Lenguaje de programación …………………………………………………………………………………………10
3. SOFTWARE DESARROLLADO: LA APLICACIÓN "PROCESA" ................................................ 12
3.1. Descripción de la aplicación ............................................................................................ 12
3.2. Diagrama de bloques ....................................................................................................... 13
4. Guía de usuario .............................................................................................................. 42
4.1. Requisitos de la aplicación .............................................................................................. 42
4.2. Interfaz de usuario .......................................................................................................... 42
5. Ejemplo de uso: insercion de codigos especificos……………………………………………………………66
5.1 Inserción de módulos de procesado ...…………………………………………………………………………66
5.2 Tiempos de procesado………………………………………………………………………………………………….77
xiv
6. Funciones del programa ................................................................................................. 78
6.1. Funciones del programa ................................................................................................. 78
7. Conclusiones y líneas de desarrollo ............................................................................... 133
Bibliografía y referencias ................................................................................................... 135
Apéndice I: Código del programa: ...................................................................................... 139
xv
ÍNDICE DE FIGURAS
Figura1.1.Imagen medica, radiografía con rayos x…….…….…………..……….……..........2
Figura1.2.Radiografo…………………………………….…….…………..……….……..........3
Figura1.3.Fichero DICOM…..………………………….…….…………..……….…...…........4
Figura2.1.Sistema operativo usado…………………..….…….…………..……….……........10
Figura4.1.Ventana PROCESA………………………….…….…………..……….….…........43
Figura4.2.Ventana Autores………………………….…….…………..……….……..............44
Figura4.3.Ventana PROCESA-ROI…………………….…….…………..……….……........45
Figura4.4.Ventana Ayuda-ROI………………………….…….…………..……….……........46
Figura4.5.Ventana PROCESA-DICOM………………..…….…………..……….……........47
Figura4.6.Ventana PROCESA-DICOM, buscar fichero…….…………..……….……........48
Figura4.7.Ventana PROCESA-DICOM, mostrar imagen ...…………..……….……...…...48
Figura4.8.Ventana info DICOM 1………………..………………….………..…...….....…...49
Figura4.9.Ventana info DICOM 2………………..………………….……………...…...…...50
Figura4.10.Ventana info DICOM 3………………..………………….………..…...…...…...50
Figura4.11.Ventana info DICOM 4………………..………………….………..…...…...…...51
Figura4.12.Ventana info DICOM 5………………..………………….………..…...…...…...51
Figura4.13.Ventana info DICOM anónima 1……..………………….………..…...…...…...52
Figura4.14.Ventana info DICOM anónima 2……..………………….………..…...…...…...53
Figura4.15.Ventana info DICOM anónima 3……..………………….………..…...…...…...53
Figura4.16.Ventana Ayuda-PROCESA-DICOM…………………….………..…...…...…...55
xvi
Figura4.17.Ventana PROCESA-Imagen..…………………...…………..……….……...…...56
Figura4.18.Ventana PROCESA-Imagen, mostrar imagen ..…………..……….……...…...57
Figura4.19.Ventana PROCESA-Imagen, cortar imagen 1……………..……….……...…...58
Figura4.20.Ventana PROCESA-Imagen, mostrar imagen 2…………..……….……...…...59
Figura4.21.Ventana Ayuda-PROCESA-Imagen………………………..……………...…...61
Figura4.22.Ventana PROCESA-Imagen, calcular distancia 1 ..…………………………...62
Figura4.23.Ventana PROCESA-Imagen, calcular distancia 2 ..…………………………...62
Figura4.24.Ventana PROCESA-Imagen, mostrar resultados 1…………………………...63
Figura4.25.Ventana PROCESA-Imagen, mostrar resultados 2…………………………...64
Figura4.26.Ventana PROCESA-Imagen, mostrar resultados 3…………………………...65
Figura5.1. Imagen en escala de grises rice.png ……………………………………………...67
Figura5.2. Superficie parcela…………………………………………………………………68
Figura5.3. Imagen con fondo uniforme……………………………………………………...69
Figura5.4. Imagen después del ajuste de la intensidad…………………………………….70
Figura5.5. Versión binaria de la imagen…………………………………………………….71
Figura5.6. Numero de objetos de la imagen…………………………………………………72
Figura5.7. El objeto numero 50………………………………………………………………73
Figura5.8. Matriz de etiquetas como imagen pseudocolor ……………………………......74
Figura5.9. Área de cada objeto de la imagen………………………………………………75
Figura5.10. Histograma del área de los granos de arroz…………………………………..76
1 INTRODUCCION
or imagen médica se entiende, en general, el conjunto de técnicas y procesos usados para obtener o crear imágenes del cuerpo humano, o partes de él, con propósitos clínicos o para la
ciencia médica. Como disciplina en su sentido más amplio, es parte de la imagen biológica e incorpora la radiología, ciencias radiológicas, endoscopia, termografía médica, fotografía médica y microscopía y otras áreas afines. En el contexto clínico, la imagen médica está generalmente identificada con la denominación de radiología. Como campo de investigación científica, la imagen médica constituye una subdisciplina de la ingeniería biomédica, la física médica y la medicina. Dependiendo del contexto, la investigación y desarrollo en el área de instrumentación, adquisición de imágenes el modelado y la cuantificación son normalmente reservadas para la ingeniería biomédica, física médica y ciencias de la computación; la investigación en la aplicación e interpretación de las imágenes médicas se reserva normalmente a la radiología y a las subdisciplinas médicas relevantes en la enfermedad médica o área de ciencia médica (neurociencia, traumatología, cardiología, oncología y otras). Muchas de las técnicas desarrolladas para la imagen médica son también aplicaciones científicas e industriales. En general, en la mayoría de las técnicas consideradas parte de la imagen médica, el procedimiento de obtención de la imagen consiste en generar un haz de ondas (energía), que pueden ser tanto mecánicas como electromagnéticas, y captar la energía reflejada o transmitida por la parte del cuerpo cuyo interior se desea observar. El elemento emisor de la fuentes de ondas suele denominarse “sonda” y el dispositivo que las recibe “detector”. Este convierte las ondas incidentes en una señal eléctrica (o conjunto de señales). Un ordenador o sistema de procesado -con unos algoritmos de reconstrucción adecuados- convierte las señales eléctricas generadas en el detector en la imagen resultado. Por ejemplo, en el caso de la imagen mediante ultrasonidos (ultrasonografía o ecografía) la sonda emite un conjunto de ondas de presión ultrasónicas que se reflejan en el tejido, y que muestran su estructura interna. En el caso de la radiografía, el agente físico que se propaga es radiación electromagnética en la franja del espectro correspondiente a los rayos X que, al atravesar los tejidos permite obtener una imagen del interior del organismo.
P
1 INTRODUCCION
2
Figura 1.1. Imagen médica, radiografía con rayos x [1].
Los rayos X tienen la capacidad de atravesar los tejidos blandos (órganos, músculos, etc.), pero no los huesos, que absorben la radiación. De este modo, al colocar un detector sensible a esta energía detrás del cuerpo, los rayos X van generando la imagen, de forma análoga a la exposición de una película fotográfica. Los huesos se muestran en tonos blancos y el resto de los componentes internos del cuerpo, en distintas tonalidades de gris según su densidad. El espacio vacío (aire), en general, queda negro. Así, la radiografía puede considerarse como un tipo de “fotografía” (realizada con rayos X en vez de con luz visible) que permite observar los componentes óseos en blanco, sobre un fondo negro. Esto ayuda a que un médico puede realizar distintos diagnósticos de acuerdo al estado de los huesos. Es importante destacar que, debido a que las dosis de radiación a las que se somete el cuerpo son muy bajas, la radiografía es un procedimiento seguro con mínimas posibilidades de provocar un daño en el organismo. La mayor parte de los expertos aseguran que la radiografía nos ofrece beneficios muy superiores a los riesgos que puede acarrear.
3
Figura 1.2. Radiógrafo [2].
Entre los tipos de radiografías más comunes se encuentran los siguientes: abdominal; de hueso; de
tórax; de los dientes; de una extremidad; de la mano; de las articulaciones; del cuello; de los senos
paranasales; del cráneo; de la columna torácica; del esqueleto.
Una imagen médica por sí misma no aporta suficiente información. Para que sea correctamente interpretada es necesario que vaya acompañada de datos del paciente y de la adquisición, y para esta finalidad se usa el formato DICOM.
DICOM es un protocolo estándar de comunicación entre sistemas de información y a la vez un formato de almacenamiento de imágenes médicas, que aparece como solución a los problemas de interoperabilidad entre tipos de dispositivos.
1 INTRODUCCION
4
Figura 1.1. Fichero DICOM [3]. El formato DICOM cuenta con objetos IOD (Information Object Definition), formados por la imagen y su información asociada (representación lógica de objetos del mundo real), y un elemento DIMSE (DICOM Message Service Element), que contiene las operaciones que pueden realizarse sobre cada objeto. IOD y DICOM forman SOP, la unidad funcional de DICOM. Un IOD se compone de IEs (information entities, entidades de información). Hay IEs del paciente, de estudio, de serie, de equipo, de imagen y otros que, a su vez se componen de uno o varios módulos que a su vez se contienen varios atributos. Un atributo se define con nombre, etiqueta, tipo y descripción. En el estándar DICOM la información se define mediante un modelo que refleja el mundo real. La imagen es el núcleo de información de un fichero DICOM. Cada fichero contiene, además de la imagen, información sobre el paciente (identificación demográfica y de identificación), el estudio en el que se encuadra la toma de la imagen, la serie a la que pertenece la imagen e información sobre la propia imagen. DICOM permite una identificación univoca de objetos. Cada fichero DICOM tiene un identificador único de usuario (UID) compuesto por una serie de varios números. Las comunicaciones DICOM se adaptan al estándar OSI para el intercambio de información. La AE (Entidad de Aplicación) se encarga de las comunicaciones de modo que para cada servicio existe un AE cliente y un AE aplicación.
5
Gracias a sus características y a su nivel de implantación, hoy día DICOM es mundialmente
reconocido para el manejo, almacenamiento, impresión y transmisión de imágenes médicas.
1.1. Objetivos
El objetivo general del proyecto es desarrollar de una herramienta software para el análisis de
imágenes médicas, en particular radiografías en formato DICOM.
Este objetivo general se expresa en los siguientes Objetivos Específicos:
1. Diseño de la estructura general de la aplicación y sus módulos componentes.
2. Diseño y programación de los algoritmos que permitan
a. Abrir ficheros DICOM estándar y visualizar su contenido.
b. Segmentar elementos de los ficheros DICOM.
c. Analizar las imágenes e identificar los diferentes objetos que forman la imagen.
3. Realizar pruebas de funcionamiento operativo y evaluar sus resultados.
Este proyecto se enmarca en las líneas de colaboración activas establecidas entre el Grupo de Física
Interdisciplinar de la Universidad de Sevilla, con sede en el Departamento de Física Aplicada III de
la Escuela Técnica Superior de Ingeniería y el Hospital Universitario Virgen del Rocío.
1 INTRODUCCION
6
1.2. Requisitos específicos
Para llevar a cabo el diseño de esta herramienta hemos tenido en cuenta unos requisitos específicos
que se deben cumplir:
-Desarrollar un modulo que permite definir la región de interés (región of interest, ROI)
de la imagen considerada:
En este módulo se definen seis campos numéricos (descritos posteriormente) que permiten definir
e identificar el estudio durante el procesado de los ficheros en los formatos tanto médico (DICOM)
como gráficos (JGP/PNG). También se guardan los resultados del análisis a base de estos campos
- Desarrollar un modulo que permite elegir el fichero DICOM, la visualización de la
imagen y el procesado.
Después de definir los seis campos y una vez elegido el estudio de DICOM, se visualiza el fichero
DICOM elegido, para poder aplicarle las diferentes opciones que permite la herramienta:
- Mostrar la información completa del fichero, incluida la imagen.
- Generar fichero similar al original sin incluir la información personal (edad, peso, nombre).
- Generar una copia de la imagen en formato JPG para poder estudiarla aparte.
- Ofrecer la posibilidad de guardar los resultados en fichero Matlab® y otros (Excel®).
7
- Desarrollar un módulo que permite elegir la imagen JGP1, la visualización e el
procesado:
Después de definir los seis campos y una vez elegido el estudio de DICOM, se visualiza el fichero
JGP/PNG elegido (como la imagen) así como las opciones de estudio:
- poder elegir una zona de la imagen marcando puntos en forma de polígono
- poder elegir una zona de la imagen diciendo el lado y marcando el centro de un rectángulo.
- calcular la distancia entre dos puntos elegidos sobre la imagen.
- poder guardar una copia de la imagen.
- poder guardar copia la zona de la imagen elegida.
- Procesar la imagen aplicándola un total de cien funciones diferentes (detallado
posteriormente).
- Poder guardar los resultados del procesado en fichero Matlab® y otro (Excel®).
1 JPEG (Joint Photographic Experts Group) es un algoritmo diseñado para comprimir imágenes con 24 bits de profundidad
o en escala de grises. Normalmente se le llama JPG debido a la extensión que tiene en sistemas operativos que sólo aceptan
tres letras de extensión.
1 INTRODUCCION
8
El esquema general de la aplicación se presenta a continuación:
PROCESA
PROCESA_ROI
PROCESA_Imagen PROCESA_DICOM
2. ENTORNO DE TRABAJO
2.1. Especificaciones técnicas
_ Hardware:
- Procesador : 2GHZ Intel Core 2 Duo
-Memoria 2 Go 1067 MHZ DDR3
_ Sistema Operativo:
- OS X Yosemite
- Versión 10.10
_ Monitor:
- Pantalla de 13 “
- Resolución 1440 x 900 pixeles
2. ENTORNO DE TRABAJO
10
2.2. Lenguaje de programación
Durante el desarrollo de esta aplicación se ha hecho uso del sistema interactivo MATLAB® versión R2006a
Figura 2.1. Sistema operativo usado.
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Mac OS X.
Entre sus prestaciones básicas se encuentran la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware.
2. ENTORNO DE TRABAJO
11
El paquete de software de MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones: Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI).
Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes) que cubren actualmente la mayoría de áreas principales del mundo de la ingeniería y la simulación, como por ejemplo la toolbox de procesado digital de imágenes (IPT de aquí en adelante), la toolbox de procesado de señal, la toolbox de comunicaciones... y así hasta más de 150 herramientas.
MATLAB proporciona un entorno de trabajo interactivo cuyo elemento básico de trabajo son las matrices, lo que permite la resolución numérica de problemas en un tiempo mucho menor que si se utilizaran lenguajes de programación tradicionales como pueden ser los lenguajes Fortran, Basic o C, con la ventaja de que su lenguaje propio de programación es similar al de los lenguajes tradicionales [5].
Al trabajar con matrices se pueden describir infinidad de variables de una forma altamente flexible y matemáticamente eficiente. Por ejemplo, una imagen se puede escribir como una matriz de píxeles, un sonido como una matriz de fluctuaciones, y en general se puede describir con una matriz cualquier relación lineal entre las componentes de un modelo matemático.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
3.1. Descripción de la aplicación
La aplicación realizada se denomina “PROCESA”.
Esta herramienta informática recibe imagen de entrada y aplica un conjunto de operaciones que se describen a continuación:
1. Recibe una imagen de entrada que se muestra en la pantalla , y permite elegir una región
de interés sobre esta imagen con dos maneras diferentes marcar esta región:
- marcando el centro de un cuadrado y definiendo el lado en milímetros.
- marcando un conjunto de puntos que forman un polígono.
A continuación se puede calcular la distancia entre dos puntos de la imagen original o
sobre la zona recortada, y además de se puede aplicar un conjunto de cien operaciones
con diferentes funcionalidades que detallaremos en el capitulo siguiente.
2. Recibe un imagen DICOM, la muestra por pantalla y, a continuación se puede leer la
información del fichero DICOM, asi como quitar la información personal del paciente
(proceso de anonimización). Posteriormente se puede cambiar la imagen a formato JPG.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
13
3.2. Diagrama de la aplicación
3.2.1 Diagrama de bloques
El diagrama de bloques es la representación gráfica del funcionamiento interno de un
sistema, que se hace mediante bloques y sus relaciones, y que, además, definen la
organización de todo el proceso interno, sus entradas y sus salidas.
Está compuesto por bloques funcionales unidos mediante flechas. Cada bloque esta
asociado a un tipo de proceso, y las flechas representan transferencias de datos entre los
bloques relacionados [6].
Para esta aplicación se han empleado los bloques que se muestran a continuación. Cada uno
de ellos se acompaña se acompaña del significado que se le asigna en los diagramas.
Funciones del programa: son las instrucciones que se ejecutan
según la programación de la aplicación.
Interacción con el usuario: mediante botones que aparecen en las
ventanas el usuario puede ordenar que se realicen las
operaciones pertinentes.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
14
Datos de entrada y salida: al comenzar la ejecución de una
función se muestran los datos que es necesario introducir
desde el punto desde el que se realiza la llamada. Igualmente se
representan los valores que la función devuelve .
Visualización de la imagen en la ventana de la interfaz
grafica.
Decisión: este símbolo indica que dependiendo del valor que
tenga la variable de entrada se realizan distintas operaciones
Llamada a otra función: para facilitar la organización de los diagramas
de bloques cuando se llama a una función que tenga bastantes
instrucciones se realiza una llamada y se explica aparte.
Mensajes de error: cuando se cumplen ciertas condiciones, el
programa muestra un aviso indicando que no se puede llevar
acabo la orden.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
15
3.2.2 Diagrama general PROCESA
Se presenta a continuación un esquema conciso de las interfaces graficas que componen la
aplicación:
En los apartados siguientes se representan diagramas desarrollados de cada funcionalidad de la aplicación PROCESA.
PROCESA
PROCESA_ROI
PROCESA_Imagen PROCESA_DICOM
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
16
3.2.3 Diagrama PROCESA-ROI
Autores Cerrar Continuar
A
Mostrar Autores
PROCESA
PROCESA_ROI
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
17
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
18
Abrir DICOM
Ayuda
Abrir Imagen
Volver
A
B
ERROR ¿Camp
Valido?
No
Si
B1
C D
PROCESA
PROCESA_Imagen PROCESA_DICOM
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
19
B1
Mostrar instrucciones de ayuda
PROCESA_ROI
Volver
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
20
3.2.4 Diagrama PROCESA- DICOM
C
Elegir Imagen
¿Formato
Valido? ERROR
Visualización Imagen
Ayuda Cerrar Volver
C4 C2 C3 C1
PROCESA_ROI
PROCESA_DICOM
Si
No
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
21
C1
Mostrar instrucciones de ayuda
Volver
PROCESA_DICOM
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
22
C2
Convertir JPG Guardar Imagen
Se guarda copia de la
imagen en formato
DICOM
-‐ Se convierte la imagen a formato JPG
-‐ Se guarda la copia de la imagen convertida
PROCESA_DICOM
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
23
C3
- se muestra la
información que
contiene el fichero
DICOM
-‐ Se quita la información personal
-‐ Se guarda la copia anónima de la imagen
Mostrar Info Anonimar
PROCESA_DICOM
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
24
C4
PROCESA_DICOM
_ se guardan los
resultados de
procesamiento en fichero
Matlab®
_Se guardan los
resultados de
procesamiento en
fichero Excel®
Guardar .mat Procesa IMG JPG Guardar .xsl
PROCESA_DICOM
PROCESA_Imagen
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
25
3.2.4 Diagrama PROCESA- Imagen:
D1 D2
D
PROCESA_Image
n
PROCESA
Ayuda Abrir Imagen
Cerrar Volver
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
26
D1
Mostrar instrucciones de ayuda
Volver
PROCESA_Imagen
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
27
D2
¿Formato
Valido?
Visualización Imagen
D3
ERROR
Si
No
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
28
D3
D6
D5 D4
Guardar Imagen Calcular Distancia
Elegir Region I
-Se guarda copia
de la imagen por
separado
PROCESA_Imagen
n
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
29
D4
¿Polígono
cerrado?
Visualización Imagen
PROCESA_Imagen
- Se recorta la región del
polígono marcado
D7
D6
Calcular Distancia
No
Si
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
30
D5
¿Lado
Definido?
Visualización Imagen
PROCESA_Imagen
- Se corta la región del
cuadrado definido con
D7
definir
Lado
Elegir Región II
Marcar Centro
Calcular Distancia
D6
Si
No
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
31
Doble click Marcar punto dos
Marcar punto uno
D6
¿Punto
definido?
¿Punto
definido?
Visualización de la
distancia en mm
-Calcular
distancia
¿Puntos
definido?
PROCESA_Imagen
No
No
No
Si
Si
Si
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
32
D7
Guardar Region Elegida
-Se guarda
la imagen
por
separado
Procesar Imagen
Guardar .mat Guardar .xls
- Se guardan todos
los resultados de
estudio en fichero
matlab
- Se guardan todos los
resultados de estudio
en fichero
PROCESA_Imagen
D8
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
33
media
D8
transpuesta
logaritmoNeperiano
desviacionEstadistica
raizCuadrada
exponencial
moda
inversa
Determinante
mediana
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
34
rango
D8
norma
condicion
coeficientesCorrelacion
reciprocoCondicion
valoresSingulares
mReducidaEscalonada
mayorSumaColumnas
mayorSumaFilas
sumaDiagonal
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
35
funcion_1
D8
funcion_f9
funcion_f8
funcion_f7
funcion_f4
funcion_f3
funcion_f2
funcion_f5
funcion_f10
funcion_f6
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
36
funcion_f11
D8
funcion_f19
funcion_f18
funcion_f17
funcion_f14
funcion_f13
funcion_12
funcion_f15
funcion_f20
funcion_f16
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
37
funcion_f21
D8
funcion_f29
funcion_f28
funcion_f27
funcion_f24
funcion_f23
funcion_f22
funcion_f25
funcion_f30
funcion_f26
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
38
funcion_f31
D8
funcion_f39
funcion_f38
funcion_f37
funcion_f34
funcion_f33
funcion_f32
funcion_f35
funcion_f40
funcion_f36
PROCESA_Imagen
-Se muestran los
resultados de
procesado .
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
39
funcion_f41
D8
funcion_f49
funcion_f48
funcion_f47
funcion_f44
funcion_f43
funcion_f42
funcion_f45
funcion_f50
funcion_f46
PROCESA_Imagen
-Se muestran los
resultados de
procesado
.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
40
funcion_f60
D8
funcion_f68
funcion_f67
funcion_f66
funcion_f63
funcion_f62
funcion_f61
funcion_f64
funcion_f69
funcion_f65
PROCESA_Imagen
-Se muestran los
resultados de
procesado.
3. SOFTWARE DESARROLLADO: LA APLICACIÓN “PROCESA”
41
funcion_f70
D8
funcion_f78
funcion_f77
funcion_f76
funcion_f73
funcion_f72
funcion_f71
funcion_f74
funcion_f79
funcion_f75
PROCESA_Imagen
-Se muestran los
resultados de
procesado.
4 GUIA DE USUARIO
4 GUIA DE USUARIO
4.1. Requisitos de la aplicación
Para la ejecución y correcto funcionamiento de la aplicación realizada es necesario disponer
de un sistema informático que soporte la versión de MATLAB usada, descrita en el apartado 2.2
4.2. Interfaz de usuario
-Ventana PROCESA:
Una vez abierto MATLAB, para acceder a la aplicación PROCESA, habrá que escribir en la
ventana ‘Command Windows’ de MATLAB la palabra: PROCESA
Justo al darle a entrar se abre la aplicación PROCESA según la figura
4 GUIA DE USUARIO
43
Figura 4.1. Ventana PROCESA.
Aquí se muestran los logos de los diferentes departamentos colaboradores, así como tres
botones:
-Autores: una pequeña presentación de los autores de la aplicación y los departamentos a los
que pertenecen, y un botón “Volver” para retornar a la primera ventana PROCESA.
4 GUIA DE USUARIO
44
-
Figura 4.2. Ventana Autores.
Cerrar: el botón cerrar para salir de la aplicación.
- Continuar: al pulsarlo se muestra la ventana PROCESA_ROI, que definimos a continuación.
4 GUIA DE USUARIO
45
-Ventana PROCESA_ROI:
Figura 4.3. Ventana PROCESA-ROI.
Esta ventana permite definir el estudio que vamos a realizar mediante el uso de seis campos
numéricos que se deben rellenar:
-Proyecto: para introducir el identificador del campo Proyecto.
-Estudio: para introducir el identificador del campo Estudio.
-Caso: para introducir el identificador del campo Caso.
-Corte: para introducir el identificador del campo Corte.
-Muestra: para introducir el identificador del campo Muestra.
-Otro: para introducir el identificador del campo Otro.
4 GUIA DE USUARIO
46
Después de rellenar los campos podemos elegir entre dos botones:
Abrir Imagen: si queremos estudiar un fichero formato JPG/PNG. Al pulsar el botón “Abrir
imagen” nos dirige a otra ventana PROCESA_imagen que veremos a continuación.
Abrir DICOM: si queremos estudiar un fichero en formato DICOM nos dirige a otra ventana
PROCESA_ROI que veremos a continuación.
Además de estos dos botones y los seis campos citados, la ventana PROCESA_ROI contiene
otros dos botones:
Volver: para volver al principio de la aplicación (ventana PROCESA).
Ayuda: breve descripción de las funcionalidades de la ventana actual para ofrecer ayuda sobre
el manejo de la aplicación al usuario, así como un botón Volver, para volver a la ventana
PROCESA_ROI, según muestra la figura:
Figura 4.4. Ventana Ayuda-ROI.
4 GUIA DE USUARIO
47
- Ventana PROCESA_DICOM:
Llegamos a esta parte de la aplicación si vamos a estudiar un fichero DICOM. Si hemos pulsado
anteriormente el botón Abrir DICOM, la interface es como se muestra en la figura:
Figura 4.5. Ventana PROCESA –DICOM.
En la ventana hay varios botones con diferentes opciones:
-Abrir Imagen: para poder elegir la imagen de interés. Al pulsar el botón se puede acceder a los
ficheros guardados en el ordenador para seleccionar uno. Después de seleccionar la imagen,
aparece la imagen elegida en la pantalla (figura).
4 GUIA DE USUARIO
48
Figura 4.6. Ventana PROCESA-DICOM, buscar fichero.
Figura 4.7. Ventana PROCESA-DICOM, mostrar imagen.
4 GUIA DE USUARIO
49
-Guardar Imagen: al pulsar este botón se guarda una copia exacta de la imagen mostrada en la
pantalla en el directorio de trabajo bajo el nombre dinámico:
PoyectoEstudioCasoCorteMuestraOtroCopia.dcm
-Mostrar info: al pulsar este botón se muestra la información del paciente que incluye el fichero
DICOM. Esta información se muestra en forma de una estructura de 127 campos según se
muestra a continuación:
Figura 4.8. Ventana info DICOM 1.
4 GUIA DE USUARIO
50
Figura 4.9. Ventana info DICOM 2.
Figura 4.10. Ventana info DICOM 3.
4 GUIA DE USUARIO
51
Figura 4.11. Ventana info DICOM 4.
Figura 4.12. Ventana info DICOM 5.
4 GUIA DE USUARIO
52
-Anonimizar: al pulsar este botón se guarda una copia de la imagen mostrada en la pantalla en
el directorio de trabajo, sin la información personal del paciente, bajo el nombre dinámico:
PoyectoEstudioCasoCorteMuestraOtroAnonima.dcm
Para visualizarlo, pulsamos el botón Mostrar info de la imagen anónima y la estructura
resultado es de 114 campos, habiéndose eliminado todos los que aportan información personal
del paciente como se muestra en la siguiente figura:
Figura 4.13. Ventana info DICOM anónima 1.
4 GUIA DE USUARIO
53
Figura 4.14. Ventana info DICOM anónima 2.
Figura 4.15. ventana info DICOM anónima 3.
4 GUIA DE USUARIO
54
-Convertir JPG: al pulsar este botón se convierte la imagen mostrada por pantalla de formato
DICOM a formato JPG y se guarda en el directorio de trabajo bajo el nombre:
PoyectoEstudioCasoCorteMuestraOtroCopiaJPG.jpg
-Procesar IMG JPG: al pulsar este botón se hace llamada a la ventana PROCESA_Imagen para
poder procesar la imagen recién convertida.
-Guardar .mat: al pulsar este botón se guardan el estudio realizado en un fichero .mat bajo el
nombre:
PoyectoEstudioCasoCorteMuestraOtro.mat
-Guardar .xsl: al pulsar este botón se guardan les resultados en un fichero Excel, bajo el
nombre:
PoyectoEstudioCasoCorteMuestraOtro.xsl
-Volver: al pulsar este botón se vuelve al principio de la aplicación: ventana PROCESA.
-Cerrar: al pulsar este botón se cierra la aplicación.
-Ayuda: breve descripción de las funcionalidades de la ventana actual para ofrecer ayuda sobre
el manejo de la aplicación al usuario, así como un botón Volver para volver a la ventana
PROCESA_DICOM, según muestra la figura:
4 GUIA DE USUARIO
55
Figura 4.16. Ventana Ayuda -ROCESA-DICOM.
4 GUIA DE USUARIO
56
Ventana PROCESA_Imagen:
- Llegamos a esta parte de la aplicación si vamos a estudiar un fichero JPG. Si hemos pulsado
anteriormente el botón Abrir Imagen, la interface es como se muestra en la figura:
Figura 4.17. Ventana PROCESA-Imagen.
-Abrir Imagen: para poder elegir la imagen de interés, al pulsar el botón se puede acceder a los
ficheros guardados en el ordenador para seleccionar uno, después de seleccionar la imagen,
aparece la imagen elegida en la pantalla, según la figura.
4 GUIA DE USUARIO
57
Figura 4.18. Ventana PROCESA-Imagen, mostrar imagen.
-Elegir Región II: este botón permite elegir parte de la imagen mostrada en la pantalla uno
(Imagen original) y mostrarla en la pantalla dos (Región Elegida).
La región elegida se corta en forma de cuadrado, que el usuario tiene que introducir el lado en
milímetros y marcar el centro.
Antes de pulsar este botón, habrá que introducir el lado en el espacio blanco que esta situado
justo alado del botón, después se muestra un cursor para poder situarlo en la zona deseada para
elegir el centro según muestra la siguiente figura:
4 GUIA DE USUARIO
58
Figura 4.19. Ventana PROCESA-Imagen, cortar imagen 1.
Elegir Region II: este botón permite elegir parte de la imagen mostrada en la pantalla uno
(Imagen original) y mostrarla en la pantalla dos (Región Elegida ).
La región elegida se recorta en forma de polígono que el usuario puede elegir una vez pulsado
el botón (mediante puntos moviendo el ratón) y soltándolo en la posición del punto deseado
hasta cerrar el polígono, según muestra la figura:
4 GUIA DE USUARIO
59
Figura 4.20. Ventana PROCESA-Imagen, mostrar imagen 2.
-Guardar Img Original: al pulsar este botón se guarda una copia exacta de la imagen mostrada
en la pantalla uno en el directorio de trabajo bajo el nombre dinámico:
PoyectoEstudioCasoCorteMuestraOtrOriginal.jpg
-Guardar Región Elegida: al pulsar este botón se guarda una copia exacta de la imagen mostrada
en la pantalla dos en el directorio de trabajo bajo el nombre dinámico:
PoyectoEstudioCasoCorteMuestraOtroRegion.jpg
-Guardar .mat: al pulsar este botón se guardan el estudio realizado en un fichero .mat bajo el
nombre:
PoyectoEstudioCasoCorteMuestraOtro.mat
4 GUIA DE USUARIO
60
-Guardar .xsl: Al pulsar este botón se guardan los resultados en un fichero Excel de cien
paginas, cada una de las cuales se corresponde con los resultados una cada operación, bajo el
nombre:
PoyectoEstudioCasoCorteMuestraOtro.xsl
- Volver: al pulsar este botón se vuelve al principio de la aplicación: ventana PROCESA.
-Cerrar: al pulsar este botón se cierra la aplicación.
-Ayuda: breve descripción de las funcionalidades de la ventana actual para ofrecer ayuda sobre
el manejo de la aplicación al usuario, así como un botón Volver, para volver a la ventana
PROCESA_Imagen, según muestra la figura:
4 GUIA DE USUARIO
61
Figura 4.21. Ventana Ayuda-PROCESA-Imagen.
Calcular distancia: este botón permite calcular la distancia entre dos puntos de la imagen
original o la imagen región elegida.
Al pulsar el botón salta un cursor para poder elegir el primer punto, moviendo el ratón el
marcando la posición deseada con un clic, lo mismo para elegir el segundo punto, una ves
definidos los dos puntos se muestra la distancia entre los dos puntos en milímetros en el espacio
blanco que esta justo alado del botón.
El cursor para marcar puntos se queda abierto para hacer más cálculos, para salir de esta
operación habrá que hacer doble clic, según se muestra a continuación:
4 GUIA DE USUARIO
62
Figura 4.22. Ventana PROCESA-Imagen, calcular distancia1.
Figura 4.23. Ventana PROCESA-Imagen, calcular distancia 2.
4 GUIA DE USUARIO
63
Procesar Imagen: al pulsar este botón se hace llamada a cien funciones internas de PROCESA
que aplican operaciones matemáticas sobre la imagen Region Elegida (pantalla dos).
De momento están desarrolladas veinte funciones y el resto devuelve el valor = -1, para que el
usuario en el futuro los adapte a sus necesidades.
El resultado de las operaciones se muestra una vez ha terminado de procesar la imagen, según
las siguientes figuras:
Figura 4.24. Ventana PROCESA-Imagen, mostrar resultados 1.
4 GUIA DE USUARIO
64
Figura 4.25. Ventana PROCESA-Imagen, mostrar resultados 2.
4 GUIA DE USUARIO
65
Figura 4.26. Ventana PROCESA-Imagen, mostrar resultados 3.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
66
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
5.1 Inserción de códigos específicos
Utilizando una imagen de granos de arroz, este ejemplo ilustra cómo se puede mejorar una
imagen para corregir una iluminación no uniforme, y luego usar la imagen mejorada para
identificar granos individuales. Esto permite aprender extraer características geométricas de los
granos y calcular fácilmente las estadísticas de todos los granos en la imagen [7]. El análisis de la imagen se hará en once pasos: Paso 1: Leer imagen Leer y mostrar la imagen en escala de grises arroz .png.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
67
Figura5.1. Imagen en escala de grises rice.png.
Paso 2: calcular el fondo de la imagen
En la imagen de muestra, la iluminación de fondo es más brillante en el centro de la imagen que en la parte inferior. En este paso, el ejemplo utiliza una operación de apertura morfológica para estimar la iluminación de fondo. La apertura morfológica es una erosión seguida de una dilatación, usando el mismo elemento estructurante para ambas operaciones. La operación de apertura tiene el efecto de eliminar objetos que no pueden contener por completo el elemento estructurador.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
68
Paso 3: Mostrar la aproximación de fondo como una superficie
Se usa el comando de navegación para crear una visualización de superficie del fondo (la aproximación de fondo creada en el paso 2). El comando de navegación crea superficies paramétricas de colores que le permiten ver funciones matemáticas sobre una región rectangular. Sin embargo, la función de navegación requiere datos de clase doble, por lo que primero necesita convertir el fondo con el comando doble. El ejemplo usa la sintaxis de indexación MATLAB para ver solo 1 de 8 píxeles en cada dirección, de lo contrario, la gráfica de superficie sería demasiado densa. El ejemplo también establece la escala de la gráfica para que coincida mejor el rango de los datos uint8 e invierte el eje y de la pantalla para proporcionar una mejor visualización de los datos. (Los píxeles en la parte inferior de la imagen aparecen en el frente del gráfico de la superficie). En la pantalla de la superficie, 0, 0 ] representa el origen o la esquina superior izquierda de la imagen. La parte más alta de la curva indica que los valores de píxeles más altos del fondo (y, por consiguiente, rice.png) se encuentran cerca del centro de la imagen. parte inferior de la imagen y se representan en el gráfico de superficie por la parte más baja de la curva.
Figura5.2. Superficie parcela.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
69
Paso 4: Restar la imagen de fondo de la imagen original
para crear una imagen más uniforme de fondo, restamos la imagen de fondo, a partir de la imagen original.
Figura5.3. Imagen con fondo uniforme.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
70
Paso 5: Aumentar el contraste de la imagen
Después de la sustracción, la imagen tiene un fondo uniforme pero ahora es un poco oscura. El siguiente ejemplo ajusta el contraste de la imagen creada en el paso anterior.
Figura5.4. Imagen después del ajuste de la intensidad.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
71
Paso 6: Umbral de la imagen
Creamos una versión binaria de la imagen para que pueda usar toolbox para contar cuantos granos de arroz hay en la imagen y después eliminamos el ruido del fondo.
Figura5.5. Versión binaria de la imagen.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
72
Paso 7: Identificar los objetos de la imagen
Se encuentran todos los componentes conectados (objetos) en la imagen binaria. La precisión
de los resultados depende del tamaño de los objetos, el parámetro de conectividad (4,8, o
arbitrario) y si un objeto toca a otro, en cuyo caso podrían ser etiquetados como un único objeto.
En este ejemplo tenemos un total de objetos de 122, siendo 4 objetos que se están tocando.
Figura5.6. Numero de objetos de la imagen.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
73
Paso 8: Examinar un único objeto
cada objeto esta etiquetados con el mismo valor entero. mostrar el grano que es el componente 50:
Figura5.7. El objeto numero 50.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
74
Paso 9: Visualización de todos los objetos
Una forma de visualizar los componentes conectados es crear una matriz de etiquetas. a luego mostrarlo como una imagen de pseudo-color.
Figura5.8. Matriz de etiquetas como pseudocolor imagen.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
75
Paso 10: Calcular el área de cada objeto
Cada grano de arroz es un componente conectado en la estructura obtenida. En la siguiente figura se muestra una estructura de 122 campos que corresponde con el numero de objetos de la imagen, mostrando el área de cada objeto.
Figura5.9. Área de cada objeto de la imagen.
5 EJEMPLO DE USO: INSERCION DE CODIGOS ESPECIFICOS
76
Paso 11: Mostrar Histograma del área
En la siguiente figura se muestra un histograma del área de los granos de arroz de la imagen.
Figura5.10. Histograma del área de los granos de arroz.
77
5.2 Tiempos de procesado
los tiempos de ejecución han sido satisfactorios, calculando el tiempo con ayuda de matlab
usando el comando:
tic;
%el código del programa
tiempo = toc; fprintf('El código insertado en este capitulo ha tardado %d segundos', tiempo);
El código insertado en este capitulo ha tardado 2.779935e+01 segundos en ejecutarse.
6 FUNCIONES DEL PROGRAMA
78
6 FUNCIONES DEL PROGRAMA
6.1 Funciones del programa
6.1.1 PROCESA.m:
- Definición:
function PROCESA
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde EL WORK SPACE Matlab nada
mas escribir la palabra PROCESA, su finalidad es mostrar la interface
grafica de interacción con el usuario para poder acceder a la aplicación o
cerrarlo en su caso.
6.1.2 Autores.m:
- Definición:
function Autores
6 FUNCIONES DEL PROGRAMA
79
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana PROCESA, su
finalidad es mostrar los autores y organismos que han colaborado en la
realización de la aplicación.
6.1.3 PROCESA_ROI.m:
- Definición:
function PROCESA_ROI
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana PROCESA, tiene
dos objetivos:
o permitir al usuario elegir entre estudiar una imagen JPG o un
fichero DICOM,
6 FUNCIONES DEL PROGRAMA
80
o permite al usuario identificar su estudio introduciendo seis
campos numéricos que se usan después para guardar ficheros y
imágenes del estudio realizado.
6.1.4 Ayuda_ROI.m:
- Definición:
function Ayuda_ROI
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana PROCESA_ROI, su
objetivo es mostrar instrucciones de manejo de la ventana
PROCESA_ROI a fin de facilitar el uso de la aplicación al usuario.
6.1.5 PROCESA_DICOM.m:
- Definición:
- function PROCESA_DICOM
6 FUNCIONES DEL PROGRAMA
81
- Argumentos de entrada :
o I: la imagen del fichero DICOM en forma de matriz.
o map: el contenido del fichero DICOM
o Path: la ruta del directorio donde esta guardado el fichero
DICOM.
- Argumentos de salida :
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana PROCESA_ROI,
muestra una interface grafica que permite al usuario realizar varias
operación, cada operación es una llamada a otra función interna de la
función PROCESA_DICOM que vamos a presentar a continuación:
o dicomread: para la lectura del fichero DICOM
o dicomwrite: para guardar el fichero DICOM
o infoDICOM: para extraer la información incluida en el fichero
DICOM
o - dicomanon : para quitarle al fichero DICOM la información
personal del paciente.
o - imwrite: para guardar el fichero DICOM en formato JPG
o Save: para guardar el estudio realizado en un fichero Matlab
6 FUNCIONES DEL PROGRAMA
82
o Xlswrite: para guardar el estudio realizado en un fichero Excel.
6.1.6 Ayuda_PROCESA_DICOM.m:
- Definición:
function Ayuda_PROCESA_DICOM
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana
PROCESA_DICOM, su objetivo es mostrar instrucciones de manejo de
la ventana PROCESA_DICOM a fin de facilitar el uso de la aplicación
al usuario
6.1.7 PROSECA_Imagen.m:
- Definición:
function PROSECA_Imagen
6 FUNCIONES DEL PROGRAMA
83
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana PROCESA_ROI,
muestra una interface grafica que permite al usuario
o Elegir una imagen y mostrarla por pantalla.
o Elegir una zona dentro de la imagen mediante dibujar un
polígono, se aplica una mascara a la imagen para generar el
polígono elegido y mostrarlo en una pantalla diferente a la
pantalla de la imagen original.
o Elegir una zona dentro de la imagen mediante definir un centro
y lado de un cuadrado, se corta el cuadrado según las medidas
elegidas y se presenta en una pantalla diferente a la pantalla de
la imagen original.
o Guardar los resultados de estudio en fichero Matlab.
o Guardar los resultados de estudio en fichero Excel.
o y realizar y otras operaciones, cada operación es una llamada a
otra función en fichero fuera de la función PROSECA_Imagen
que vamos a presentar mas adelante.
6.1.8 Ayuda_PROCESA_Imagen.m:
- Definición:
function Ayuda_PROCESA_Imagen
6 FUNCIONES DEL PROGRAMA
84
- Argumentos de entrada:
Sin argumentos
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función esta llamada desde la ventana
PROCESA_Imagen, su objetivo es mostrar instrucciones de manejo de
la ventana PROCESA_Imagen a fin de facilitar el uso de la aplicación
al usuario.
6.1.9 valoresSingulares.m :
- Definición:
function valoresSingulares
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripcion:
Esta función Da el vector V de valores singulares de A.
siendo Los valores singulares de A son las raíces cuadradas de
los auto valores de la matriz simétrica A’ A
-
6 FUNCIONES DEL PROGRAMA
85
6.1.10 transpuesta.m:
- Definición:
function transpuesta
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve Matriz transpuesta de Im
6.1.11 sumaDiagonal.m:
- Definición:
function sumaDiagonal[8]
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
6 FUNCIONES DEL PROGRAMA
86
Esta función devuelve Suma de los elementos de la diagonal de
Im
6.1.12 reciprocoCondicion.m:
- Definición:
function reciprocoCondicion
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve Recíproco de la condición de la matriz
Im
6.1.13 rango.m:
- Definición:
function rango
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
87
- Descripción:
Esta función devuelve Rango de la matriz Im
6.1.14 raizCuadrada.m:
- Definicion:
function raizCuadrada[9]
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve Raíz cuadrada de la matriz cuadrada Im
6.1.15 norma.m :
- Definición:
function norma
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
6 FUNCIONES DEL PROGRAMA
88
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve Norma de Im (mayor valor singular de la matriz Im)
6.1.16 mReducidaEscalonada.m:
- Definición:
function mReducidaEscalonada[10]
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve Da la matriz reducida escalonada por
filas de Im. El número de filas no nulas de rref(Im) es el rango de la
matriz a Im
6.1.17 moda.m:
- Definición:
- function moda
6 FUNCIONES DEL PROGRAMA
89
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta funcion devuelve la moda de l a matriz Im
6.1.18 mediana.m:
- Definición:
function mediana[11]
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta funcion devuelve la mediana de l a matriz Im
6 FUNCIONES DEL PROGRAMA
90
6.1.19 media.m :
- Definición:
function media
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta funcion devuelve la media de l a matriz Im
6.1.20 mayorSumaFilas.m:
- Definicion:
function mayorSumaFilas
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
6 FUNCIONES DEL PROGRAMA
91
Esta funcion devuelve la Norma infinita de Im (mayor suma de
la filas de Im)
6.1.21 mayorSumaColumnas.m:
- Definición:
function mayorSumaColumnas
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta funcion devuelve 1-norma de Im (mayor suma de las
columnas de Im)
6.1.22 inversa.m:
- Definición:
function inversa
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
92
- Descripcion:
Esta funcion devuelve la Matriz inversa de la matriz cuadrada
Im (Im-1)
6.1.23 Determinante.m :
- Definición:
function Determinante
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta funcion devuelve el Determinante de la matriz cuadrada
Im
6.1.24 desviacionEstadistica.m:
- Definición:
function desviacionEstadistica
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
6 FUNCIONES DEL PROGRAMA
93
- Argumentos de salida:
Sin argumentos
- Descripcion:
Esta funcion devuelve el la desviación estándar(la raíz cuadrada
de la varianza) de la matriz Im
6.1.25 condicion.m:
- Definicion:
function condicion
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripcion:
Esta funcion devuelve la condición de la matriz Im (cociente
entre el mayor y el menor valor singular de Im)
6.1.26 coeficientesCorrelacion.m:
- Definición:
function coeficientesCorrelacion
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
6 FUNCIONES DEL PROGRAMA
94
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve la matriz de coeficientes de correlación
para el Im, donde las columnas de Im representan variables aleatorias y
las filas representan observaciones.
6.1.27 funcion_f1.m:
- Definición:
function funcion_ f1
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada
para que el usuario la implemente según la necesidad
6.1.28 funcion_f2.m:
- Definición:
function funcion_ f2
6 FUNCIONES DEL PROGRAMA
95
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que
el usuario la implemente según la necesidad
6.1.29 funcion_f3.m:
- Definición:
function funcion_ f3
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada
para que el usuario la implemente según la necesidad
6.1.30 funcion_f4.m:
- Definición:
function funcion_f4
6 FUNCIONES DEL PROGRAMA
96
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.31 funcion_f5.m:
- Definición:
function funcion_f5
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.32 funcion_f6.m:
- Definición:
function funcion_f6
- Argumentos de entrada:
6 FUNCIONES DEL PROGRAMA
97
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.33 funcion_f7.m:
- Definición:
function funcion_f7
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.34 funcion_f8.m:
- Definición:
6 FUNCIONES DEL PROGRAMA
98
function funcion_f8
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
esta función devuelve -1 de momento esta reservada para que
el usuario la implemente según la necesidad
6.1.35 funcion_f9.m:
- Definición:
function funcion_f9
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
99
6.1.36 funcion_f10.m:
- Definición:
function funcion_f10
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.37 funcion_f11.m:
- Definición:
function funcion_f11
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
100
6.1.38 funcion_f12.m:
- Definición:
function funcion_f12
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.39 funcion_f13.m:
- Definición:
function funcion_f13
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
101
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.40 funcion_f14.m:
- Definición:
function funcion_f14
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.41 funcion_f15.m:
- Definición:
function funcion_f15
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
102
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.42 funcion_f16.m:
- Definición:
function funcion_f16
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.43 funcion_f17.m:
- Definición:
function funcion_f17
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
6 FUNCIONES DEL PROGRAMA
103
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.44 funcion_f18.m:
- Definición:
function funcion_f18
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.45 funcion_f19.m:
- Definición:
function funcion_f19
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
6 FUNCIONES DEL PROGRAMA
104
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.46 funcion_f20.m:
- Definición:
function funcion_f20
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.47 funcion_f21.m:
- Definición:
function funcion_f21
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés.
6 FUNCIONES DEL PROGRAMA
105
- Argumentos de salida:
Sin argumentos
- Descripcion:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.48 funcion_f22.m:
- Definición:
function funcion_f22
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés .
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.49 funcion_f23.m:
- Definición:
function funcion_f23
6 FUNCIONES DEL PROGRAMA
106
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que
el usuario la implemente según la necesidad
6.1.50 funcion_f24.m:
- Definición:
function funcion_f24
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.51 funcion_f25.m:
- Definición:
function funcion_f25
6 FUNCIONES DEL PROGRAMA
107
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés .
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.52 funcion_f26.m:
- Definición:
function funcion_f26
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida :
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.53 funcion_f27.m:
- Definición:
function funcion_f27
6 FUNCIONES DEL PROGRAMA
108
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.54 funcion_f28.m:
- Definición:
function funcion_f28
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada
para que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
109
6.1.55 funcion_f29.m:
- Definición:
function funcion_f29
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.56 funcion_f30.m:
- Definición:
function funcion_f30
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
110
6.1.57 funcion_f31.m:
- Definición:
function funcion_f31
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción:
Esta función devuelve -1 de momento esta reservada para que el
usuario la implemente según la necesidad
6.1.58 funcion_f32.m:
- Definición:
function funcion_f32
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
111
6.1.59 funcion_f33.m:
- Definición:
function funcion_f33
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.60 funcion_f34.m :
- Definición:
function funcion_f34
- Argumentos de entrada:
Im : la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.61 funcion_f35.m:
- Definición:
function funcion_f35
6 FUNCIONES DEL PROGRAMA
112
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.62 funcion_f36.m:
- Definición:
function funcion_f36
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.63 funcion_f37.m:
- Definición:
function funcion_f37
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
6 FUNCIONES DEL PROGRAMA
113
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.64 funcion_f38.m:
- Definición:
function funcion_f38
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.65 funcion_f39.m:
- Definición:
function funcion_f39
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
114
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.66 funcion_f40.m:
- Definición:
function funcion_f40
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.67 funcion_f41.m:
- Definición:
function funcion_f41
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
115
6.1.68 funcion_f42.m:
- Definición:
function funcion_f42
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.69 funcion_f43.m:
- Definición:
function funcion_f43
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.70 funcion_f44.m:
- Definición:
function funcion_f44
6 FUNCIONES DEL PROGRAMA
116
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.71 funcion_f45.m:
- Definición:
function funcion_f45
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.72 funcion_f46.m:
- Definición:
function funcion_f46
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
6 FUNCIONES DEL PROGRAMA
117
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.73 funcion_f47.m:
- Definición:
function funcion_f47
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.74 funcion_f48.m:
- Definición:
function funcion_f48
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
118
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.75 funcion_f49.m:
- Definición:
function funcion_f49
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.76 funcion_f50.m:
- Definición:
function funcion_f50
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
119
6.1.77 funcion_f51.m:
- Definición:
function funcion_f51
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.78 funcion_f52.m:
- Definición:
function funcion_f52
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.79 funcion_f53.m:
- Definición:
function funcion_f53
6 FUNCIONES DEL PROGRAMA
120
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.80 funcion_f54.m:
- Definición:
function funcion_f54
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.81 funcion_f55.m:
- Definición:
function funcion_f55
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
6 FUNCIONES DEL PROGRAMA
121
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.82 funcion_f56.m:
- Definición:
function funcion_f56
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.83 funcion_f57.m:
- Definición:
function funcion_f57
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
122
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.84 funcion_f58.m:
- Definición:
function funcion_f58
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.85 funcion_f59.m:
- Definición:
function funcion_f59
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
123
6.1.86 funcion_f60.m:
- Definición:
function funcion_f60
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.87 funcion_f61.m:
- Definición:
function funcion_f61
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.88 funcion_f62.m:
- Definición:
function funcion_f62
6 FUNCIONES DEL PROGRAMA
124
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.89 funcion_f63.m:
- Definición:
function funcion_f63
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.90 funcion_f64.m:
- Definición:
function funcion_f64
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
6 FUNCIONES DEL PROGRAMA
125
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.91 funcion_f65.m:
- Definición:
function funcion_f65
- Argumentos de entrada :
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.92 funcion_f66.m:
- Definición:
function funcion_f66
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
126
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.93 funcion_f67.m:
- Definición:
function funcion_f67
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.94 funcion_f68.m:
- Definición:
function funcion_f68
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
127
6.1.95 funcion_f69.m:
- Definición:
function funcion_f69
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.96 funcion_f70.m:
- Definición:
function funcion_f70
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.97 funcion_f71.m:
- Definición:
function funcion_f71
6 FUNCIONES DEL PROGRAMA
128
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.98 funcion_f72.m:
- Definición:
function funcion_f72
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.99 funcion_f73.m:
- Definición:
function funcion_f73
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
6 FUNCIONES DEL PROGRAMA
129
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.100 funcion_f74.m:
- Definición:
function funcion_f74
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.101 funcion_f75.m:
- Definición:
function funcion_f75
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
6 FUNCIONES DEL PROGRAMA
130
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.102 funcion_f76.m:
- Definición:
function funcion_f76
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.103 funcion_f77.m:
- Definición:
function funcion_f77
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6 FUNCIONES DEL PROGRAMA
131
6.1.104 funcion_f78.m:
- Definición:
function funcion_f78
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.105 funcion_f79.m:
- Definición:
function funcion_f79
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
6.1.106 funcion_f80.m:
- Definición:
function funcion_f80
132
- Argumentos de entrada:
Im: la matriz que forma la imagen de interés
- Argumentos de salida:
Sin argumentos
- Descripción: esta función devuelve -1 de momento esta reservada para
que el usuario la implemente según la necesidad
7 CONCLUCIONES Y LINEAS DE DESARROLLO
133
7 CONCLUCIONES Y LINEAS DE DESARROLLO Conclusiones
1. En este Proyecto se ha desarrollado una aplicación (programa software) para el análisis de
imágenes medicas en formato DICOM en un ordenador personal.
2. El programa elaborado permite
-abrir fichero DICOM.
-leer la información contenida en el fichero DICOM.
-Eliminar la información personal contenida en el fichero DICOM y guardar una copia exacta
con los datos generales, configurando un estudio anónimo adecuado para su uso.
-Convertir una imagen DICOM en imagen en formato JPG.
-Elegir una región de estudio de imagen con dos métodos diferentes.
-Aplicar un total de veinte operaciones estadísticas de estudio de matrices.
-Identificar el número de objetos de una imagen y calcular el área de cada objeto.
3. Se ha realizado un conjunto de pruebas de uso con ficheros de imagen médica estándar
comprobándose el correcto funcionamiento de la aplicación. Los tiempos de procesado de las
imágenes son muy satisfactorios (en el orden de varios minutos) en un ordenador personal de
gama media.
Este programa cumple con el planteamiento inicial de servir como herramienta de ayuda a los
médicos y investigadores (del Hospital Universitario Virgen del Rocío, en Sevilla) en el estudio
de las imágenes medicas en formato DICOM.
Según se ha visto ofrece varias utilidades de manejo de imagen, y operaciones de estudio de
matrices, que facilitan la tarea de estos profesionales .
7 CONCLUCIONES Y LINEAS DE DESARROLLO
134
Líneas de desarrollo
1. En los ficheros de código de la aplicación se deja margen de mejora según futuras
necesidades, con ochenta módulos funcionales predefinidos para que en el futuro se
puedan implementar en los mismos diferentes códigos específicos según necesidad, sin
modificar la jerarquía PROCESA o afectar al funcionamiento existente .
2. Convertirla en formato ejecutable para poder utilizarla sin tener Matlab® instalado en el
ordenador.
BIBLIOGRAFIA Y REFERENCIAS
135
BIBLIOGRAFIA Y REFERENCIAS Bibliografía
Imágenes processing with matlab – Kendall T.
Referencias
[1]https://www.google.fr/search?q=rice.png&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj
05duevfXZAhWJfFAKHaNeAzAQ_AUICigB&biw=1417&bih=729#imgrc=Ek1TKezwSeblc
M:
[2]https://www.google.fr/search?biw=1427&bih=687&tbm=isch&sa=1&ei=DnKuWpX9L4ffw
AKswpeYDg&q=radiografo&oq=radiografo&gs_l=psy-
ab.1.0.0l6j0i30k1j0i5i30k1j0i24k1j0i10i24k1.2834.2834.0.4671.1.1.0.0.0.0.73.73.1.1.0....0...1c.
1.64.psy-ab..0.1.73....0.gtTP7s9_1OE
[3]https://www.google.fr/search?biw=1427&bih=687&tbm=isch&sa=1&ei=FHKuWs_QJ9DT
wQKo1724AQ&q=Imagen+DICOM&oq=Imagen+DICOM&gs_l=psy-
ab.3..0j0i24k1l2.29091.34901.0.35190.14.9.1.4.4.0.65.440.9.9.0....0...1c.1.64.psy-
ab..0.14.477...0i30k1j0i10i24k1.0.46KWl_Azyg4
[4] https://www.mathworks.com/
[5]https://en.wikibooks.org/
[6]https://matlab.developpez.com/
[7]https://www.lawebdelprogramador.com/cursos/Matlab/6606-Aprender-a-programar-con-
Matlab.html
[8]https://www.tutellus.com/ciencias-aplicadas/ingenierias/aprende-a-programar-con-matlab-
3185
[9]https://es.wikipedia.org/wiki/Wikipédia
[10]https://definicion.de/
[11]https://www.radiantviewer.com/es/
[12]https://support.office.com/es-es/article/crear-un-diagrama-de-bloques-f7e11f20-45d9-4c31-
92c9-16a87a6b6fee
[13]https://www.google.fr/search?client=firefox-b-
ab&dcr=0&q=elementos+de+un+diagrama+de+bloques&sa=X&ved=0ahUKEwiV5ZaElrLZAh
136
WrLMAKHW6DCxgQ1QII4AEoBQ&biw=1366&bih=65
[14]https://es.wikihow.com/
[15]https://support.office.com/es-es/article/tareas-b%C3%A1sicas-en-word-2010-eeff6556-
2d15-47d2-a04a-7ed74e99a484
[16]http://ctms.engin.umich.edu/CTMS/index.php?aux=Home
APENDICE. CODIGO DEL PROGRAMA:
137
APENDICE. CODIGO DEL PROGRAMA:
function varargout = PROCESA(varargin)
% PROCESA MATLAB code for PROCESA.fig
% PROCESA, by itself, creates a new PROCESA or raises the
existing
% singleton*.
%
% H = PROCESA returns the handle to a new PROCESA or the handle
to
% the existing singleton*.
%
% PROCESA('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in PROCESA.M with the given input
arguments.
%
% PROCESA('Property','Value',...) creates a new PROCESA or raises
the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before PROCESA_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to PROCESA_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
APENDICE. CODIGO DEL PROGRAMA:
138
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help PROCESA
% Last Modified by GUIDE v2.5 17-Jan-2018 02:04:14
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @PROCESA_OpeningFcn, ...
'gui_OutputFcn', @PROCESA_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before PROCESA is made visible.
function PROCESA_OpeningFcn(hObject, eventdata, handles, varargin)
APENDICE. CODIGO DEL PROGRAMA:
139
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to PROCESA (see VARARGIN)
a=imread('PROCESA.png');
image(a)
axis off
% Choose default command line output for PROCESA
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes PROCESA wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = PROCESA_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
APENDICE. CODIGO DEL PROGRAMA:
140
% --- Breve descripcion de los autores del proyecto
function Autores_Callback(hObject, eventdata, handles)
% hObject handle to Autores (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Autores;
% --- Continuar en la aplicacion procesa.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA_ROI
% --- cerrar la ventana y salir de la aplicacion.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf);
function varargout = Autores(varargin)
% AUTORES MATLAB code for Autores.fig
% AUTORES, by itself, creates a new AUTORES or raises the
APENDICE. CODIGO DEL PROGRAMA:
141
existing
% singleton*.
%
% H = AUTORES returns the handle to a new AUTORES or the handle
to
% the existing singleton*.
%
% AUTORES('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in AUTORES.M with the given input
arguments.
%
% AUTORES('Property','Value',...) creates a new AUTORES or raises
the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before Autores_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to Autores_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Autores
% Last Modified by GUIDE v2.5 23-Jan-2018 22:34:14
% Begin initialization code - DO NOT EDIT
APENDICE. CODIGO DEL PROGRAMA:
142
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Autores_OpeningFcn, ...
'gui_OutputFcn', @Autores_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Autores is made visible.
function Autores_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Autores (see VARARGIN)
a=imread('Autores.png');
image(a)
axis off
APENDICE. CODIGO DEL PROGRAMA:
143
% Choose default command line output for Autores
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Autores wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Autores_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Volver a la aplicacion.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA;
close(gcbf);
APENDICE. CODIGO DEL PROGRAMA:
144
function varargout = PROCESA_ROI(varargin)
% PROCESA_ROI MATLAB code for PROCESA_ROI.fig
% PROCESA_ROI, by itself, creates a new PROCESA_ROI or raises the
existing
% singleton*.
%
% H = PROCESA_ROI returns the handle to a new PROCESA_ROI or the
handle to
% the existing singleton*.
%
% PROCESA_ROI('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in PROCESA_ROI.M with the given input
arguments.
%
% PROCESA_ROI('Property','Value',...) creates a new PROCESA_ROI
or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before PROCESA_ROI_OpeningFcn gets called.
An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to PROCESA_ROI_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
APENDICE. CODIGO DEL PROGRAMA:
145
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help PROCESA_ROI
% Last Modified by GUIDE v2.5 08-Feb-2018 20:44:43
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @PROCESA_ROI_OpeningFcn, ...
'gui_OutputFcn', @PROCESA_ROI_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before PROCESA_ROI is made visible.
APENDICE. CODIGO DEL PROGRAMA:
146
function PROCESA_ROI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to PROCESA_ROI (see VARARGIN)
a=imread('dep.png');
axes(handles.axes1);
image(a)
axis off
b=imread('unii.png');
axes(handles.axes2);
image(b)
axis off
% Choose default command line output for PROCESA_ROI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes PROCESA_ROI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = PROCESA_ROI_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
APENDICE. CODIGO DEL PROGRAMA:
147
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1
as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
APENDICE. CODIGO DEL PROGRAMA:
148
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2
as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
APENDICE. CODIGO DEL PROGRAMA:
149
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3
as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit4_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
APENDICE. CODIGO DEL PROGRAMA:
150
% Hints: get(hObject,'String') returns contents of edit4 as text
% str2double(get(hObject,'String')) returns contents of edit4
as a double
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5
as a double
APENDICE. CODIGO DEL PROGRAMA:
151
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit6_Callback(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit6 as text
% str2double(get(hObject,'String')) returns contents of edit6
as a double
% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
APENDICE. CODIGO DEL PROGRAMA:
152
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Ayuda_ROI;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a b d e f g
a = get(handles.edit1,'String');
if isempty(a)
msgbox(sprintf('Introduzca el campo Proyecto'),'Error','Error');
return
else
a = char(a);
end
APENDICE. CODIGO DEL PROGRAMA:
153
b = get(handles.edit2,'String');
if isempty(b)
msgbox(sprintf('Introduzca el campo Estudio'),'Error','Error');
return
else
b = char(b);
end
d = get(handles.edit3,'String');
if isempty(d)
msgbox(sprintf('Introduzca el campo Caso'),'Error','Error');
return
else
d = char(d);
end
e = get(handles.edit4,'String');
if isempty(e)
msgbox(sprintf('Introduzca el campo Corte'),'Error','Error');
return
else
e = char(e);
end
f = get(handles.edit5,'String');
if isempty(f)
msgbox(sprintf('Introduzca el campo Muestra'),'Error','Error');
return
else
APENDICE. CODIGO DEL PROGRAMA:
154
f = char(f);
end
g = get(handles.edit6,'String');
if isempty(g)
msgbox(sprintf('Introduzca el campo Otro'),'Error','Error');
return
else
g = char(g);
end
a = strcat (a,b,d,e,f,g);
PROSECA_Imagen;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a b d e f g
a = get(handles.edit1,'String');
if isempty(a)
msgbox(sprintf('Introduzca el campo Proyecto'),'Error','Error');
return
APENDICE. CODIGO DEL PROGRAMA:
155
else
a = char(a);
end
b = get(handles.edit2,'String');
if isempty(b)
msgbox(sprintf('Introduzca el campo Estudio'),'Error','Error');
return
else
b = char(b);
end
d = get(handles.edit3,'String');
if isempty(d)
msgbox(sprintf('Introduzca el campo Caso'),'Error','Error');
return
else
d = char(d);
end
e = get(handles.edit4,'String');
if isempty(e)
msgbox(sprintf('Introduzca el campo Corte'),'Error','Error');
return
else
e = char(e);
end
f = get(handles.edit5,'String');
if isempty(f)
APENDICE. CODIGO DEL PROGRAMA:
156
msgbox(sprintf('Introduzca el campo Muestra'),'Error','Error');
return
else
f = char(f);
end
g = get(handles.edit6,'String');
if isempty(g)
msgbox(sprintf('Introduzca el campo Otro'),'Error','Error');
return
else
g = char(g);
end
a = strcat (a,b,d,e,f,g);
PROCESA_DICOM;
%end
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA;
close(gcbf);
APENDICE. CODIGO DEL PROGRAMA:
157
function varargout = Ayuda_ROI(varargin)
% AYUDA_ROI MATLAB code for Ayuda_ROI.fig
% AYUDA_ROI, by itself, creates a new AYUDA_ROI or raises the
existing
% singleton*.
%
% H = AYUDA_ROI returns the handle to a new AYUDA_ROI or the
handle to
% the existing singleton*.
%
% AYUDA_ROI('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in AYUDA_ROI.M with the given input
arguments.
%
% AYUDA_ROI('Property','Value',...) creates a new AYUDA_ROI or
raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before Ayuda_ROI_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to Ayuda_ROI_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
APENDICE. CODIGO DEL PROGRAMA:
158
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Ayuda_ROI
% Last Modified by GUIDE v2.5 15-Feb-2018 10:24:02
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Ayuda_ROI_OpeningFcn, ...
'gui_OutputFcn', @Ayuda_ROI_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Ayuda_ROI is made visible.
function Ayuda_ROI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
APENDICE. CODIGO DEL PROGRAMA:
159
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Ayuda_ROI (see VARARGIN)
c=imread('AyudaProcesaRoi.png');
axes(handles.axes2);
image(c)
axis off
% Choose default command line output for Ayuda_ROI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Ayuda_ROI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Ayuda_ROI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
APENDICE. CODIGO DEL PROGRAMA:
160
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA_ROI;
close(gcbf);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA_ROI
function varargout = PROCESA_DICOM(varargin)
% PROCESA_DICOM MATLAB code for PROCESA_DICOM.fig
% PROCESA_DICOM, by itself, creates a new PROCESA_DICOM or raises
the existing
% singleton*.
APENDICE. CODIGO DEL PROGRAMA:
161
%
% H = PROCESA_DICOM returns the handle to a new PROCESA_DICOM or
the handle to
% the existing singleton*.
%
% PROCESA_DICOM('CALLBACK',hObject,eventData,handles,...) calls
the local
% function named CALLBACK in PROCESA_DICOM.M with the given input
arguments.
%
% PROCESA_DICOM('Property','Value',...) creates a new
PROCESA_DICOM or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before PROCESA_DICOM_OpeningFcn gets called.
An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to PROCESA_DICOM_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help PROCESA_DICOM
% Last Modified by GUIDE v2.5 13-Feb-2018 10:29:52
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
APENDICE. CODIGO DEL PROGRAMA:
162
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @PROCESA_DICOM_OpeningFcn, ...
'gui_OutputFcn', @PROCESA_DICOM_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before PROCESA_DICOM is made visible.
function PROCESA_DICOM_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to PROCESA_DICOM (see VARARGIN)
axes(handles.axes1);
axis off
a=imread('dep.png');
axes(handles.axes2);
APENDICE. CODIGO DEL PROGRAMA:
163
image(a)
axis off
b=imread('unii.png');
axes(handles.axes3);
image(b)
axis off
% Choose default command line output for PROCESA_DICOM
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes PROCESA_DICOM wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = PROCESA_DICOM_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
APENDICE. CODIGO DEL PROGRAMA:
164
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%abrir imagen DICOM y mostrarla por pantalla.
global path I
[path, user_cance]=imgetfile();
if user_cance
msgbox(sprintf('Error'),'Error','Error');
return
end
[I,map]=dicomread(path);
axes(handles.axes1);
imshow(I,map);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% guardar copia de la imagen DICOM
global I map a
name = strcat(a, 'DICOMcopia.dcm');
dicomwrite(I,map,name);
APENDICE. CODIGO DEL PROGRAMA:
165
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global path Info
Info = infoDICOM(path);
workspace; % me abre el wokspace
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% crear una imagen con la imformacion personal borrada //anonimar
global a path
nameanonim = strcat(a, 'Anonima.dcm'); % guardar la copia anonima con
el nombre ROI
dicomanon(path,nameanonim);
workspace; % me abre el wokspace
% --- Executes on button press in pushbutton5.// convertir DICOM to
JGP
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%convertir DICOM a imagen
APENDICE. CODIGO DEL PROGRAMA:
166
global I a
name = strcat(a, 'JPGcopia.jpg');
image = uint8(255* mat2gray(I));
imwrite(image,name,'jpg');
% --- Executes on button press in pushbutton6.// guardar .Mat
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a
save(a);
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global anonima Info a
name = strcat (a,'copia.xls');
xlswrite(name, Info ,'hoja1');
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
APENDICE. CODIGO DEL PROGRAMA:
167
% handles structure with handles and user data (see GUIDATA)
Ayuda_PROCESA_DICOM;
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA;
close(gcbf);
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf);
% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROSECA_Imagen;
APENDICE. CODIGO DEL PROGRAMA:
168
function varargout = Ayuda_PROCESA_DICOM(varargin)
% AYUDA_PROCESA_DICOM MATLAB code for Ayuda_PROCESA_DICOM.fig
% AYUDA_PROCESA_DICOM, by itself, creates a new
AYUDA_PROCESA_DICOM or raises the existing
% singleton*.
%
% H = AYUDA_PROCESA_DICOM returns the handle to a new
AYUDA_PROCESA_DICOM or the handle to
% the existing singleton*.
%
% AYUDA_PROCESA_DICOM('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in AYUDA_PROCESA_DICOM.M with the given
input arguments.
%
% AYUDA_PROCESA_DICOM('Property','Value',...) creates a new
AYUDA_PROCESA_DICOM or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before Ayuda_PROCESA_DICOM_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to Ayuda_PROCESA_DICOM_OpeningFcn
via varargin.
%
APENDICE. CODIGO DEL PROGRAMA:
169
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help
Ayuda_PROCESA_DICOM
% Last Modified by GUIDE v2.5 13-Feb-2018 17:13:29
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Ayuda_PROCESA_DICOM_OpeningFcn,
...
'gui_OutputFcn', @Ayuda_PROCESA_DICOM_OutputFcn,
...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
APENDICE. CODIGO DEL PROGRAMA:
170
% --- Executes just before Ayuda_PROCESA_DICOM is made visible.
function Ayuda_PROCESA_DICOM_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Ayuda_PROCESA_DICOM (see
VARARGIN)
c=imread('AyudaProcesaDICOM.png');
axes(handles.axes1);
image(c)
axis off
% Choose default command line output for Ayuda_PROCESA_DICOM
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Ayuda_PROCESA_DICOM wait for user response (see
UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Ayuda_PROCESA_DICOM_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
APENDICE. CODIGO DEL PROGRAMA:
171
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function varargout = PROSECA_Imagen(varargin)
% PROSECA_IMAGEN MATLAB code for PROSECA_Imagen.fig
% PROSECA_IMAGEN, by itself, creates a new PROSECA_IMAGEN or
raises the existing
% singleton*.
%
% H = PROSECA_IMAGEN returns the handle to a new PROSECA_IMAGEN
or the handle to
% the existing singleton*.
%
% PROSECA_IMAGEN('CALLBACK',hObject,eventData,handles,...) calls
the local
% function named CALLBACK in PROSECA_IMAGEN.M with the given
input arguments.
%
% PROSECA_IMAGEN('Property','Value',...) creates a new
PROSECA_IMAGEN or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before PROSECA_Imagen_OpeningFcn gets
APENDICE. CODIGO DEL PROGRAMA:
172
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to PROSECA_Imagen_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help PROSECA_Imagen
% Last Modified by GUIDE v2.5 12-Feb-2018 11:05:42
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @PROSECA_Imagen_OpeningFcn, ...
'gui_OutputFcn', @PROSECA_Imagen_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
APENDICE. CODIGO DEL PROGRAMA:
173
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before PROSECA_Imagen is made visible.
function PROSECA_Imagen_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to PROSECA_Imagen (see VARARGIN)
axes(handles.axes1);%//pantalla Region a procesar.
axis off
axes(handles.axes2);%//pantalla Imagen Original.
axis off
a=imread('dep.png');
axes(handles.axes3);
image(a)
axis off
b=imread('unii.png');
axes(handles.axes4);
image(b)
axis off
% Choose default command line output for PROSECA_Imagen
handles.output = hObject;
APENDICE. CODIGO DEL PROGRAMA:
174
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes PROSECA_Imagen wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = PROSECA_Imagen_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton2.// elegir la region
diagonal.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%%global im4
%%im4= imcrop;
global im im4
%Captura una regi?n
h=impoly; %Captura una regi?n
APENDICE. CODIGO DEL PROGRAMA:
175
resume(h); %reasume ejecucion
%Crear la nm?scara
maskImage = createMask(h)
%%whos maskImage
% Mask the image with the ellipse.
%im4 = im.* cast(maskImage, class(im));
im4 = im.* cast(maskImage, class(im));
%axes(handles.axes2);
imshow(im4,'Parent',handles.axes1);
guidata(hObject,handles);
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im im3
a = handles.edit9 ;
%set(handles.text2,'string',a);
[x,y]=ginput(1);
%im3 =im (x-(a/2):x+(a/2)-1,y-(a/2):y+(a/2)-1);
im3 =im (x-(a/2):x+(a/2),y-(a/2):y+(a/2));
%im3 =im (x-50:x+50,y-50:y+50);
imshow(im3,'Parent',handles.axes1);
%Pixel = impixel;
guidata(hObject,handles);
APENDICE. CODIGO DEL PROGRAMA:
176
% --- Executes on button press in pushbutton4.// Abrir imagen
original.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im im2
[path, user_cance]=imgetfile();
if user_cance
msgbox(sprintf('Error'),'Error','Error');
return
end
im=imread(path);
im=im2double(im); %convercion a double
im2=im; % para procesarla luego.
axes(handles.axes2);
imshow(im2);
guidata(hObject,handles);
% --- Executes on button press in pushbutton5.// guardar imagen
original .
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im2
%rgb = getimage(handles.axes2);
%if isempty(rgb),return,end
%formatos = {'*.jpg','JPG(*.jpg)';'*.tif,TIF(*.tif)'};
APENDICE. CODIGO DEL PROGRAMA:
177
[nomb,ruta]= uiputfile('*.jpg','GUARDAR IMAGEN');
%if nomb == 0 , return , end ;
fName = fullfile(ruta,nomb);
%imwrite(rgb,fName);
imwrite(im2,fName);
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%errordlg('Haga 2 click para medir distancia (doble click para
terminar)...','Aviso');
%return;
while 1
%errordlg('Haga 2 click para medir distancia (doble click para
terminar)...','Aviso');
%disp('Haga 2 click para medir distancia (doble click para
terminar)...');
[x y]=ginput(2);
x1=x(1);x2=x(2);
y1=y(1);y2=y(2);
if (x1==x2) & (y1==y2), break;end;
d=sqrt((x1-x2)^2+(y1-y2)^2);
Xmm=d*0.264;
val = num2str(Xmm);
APENDICE. CODIGO DEL PROGRAMA:
178
set (handles.edit3,'string',val);
% disp( 'la distacia entre los dos puntos seleccionados en mm es = '
);
% disp(Xmm);
end;
% --- Executes on button press in pushbutton7.// se procesa 100
funcion
% para imagen
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im5 Region med medi mod desv exp log raizCuad transp inve
deter
global rang sDiag vsingular cond rcond normm normC normF mredesc
coecorr
global f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18
f19 f20 f21 f22 f23 f24 f25 f26
global f27 f28 f29 f30 f31 f32 f33 f34 f35 f36 f37 f38 f39 f40 f41 f42
f43 f44 f45 f46 f47 f48 f49 f50
global f51 f52 f53 f54 f55 f56 f57 f58 f59 f60 f61 f62 f63 f64 f65 f66
f67 f68 f69 f70 f71 f72 f73 f74
global f75 f76 f77 f78 f79 f80
Region = getimage(handles.axes1);
im5=im2double(Region);
workspace; % me abre el wokspace
APENDICE. CODIGO DEL PROGRAMA:
179
med = media(im5);
medi =mediana(im5);
mod = moda(im5);
desv = desviacionEstadistica(im5);
exp = exponencial(im5);
log = logaritmoNeperiano(im5);
raizCuad =raizCuadrada(im5);
transp =transpuesta(im5);
inve =inversa(im5);
deter =Determinante(im5);
rang =rango(im5);
sDiag =sumaDiagonal(im5);
vsingular =valoresSingulares(im5);
cond =condicion(im5);
rcond =reciprocoCondicion(im5);
normm =norma(im5);
normC =mayorSumaColumnas(im5);
normF =mayorSumaFilas(im5);
mredesc =mReducidaEscalonada(im5);
coecorr =coeficientesCorrelacion(im5);
f1 = funcion_1(im5);
f2 = funcion_f2(im5);
f3 = funcion_f3(im5);
f4 = funcion_f4(im5);
f5 = funcion_f5(im5);
f6 = funcion_f6(im5);
f7 = funcion_f7(im5);
f8 = funcion_f8(im5);
f9 = funcion_f9(im5);
f10 = funcion_f10(im5);
f11 = funcion_f11(im5);
APENDICE. CODIGO DEL PROGRAMA:
180
f12 = funcion_f12(im5);
f13 = funcion_f13(im5);
f14 = funcion_f14(im5);
f15 = funcion_f15(im5);
f16 = funcion_f16(im5);
f17 = funcion_f17(im5);
f18 = funcion_f18(im5);
f19 = funcion_f19(im5);
f20 = funcion_f20(im5);
f21 = funcion_f21(im5);
f22 = funcion_f22(im5);
f23 = funcion_f23(im5);
f24 = funcion_f24(im5);
f25 = funcion_f25(im5);
f26 = funcion_f26(im5);
f27 = funcion_f27(im5);
f28 = funcion_f28(im5);
f29 = funcion_f29(im5);
f30 = funcion_f30(im5);
f31 = funcion_f31(im5);
f32 = funcion_f32(im5);
f33= funcion_f33(im5);
f34= funcion_f34(im5);
f35= funcion_f35(im5);
f36= funcion_f36(im5);
f37= funcion_f37(im5);
f38= funcion_f38(im5);
f39= funcion_f39(im5);
f40= funcion_f40(im5);
f41= funcion_f41(im5);
f42= funcion_f42(im5);
APENDICE. CODIGO DEL PROGRAMA:
181
f43= funcion_f43(im5);
f44= funcion_f44(im5);
f45= funcion_f45(im5);
f46= funcion_f46(im5);
f47= funcion_f47(im5);
f48= funcion_f48(im5);
f49= funcion_f49(im5);
f50= funcion_f50(im5);
f51= funcion_f51(im5);
f52= funcion_f52(im5);
f53= funcion_f53(im5);
f54= funcion_f54(im5);
f55= funcion_f55(im5);
f56= funcion_f56(im5);
f57= funcion_f57(im5);
f58= funcion_f58(im5);
f59= funcion_f59(im5);
f60= funcion_f60(im5);
f61= funcion_f61(im5);
f62= funcion_f62(im5);
f63= funcion_f63(im5);
f64= funcion_f64(im5);
f65= funcion_f65(im5);
f66= funcion_f66(im5);
f67= funcion_f67(im5);
f68= funcion_f68(im5);
f69= funcion_f69(im5);
f70= funcion_f70(im5);
f71= funcion_f71(im5);
f72= funcion_f72(im5);
f73= funcion_f73(im5);
APENDICE. CODIGO DEL PROGRAMA:
182
f74= funcion_f74(im5);
f75= funcion_f75(im5);
f76= funcion_f76(im5);
f77= funcion_f77(im5);
f78= funcion_f78(im5);
f79= funcion_f79(im5);
f80= funcion_f80(im5);
% --- Executes on button press in pushbutton8.// guardar la region
elegida
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im3
%rgb = getimage(handles.axes2);
%if isempty(rgb),return,end
%formatos = {'*.jpg','JPG(*.jpg)';'*.tif,TIF(*.tif)'};
[nomb,ruta]= uiputfile('*.jpg','GUARDAR IMAGEN');
%if nomb == 0 , return , end ;
fName = fullfile(ruta,nomb);
%imwrite(rgb,fName);
imwrite(im3,fName);
APENDICE. CODIGO DEL PROGRAMA:
183
% --- Executes on button press in pushbutton9.// guardar el Workspace
en
% .mat
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a
save(a);
% --- Executes on button press in pushbutton10.// guardar los
resultados
% del workspace en xls file
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a med medi mod desv exp log raizCuad transp inve deter
global rang sDiag vsingular cond rcond normm normC normF mredesc
coecorr
global f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18
f19 f20 f21 f22 f23 f24 f25 f26
global f27 f28 f29 f30 f31 f32 f33 f34 f35 f36 f37 f38 f39 f40 f41 f42
f43 f44 f45 f46 f47 f48 f49 f50
global f51 f52 f53 f54 f55 f56 f57 f58 f59 f60 f61 f62 f63 f64 f65 f66
f67 f68 f69 f70 f71 f72 f73 f74
global f75 f76 f77 f78 f79 f80
%S= whos;
%i=0;
%xslfilename = 'CCCsavedFile.xslx';
APENDICE. CODIGO DEL PROGRAMA:
184
%xslfilename = 'EEEEEEEEEsavedFile.xls';
%for ii = 1:numel(S);
% i=i+1;
% cmd =sprintf('xslwrite(xslfilename,%s,''%s'');',S(ii).name
,S(ii).name);
% xlswrite(xslfilename,S(ii));
%end
%i=1;
name = strcat (a,'copia.xls');
xlswrite(name, med ,'hoja1');
xlswrite(name, medi ,'hoja2');
xlswrite(name, mod ,'hoja3');
xlswrite(name, desv ,'hoja4');
xlswrite(name, exp ,'hoja5');
xlswrite(name, log ,'hoja6');
xlswrite(name, raizCuad ,'hoja7');
xlswrite(name, transp ,'hoja8');
xlswrite(name, inve ,'hoja9');
xlswrite(name, deter ,'hoja10');
xlswrite(name, rang ,'hoja11');
xlswrite(name, sDiag ,'hoja12');
xlswrite(name, vsingular ,'hoja13');
xlswrite(name, cond ,'hoja14');
xlswrite(name, rcond ,'hoja15');
xlswrite(name, normm ,'hoja16');
xlswrite(name, normC ,'hoja17');
xlswrite(name, normF ,'hoja18');
xlswrite(name, mredesc ,'hoja19');
APENDICE. CODIGO DEL PROGRAMA:
185
xlswrite(name, coecorr ,'hoja20');
xlswrite(name, f1 ,'hoja21');
xlswrite(name, f2 ,'hoja22');
xlswrite(name, f3 ,'hoja23');
xlswrite(name, f4 ,'hoja24');
xlswrite(name, f5 ,'hoja25');
xlswrite(name, f6 ,'hoja25');
xlswrite(name, f7 ,'hoja26');
xlswrite(name, f8 ,'hoja27');
xlswrite(name, f9 ,'hoja28');
xlswrite(name, f10 ,'hoja29');
xlswrite(name, f11,'hoja30');
xlswrite(name, f12 ,'hoja31');
xlswrite(name, f13 ,'hoja32');
xlswrite(name, f14 ,'hoja33');
xlswrite(name, f15 ,'hoja34');
xlswrite(name, f16 ,'hoja35');
xlswrite(name, f17 ,'hoja36');
xlswrite(name, f18 ,'hoja37');
xlswrite(name, f19 ,'hoja38');
xlswrite(name, f20 ,'hoja39');
xlswrite(name, f21 ,'hoja40');
xlswrite(name, f22 ,'hoja41');
xlswrite(name, f23 ,'hoja42');
xlswrite(name, f24 ,'hoja43');
xlswrite(name, f25 ,'hoja45');
xlswrite(name, f26 ,'hoja46');
xlswrite(name, f27 ,'hoja47');
xlswrite(name, f28 ,'hoja48');
xlswrite(name, f29 ,'hoja49');
xlswrite(name, f30 ,'hoja50');
APENDICE. CODIGO DEL PROGRAMA:
186
xlswrite(name, f31 ,'hoja51');
xlswrite(name, f32 ,'hoja52');
xlswrite(name, f33 ,'hoja53');
xlswrite(name, f34 ,'hoja54');
xlswrite(name, f35 ,'hoja55');
xlswrite(name, f36 ,'hoja56');
xlswrite(name, f37 ,'hoja57');
xlswrite(name, f38 ,'hoja58');
xlswrite(name, f39 ,'hoja59');
xlswrite(name, f40 ,'hoja60');
xlswrite(name, f41,'hoja61');
xlswrite(name, f42 ,'hoja62');
xlswrite(name, f43 ,'hoja63');
xlswrite(name, f44 ,'hoja64');
xlswrite(name, f45 ,'hoja65');
xlswrite(name, f46 ,'hoja66');
xlswrite(name, f47 ,'hoja67');
xlswrite(name, f48 ,'hoja68');
xlswrite(name, f49 ,'hoja69');
xlswrite(name, f50 ,'hoja70');
xlswrite(name, f51 ,'hoja71');
xlswrite(name, f52,'hoja72');
xlswrite(name, f53,'hoja73');
xlswrite(name, f54,'hoja74');
xlswrite(name, f55,'hoja75');
xlswrite(name, f56,'hoja76');
xlswrite(name, f57,'hoja77');
xlswrite(name, f58,'hoja78');
xlswrite(name, f59,'hoja79');
xlswrite(name, f60,'hoja80');
xlswrite(name, f61,'hoja81');
APENDICE. CODIGO DEL PROGRAMA:
187
xlswrite(name, f62,'hoja82');
xlswrite(name, f63,'hoja83');
xlswrite(name, f64,'hoja84');
xlswrite(name, f65,'hoja85');
xlswrite(name, f66,'hoja86');
xlswrite(name, f67,'hoja87');
xlswrite(name, f68,'hoja88');
xlswrite(name, f69,'hoja89');
xlswrite(name, f70,'hoja90');
xlswrite(name, f71,'hoja91');
xlswrite(name, f72,'hoja92');
xlswrite(name, f73,'hoja93');
xlswrite(name, f74,'hoja94');
xlswrite(name, f75,'hoja95');
xlswrite(name, f76,'hoja96');
xlswrite(name, f77,'hoja97');
xlswrite(name, f78,'hoja98');
xlswrite(name, f79,'hoja99');
xlswrite(name, f80,'hoja100');
% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
APENDICE. CODIGO DEL PROGRAMA:
188
Ayuda_PROCESA_Imagen;
% --- Executes on button press in pushbutton12.
function pushbutton12_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PROCESA;
close(gcbf);
% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf);
function edit1_Callback(hObject, eventdata, handles)%// lctura del
lado
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
APENDICE. CODIGO DEL PROGRAMA:
189
% str2double(get(hObject,'String')) returns contents of edit1
as a double
newStrVal= get(hObject,'String') ;
newVal=str2double(newStrVal);
%COMPROBAMOS QUE LOS DATOS DE ENTRDA SON VALORES NUMERICOS VALIDOS
SINO
% HAY QUE ENSE?AR UN MENSAJE (LOS DATOS NO SON VALIDOS)
if isnan(newVal);
errordlg('Valor incorrecto')
return
end
handles.edit9=newVal ;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
APENDICE. CODIGO DEL PROGRAMA:
190
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2
as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
APENDICE. CODIGO DEL PROGRAMA:
191
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3
as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function varargout = Ayuda_PROCESA_Imagen(varargin)
% AYUDA_PROCESA_IMAGEN MATLAB code for Ayuda_PROCESA_Imagen.fig
% AYUDA_PROCESA_IMAGEN, by itself, creates a new
AYUDA_PROCESA_IMAGEN or raises the existing
% singleton*.
%
% H = AYUDA_PROCESA_IMAGEN returns the handle to a new
AYUDA_PROCESA_IMAGEN or the handle to
% the existing singleton*.
APENDICE. CODIGO DEL PROGRAMA:
192
%
% AYUDA_PROCESA_IMAGEN('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in AYUDA_PROCESA_IMAGEN.M with the
given input arguments.
%
% AYUDA_PROCESA_IMAGEN('Property','Value',...) creates a new
AYUDA_PROCESA_IMAGEN or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before Ayuda_PROCESA_Imagen_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to Ayuda_PROCESA_Imagen_OpeningFcn
via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help
Ayuda_PROCESA_Imagen
% Last Modified by GUIDE v2.5 13-Feb-2018 16:39:14
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Ayuda_PROCESA_Imagen_OpeningFcn,
APENDICE. CODIGO DEL PROGRAMA:
193
...
'gui_OutputFcn', @Ayuda_PROCESA_Imagen_OutputFcn,
...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Ayuda_PROCESA_Imagen is made visible.
function Ayuda_PROCESA_Imagen_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Ayuda_PROCESA_Imagen (see
VARARGIN)
c=imread('AyudaProcesaIMG.png');
axes(handles.axes1);
image(c)
axis off
APENDICE. CODIGO DEL PROGRAMA:
194
% Choose default command line output for Ayuda_PROCESA_Imagen
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Ayuda_PROCESA_Imagen wait for user response (see
UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Ayuda_PROCESA_Imagen_OutputFcn(hObject,
eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function [valoresSingulares]= valoresSingulares(Im)
valoresSingulares = svd(Im) ;
assignin('base', 'valoresSingulares', valoresSingulares );
return;
APENDICE. CODIGO DEL PROGRAMA:
195
function [transpuesta]= transpuesta(Im)
transpuesta = transpose(Im) ;
assignin('base', 'transpuesta', transpuesta );
return;
function [sumaDiagonal]= sumaDiagonal(Im)
sumaDiagonal = trace(Im) ;
assignin('base', 'sumaDiagonal', sumaDiagonal );
return;
function [reciprocoCondicion]= reciprocoCondicion(Im)
reciprocoCondicion = rcond(Im) ;
assignin('base', 'reciprocoCondicion', reciprocoCondicion );
return;
function [rango]= rango(Im)
rango = rank(Im) ;
assignin('base', 'rango', rango );
return;
function [raizCuadrada]= raizCuadrada(Im)
APENDICE. CODIGO DEL PROGRAMA:
196
raizCuadrada = sqrtm(Im) ;
assignin('base', 'raizCuadrada', raizCuadrada );
return;
function [norma]= norma(Im)
norma = norm(Im) ;
assignin('base', 'norma', norma );
return;
function [mReducidaEscalonada]= mReducidaEscalonada(Im)
mReducidaEscalonada = rref(Im) ;
assignin('base', 'mReducidaEscalonada', mReducidaEscalonada );
return;
function [moda]= moda(Im)
moda = mode(Im) ;
assignin('base', 'moda', moda );
return;
function [mediana]= mediana(Im)
mediana = median(Im) ;
assignin('base', 'mediana', mediana );
return;
APENDICE. CODIGO DEL PROGRAMA:
197
function [media]= media(Im)
media = mean(Im) ;
assignin('base', 'media', media );
return;
function [mayorSumaFilas]= mayorSumaFilas(Im)
mayorSumaFilas = norm(Im,inf) ;
assignin('base', 'mayorSumaFilas', mayorSumaFilas );
return;
function [mayorSumaColumnas]= mayorSumaColumnas(Im)
mayorSumaColumnas = norm(Im,1) ;
assignin('base', 'mayorSumaColumnas', mayorSumaColumnas );
return;
function [inversa]= inversa(Im)
inversa = inv(Im) ;
assignin('base', 'inversa', inversa );
return;
function [Determinante]= Determinante(Im)
Determinante = det(Im) ;
assignin('base', 'Determinante', Determinante );
APENDICE. CODIGO DEL PROGRAMA:
198
return;
function [desviacionEstadistica]= desviacionEstadistica(Im)
desviacionEstadistica = std(Im) ;
assignin('base', 'desviacionEstadistica', desviacionEstadistica );
return;
function [condicion]= condicion(Im)
condicion = cond(Im) ;
assignin('base', 'condicion', condicion );
return;
function [coeficientesCorrelacion]= coeficientesCorrelacion(Im)
coeficientesCorrelacion = corrcoef(Im) ;
assignin('base', 'coeficientesCorrelacion', coeficientesCorrelacion
);
return;
function [funcion_f80]= funcion_f80(Im)
funcion_f80 = -1 ;
assignin('base', 'funcion_f80', funcion_f80 );
return;
function [funcion_f79]= funcion_f79(Im)
APENDICE. CODIGO DEL PROGRAMA:
199
funcion_f79 = -1 ;
assignin('base', 'funcion_f79', funcion_f79 );
return;
function [funcion_f78]= funcion_f78(Im)
funcion_f78 = -1 ;
assignin('base', 'funcion_f78', funcion_f78 );
return;
function [funcion_f77]= funcion_f77(Im)
funcion_f77 = -1 ;
assignin('base', 'funcion_f77', funcion_f77 );
return;
function [funcion_f76]= funcion_f76(Im)
funcion_f76 = -1 ;
assignin('base', 'funcion_f76', funcion_f76 );
return;
function [funcion_f75]= funcion_f75(Im)
funcion_f75 = -1 ;
assignin('base', 'funcion_f75', funcion_f75 );
return;
function [funcion_f74]= funcion_f74(Im)
funcion_f74 = -1 ;
assignin('base', 'funcion_f74', funcion_f74 );
return;
APENDICE. CODIGO DEL PROGRAMA:
200
function [funcion_f73]= funcion_f73(Im)
funcion_f73 = -1 ;
assignin('base', 'funcion_f73', funcion_f73 );
return;
function [funcion_f72]= funcion_f72(Im)
funcion_f72 = -1 ;
assignin('base', 'funcion_f72', funcion_f72 );
return;
function [funcion_f71]= funcion_f71(Im)
funcion_f71 = -1 ;
assignin('base', 'funcion_f71', funcion_f71 );
return;
function [funcion_f70]= funcion_f70(Im)
funcion_f70 = -1 ;
assignin('base', 'funcion_f70', funcion_f70 );
return;
function [funcion_f69]= funcion_f69(Im)
funcion_f69 = -1 ;
assignin('base', 'funcion_f69', funcion_f69 );
return;
function [funcion_f68]= funcion_f68(Im)
funcion_f68 = -1 ;
assignin('base', 'funcion_f68', funcion_f68 );
return;
APENDICE. CODIGO DEL PROGRAMA:
201
function [funcion_f67]= funcion_f67(Im)
funcion_f67 = -1 ;
assignin('base', 'funcion_f67', funcion_f67 );
return;
function [funcion_f66]= funcion_f66(Im)
funcion_f66 = -1 ;
assignin('base', 'funcion_f66', funcion_f66 );
return;
function [funcion_f65]= funcion_f65(Im)
funcion_f65 = -1 ;
assignin('base', 'funcion_f65', funcion_f65 );
return;
function [funcion_f64]= funcion_f64(Im)
funcion_f64 = -1 ;
assignin('base', 'funcion_f64', funcion_f64 );
return;
function [funcion_f63]= funcion_f63(Im)
funcion_f63 = -1 ;
assignin('base', 'funcion_f63', funcion_f63 );
return;
APENDICE. CODIGO DEL PROGRAMA:
202
function [funcion_f62]= funcion_f62(Im)
funcion_f62 = -1 ;
assignin('base', 'funcion_f62', funcion_f62 );
return;
function [funcion_f61]= funcion_f61(Im)
funcion_f61 = -1 ;
assignin('base', 'funcion_f61', funcion_f61 );
return;
function [funcion_f60]= funcion_f60(Im)
funcion_f60 = -1 ;
assignin('base', 'funcion_f60', funcion_f60 );
return;
function [funcion_f59]= funcion_f59(Im)
funcion_f59 = -1 ;
assignin('base', 'funcion_f59', funcion_f59 );
return;
function [funcion_f58]= funcion_f58(Im)
funcion_f58 = -1 ;
assignin('base', 'funcion_f58', funcion_f58 );
APENDICE. CODIGO DEL PROGRAMA:
203
return;
function [funcion_f57]= funcion_f57(Im)
funcion_f57 = -1 ;
assignin('base', 'funcion_f54', funcion_f57 );
return;
function [funcion_f56]= funcion_f56(Im)
funcion_f56 = -1 ;
assignin('base', 'funcion_f56', funcion_f56 );
return;
function [funcion_f55]= funcion_f55(Im)
funcion_f55 = -1 ;
assignin('base', 'funcion_f55', funcion_f55 );
return;
function [funcion_f54]= funcion_f54(Im)
funcion_f54 = -1 ;
assignin('base', 'funcion_f54', funcion_f54 );
return;
function [funcion_f53]= funcion_f53(Im)
funcion_f53 = -1 ;
assignin('base', 'funcion_f53', funcion_f53 );
return;
APENDICE. CODIGO DEL PROGRAMA:
204
function [funcion_f52]= funcion_f52(Im)
funcion_f52 = -1 ;
assignin('base', 'funcion_f52', funcion_f52 );
return;
function [funcion_f51]= funcion_f51(Im)
funcion_f51 = -1 ;
assignin('base', 'funcion_f51', funcion_f51 );
return;
function [funcion_f50]= funcion_f50(Im)
funcion_f50 = -1 ;
assignin('base', 'funcion_f50', funcion_f50 );
return;
function [funcion_f49]= funcion_f49(Im)
funcion_f49 = -1 ;
assignin('base', 'funcion_f48', funcion_f49 );
return;
function [funcion_f48]= funcion_f48(Im)
funcion_f48 = -1 ;
assignin('base', 'funcion_f48', funcion_f48 );
return;
APENDICE. CODIGO DEL PROGRAMA:
205
function [funcion_f47]= funcion_f47(Im)
funcion_f47 = -1 ;
assignin('base', 'funcion_f47', funcion_f47 );
return;
function [funcion_f46]= funcion_f46(Im)
funcion_f46 = -1 ;
assignin('base', 'funcion_f46', funcion_f46 );
return;
function [funcion_f45]= funcion_f45(Im)
funcion_f45 = -1 ;
assignin('base', 'funcion_f45', funcion_f45 );
return;
function [funcion_f44]= funcion_f44(Im)
funcion_f44 = -1 ;
assignin('base', 'funcion_1', funcion_f44 );
return;
function [funcion_f42]= funcion_f42(Im)
funcion_f42 = -1 ;
assignin('base', 'funcion_f42', funcion_f42 );
return;
APENDICE. CODIGO DEL PROGRAMA:
206
function [funcion_f41]= funcion_f41(Im)
funcion_f41 = -1 ;
assignin('base', 'funcion_f41', funcion_f41 );
return;
function [funcion_f40]= funcion_f40(Im)
funcion_f40 = -1 ;
assignin('base', 'funcion_f40', funcion_f40 );
return;
function [funcion_f39]= funcion_f39(Im)
funcion_f39 = -1 ;
assignin('base', 'funcion_f39', funcion_f39 );
return;
function [funcion_f38]= funcion_f38(Im)
funcion_f38 = -1 ;
assignin('base', 'funcion_f38', funcion_f38 );
return;
function [funcion_f37]= funcion_f37(Im)
funcion_f37 = -1 ;
assignin('base', 'funcion_f37', funcion_f37 );
return;
APENDICE. CODIGO DEL PROGRAMA:
207
function [funcion_f36]= funcion_f36(Im)
funcion_f36 = -1 ;
assignin('base', 'funcion_f36', funcion_f36 );
return;
function [funcion_f35]= funcion_f35(Im)
funcion_f35 = -1 ;
assignin('base', 'funcion_f35', funcion_f35 );
return;
function [funcion_f34]= funcion_f34(Im)
funcion_f34 = -1 ;
assignin('base', 'funcion_f34', funcion_f34 );
return;
function [funcion_f33]= funcion_f33(Im)
funcion_f33 = -1 ;
assignin('base', 'funcion_f33', funcion_f33 );
return;
function [funcion_f32]= funcion_f32(Im)
funcion_f32 = -1 ;
assignin('base', 'funcion_f32', funcion_f32 );
return;
APENDICE. CODIGO DEL PROGRAMA:
208
function [funcion_f31]= funcion_f31(Im)
funcion_f31 = -1 ;
assignin('base', 'funcion_f31', funcion_f31 );
return;
function [funcion_f30]= funcion_f30(Im)
funcion_f30 = -1 ;
assignin('base', 'funcion_f30', funcion_f30 );
return;
function [funcion_f29]= funcion_f29(Im)
funcion_f29 = -1 ;
assignin('base', 'funcion_f29', funcion_f29 );
return;
function [funcion_f28]= funcion_f28(Im)
funcion_f28 = -1 ;
assignin('base', 'funcion_f12', funcion_f28 );
return;
APENDICE. CODIGO DEL PROGRAMA:
209
function [funcion_f27]= funcion_f27(Im)
funcion_f27 = -1 ;
assignin('base', 'funcion_f12', funcion_f27 );
return;
function [funcion_f26]= funcion_f26(Im)
funcion_f26 = -1 ;
assignin('base', 'funcion_f26', funcion_f26 );
return;
function [funcion_f25]= funcion_f25(Im)
funcion_f25 = -1 ;
assignin('base', 'funcion_f25', funcion_f25 );
return;
function [funcion_f24]= funcion_f24(Im)
funcion_f24 = -1 ;
assignin('base', 'funcion_f24', funcion_f24 );
return;
function [funcion_f23]= funcion_f23(Im)
funcion_f23 = -1 ;
assignin('base', 'funcion_f12', funcion_f23 );
return;
function [funcion_f22]= funcion_f22(Im)
APENDICE. CODIGO DEL PROGRAMA:
210
funcion_f22 = -1 ;
assignin('base', 'funcion_f22', funcion_f22 );
return;
function [funcion_f21]= funcion_f21(Im)
funcion_f21 = -1 ;
assignin('base', 'funcion_f21', funcion_f21 );
return;
function [funcion_f20]= funcion_f20(Im)
funcion_f20 = -1 ;
assignin('base', 'funcion_f20', funcion_f20 );
return;
% step 1 I = imread ('rice.png'); imshow (I); % step 2 background = imopen (I , strel ('disk',15)); % step 3 figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]); set (gca , 'ydir' , 'reverse'); % step 4 I2 = I - background; figure , imshow (I2); % step 5 I3= imadjust(I2); figure , imshow(I3); % step 6 level = graythresh(I3); bw = im2bw (I3,level); bw = bwareaopen(bw,50); figure , imshow (bw);
APENDICE. CODIGO DEL PROGRAMA:
211
% step 7 cc = bwconncomp(bw,4); cc.NumObjects; % step 8 grain = false(size(bw)); grain(cc.PixelIdxList{50})= true; figure,imshow(grain); % step 9 labeled = labelmatrix(cc); RGB_label = label2rgb(labeled,@spring, 'c' ,'shuffle'); figure , imshow(RGB_label); % step 10 graindata = regionprops (cc , 'basic'); graindata(50).Area; % step 11 grain_areas = [graindata.Area]; [min_area,idx] = min(grain_areas); grain = false(size(bw)); grain(cc.PixelIdxList{idx}) = true; figure, imshow(grain); % step 12 nbins = 20; figure, hist(grain_areas , nbins) title('Histograma del area de granos de arroz');