0% encontró este documento útil (0 votos)
247 vistas22 páginas

Código Matlab para Análisis de Imágenes

El documento describe los pasos para implementar códigos de segmentación de imágenes en Matlab. Incluye instrucciones para 1) desarrollar código para segmentar 6 imágenes usando la misma combinación de umbral y número de píxeles, 2) obtener características como cantidad de objetos, áreas máxima y mínima de cada imagen y guardarlos en una hoja de cálculo junto con la clasificación experta, y 3) desarrollar código adicional para clasificar nuevas imágenes usando SVM.

Cargado por

Dong-YulHei
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
247 vistas22 páginas

Código Matlab para Análisis de Imágenes

El documento describe los pasos para implementar códigos de segmentación de imágenes en Matlab. Incluye instrucciones para 1) desarrollar código para segmentar 6 imágenes usando la misma combinación de umbral y número de píxeles, 2) obtener características como cantidad de objetos, áreas máxima y mínima de cada imagen y guardarlos en una hoja de cálculo junto con la clasificación experta, y 3) desarrollar código adicional para clasificar nuevas imágenes usando SVM.

Cargado por

Dong-YulHei
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte