SS

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4 . Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes Código

Views 336 Downloads 4 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes

Códigos grupo fase 3 Edwin Maldonado Zarate Código 80184211 Universidad Nacional Abierta y a Distancia UNAD

Se toman los valores de ejercicio pasado:

I. Introducción En este aporte se presenta el desarrollo de código en Matlab para la Implementar clasificadores y entrenamiento de máquinas smv

II. 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 será proporcionada por el tutor, por favor, solicitarla por correo interno) El código a utilizar es el que ya se implementó en el paso 2, en el ejercicio 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% de la “enfermedad” 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.

umbral=0.6; “asigna valor de umbral” numpixels=40; “asigna número de pixeles a la imagen

1

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

Explique cada línea de código %Edwin maldonado %cc 80184211 Enferma1=imread('Enferma1.jpg');%lectura de imagenes Enferma4=imread('Enferma4.jpg');%lectura de imagenes Enferma5=imread('Enferma5.jpg');%lectura de imagenes Enferma1=im2double(Enferma1);%se realiza una precision para que pueda crearse el histograma Enferma4=im2double(Enferma4);%se realiza una precision para que pueda crearse el histograma Enferma5=im2double(Enferma5);%se realiza una precision para que pueda crearse el histograma Sana1=imread('Sana1.jpg');%lectura de imagenes Sana2=imread('Sana2.jpg');%lectura de imagenes Sana3=imread('Sana3.jpg');%lectura de imagenes Sana1=im2double(Sana1);%se realiza una precision para que pueda crearse el histograma Sana2=im2double(Sana2);%se realiza una precision para que pueda crearse el histograma Sana3=im2double(Sana3);%se realiza una precision para que pueda crearse el histograma %Binarozacion de las imaganes umbral=0.6; %se define el umbral binEnferma1=im2bw(Enferma1,umbral); binEnferma4=im2bw(Enferma4,umbral); binEnferma5=im2bw(Enferma5,umbral); binSana1=im2bw(Sana1,umbral); binSana2=im2bw(Sana2,umbral); binSana3=im2bw(Sana3,umbral); %Configuracion de 40 pixeles numpixels=40; filtro1=bwareaopen(~binEnferma1,numpixels ); filtro2=bwareaopen(~binEnferma4,numpixels ); filtro3=bwareaopen(~binEnferma5,numpixels ); filtro11=bwareaopen(~binSana1,numpixels); filtro22=bwareaopen(~binSana2,numpixels); filtro33=bwareaopen(~binSana3,numpixels); se3=strel('line',8,3 );% Se crea la variable se3 y se aplica strel en lineas 8,3 dilatacion1=imdilate(filtro1,se3); dilatacion2=imdilate(filtro2,se3);

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes dilatacion3=imdilate(filtro3,se3); dilatacion11=imdilate(filtro11,se3); dilatacion22=imdilate(filtro22,se3); dilatacion33=imdilate(filtro33,se3); [Lo1 num1]=bwlabel(dilatacion1); prop1=regionprops(Lo1); [Lo2 num2]=bwlabel(dilatacion2); prop2=regionprops(Lo2); [Lo3 num3]=bwlabel(dilatacion3); prop3=regionprops(Lo3); [Lo11 num11]=bwlabel(dilatacion11); prop11=regionprops(Lo11); [Lo22 num22]=bwlabel(dilatacion22); prop22=regionprops(Lo22); [Lo33 num33]=bwlabel(dilatacion33); prop33=regionprops(Lo33); %representaciones de las imágenes figure; subplot(3,5,1),imshow(Enferma1),title('Or iginial Enferma1'); subplot(3,5,2),imshow(~binEnferma1),title ('umbral 0.6 Enferma1'); subplot(3,5,3),imshow(filtro1),title('40 pixeles Enferma1'); subplot(3,5,4),imshow(dilatacion1),title( 'dilatacion Enferma1'); subplot(3,5,5),imshow(Lo1),title('bwlabel Enferma1'); subplot(3,5,6),imshow(Enferma4),title('Or iginial Enferma4'); subplot(3,5,7),imshow(~binEnferma4),title ('umbral 0.6 Enferma4'); subplot(3,5,8),imshow(filtro2),title('40 pixeles Enferma4'); subplot(3,5,9),imshow(dilatacion2),title( 'dilatacion Enferma4'); subplot(3,5,10),imshow(Lo2),title('bwlabe l Enferma4'); subplot(3,5,11),imshow(Enferma5),title('O riginial Enferma5'); subplot(3,5,12),imshow(~binEnferma5),titl e('umbral 0.6 Enferma5'); subplot(3,5,13),imshow(filtro3),title('40 pixeles Enferma5'); subplot(3,5,14),imshow(dilatacion3),title ('dilatacion Enferma5'); subplot(3,5,15),imshow(Lo3),title('bwlabe l Enferma5'); figure; subplot(3,5,1),imshow(Sana1),title('Origi nial Sana1'); subplot(3,5,2),imshow(~binSana1),title('u mbral 0.6Sana1'); subplot(3,5,3),imshow(filtro11),title('40 pixeles Sana1'); subplot(3,5,4),imshow(dilatacion11),title ('dilatacion Sana1'); subplot(3,5,5),imshow(Lo11),title('bwlabe l Sana1');

2

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

subplot(3,5,6),imshow(Sana2),title('Origi nial Sana2'); subplot(3,5,7),imshow(~binSana2),title('u mbral 0.6Sana2'); subplot(3,5,8),imshow(filtro22),title('40 pixeles Sana2'); subplot(3,5,9),imshow(dilatacion22),title ('dilatacion Sana2'); subplot(3,5,10),imshow(Lo22),title('bwlab el Sana2'); subplot(3,5,11),imshow(Sana3),title('Orig inial Sana3'); subplot(3,5,12),imshow(~binSana3),title(' umbral 0.6Sana3'); subplot(3,5,13),imshow(filtro33),title('4 0 pixeles Sana3'); subplot(3,5,14),imshow(dilatacion33),titl e('dilatacion Sana3'); subplot(3,5,15),imshow(Lo33),title('bwlab el Sana3'); %muestra las areas maximas y minimas minArea1=min([prop1.Area]);% Calcula el area minima MaxArea1=max([prop1.Area]);% Calcula el area maxima minArea2=min([prop2.Area]); MaxArea2=max([prop2.Area]); minArea3=min([prop3.Area]); MaxArea3=max([prop3.Area]); minArea11=min([prop11.Area]); MaxArea11=max([prop11.Area]); minArea22=min([prop22.Area]); MaxArea22=max([prop22.Area]); minArea33=min([prop33.Area]); MaxArea33=max([prop33.Area]);

¿Cómo funciona y que datos obtienen de la función “bwlabel”?

devuelve una matriz, del mismo tamaño que BW, que contiene etiquetas para los objetos conectados en BW. n puede tener un valor de 4 o 8, donde 4 especifica objetos conectados a 4 y 8 objetos conectados a 8; si se omite el argumento, el valor predeterminado es 8. ¿Qué valor se obtiene en las variables “Lo” y en “num”? Lo: matriz la cual permite identificar de acuerdo al filtro de pixeles toda la imagen para encontrar los objetos y toma el valor correspondiente Num: se obtiene el número de objetos que se encuentran y muestra el resultado.

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes

3

¿Cómo funciona y que datos obtienen de la función “regionprops”? Mide un conjunto de propiedades para cada región etiquetada en la matriz de etiquetas L. Los elementos enteros positivos de L corresponden a regiones diferentes. Por ejemplo, el conjunto de elementos de L igual a 1 corresponde a la región 1; el conjunto de elementos de L igual a 2 corresponde a la región 2; y así. El valor de retorno, STATS, es una matriz de estructura de longitud máxima (L (:)). Los campos de la matriz de la estructura denotan diferentes medidas para cada región, según lo especificado por las propiedades.

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:

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes

Explique cada línea del código

El estudiante debe anexar el resultado de cada imagen procesada con un pantallazo de toda la ventana de Matlab, donde se observe: ComandWindows, Workspace, y Current Folder.

