You are on page 1of 20

Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 1

UNIDAD 2- FASE 3 - IMPLEMENTAR CLASIFICADORES Y ENTRENAMIENTO DE MÁQUINAS

ESCUELA DE CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA ECBTI

 dinámico, en este se realiza un seguimiento de la velocidad y


Presentado por dirección de desplazamiento de píxeles de la imagen, entre las
SERGIO ANDRÉS MURCIA GARZÓN técnicas más empleadas se tiene el flujo óptico
DANIEL ALFREDO CASTILLO Entre las características faciales a extraer se pueden distinguir
ORLANDO RODRÍGUEZ dos tipos: las transitorias que abarcan diferentes clases de
CRISTIAN CAMILO HENAO arrugas y abultamientos y se producen debido a las
expresiones faciales y las no transitorias, que siempre están
presentes en el rostro, entre ellas se encuentran los ojos, las
I. INTRODUCTION cejas y la boca, y a diferencia de las primeras siempre están
presentes en las expresiones faciales.
N el siguiente trabajo daremos a conocer como identificar
Entre estos estudios los primeros trabajos fueron realizados
Elas características más relevantes del procesamiento de las
por Essa, Yaccob quienes utilizaron flujo óptico para seguir
imágenes para realizar y obtener la mejor clasificación con los movimientos de características faciales, Yaccob por
una precisión y exactitud adecuada de verdaderos positivos, ejemplo presenta los resultados de acuerdo a la categoría de
además de brindar información básica sobre extracción de emoción reconocida, así: 86% para alegría, 94% sorpresa,
característica clasificación de imágenes identificación de tipos 92% enojo, 86% temor, 80% tristeza y 92% para disgusto.
o grupos de imágenes Trabajos más recientes han sido reportados por Littlewort
quien comparó diferentes técnicas, obteniendo los mejores
II. OBJETIVOS resultados con filtros Gabor usando AdaBoost y SVM
 Implementar los códigos para obtener la extracción de alcanzando un 93% para el reconocimiento de 7 categorías
características de una imagen. básicas.
 Implementar los códigos para poder obtener y realizar la El reconocimiento automático de FACS por medio de
clasificación de imágenes. unidades de acción (AUs) es un problema de mayor dificultad
y relativamente pocos trabajos se han reportado . Los trabajos
Implementar, investigar, mostrar e identificar tipos o grupos
de Essa describen patrones de flujo óptico que corresponden a
de imágenes.
distintas AUs pero no realiza el reconocimiento de estas.
Bartlett y Donato han realizado pruebas extensivas en el
reconocimiento de AUs de la parte superior e inferior del
III. ANEXO 1 1 PREGUNTAS COLABORATIVO rostro, usando secuencias de imágenes, alcanzando un 90.9%
de reconocimiento para 6 AUs superiores combinando un
a. ¿Qué es extracción de características en una imagen? análisis espacial holístico con características locales de flujo
óptico, en otras ocasiones realizan una comparación de
R/ Existen muchas técnicas para la extracción de diferentes técnicas y muestran que los mejores resultados los
características pero estas características o emociones se obtienen por medio de una representación wavelet Gabor y por
clasifican en emociones universales básicas, alegría, tristezas, una representación ICA alcanzando un 95.5% de
miedo, disgusto y enojo todos estos estados producen una reconocimiento de 6 AUs superiores, 2 inferiores y 4
expresión facial y que su a vez puede ser codificada a lo que combinaciones de AUs.
llamamos FACS: Los FACS proporciona el poder descriptivo
necesario para representar los detalles de la expresión facial b. ¿Qué es un clasificador de umbral?
La extracción de características en imágenes y secuencias de
imágenes faciales, consiste en extraer información asociada R/ Los métodos del valor umbral son un grupo de algoritmos
con la activación de los diferentes músculos del rostro, esta cuya finalidad es segmentar gráficos rasterizados, es decir
tarea puede realizarse en forma global u holística en donde se separar los objetos de una imagen que nos interesen del resto.
analiza el rostro como un solo conjunto o localmente en donde Con la ayuda de los métodos de valor umbral en las
se seleccionan regiones de interés del rostro como ojos cejas y situaciones más sencillas se puede decidir qué píxeles
boca. conforman los objetos que buscamos y qué píxeles son sólo el
Adicionalmente los métodos de extracción de características entorno de estos objetos. Este método es especialmente útil
faciales se pueden clasificar de acuerdo a su enfoque en: para separar el texto de un documento del fondo de la imagen
características faciales de movimiento o deformaciones del (papel amarillento, con manchas y arruguitas por ejemplo) y
rostro. Al análisis de movimiento se le denomina análisis así poder llevar a cabo el reconocimiento óptico de texto
(OCR) con más garantías de obtener el texto correcto. Esto es
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 2

especialmente útil si queremos digitalizar libros antiguos, en R/ Las máquinas de soporte vectorial, máquinas de vectores
los que el contraste entre el texto (que ya ha perdido parte de de soporte o máquinas de vector soporte (Support Vector
sus pigmentos) y el papel (oscurecido y manoseado) no es Machines, SVMs) son un conjunto
demasiado elevado. de algoritmos de aprendizaje supervisado desarrollados
Como con todos los métodos de segmentación se trata de por Vladimir Vapnik y su equipo en los laboratorios AT&T.
asignar cada píxel a un cierto grupo, llamado comúnmente
Estos métodos están propiamente relacionados con problemas
"segmento". La imagen que se debe segmentar, como de clasificación y regresión. Dado un conjunto de ejemplos de
cualquier gráfico rasterizado, está compuesta por valores entrenamiento (de muestras) podemos etiquetar las clases y
numéricos (uno o más valores de color para cada píxel). La entrenar una SVM para construir un modelo que prediga la
pertenencia de un píxel a un cierto segmento se decide clase de una nueva muestra. Intuitivamente, una SVM es un
mediante la comparación de su nivel de gris (u otro valor modelo que representa a los puntos de muestra en el espacio,
unidimensional) con un cierto valor umbral. El nivel de gris de separando las clases a 2 espacios lo más amplios posibles
un píxel equivale a su nivel de luminosidad; el resto de la mediante un hiperplano de separación definido como el vector
información sobre el color no se tiene en cuenta. Dado que entre los 2 puntos, de las 2 clases, más cercanos al que se
esta comparación de valores se realiza individualmente para llama vector soporte. Cuando las nuevas muestras se ponen en
cada píxel, al método del valor umbral se le considera un correspondencia con dicho modelo, en función de los espacios
método de segmentación orientado a píxeles. a los que pertenezcan, pueden ser clasificadas a una o la otra
clase.
c. ¿Qué es un clasificador supervisado y no supervisado
en imágenes? e. ¿Qué y cuáles tipos de kernels tiene una SVM?
R/ Una Máquina de Soporte Vectorial (SVM) aprende la
R/ La clasificación supervisada se basa en la disponibilidad de superficie decisión de dos clases distintas de los puntos de
áreas de entrenamiento. . Se trata de áreas de las que se conoce entrada. Como un clasificador de una sola clase, la descripción
a priori la clase a la que pertenecen y que servirán para
dada por los datos de los vectores de soporte es capaz de
generar una signatura espectral característica de cada una de
formar una frontera de decisión alrededor del dominio de los
las clases. Se denominan clases informacionales. Estas deben
ser áreas lo más homogéneas posibles y en las que sepamos lo datos de aprendizaje con muy poco o ningún conocimiento de
que había el día que se tomó la imagen. Por ello esta operación los datos fuera de esta frontera. Los datos son mapeados por
se realiza el mismo día en el que el satélite toma la imagen y medio de un kernel Gaussiano u otro tipo de kernel a un
luego se compra esta. Otra posibilidad es utilizar fotografía espacio de características en un espacio dimensional más alto,
aérea o información de otro tipo. donde se busca la máxima separación entre clases. Esta
En la clasificación no supervisada no se establece ninguna función de frontera, cuando es traída de regreso al espacio de
clase a priori, aunque es necesario determinar el número de entrada, puede separar los datos en todas las clases distintas,
clases que queremos establecer, y se utilizan algoritmos cada una formando un agrupamiento.
matemáticos de clasificación automática. Los más comunes Las SVM tienen los siguientes tipos de kernel:
son los algoritmos de clustering que divide el espacio de las
 Polinomial-homogénea:𝐾(𝑋𝑗, 𝑋𝑗 ) = (𝑋𝑗 ∗ 𝑋𝑗 )𝑛
variables en una serie de regiones de manera que se minimice
la variabilidad interna de los pixeles incluidos en cada región.
El procedimiento consta de una serie de pasos, en cada paso se
identifican los dos individuos más próximos, se hace una clase
con ellos y se sustituyen por el centro de la clase resultante.
De este modo cada paso analiza un individuo menos que el
anterior ya que los individuos van siendo sustituidos por
clases. El proceso se detiene cuando se ha alcanzado un
número de clases igual al número de clases que había sido
establecido a priori.
El resultado final de un proceso de clustering suele ser un
dendrograma en el que puede verse como los diversos  Perceptron:𝐾(𝑋𝑗, 𝑋𝑗 ) = ||𝑋𝑗 − 𝑋𝑗 ||
individuos se aglutinan en clases, primero los que están a un
menor distancia (los más parecidos), y como posteriormente
las clases se unen entre si. A partir de un dendrograma
podemos elegir el número de clases que queremos mantener
en función de diferentes criterios.

d. ¿Qué es máquina de soporte vectorial?


Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 3

 Función de base radial Gaussiana: separado por un


hiperplano en el espacio transformado.
𝐾(𝑋𝑗, 𝑋𝑗 ) = exp⁡(−(𝑋𝑗 − 𝑋𝑗 )2 /2(𝑠𝑖𝑔𝑚𝑎)2 )

PARTE INDIVIDUAL IMPLEMENTACION CODIGOS


SERGIO MURCIA
Implementación de los siguientes códigos Resultados obtenidos al implementar el código.
Procedimiento (Experimento) – Parte Individual: Imagen Enferma 1
Desarrolle el siguiente código en el script de Matlab.
(Asegúrese de estar trabajando en la carpeta que ya se ha
creado). Para esta unidad el estudiante debe seleccionar 3
imágenes enfermas y 3 imágenes sanas (la base de datos será
proporcionada por el tutor, por favor, solicitarla por correo
interno) .
El código a utilizar es el que ya se implementó en la fase 2, en
el ejercicio 2.1. La combinación de numpixel y umbral, debe
ser única para las 6 imágenes y debe ser la que detecte por lo
menos el 70% del “tumor” en las 3 imágenes enfermas. Es
decir, el estudiante no debe hacer un código por cada imagen,
sino un código para todas las imágenes proporcionadas por el
tutor.
Nota: Si no está trabajando en la carpeta donde se encuentra
la imagen guardada, al realizar el código le saldrá error.
Imagen Enferma 2
Código implementado Matlab
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 4

