ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Visión por computadora


Enviado por   •  28 de Noviembre de 2019  •  Tesis  •  5.142 Palabras (21 Páginas)  •  253 Visitas

Página 1 de 21

[pic 1][pic 2][pic 3][pic 4]

 


Ejercicio 1: Considere los cinco objetos ya usados (tornillo, rondana, armella, alcayata y cola de milano) y lleve a cabo lo siguiente:

a) Elija dos o tres rasgos descriptores. Grafique y verifique si el fenómeno de separación lineal se presenta o no. Esto depende de los rasgos seleccionados.

b) Con base en estos rasgos, entrene los clasificadores de distancia mínima, de Mahalanobis y Bayesiano.

c) Tome el conjunto de 100 imágenes de prueba (las imágenes con más de un objeto en ellas) y con estas verifique el desempeño de los tres clasificadores. Forme una matriz de confusión de tamaño 5x5. Si para un clasificador dado, todos los objetos fueron correctamente clasificados, entonces en las diagonales aparecerá un 100 por ciento, sino aparecerán otros porcentajes fuera de las diagonales.

d) ¿Qué clasificador mostró el mejor desempeño? Comente al respecto.

1.-

a) En esta parte del ejercicio 1, se eligieron los rasgos descriptores: área y perímetro del objeto en la imagen. Se realizó un programa en Matlab, el cual binariza todas las imágenes de prueba (imágenes en donde aparecen solo objetos individuales) y extrae los patrones mencionados anteriormente, después grafica dichos patrones en un plano bidimensional con el área en las abscisas y el perímetro en las ordenadas como se muestra en la figura 1.

[pic 5]

Figura 1. Gráfica que ilustra las 5 diferentes clases de objetos.

En la figura 2 se puede apreciar a simple vista que las clases (con 20 elementos cada una) pueden ser separadas linealmente debido al espacio considerable existente entre ellas.

[pic 6]

Figura 2. Representación de la separación lineal que existe entre clases.

CONCLUSION.

Hablando de  los rasgos área y perímetro, la buena binarización de las imágenes es fundamental para que los objetos sean correctamente clasificados y exista un buen espacio de separación entre clases, así los objetos parecidos, como las armellas y las alcayatas por ejemplo, pueden diferenciarse mejor y no confundirse entre sí.

b) Para realizar el inciso “b” del ejercicio, se utilizó Matlab para el diseño de una serie de funciones que realizaron el entrenamiento de los clasificadores de distancia mínima, distancia de mahalanobis y el clasificador bayesiano. El código de las funciones es mostrado a continuación.

Primero tenemos el programa con el cual obtenemos la gráfica presentada en el inciso anterior, las medias y las varianzas representativas de cada clase a partir de las 100 imágenes (un solo elemento por imagen).

hold on; %Para poder sobre escribir en la gráfica

grid; % Se dibuja una rejilla

title('Patrones de las imágenes de prueba'); %Se coloca el título a la gráfica

xlabel('Área del objeto'); %Se coloca la etiqueta de las abscisa

ylabel('Perímetro del objeto'); %Se coloca la etiqueta de las ordenadas

clase1=[]; %Se declara la clase 1 de tornillos

clase2=[]; %Se declara la clase 2 de rondanas

clase3=[]; %Se declara la clase 3 de armellas

clase4=[]; %Se declara la clase 4 de alcayatas

clase5=[]; %Se declara la clase 5 de colas de milano

i=101; %Se inicializa el índice de número de las imágenes de la primera clase (Tornillos)

k=120; %Se estable el límite de las imágenes de la primera clase (Tornillos)

%Los siguientes ciclos for sirven para ir cambiando de imágenes y por ende,

%de clases.

for c=1:5 %Para c desde 1 hasta 5 hacer...    

    for j=i:k %Para j desde i hasta k hacer...

        dir=strcat('IMAG0',num2str(j),'.bmp'); %Se forma la dirección de la imagen a leer

        imagen=imread(dir);  %Se guarda la imagen leída

        im_segmentada=segmenta(imagen); %Se segmenta la imagen con la función "segmenta" creada en tareas anteriores        

        if j>100 & j<200 %Si la imagen pertenece a la primera clase entonces...          

            area1=obten_area(im_segmentada,255); %Obtén el área del tornillo en número de pixeles

            perimetro1=obten_perimetro(im_segmentada,255); %Obtén el perímetro del tronillo en número de pixeles

            clase1=horzcat([area1;perimetro1],clase1); %Agrega los nuevos rasgos al vector de rasgos de la clase 1

            plot(area1,perimetro1,'ro'); %Grafica con respecto al área y perímetro obtenido colocando un "o" color rojo

        else

            if j>200 & j<300 %Si la imagen pertenece a la segunda clase entonces...  

               area2=obten_area(im_segmentada,255); %Obtén el área de la rondana en número de pixeles

               perimetro2=obten_perimetro(im_segmentada,255); %Obtén el perímetro de la rondana en número de pixeles

               clase2=horzcat([area2;perimetro2],clase2); %Agrega los nuevos rasgos al vector de rasgos de la clase 2

               plot(area2,perimetro2,'g+'); %Grafica con respecto al área y perímetro obtenido colocando un "+" color verde

            else

                if j>300 & j<400 %Si la imagen pertenece a la tercera clase entonces...  

                    area3=obten_area(im_segmentada,255); %Obtén el área de la armella en número de pixeles

                    perimetro3=obten_perimetro(im_segmentada,255); %Obtén el perímetro de la armella en número de pixeles

                    clase3=horzcat([area3;perimetro3],clase3); %Agrega los nuevos rasgos al vector de rasgos de la clase 3

                    plot(area3,perimetro3,'b*'); %Grafica con respecto al área y perímetro obtenido colocando un "*" color azul

...

Descargar como (para miembros actualizados)  txt (29.2 Kb)   pdf (388.3 Kb)   docx (226.5 Kb)  
Leer 20 páginas más »
Disponible sólo en Clubensayos.com