De acuerdo a la investigación que usted ha realizado sobre máquinas de soporte vectorial, sabe que la clasificación está dada en binario, por lo tanto, 1 será nuestra clasificación para imagen enferma y 0 para imagen sana. 

Guarde la tabla anterior como “datos.xlsx”

3. Desarrolle el siguiente código en el script de Matlab. (Asegúrese de estar trabajando en la carpeta que ya se ha creado). Nota1: Si no está trabajando en la carpeta donde se encuentra la imagen guardada, al realizar el código le saldrá error. Nota2: Para que el código sea válido, debe tener una línea con su nombre. 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 imágenes enfermas y las 3 imágenes 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.

clc clear all close all %Edwin maldonado %cc 80184211 Enferma1=imread('Enferma9.jpg');%lectura de imagenes Enferma4=imread('Enferma10.jpg');%lectura de imagenes Enferma5=imread('Enferma11.jpg');%lectura de imagenes Enferma1=im2double(Enferma1);%se realiza una precision para que pueda crearse el histograma

4

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

Enferma4=im2double(Enferma4);%se realiza una precision para que pueda crearse el histograma Enferma5=im2double(Enferma5);%se realiza una precision para que pueda crearse el histograma Sana1=imread('Sana4.jpg');%lectura de imagenes Sana2=imread('Sana5.jpg');%lectura de imagenes Sana3=imread('Sana6.jpg');%lectura de imagenes Sana1=im2double(Sana1);%se realiza una precision para que pueda crearse el histograma Sana2=im2double(Sana2);%se realiza una precision para que pueda crearse el histograma Sana3=im2double(Sana3);%se realiza una precision para que pueda crearse el histograma %Binarozacion de las imaganes umbral=0.6; %se define el umbral binEnferma1=im2bw(Enferma1,umbral); binEnferma4=im2bw(Enferma4,umbral); binEnferma5=im2bw(Enferma5,umbral); binSana1=im2bw(Sana1,umbral); binSana2=im2bw(Sana2,umbral); binSana3=im2bw(Sana3,umbral); %Configuracion de 40 pixeles numpixels=40; filtro1=bwareaopen(~binEnferma1,numpixels ); filtro2=bwareaopen(~binEnferma4,numpixels ); filtro3=bwareaopen(~binEnferma5,numpixels ); filtro11=bwareaopen(~binSana1,numpixels); filtro22=bwareaopen(~binSana2,numpixels); filtro33=bwareaopen(~binSana3,numpixels); se3=strel('line',8,3 );% Se crea la variable se3 y se aplica strel en lineas 8,3 dilatacion1=imdilate(filtro1,se3); dilatacion2=imdilate(filtro2,se3); dilatacion3=imdilate(filtro3,se3); dilatacion11=imdilate(filtro11,se3); dilatacion22=imdilate(filtro22,se3); dilatacion33=imdilate(filtro33,se3); [Lo1 num1]=bwlabel(dilatacion1); prop1=regionprops(Lo1); [Lo2 num2]=bwlabel(dilatacion2); prop2=regionprops(Lo2); [Lo3 num3]=bwlabel(dilatacion3); prop3=regionprops(Lo3); [Lo11 num11]=bwlabel(dilatacion11); prop11=regionprops(Lo11); [Lo22 num22]=bwlabel(dilatacion22); prop22=regionprops(Lo22);

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes [Lo33 num33]=bwlabel(dilatacion33); prop33=regionprops(Lo33); %representaciones de las imágenes figure; subplot(3,5,1),imshow(Enferma1),title('Or iginial Enferma9'); subplot(3,5,2),imshow(~binEnferma1),title ('umbral 0.6 Enferma9'); subplot(3,5,3),imshow(filtro1),title('40 pixeles Enferma1'); subplot(3,5,4),imshow(dilatacion1),title( 'dilatacion Enferma9'); subplot(3,5,5),imshow(Lo1),title('bwlabel Enferma9'); subplot(3,5,6),imshow(Enferma4),title('Or iginial Enferma10'); subplot(3,5,7),imshow(~binEnferma4),title ('umbral 0.6 Enferma10'); subplot(3,5,8),imshow(filtro2),title('40 pixeles Enferma10'); subplot(3,5,9),imshow(dilatacion2),title( 'dilatacion Enferma10'); subplot(3,5,10),imshow(Lo2),title('bwlabe l Enferma10'); subplot(3,5,11),imshow(Enferma5),title('O riginial Enferma11'); subplot(3,5,12),imshow(~binEnferma5),titl e('umbral 0.6 Enferma11'); subplot(3,5,13),imshow(filtro3),title('40 pixeles Enferma11'); subplot(3,5,14),imshow(dilatacion3),title ('dilatacion Enferma11'); subplot(3,5,15),imshow(Lo3),title('bwlabe l Enferma11'); figure; subplot(3,5,1),imshow(Sana1),title('Origi nial Sana4'); subplot(3,5,2),imshow(~binSana1),title('u mbral 0.6Sana4'); subplot(3,5,3),imshow(filtro11),title('40 pixeles Sana4'); subplot(3,5,4),imshow(dilatacion11),title ('dilatacion Sana4'); subplot(3,5,5),imshow(Lo11),title('bwlabe l Sana4'); subplot(3,5,6),imshow(Sana2),title('Origi nial Sana5'); subplot(3,5,7),imshow(~binSana2),title('u mbral 0.6Sana5'); subplot(3,5,8),imshow(filtro22),title('40 pixeles Sana5'); subplot(3,5,9),imshow(dilatacion22),title ('dilatacion Sana5'); subplot(3,5,10),imshow(Lo22),title('bwlab el Sana5'); subplot(3,5,11),imshow(Sana3),title('Orig inial Sana6'); subplot(3,5,12),imshow(~binSana3),title(' umbral 0.6Sana6');

