Implementación de códigos en software
1. Desarrolle el siguiente código en el script de Matlab y guárdelo como
“aprendizaje”. (Asegúrese de estar trabajando en la carpeta que ya
se ha creado). Para esta unidad el estudiante debe trabajar la base
de datos de entrenamiento y la base de datos de prueba (las dos
bases de datos serán proporcionadas por el tutor, por favor,
solicitarla por correo interno)
El código para 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 segmente mejor el dispositivo. Es
decir, el estudiante no debe cambiar el valor del umbral y del numpixel
en cada imagen, sino debe ser un mismo valor de estas dos variables
para todas las imágenes proporcionadas por el tutor.
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,
año, periodo académico y semestre actual que esta cursando el estudiante
(según plan de estudios).
a. Explique cada línea de código.
>> se3=strel('line',8,3); // se3 es un variable, strel crea un elemento de estructuración
lineal que es simétrico con respecto al centro de vecindad, con longitud y ángulo
aproximados.lendeg
dilatacion1=imdilate(Filtro1,se3); /// se crea una variable dilatacion1, imdilate es Dilatar
imagen con el filtro creado y el elemento de estructuración lineal.
figure; ///crea Ventana de figura
imshow(dilatacion1); ///mostrar dilatacion1
[Lo num]=bwlabel(dilatacion1); //Etiquetar componentes conectados en imagen binaria
2D, // también devuelve , el número de objetos conectados encontrados en .nBW
prop=regionprops(Lo); //la variable prop // regionprops Medir las propiedades de las
regiones de imagen
figure; crea Ventana de figura
imshow(Lo) ///mostrar Lo
b. ¿Cómo funciona y que datos obtienen de la función “bwlabel”?
bwlabel utiliza el procedimiento general :
1. La longitud de ejecución codifica la imagen de entrada.
2. Escanee las corridas, asignando etiquetas preliminares y registrando
equivalencias de etiquetas en una tabla de equivalencia local.
3. Resuelva las clases de equivalencia.
4. Reetiquetar las ejecuciones en función de las clases de equivalencia
resueltas.
Los elementos de son valores enteros mayores o iguales a 0. Los píxeles
etiquetados 0 son el fondo. Los píxeles etiquetados 1 componen un objeto, los
píxeles etiquetados 2 conforman un segundo objeto, y así sucesivamente.L
[L,num] = bwlabel(BW,n) devuelve el número de objetos conectados que se
encuentran en .numBW
bwlabel sólo admite entradas 2D; admite entradas de cualquier
dimensión. En algunos casos, es posible que prefiera utilizar incluso para
problemas 2-D porque puede ser más rápido. Si tiene una entrada 2D
cuyos objetos son relativamente gruesos en la dirección vertical, es
probablemente más rápido; de lo contrario es probablemente más
rápido.bwlabelnbwlabelnbwlabelbwlabeln
Etiquetar componentes conectados en imagen binaria 2D, [L,n] =
bwlabel(___) también devuelve , el número de objetos conectados
encontrados en .nBW
c. ¿Qué valor se obtiene en las variables “Lo” y en “num”?
Lo = es la región
Num = numero de objetos
el número de objetos conectados encontrados en .nBW
nBW en este caso es(Filtro, (se3=strel('line',8,3);)
d. ¿Cómo funciona y que datos obtienen de la función “regionprops”?
Regionprops: mide las propiedades de las regiones de imagen, mide un
conjunto de propiedades para cada región etiquetada en la matriz de
etiquetas.L
utilice regionprops para analizar los valores de píxel de escala de grises
originales correspondientes a cada objeto de la imagen binaria.
Celu1.jpg
%Nombre: John Merchan
%Año:2020
%Periodo: 1604
%semestre 04
Comunicacion1=imread('celu1.jpg');
GrayComunicacion1=rgb2gray(Comunicacion1);
figure;
imshow(GrayComunicacion1);
GrayComunicacion1=im2double(Comunicacion1);
figure;
imhist(GrayComunicacion1);
Comunicacion1=im2double(Comunicacion1);
figure;
imshow(Comunicacion1);
umbral=0.5;
binComunicacion1=im2bw(Comunicacion1,umbral);
binComunicacion1=~binComunicacion1;
figure;
imshow(binComunicacion1)
numpixels=500;
Filtro1=bwareaopen(binComunicacion1,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Celu2.jpg
Comunicacion2=imread('celu2.jpg');
GrayComunicacion2=rgb2gray(Comunicacion2);
figure;
imshow(GrayComunicacion2);
GrayComunicacion2=im2double(Comunicacion2);
figure;
imhist(GrayComunicacion2);
Comunicacion2=im2double(Comunicacion2);
figure;
imshow(Comunicacion2);
umbral=0.5;
binComunicacion2=im2bw(Comunicacion2,umbral);
binComunicacion2=~binComunicacion2;
figure;
imshow(binComunicacion2)
numpixels=500;
Filtro1=bwareaopen(binComunicacion2,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Celu3.jpg
Comunicacion3=imread('celu3.jpg');
GrayComunicacion3=rgb2gray(Comunicacion3);
figure;
imshow(GrayComunicacion3);
GrayComunicacion3=im2double(Comunicacion3);
figure;
imhist(GrayComunicacion3);
Comunicacion3=im2double(Comunicacion3);
figure;
imshow(Comunicacion3);
umbral=0.5;
binComunicacion3=im2bw(Comunicacion3,umbral);
binComunicacion3=~binComunicacion3;
figure;
imshow(binComunicacion3)
numpixels=500;
Filtro1=bwareaopen(binComunicacion3,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Compu4.jpg
%Nombre: John Merchan
%Año:2020
%Periodo: 1604
%semestre 04
Comunicacion4=imread('compu4.jpg');
GrayComunicacion4=rgb2gray(Comunicacion4);
figure;
imshow(GrayComunicacion4);
GrayComunicacion4=im2double(Comunicacion4);
figure;
imhist(GrayComunicacion4);
Comunicacion4=im2double(Comunicacion4);
figure;
imshow(Comunicacion4);
umbral=0.5;
binComunicacion4=im2bw(Comunicacion4,umbral);
binComunicacion4=~binComunicacion4;
figure;
imshow(binComunicacion4)
numpixels=500;
Filtro1=bwareaopen(binComunicacion4,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Compu5.jpg
%Nombre: John Merchan
%Año:2020
%Periodo: 1604
%semestre 04
Comunicacion5=imread('compu5.jpg');
GrayComunicacion5=rgb2gray(Comunicacion5);
figure;
imshow(GrayComunicacion5);
GrayComunicacion5=im2double(Comunicacion5);
figure;
imhist(GrayComunicacion5);
Comunicacion5=im2double(Comunicacion5);
figure;
imshow(Comunicacion5);
umbral=0.5;
binComunicacion5=im2bw(Comunicacion5,umbral);
binComunicacion5=~binComunicacion5;
figure;
imshow(binComunicacion5)
numpixels=500;
Filtro1=bwareaopen(binComunicacion5,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Compu6.jpg
Comunicacion6=imread('compu6.jpg');
GrayComunicacion6=rgb2gray(Comunicacion6);
figure;
imshow(GrayComunicacion6);
GrayComunicacion6=im2double(Comunicacion6);
figure;
imhist(GrayComunicacion6);
Comunicacion6=im2double(Comunicacion6);
figure;
imshow(Comunicacion6);
umbral=0.5;
binComunicacion6=im2bw(Comunicacion6,umbral);
binComunicacion6=~binComunicacion6;
figure;
imshow(binComunicacion6)
numpixels=500;
Filtro1=bwareaopen(binComunicacion6,numpixels);
figure;
imshow(Filtro1);
se3=strel('line',8,3);
dilatacion1=imdilate(Filtro1,se3);
figure;
imshow(dilatacion1);
[Lo num]=bwlabel(dilatacion1);
prop=regionprops(Lo);
figure;
imshow(Lo)
Nota 3: El filtro utilizado para este experimento es el generado después
de la binarización (Paso 2, ejercicio 1), si el estudiante utiliza el filtro que
se obtuvo después de la dilatación no obtendrá el puntaje correcto de este
experimento.
2. Cada estudiante debe obtener las siguientes características de cada
una imágenes de la base de datos de entrenamiento. Las
características las debe guardar en una matriz de Excel donde se
tenga la siguiente información:
Cantidad Área Área Clasificación Clasificación
de máxima mínima SVM Experto
objetos
en la
imagen
Imagen de 1
entrenamiento
– Computador1
Imagen de 1
entrenamiento
– Computador 2
Imagen de 1
entrenamiento
– Computador 3
Imagen de 0
entrenamiento
– Celular 1
Imagen de 0
entrenamiento
– Celular 2
Imagen de 0
entrenamiento
– Celular 3
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 del dispositivo de
computador y 0 para imagen del dispositivo de teléfono móvil.
• Guarde la tabla anterior como “entrenamiento.xlsx”
3. Desarrolle el siguiente código en el script de Matlab creado en el
punto 1. (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.
Cada estudiante debe obtener las siguientes características de cada una
de las imágenes de la base de datos de prueba. Las características las
debe guardar en una matriz de Excel que se llame “prueba.xlsx” donde
se tenga la siguiente información:
Cantidad Área Área Clasificación Clasificación
de máxima mínima SVM Experto
objetos
en la
imagen
Imagen de
prueba –
Computador 1
Imagen de
prueba –
Celular 1
Imagen de
prueba –
Computador 2
Imagen de
prueba –
Celular 2
Imagen de
prueba –
Computador 3
Imagen de
prueba –
Celular 3
• 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 entrenamiento.xlsx y la tabla que contiene las
características nuevas contenidas en prueba.xlsx.
• Explique cada línea del código.
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.
Cantidad Área
de máxima
objetos
en la
imagen
Imagen de
entrenamiento
– Computador1
Imagen de
entrenamiento
– Computador 2
Imagen de
entrenamiento
– Computador 3
Imagen de
entrenamiento
– Celular 1
Imagen de
entrenamiento
– Celular 2
Imagen de
entrenamiento
– Celular 3
Nota: Este clasificador no se realiza con el mismo código de la SVM,
ustedes deben crear el código usando condicionales “if”.
BIBLIOGRAFIA
mathworks.com bwlabel recuperado 21/oct/2020 link
https://la.mathworks.com/help/images/ref/bwlabel.html