vision artificial

9
APLICACIÓN K MEANS CON MATLAB INTEGRANTE: WILMER ANDRES MANTILLA SUAREZ PRESENTADO A: DR. JOSÉ ORLANDO MALDONADO BAUTISTA MATERIA: ELECTIVA DE INGENIERÍA 2 UNIVERSIDAD DE PAMPLONA DEPARTAMENTO INGENIERIAS Y ARQUITECTURA

Upload: wilmer-andres-mantilla-suarez

Post on 06-Feb-2016

15 views

Category:

Documents


0 download

DESCRIPTION

matlab

TRANSCRIPT

Page 1: Vision Artificial

APLICACIÓN K MEANS CON MATLAB

INTEGRANTE:WILMER ANDRES MANTILLA SUAREZ

PRESENTADO A:DR. JOSÉ ORLANDO MALDONADO BAUTISTA

MATERIA:ELECTIVA DE INGENIERÍA 2

UNIVERSIDAD DE PAMPLONADEPARTAMENTO INGENIERIAS Y ARQUITECTURA

INGENIERIA DE SISTEMASPAMPLONA10/04/2015

Page 2: Vision Artificial

Ejercicio 1. Aplicar el algoritmo kmeans al total de la imagen “fire2.tif”. Hacer clasificación probando varios

valores de k, es decir clasificar en 2, 3, 4 clúster.

Determinar qué tipos de terreno (cubierta vegetal, arboles, vías, etc) se detectan en cada situación. Probar con

otros tipos de métrica disponibles en el algoritmo de kmeans de matlab. Discutir todos resultados y sacar

conclusiones.

1. Como solución al ejercicio 1 primero cargamos un parte de la imagen fire.tif.

clc;clear;%cargamos la imagenI = imread('fire2.tif');%recortamos la imagen%% guardamos en I2I2=I(200:400,200:400,:);% mostramos recorte %imshow(I2);pause;

Ilustración 1 Trozo de imagen seleccionada

Page 3: Vision Artificial

2. Aplicamos los diferentes tipos de métrica para este caso la cosine, cityblock y la euclidiana (sqeuclidean)

esta última viene por defecto, ingresamos de igual manera el número de centroides a calcular en la imagen.

% REORDENAMOS EN TRES DIMENSIONES RGB P = reshape(I2,40401,3); IDX = kmeans(double(P),3,'Distance','cityblock');IDX1 = kmeans(double(P),3,'Distance','cosine');IDX2 = kmeans(double(P),3);

3. Kmeans nos devuelve para cada una de ellas una matriz de etiquetas donde cada una de ellas difiere al

centroide calculado.

IDX: matriz de etiquetas ditance cityblock

IDX1: matriz de etiquetas distance cosine

IDX2: matriz de etiquetas distance sqeuclidean

4. Devolvemos cada una de la matriz de etiquetas a su estado original convirtiéndola a RGB para su

visualización.

% convertirmos en matriz rectangular %rec = reshape(IDX,201,201);rec1 = reshape(IDX1,201,201);rec2 = reshape(IDX2,201,201); % imagen originalsubplot(1,4,1);imshow(I2);title('Imagen Original'); % etiquetas a rgb y visualizarimg = label2rgb(rec);subplot(1,4,2);imshow(img);title('Distance cityblock');

img1 = label2rgb(rec1);subplot(1,4,3);imshow(img1);title('Distance cosine'); img2 = label2rgb(rec2);subplot(1,4,4);imshow(img2);title('Distance euclídeana');

5. Observamos para e la pantalla con su orden respectivo de clasificación

Page 4: Vision Artificial

Ilustración 2 Comparación entre diferente métricas

En su clasificación las métricas cityblock y cosine se destacan sobre la euclidiana, tomando más características de la imagen original.

Ejercicio 2. Al utilizar kmeans, podemos obtener además de las etiquetas de cada clase o clúster, los prototipos

del clúster (ver información de ayuda de kmeans en Matlab). Esto en el caso de las imágenes corresponde al

Page 5: Vision Artificial

color promedio de cada grupo de pixels. Utilizar kmeans para obtener una imagen cuantizada del color, esto es

generar clúster o grupos de colores similares, y asignar a cada pixel de un mismo grupo el color que corresponde

al prototipo del clúster. Dibujar nuevamente la imagen, y obtener el menor grupo de colores que permita

conservar las características visuales de la imagen. Esto es, aplicar kmeans con diferente valores de k (k= 4, 5,6,

etc). Discutir todos resultados y sacar conclusiones.

clc;clear;%cargamos la imagenI = imread('fire2.tif');

1. En este ejercicio utilizamos la función imcrop() que nos permite seleccionar por el usuario un trozo de la

imagen

Guardando su respectivo recorte en una matriz.

%recortamos la imagen seleccionando recorte%% guardamos en I2 I2 = imcrop(I);

Ilustración 3 Selección de trozo de imagen

Page 6: Vision Artificial

Ilustración 4 Imagen previamente recortada

2. Una vez seleccionado el recorte con el uso de la función size() traemos el tamaño de la matriz que

contiene el trizo de imagen

% traemos tamaño filas columnas y bandas[f,c,y] = size(I2);

f : filac: columnay: número de bandas % guardamos una copia del recorteI3 = I2; % mostramos recorte %imshow(I2);pause;

Page 7: Vision Artificial

3. Al aplicar kmeans para poder cuantizar la imagen necesitamos su color promedio que va en relación con

el número de clúster, kmeans nos lo retorna como segundo parámetro

IDX: Matriz de etiquetas

C: Matriz de centroides

% REORDENAMOS EN TRES DIMENSIONES RGB P = reshape(I2,f*c,3);[IDX,C] = kmeans(double(P),3,'Distance','cityblock');

% IDX MATRIZ DE ETIQUETAS, MATRIZ DE CENTROIDESCUA=C(IDX,:);

% convertirmos en matriz rectangular %IMG = reshape(CUA,f,c,3);I = uint8(round(IMG)); % mostramos imagen cuantizada y original %subplot(1,2,1); imshow(I3);title('Imagen Original');subplot(1,2,2);imshow(I);title('Imagen Cuantizada');

Ilustración 5 Imagen original e imagen cuantizada