5

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes

subplot(3,5,13),imshow(filtro33),title('4 0 pixeles Sana6'); subplot(3,5,14),imshow(dilatacion33),titl e('dilatacion Sana6'); subplot(3,5,15),imshow(Lo33),title('bwlab el Sana6'); %muestra las areas maximas y minimas minArea1=min([prop1.Area]);% Calcula el area minima MaxArea1=max([prop1.Area]);% Calcula el area maxima minArea2=min([prop2.Area]); MaxArea2=max([prop2.Area]); minArea3=min([prop3.Area]); MaxArea3=max([prop3.Area]); minArea11=min([prop11.Area]); MaxArea11=max([prop11.Area]); minArea22=min([prop22.Area]); MaxArea22=max([prop22.Area]); minArea33=min([prop33.Area]); MaxArea33=max([prop33.Area]);

%Edwin maldonado %cc 80184211 clc % Limpia la ventana de comandos clear all % Limpia todas las ordenes close all % Cierra todas las ventanas datos=xlsread('datos.xlsx'); % Lee la matriz excel "datos" caracteristicas=datos(1:end,1:3);% Se crea variable y se dan las especificaciones que la conforman entrenamiento=datos(1:end,4);% Se crea variable y se dan las especificaciones que la conforman %entrenamiento Máquina Fabio Ortiz svmStruct = fitcsvm(caracteristicas,entrenamiento,'St andardize',true,'KernelFunction','linear' ,'KernelScale','auto'); % Especifica el tipo de kernel en este caso lineal

6

Edwin Maldonado Zarate Código 80184211 Grupo 208054_4

.

prueba=xlsread('prueba.xlsx'); % Lee la matriz excel "prueba" xprueba=prueba(1:end,1:3);% Se crea variable xprueba y se especifica como está conformada clasificacion = predict(svmStruct,xprueba)% Se crea variable clasificación

4 clasificador de umbral o perceptrón: 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.

REFERENCIAS BIBLIOGRÁFICAS

[1]

MATEUS, P. A. (10 de junio de 2017). http://campus08.unad.edu.co/ecbti43/mod/page/ view.php?id=687. Obtenido de http://hdl.handle.net/10596/12679

[2]

BETANCOURT, G. A. (2005). http://revistas.utp.edu.co. Obtenido de http://revistas.utp.edu.co/index.php/revistacienci a/article/view/6895

Tutor: ING.Paola Andrea Mateus Tratamiento de Imágenes

7