Imagen Sana3
Imagen Enferma 3

a. Explique cada línea de código.


 cerebro=imread('enferma1.jpg');

“lee la imagen especificada”


 cerebro=im2double(cerebro);

“Convertir imagen a doble precisión”


 figure;

“crea una nueva ventana de figura (figura1)”


 imshow(cerebro)

“muestra la imagen resultante”


 umbral=0.50

“asigna valor de umbral”


Imagen Sana1  bincerebro=im2bw(cerebro,umbral);

Permite convertir la imagen en escala de grises a una imagen


binaria
 numpixels=300;

“asigna numero de pixeles a la imagen”


 filtro1=bwareaopen(bincerebro,numpixels);

“aplica filtro eliminando los objetos pequeños de la imagen”


 imshow(filtro1)

“muestra la imagen resultante”


 se3=strel('line',8,3);
Imagen Sana2
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 5

“representa un elemento estructurante morfológico plano, que Imagen


es una parte esencial de las operaciones de dilatación y erosión enferma 7 17324 656 1
morfológicas” 1
 dilatacion1=imdilate(Filtro1,se3); Imagen
enferma 7 38814 813 1
“dilata la escala de grises, binario, o una imagen binaria lleno 2
“x”, volviendo la imagen dilatada “y” Imagen
 [Lo num]=bwlabel(Filtro1); enferma 2 20708 5829 1
3
Se utiliza para contar los objetos que contiene la imagen
después de binarizada” Imagen
5 36855 849 0
 prop=regionprops(Lo); sana 1
Imagen
“Devuelve mediciones para el conjunto de propiedades 1 21048 21048 0
sana 2
especificadas por propiedades para cada componente
conectado (objeto) en la imagen binaria, BW” Imagen
1 17189 17189 0
b. ¿Cómo funciona y que datos obtienen de la función sana 3
“bwlabel”?
Imagen Enferma1
R/ Envuelve una matriz L, del mismo tamaño que BW, que
contiene etiquetas para los objetos conectados en BW. puede
tener un valor de 4 u 8, donde 4 especifica objetos conectados
a 4 y 8 objetos conectados a 8; si se omite el argumento, el
valor predeterminado es 8.
c. ¿Qué valor se obtiene en las variables “Lo” y en
“num”?

R/ Los valores que se obtienen tratan de Un mezclador


transfiere el ruido de fase del oscilador local ( LO )
directamente a su salida. Con num establece el tamaño del
grupo de subprocesos disponible para procesar solicitudes a la
función que devuelve la matriz de etiqueta L que contiene
etiquetas para los objetos conectados 8 encontrados en BW. Imagen Enferma2
d. ¿Cómo funciona y que datos obtienen de la función
“regionprops”?

R/ Esta función MATLAB devuelve las medidas para el


conjunto de propiedades especificadas por las propiedades
para cada componente 8 conectado (objeto) en la imagen
binaria, BW.
2.2. Cada estudiante debe obtener las siguientes
características de cada una de 3 imágenes enfermas y de
las 3 imágenes sanas. Las características las debe guardar
en una matriz de Excel donde se tenga la siguiente
información:
Imagen Enferma3
Nota: todas las características deben ser obtenidas del mismo
código, es decir el mismo umbral y el mismo filtro, o crear un
código adaptativo por resolución de imagen. Asegúrese de
hacer el mismo cuadro que se encuentra a continuación en
Excel.

Cantidad
de
Área Área
objetos Clasificación
máxima mínima
en la
imagen
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 6

2.3 Desarrolle el siguiente código en el script de Matlab.


(Asegúrese de estar trabajando en la carpeta que ya se ha
creado).
Nota: Si no está trabajando en la carpeta donde se
encuentra la imagen guardada, al realizar el código le
saldrá error.
Nueva base de datos.
Cantidad de
Área Área
objetos en la Clasificación
máxima mínima
imagen
Imagen
Imagen Sana1 2 69845 1220 1
enferma
6
Imagen
enferma 2 21368 1468 1
7
Imagen
enferma 2 9602 1293 1
8
Imagen
2 14035 1059 0
sana 5
Imagen
3 4188 2416 0
sana 6
Imagen
1 73965 73965 0
Imagen Sana2 sana 7
Código a implementar

Imagen Sana3 Explique cada línea del código.

 datos=xlsread('datos.xlsx');

“lee el archivo de datos”


 caracteristicas=datos(1:end,1:3);

“Define el tamaño del vector en el que él se almacenaran los


datos”
 entrenamiento=datos(1:end,4);

“Se declara la variable”


Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 7

 svmStruct=fitcsvm(caracteristicas,entrenamiento,'Sta Implementación códigos parte individual Orlando


ndardize',true,'Kernel Rodriguez
Function','linear','KernelScale','auto');
Procedimiento (Experimento) – Parte Individual:
“Fitcsvmv entrena o valida de forma cruzada un modelo de
máquina de vectores de una soporte (SVM) para la Desarrolle el siguiente código en el script de Matlab.
clasificación de dos clases (binario) en un conjunto de datos (Asegúrese de estar trabajando en la carpeta que ya se ha
de predictor de dimensión baja o moderada” creado). Para esta unidad el estudiante debe seleccionar 3
 prueba=xlsread('prueba.xlsx'); imágenes enfermas y 3 imágenes sanas sanas (la base de datos
será proporcionada por el tutor, por favor, solicitarla por
“lee el archivo de datos” correo interno)
Resultado implementación del código
El código a utilizar es el que ya se implementó en la fase 2, en
el ejercicio 2.1. La combinación de numpixel y umbral, debe
ser única para las 6 imágenes y debe ser la que detecte por lo
menos el 70% del “tumor” en las 3 imágenes enfermas. Es
decir, el estudiante no debe hacer un código por cada imagen,
sino un código para todas las imágenes proporcionadas por el
tutor.

Nota: Si no está trabajando en la carpeta donde se encuentra la


imagen guardada, al realizar el código le saldrá error

2.4 Clasificador de umbral: con las dos primeras


características (cantidad de objetos y área máxima), el
estudiante realizará el clasificador por umbral. El
estudiante debe investigar cómo realizar este clasificador,
anexar el código y resultados obtenidos.

%Clasificador de umbral
datos=xlsread('datos.xlsx');
caracteristicas=datos(1:end,1:3); a. Explique cada línea de código.
entrenamiento=datos(1:end,4);
svmStruct=fitcsvm(caracteristicas,entrenamiento,'KernelF Clc Borra todas las entradas y salidas de la
unction','linear'); pantalla de la ventana de comandos
num=xlsread('prueba.xlsx'); brindándole una “pantalla limpia”
xprueba=num(1:end,1:3);
yprueba=num(1:end,4);thrue=yprueba; Clear Elimina todas las variables del espacio de
clasificacion=predict(svmStruct,xprueba); trabajo actual liberándolas de la memoria
Al implementar el código obtenemos los siguientes del sistema.
resultados. Close all Borra todas las figuras cuyos controladores
no están ocultos
cerebro=inrea Lea la imagen del archivo especificado por
d(“enferma1.j filename infiriendo el formato del archivo
pg”); a partir de su contenido.
Cerebro=imd El comando im2double permite convertir
2double la imagen al doble de la presicion
(cerebro);
Figure; Se hace llamado a un marco donde se
muestra la imagen
Imshow(cereb Comando para mostrar la imagen
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 8

ro) estudiante utiliza el filtro que se obtuvo después de la


Umbral=0.50; El umbral será de 0.45 dilatación no obtendrá el puntaje correcto de este experimento.
Bincerebro=i Permite convertir la imagen en escala de IMÁGENES DE TRATAMIENTO
m2bw(cerebro grises a una imagen binaria. IMAGEN ENFERMA 3
, umbral);
numpixels=30 Establece el número de pixeles para
0; mostrar la imagen
filtro1=bware perrmite eliminar algunos pixeles de la
aopen(bincere imagen en modo binario
bro,numpixels
);
imshow(filtro
Comando para mostrar la imagen.
1)
se3=strel('line' representa un elemento
,8,3); estructurante morfológico plano , que es
una parte esencial de las operaciones de
dilatación y erosión morfológicas
dilatacion1=i dilata la escala de grises, binario, o una
mdilate(Filtro imagen binaria lleno I, volviendo la
1,se3); imagen dilatada, J.
[Lo bwlabel se utiliza para contar los objetos
num]=bwlabe que contiene la imagen después de IMAGEN SANA 3
l(Filtro1); binarizada
prop=regionpr Devuelve mediciones para el conjunto de
ops(Lo); propiedades especificadas por properties
para cada componente 8-conectado
(objeto) en la imagen binaria, BW.
MinArea=min Permite conocer el área máxima y mínima
([prop.Area]); dentro de la imagen que se está trabajando.
MaxArea=ma
x([prop.Area]
);

¿Cómo funciona y que datos obtienen de la función


“bwlabel”?
se utiliza para contar los objetos que contiene la imagen
después de bina rizada
Cada estudiante debe obtener las siguientes características de
¿Qué valor se obtiene en las variables “Lo” y en “núm.”?
cada una de 3 imágenes enfermas y de las 3 imágenes sanas.
Lo: Es una matriz la cual me permite identificar de acuerdo al
filtro de pixeles toda la imagen para encontrar los objetos y Las características las debe guardar en una matriz de Excel
toma el valor correspondiente. donde se tenga la siguiente información:
Núm.: finamente identifica la cantidad de objetos que hay en Nota: todas las características deben ser obtenidas del mismo
la imagen y nos muestra el resultado. código, es decir el mismo umbral y el mismo filtro, o crear un
¿Cómo funciona y que datos obtienen de la función código adaptativo por resolución de imagen. Asegúrese de
“regionprops”? hacer el mismo cuadro que se encuentra a continuación en
La función realiza el procesamiento morfológico de una Excel.
imagen el cual cuenta el número de objetos de una imagen Cantidad Área Área Clasificación
ubicándolos en su respectiva posición. de máxima mínima
Nota: El filtro utilizado para este experimento es el generado objetos
después de la binarización (fase 2, ejercicio 2.1), si el en la
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 9

imagen

Imagen 1 1
enferma
3
Imagen 1 1
enferma
4
Imagen 1 1
enferma
donde datos.xlsx es la tabla anteriormente creada y
5
prueba.xlsx es una tabla que contiene nuevas características
Imagen 4 0
con imágenes diferentes a las 3 enfermas y las 3 sanas del
sana 3 punto anterior, ya que estas son con las que se entrenó la
Imagen 4 0 máquina (solicitar por correo interno a su tutor, la base de
sana 4 datos de las imágenes de prueba).

Imagen 1 0 El estudiante debe incluir en el documento de entrega tanto la


sana 5 tabla de las características con las que entreno la máquina, es
decir las contenidas en datos.xlsx y la tabla que contiene las
El estudiante debe anexar el resultado e cada imagen características nuevas contenidas en prueba.xlsx.
procesada con un pantallazo de toda la ventana de Matlab, Explique cada línea del código.
donde se observe: ComandWindows, Workspace, y Current
Folder.
Borra todas las entradas y salidas de la
clc pantalla de la ventana de comandos,
De acuerdo a la investigación que usted ha realizado sobre
brindándole "pantalla limpia".
máquinas de soporte vectorial, sabe que la clasificación está
dada en binario, por lo tanto, 1 será nuestra clasificación para Elimina todas las variables del espacio de
la imagen enferma y 0 para la imagen sana. clear trabajo actual, liberándolas de la memoria del
sistema.
Guarde la tabla anterior como “datos.xlsx” Borra todas las figuras cuyos controladores no
close all
están ocultos
Desarrolle el siguiente código en el script de Matlab.
(Asegúrese de estar trabajando en la carpeta que ya se ha datos=xlsr Lee el archivo datos.
creado). ead('datos.
Nota: Si no está trabajando en la carpeta donde se encuentra la xlsx');
caracteristi Define el tamaño del vector en el que él se
imagen guardada, al realizar el código le saldrá error.
cas=datos( almacenaran los datos
1:end,1:3);
entrenami Declara la variable entrenamiento
ento=datos
(1:end,4);
svmStruct Fitcsvmv entrena o valida de forma cruzada
=fitcsvm(c un modelo de máquina de vectores de una
aracteristic soporte (SVM) para la clasificación de dos
as,entrena clases (binario) en un conjunto de datos de
miento,'St predictor de dimensión baja o moderada.
andardize',
true,'Kern
elFunction
','linear','K
ernelScale'
,'auto');
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 10

prueba=xl Permite leer el archivo guardado como prueba.


sread('prue
ba.xlsx');

RESULTADO IMÁGENES DE PRUEBA


ENFERMA 7

Clasificador de umbral: con las dos primeras características


(cantidad de objetos y área máxima), el estudiante realizará el
clasificador por umbral. El estudiante debe investigar cómo
realizar este clasificador, anexar el código y resultados
obtenidos.
IMAGEN ENFERMA 8
datos=xlsread('datos.xlsx');
caracteristicas=datos(1:end,1:3);
entrenamiento=datos(1:end,4);
svmStruct =
fitcsvm(caracteristicas,entrenamiento,'KernelFunction','linear')
;
num=xlsread('prueba.xlsx');
xprueba=num(1:end,1:3);
yprueba=num(1:end,4);thrue=yprueba;
clasificacion=predict(svmStruct,xprueba)

IMAGEN SANA 6

IMPLEMENTACIÓN CÓDIGOS PARTE INDIVIDUAL


IMAGEN SANA 7 DANIEL CASTILLO
1. Implementación de los siguientes códigos

Procedimiento (Experimento) – Parte Individual:

Desarrolle el siguiente código en el script de Matlab.


(Asegúrese de estar trabajando en la carpeta que ya se ha
creado). Para esta unidad el estudiante debe seleccionar 3
imágenes enfermas y 3 imágenes sanas sanas (la base de datos
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 11

será proporcionada por el tutor, por favor, solicitarla por


correo interno)

El código a utilizar es el que ya se implementó en la fase 2, en


el ejercicio 2.1. La combinación de numpixel y umbral, debe
ser única para las 6 imágenes y debe ser la que detecte por lo
menos el 70% del “tumor” en las 3 imágenes enfermas. Es
decir, el estudiante no debe hacer un código por cada imagen,
sino un código para todas las imágenes proporcionadas por el
tutor.

Código Matlab:

Matlab:

Enferma3:

Resultados:
Enferma1:

Sana1:

Enferma2:
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 12

Sana2: iltro1); después de binarizada”


prop=regionprop “Devuelve mediciones para el
s(Lo); conjunto de propiedades especificadas
por propiedades para cada
componente conectado (objeto) en la
imagen binaria, BW”

¿Cómo funciona y que datos obtienen de la función


“bwlabel”?
R/“bwlabel” se utiliza para contar los objetos que contiene la
imagen después de binarizada.
¿Qué valor se obtiene en las variables “Lo” y en “num”?
R/La variable “Lo” es una matriz la cual me permite
identificar de acuerdo con el filtro de pixeles toda la imagen
Sana3: para encontrar los objetos y toma el valor correspondiente.
La variable “num” identifica la cantidad de objetos que hay en
la imagen y muestra el resultado.
¿Cómo funciona y que datos obtienen de la función
“regionprops”?
R/La función “regionprops” realiza el procesamiento
morfológico de una imagen el cual cuenta el número de
objetos de una imagen ubicándolos en su respectiva posición.
2.2. Cada estudiante debe obtener las siguientes
características de cada una de 3 imágenes enfermas y de
las 3 imágenes sanas. Las características las debe guardar
en una matriz de Excel donde se tenga la siguiente
información:
Nota: todas las características deben ser obtenidas del mismo
código, es decir el mismo umbral y el mismo filtro, o crear un
a. Explique cada línea de código. código adaptativo por resolución de imagen. Asegúrese de
hacer el mismo cuadro que se encuentra a continuación en
cerebro=imread(' “lee la imagen especificada” Excel.
enferma1.jpg');
cerebro=im2dou “Convertir imagen a doble precisión” Cantidad
ble(cerebro); de objetos Área Área
Clasificación
en la máxima mínima
figure; “crea una nueva ventana de figura
imagen
(figura1)”
imshow(cerebro) “muestra la imagen resultante” Imagen
umbral=0.45 “asigna valor de umbral” enferma 9 19085 722 1
bincerebro=im2 Permite convertir la imagen en escala 1
bw(cerebro,umb de grises a una imagen binaria Imagen
ral); enferma 8 42425 646 1
numpixels=270; “asigna numero de pixeles a la 2
imagen” Imagen
filtro1=bwareao “aplica filtro eliminando los objetos enferma 2 22420 6406 1
pen(bincerebro,n pequeños de la imagen” 3
umpixels); Imagen
7 38997 701 0
imshow(filtro1) “muestra la imagen resultante” sana 1
se3=strel('line',8, “representa un elemento estructurante Imagen
3); morfológico plano, que es una parte 1 22176 22176 0
sana 2
esencial de las operaciones de
dilatación y erosión morfológicas” Imagen
1 18058 18058 0
sana 3
dilatacion1=imdi “dilata la escala de grises, binario, o
late(Filtro1,se3); una imagen binaria lleno “x”,
volviendo la imagen dilatada “y””
[Lo “bwlabel se utiliza para contar los
num]=bwlabel(F objetos que contiene la imagen
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 13

Enferma1:

Enferma2:

Sana2:

Enferma3:

Sana3:

Sana1:

2.3 Desarrolle el siguiente código en el script de Matlab.


(Asegúrese de estar trabajando en la carpeta que ya se ha
creado).
Tabla Imágenes de prueba: se extraen las características de las
imágenes de prueba con el mismo código del ejercicio
anterior:
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 14

Cantidad rnelScale',
de 'auto');
Área Área
objetos Clasificación
máxima mínima
en la
imagen
Imagen
enferma 3 76448 1163 1
6
Imagen
prueba=xl “lee el archivo de datos”
enferma 2 22801 1785 1
sread('pru
7
eba.xlsx');
Imagen
enferma 3 9746 919 1
8
2.4 Clasificador de umbral: con las dos primeras
Imagen características (cantidad de objetos y área máxima), el
5 16597 504 1
sana 5 estudiante realizará el clasificador por umbral. El
Imagen estudiante debe investigar cómo realizar este clasificador,
3 5119 2595 1
sana 6 anexar el código y resultados obtenidos.
Imagen
1 78528 78528 0
sana 7 IV. SOLUCIÓN A LOS CÓDIGOS
Implementation Código:
2.1. Desarrolle el siguiente código en el script de Matlab.
(Asegúrese de estar trabajando en la carpeta que ya se ha
creado). Para esta unidad el estudiante debe seleccionar 3
imágenes enfermas y 3 imágenes sanas sanas (la base de
datos será proporcionada por el tutor, por favor,
solicitarla por correo interno).

El código a utilizar es el que ya se implementó en la fase 2, en


el ejercicio 2.1. La combinación de numpixel y umbral, debe
ser única para las 6 imágenes y debe ser la que detecte por lo
menos el 70% del “tumor” en las 3 imágenes enfermas. Es
decir, el estudiante no debe hacer un código por cada imagen,
sino un código para todas las imágenes proporcionadas por el
tutor.

datos=xlsr “lee el archivo de datos” Nota: Si no está trabajando en la carpeta donde se encuentra la
ead('datos. imagen guardada, al realizar el código le saldrá error.
xlsx');
caracterist “Define el tamaño del vector en el que
icas=datos él se almacenaran los datos”
(1:end,1:3
);
entrenami “Se declara la variable”
ento=dato
s(1:end,4);
svmStruct “Fitcsvmv entrena o valida de forma
=fitcsvm( cruzada un modelo de máquina de
caracterist vectores de una soporte (SVM) para la
icas,entren clasificación de dos clases (binario) en
amiento,'S un conjunto de datos de predictor de
tandardize dimensión baja o moderada”
',true,'Ker
nel
Function','
linear','Ke
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 15

umbral=0.6 y numpixels=50

 Enferma 1

 Enferma 2
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 16

 Enferma 3

 Sana 3
 Sana 1

 Sana 2

b. Explique cada línea de código.

>> Enferma=imread('enferma1.jpg'); (lee la imagen del


archivo especificado por filename, infiriendo el formato del
archivo a partir de su contenido. Si filename es un archivo de
varias imágenes, imread lee la primera imagen del archivo)
>> Enferma=im2double(Enferma);(cerebro); (convierte la
imagen de intensidad en doble precisión, volviendo a escalar
los datos si es necesario. puede ser una imagen de intensidad
de escala de grises, una imagen de color verdadero o una
imagen binaria)
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 17

>> umbral=0.6-; (define la segmentacion separando las estudiante utiliza el filtro que se obtuvo después de la
regiones segun la intensidad que se ajuste) dilatación no obtendrá el puntaje correcto de este experimento.
>> binEnferma=im2bw(Enferma,umbral;(convierte la imagen
en escala de grises en imagen binaria, reemplaza todos los 2.2. Cada estudiante debe obtener las siguientes
píxeles de la imagen de entrada con una luminancia o umbral características de cada una de 3 imágenes enfermas y de
configurado) las 3 imágenes sanas. Las características las debe guardar
>> numpixels=50; ; (define la cantidad de pixels en los que en una matriz de Excel donde se tenga la siguiente
sera presentada la imagen) información:
>>filtro1=bwareaopen(binEnferma,numpixels); (Elimina los
componentes que tienen menos pixeles basándose en los Nota: todas las características deben ser obtenidas del mismo
pixeles configurados en la imagen binaria) código, es decir el mismo umbral y el mismo filtro, o crear un
>> [lo num]=bwlabel(filtro1);(Se obtiene la cantidad de objetos código adaptativo por resolución de imagen. Asegúrese de
de la imagen e identifica cada pixel de la imagen) hacer el mismo cuadro que se encuentra a continuación en
>> prop=regionprops(lo);(cuenta el numero de objetos dentro Excel.
de la imagen)
>> figure; (crea una ventana para presentar una figura) Cantidad Área Área Clasific
>> imshow(filtro1) (muestra la imagen en escala de grises en de máxima mínima ación
una figura. optimiza la figura, los ejes y las propiedades del objetos
objeto de imagen para la visualización de la imagen) en la
subplot(2,2,1),subimage(Enferma),title('Imagenoriginal'); imagen
subplot(2,2,2),subimage(binEnferma),title('Umbral 0.5'); Imagen
subplot(2,2,3),subimage(filtro1),title('filtro 40 pixcels'); enferma 11 7766 43 1
subplot(2,2,4),subimage(filtro1),title('Filtro1 Regionprops'); 1
(Define el numero de columnas, filas, posicion, variable Imagen
presentada y titulo adjustable) enferma 5 13669 45 1
2
c. ¿Cómo funciona y que datos obtienen de la función Imagen
“bwlabel”? enferma 15 12055 40 1
3
 Asigna valores a los objetos encontrados en la Imagen
imagen, objetos en blanco, etiqueta estos elementos, sana 1 2 11188 46 0
permite saber la cantidad de objetos en la imagen, Imagen
toma en una imagen binaria. Esta imagen binaria sana 2 2 11772 199 0
debe contener un grupo de objetos separados entre sí. Imagen
Los píxeles que pertenecen a un objeto se denotan sana 3 7 3287 93 0
con 1 / verdadero, mientras que los píxeles que son el
fondo son 0 / falso.
El estudiante debe anexar el resultado de cada imagen
d. ¿Qué valor se obtiene en las variables “Lo” y en “num”? procesada con un pantallazo de toda la ventana de Matlab,
donde se observe: ComandWindows, Workspace, y Current
 Num: Podemos ver la cantidad de objetos en la imagen. Folder.
 Lo: Permite identificar pixel por pixel de la imagen sobre
la que estemos trabajando para ver los objetos y tomar el De acuerdo a la investigación que usted ha realizado sobre
valor correspondiente. máquinas de soporte vectorial, sabe que la clasificación está
dada en binario, por lo tanto, 1 será nuestra clasificación para
e. ¿Cómo funciona y que datos obtienen de la función la imagen enferma y 0 para la imagen sana.
“regionprops”?
 Guarde la tabla anterior como “datos.xlsx”
 Es una función muy útil para el procesamiento
morfológico de una imagen el cual nos permite contar el  Enferma 1
número de objetos de una imagen y ubica su posición
dentro de la misma.

Nota: El filtro utilizado para este experimento es el generado


después de la binarización (fase 2, ejercicio 2.1), si el
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 18

 Enferma 2  Sana 3

 Enferma 3 clc % Borre la ventana de comandos.


clear all % Cierre todas las figuras (excepto las de imtool.)
Claras
close all %Borra todas las variables existentes. O despeja si lo
desea.
Enferma=imread('sana7.jpg'); %lee o reconoce la imagen
original a trabaja
Enferma=im2double(Enferma);%//permite obtener una doble
precisión de la imagen
umbral=0.6; %//se realiza una Selección del umbral. a partir
de cual valor es un pixel blanco o es negro.
binEnferma=im2bw(Enferma,umbral); % //Crea una imagen a
partir de una imagen de intensidad basado en
 Sana 1 %el umbral dado en la línea de
programación anterior umbral =x.
numpixels=50;
filtro1=bwareaopen(binEnferma,numpixels); %// Se utiliza la
sentencia bwareaopen para crear una nueva imagen
[lo num]= bwlabel(filtro1);
prop=regionprops(lo);

Desarrolle el siguiente código en el script de Matlab.


(Asegúrese de estar trabajando en la carpeta que ya se ha
creado).
 Sana 2
Nota: Si no está trabajando en la carpeta donde se encuentra la
imagen guardada, al realizar el código le saldrá error.
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 19

donde datos.xlsx es la tabla anteriormente creada y


prueba.xlsx es una tabla que contiene nuevas características
con imágenes diferentes a las 3 enfermas y las 3 sanas del
punto anterior, ya que estas son con las que se entrenó la
máquina (solicitar por correo interno a su tutor, la base de
datos de las imágenes de prueba).

 El estudiante debe incluir en el documento de entrega tanto


la tabla de las características con las que entreno la
máquina, es decir las contenidas en datos.xlsx y la tabla
que contiene las características nuevas contenidas en
prueba.xlsx.
 Explique cada línea del código:

 datos=xlsread('datos.xlsx') Lee los datos creados para


entrenar la maquina, archivo de excel
 caracteristicas=datos(1:end,1:3) Crea la variable
características y define las características a tener en cuenta
para la clasificación.
 entrenamiento=datos(1:end,4) Crea variable
entrenamiento.
 svmstruct=fitcsvm(caracteristicas,entrenamiento,'standardi
ze',true,'kernelfunction','linear','kernelscale','auto'); Funcion
para realizar entrenamiento de maquina clasificadora SVM
usando el conjunto de datos modificados.
 prueba=xlsread('prueba.xlsx') Leer archivo prueba
 xprueba=prueba(1:end,1:3) Crea la variable xprueba y
define las características a tener en cuenta para la
clasificación.
 clasificacion=predict(svmstruct,xprueba) Genera la
clasificación según entrenamiento realizado y entrega el
resultado.
Tratamiento de imágenes UNAD 2018 30 de Octubre 2018 Grupo 208054_1 Tutora Paola Andrea Mateus 20

Bovik, A. C. (2005). Handbook of Image and Video


Processing. Amsterdam: Academic Press, 2005. eBook
Collection (EBSCOhost), pp. 57– 73. Recuperado
de: http://bibliotecavirtual.unad.edu.co:2048/login?user=
proveedor&pass=danue0a0&url=http://bibliotecavirtual.u
nad.edu.co:2051/login.aspx?direct=true&db=nlebk&AN=
214674&lang=es&site=ehost-live
REFERENCIAS BIBLIOGRAFICAS PREGUNTAS

Clasificador de umbral
Tabla Prueba
https://es.wikipedia.org/wiki/M%C3%A9todo_del_valor_u
mbral
Cantidad de
Área Área Clasificac
objetos en
la imagen
máxima mínima ión  Rafael C. Gonzalez, Richard E. Woods: Digital
Image Processing. Addison-Wesley, Reading Mass
Imagen
1992. ISBN 0-201-50803-6 (en inglés) Survey over
enferma 6 3 54305 591 1 image thresholding techniques
Imagen  Nobuyuki Otsu: A threshold selection method from
enferma 7 3 14155 70 1 grey level histograms. In: IEEE Transactions on
Imagen Systems, Man, and Cybernetics. New York 9.1979,
enferma 8 3 8586 75 1 S.62–66. ISSN 1083-4419 Seminario sobre
Imagen segmentación
sana 5 10 2268 55 0
Imagen
sana 6 10 1591 59 0 Qué es extracción de características en una imagen
Imagen
sana 7 1 60181 0 Scientia et Technica Año XIV, No 38, Junio de 2008.
Universidad Tecnológica de Pereira. ISSN 0122-1701 7 Fecha
de Recepción: 25 de Enero de 2008 Fecha de Aceptación: 9 de
Clasificador de umbral: con las dos primeras características Abril de 2008 TÉCNICAS DE EXTRACCIÓN DE
(cantidad de objetos y área máxima), el estudiante realizará el CARACTERÍSTICAS EN IMÁGENES PARA EL RECONOCIMIENTO
clasificador por umbral. El estudiante debe investigar cómo DE EXPRESIONES FACIALES.
realizar este clasificador, anexar el código y resultados http://revistas.utp.edu.co/index.php/revistaciencia/article/vi
obtenidos. ew/3681/2071

CONCLUSIONES Que es un svm y Kernel svm:


 Se mejoraron los conocimientos y el manejo del programa
matlab, ya que se utilizó como medio de procesamiento de Alba Castro, José Luis. «Máquinas de Vectores Soporte
imágenes para obtener la extracción de sus características. (SVM)» (PDF). Archivado desde el original el 1 de
 Comparamos y ejecutamos técnicas de identificación de agosto de 2014. Consultado el 14 de junio de 2013.
objetos para poder obtener y realizar la clasificación de
imágenes. Funcionamiento de SVM:
 Implementar los códigos para obtener la extracción de https://www.ibm.com/support/knowledgecenter/es/SS3RA
características de una imagen. 7_sub/modeler_mainhelp_client_ddita/clementine/svm_ho
wwork.html
REFERENCIAS BIBLIOGRAFICAS Clasificador no supervisado y supervisado:
Aguado, A. S. (2012). Feature Extraction and Image UNIVERSIDAD DE JAÉN DEPARTAMENTO DE
Processing for Computer Vision. Oxford: Academic INGENIERÍA CARTOGRÁFICA, GEODÉSICA Y
Press 2012. Available from: eBook Collection FOTOGRAMETRÍA:
(EBSCOhost), pp. 37 - 81. Recuperado http://www.ujaen.es/huesped/pidoceps/tel/archivos/Prac_Tel_
de: http://bibliotecavirtual.unad.edu.co:2048/login?user= 2006_7.pdf
proveedor&pass=danue0a0&url=http://bibliotecavirtual.u
nad.edu.co:2051/login.aspx?direct=true&db=nlebk&AN=
477505&lang=es&site=ehost-live

You might also like