Está en la página 1de 7

ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO

Docente: Sandra Milena Roa Martínez


Departamento de Sistemas

Practica 4.
PARTE 1- Introducción a extracción de características de imágenes.

OBJETIVO:
Revisar conceptos relacionados con extracción de características mediante la
implementación de algunos momentos estadísticos de color usando Matlab y algunas
funciones básicas asociadas a la normalización y cálculo de distancias entre vectores.

PASO A PASO:

A. Construcción de un vector de características a partir de estadísticas de color:

1. Leer imagen RGB


2. IM= imread('/Users/PC1/Desktop/ CBIR/mi_imagen.jpeg');

3. R = IM(:,:,1); %RED
4. G = IM(:,:,2); %GREEN
5. B = IM(:,:,3); %BLUE

B. Extraer características de estadísticas media y desviación estándar (color moments):


6. meanR=mean2(R); %media
7. meanG=mean2(G);
8. meanB=mean2(B);

9. stdR=std2(R); %desviación estándar


10. stdG=std2(G);
11. stdB=std2(B);

12. %R1 = double(IM(:, :, 1));


13. % skewnessR = skewness(R1(:));

14. Construir primeros elementos del vector de características:


15. V1=[meanR meanG meanB stdR stdG stdB];

C. Otros estadísticos a partir de HSV (hue, saturation, value)


16. Convertirla a HSV:
17. hsvImage = rgb2hsv(IM);

18. meanHue = mean2(hsvImage(:,:,1))


19. meanSat = mean2(hsvImage(:,:,2))
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

20. meanValue = mean2(hsvImage(:,:,3))


21. sdImage = stdfilt(hsvImage(:,:,3)); % Std Deviation of Value channel.
22. meanStdDev = mean2(sdImage);

D. Otros elementos para vector de características


23. V2 = [meanHue, meanSat, meanValue, meanStdDev];
24. Vector de características de la imagen
25. featureVector = [V1 V2];

E. Normalizar el vector
26. normalizedVector = featureVector/norm(FeatureVector);

F. Después de ejecutar la siguiente instrucción, repita para IG desde la línea 3 hasta la


línea 26 teniendo en cuenta modificar el nombre de las variables y compare cada uno
de los elementos de los vectores de características obtenidos para IM e IG. A qué
obedece?,
27. IG= mat2gray(IM);

G. Leer varias imágenes:


28. Script leer_imags: (c044.jpg e024.jpg o041.jpg w054.jpg)
read_img = dir('/Users/smroa/Desktop/Parte1/*.jpg');
for i = 1:length(read_img)
image_i = read_img(i).name;
nameimg='/Users/smroa/Desktop/Parte1/';
IM{i} = imread(strcat(nameimg,image_i));
end

29. leer_imags;
30. imshow(IM{3});

H. Calculo de distancia entre vectores:


31. >> a=[1 2 3 1 5 6 7];
32. >> b=[0 2 4 1 5 8 7];
33. >> D1 = pdist2(a,b,'minkowski') % euclidean, cosine, etc.
34. >> normA=a/norm(a);
35. >> normB=b/norm(b);
36. >> D2 = pdist2(normA,normB,'minkowski')
Determine las diferencias entre D1 y D2 y explíquelas.

37. >> b=a;


38. >> normB=b/norm(b);
39. >> D3 = pdist2(normA,normB,'minkowski')
Qué valor obtuvo y a que obedece esto?
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

40. >> c=[1 1 1 1 1 1 1];


41. >> normC=c/norm(c);
42. >> D4 = pdist2(normA,normC,'minkowski')
Qué valor obtuvo y a que obedece esto?

1. Realizar:
a. Descargue un conjunto de imágenes (mínimo 10) de alguna base de datos
(conjunto1), que pertenezcan a una misma categoría y otro conjunto similar de
imágenes diferentes entre ellas (conjunto2).
b. Lea cada conjunto de imágenes y almacénelos en Matlab. Investigue otra forma de
hacer este proceso, y de formas de almacenarlas.
c. Calcule para cada imagen sus correspondientes vectores de características
relacionados con momentos estadísticos de color, adicionando al menos otras tres
características de color que debe investigar. Documente.
d. Tabule el cálculo de las distancias (euclidiana y minkowski) de comparar una
imagen del conjunto 1 con todas las demás de dicho conjunto e igualmente las
distancias de la misma imagen con las del conjunto 2.
e. Responda que hacen las instrucciones marcadas con resaltador verde.
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

PARTE 2 - Extracción de características de imágenes - Texturas

OBJETIVO:
Aplicar la Matriz de coocurrencia (GLCM- Gray Level Cooccurrence Matrix) como una
técnica para extracción de características de textura de imágenes usando Matlab.

CONCEPTOS:

o Contrast: Devuelve una medida del contraste de intensidad entre un píxel y su


vecino en toda la imagen. El contraste es 0 para una imagen constante.
o Correlation: Devuelve una medida de lo correlacionado que está un píxel con
su vecino en toda la imagen.
o Energy: La energía es para una imagen constante igual a 1.
o Homogeneity: Devuelve un valor que mide la proximidad de la distribución de
elementos en el GLCM a la diagonal GLCM.
PASO A PASO:
A. Crear la siguiente matriz a como representación de una imagen:
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

1. >>a= [0 1 2 3 0 1;1 2 3 0 1 2;2 3 0 1 2 3;3 0 1 2 3 0;0 1 2 3 0 1; 1 2 3 0 1 2]

B. Generar su matriz de coocurrencia:

2. >> matrizcoo=graycomatrix(a,'NumLevels',4,'GrayLimits',[]) % 4 niveles de gris

C. Al ejecutar la siguiente línea de código:

3. >>matrizcoo2=graycomatrix(a,'NumLevels',4,'GrayLimits',[],'Offset',[0 1;0 2]);


Cuántas matrices de coocurrencia se generaron? Y Con cuáles orientaciones y
distancias se originaron?

D. Cálculo de estadísticas (características a partir de la GLCM):

4. >> stats1 = graycoprops(matrizcoo2);


A qué corresponden los datos contenidos en la variable stats1, de que tipo son?,
cuántos son?
Construya un vector de características normalizado con las características de textura
extraídas para a con las 2 distancias y orientaciones (ángulos).

E. Ejecutar las siguientes instrucciones (línea 5,6,7) e indicar que se hace en ellas y a que
corresponden los resultados obtenidos y cuál es la diferencia entre stats1 y statsD1?
5. >> matrizcooD1= matrizcoo2(:,:,1);
6. >> matrizcooD2= matrizcoo2(:,:,2);
7. >> statsD1 = graycoprops(matrizcooD1, {'contrast','homogeneity'});

F. Extracción de características a partir de la GLCM:


8. >>ROI= imread('/Users/smroa/Desktop/Electiva CBIR/ROI.jpg');
9. >> imshow(ROI);
10. >> GLCM = graycomatrix(ROI,'Offset',[0 1;-1 1;-1 0;-1 -1]); %angles
"offset":(0,45,90,135)
11. >> stats=graycoprops(GLCM,{'Contrast','Homogeneity','Correlation','Energy'});
12. >> contrast=(stats.Contrast);
13. >> en=(stats.Energy);
14. >> co=(stats.Correlation);
15. >> hom=(stats.Homogeneity);
16. >> m=mean(mean(ROI));
17. >> s=std2((ROI));
Interprete en qué consisten estas características??
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

G. Construcción del vector de características obtenido a partir de la GLCM:


18. >> f1=[m s hom co en contrast];
Normalice el vector f1.

19. >> GLCM2 = graycomatrix(ROI,'NumLevels',256,'GrayLimits',[],'Offset',[0 1;-1 1;-1


0;-1 -1]);
20. >>figure(1);imshow(GLCM2(:,:,1));
21. >> figure(2);imshow(GLCM2(:,:,2));
22. >> figure(3);imshow(GLCM2(:,:,3));
23. >> figure(4);imshow(GLCM2(:,:,4));

H. Trabajando con otras imágenes:


24. >> ROItum= imread('/Users/smroa/Desktop/Electiva CBIR/ROI_TUM.png');
25. >> ROIvert= imread('/Users/smroa/Desktop/Electiva CBIR/ROI_VERT.jpg');
26. >>figure(5); imshow(ROItum);
27. >>figure(6); imshow(ROIvert);
28. >>figure(7); imshow(ROI);
Hay diferencia al realizar este proceso con ROI_VERT.png?

29. >>ROIvert1= ROIvert(:,:,1);


30. >>ROIvert2= ROIvert(:,:,2);
31. >> ROIvert3= ROIvert(:,:,3);
Hay alguna diferencia entre ROIvert1, ROIvert2 y ROIvert3?

32. >> GLCMvert = graycomatrix(ROIvert1,'NumLevels',256,'GrayLimits',[],'Offset',[0 1;-


1 1;-1 0;-1 -1]);

33. >> ROItum1= ROItum(:,:,1);


34. >> ROItum2= ROItum(:,:,2);
35. >> ROItum3= ROItum(:,:,3);
36. >> GLCMtum = graycomatrix(ROItum1,'NumLevels',256,'GrayLimits',[],'Offset',[0
1;-1 1;-1 0;-1 -1]);
37. >> GLCM2 = graycomatrix(ROI,'NumLevels',256,'GrayLimits',[],'Offset',[0 1;-1 1;-1
0;-1 -1]);

I. Visualización de una de las matrices de coocurrencia de las tres regiones de interés.


38. >> figure(1);imshow(GLCM2(:,:,1));
39. >> figure(2);imshow(GLCMtum(:,:,1));
40. >> figure(3);imshow(GLCMvert(:,:,1));
Hay diferencias en las texturas de las diferentes regiones de interés?, Sucede lo
mismo en las otras matrices?
ELECTIVA: SISTEMAS DE RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO
Docente: Sandra Milena Roa Martínez
Departamento de Sistemas

Calcular los vectores de características a partir de estas matrices de coocurrencia


para cada imagen y normalícelos.
Hay diferencia al realizar este proceso (desde leer la imagen -línea 24 hasta
visualizar su matriz de coocurrencia – línea 40) con ROI_VERT.png con respecto a
ROI_VERT.jpg?

2. Realizar:
f. Identifique un dataset de imágenes públicas en la web y descargue un conjunto de
imágenes (mínimo 10) de alguna base de datos (conjunto1), que pertenezcan a
una misma categoría y otro conjunto de mínimo 10 imágenes con otras texturas
diferentes (conjunto2). Preferiblemente ROI de imágenes médicas de CT, RX, etc. o
que presenten texturas como telas, frutas, etc.
g. Calcule para cada imagen sus correspondientes vectores de características
relacionados con la GLCM. Documente.
h. Tabule el cálculo de las distancias (euclidiana y minkowski) de comparar una
imagen del conjunto 1 con todas las demás de dicho conjunto e igualmente las
distancias de la misma imagen con las del conjunto 2.
i. Responda las cuestiones que se encuentran en el desarrollo de la práctica.

Entregue todo en un solo archivo por grupo de máximo


dos estudiantes(informe de la práctica, segmentos de
código utilizados, pantallazos, localización de las
imágenes en un drive, etc.).

3. Material complementario:
• Texture Analysis - Michael A. Wirth
http://www.cyto.purdue.edu/cdroms/micro2/content/education/wirth06.pdf

• Texture Measures from GLCM – MATLAB CODE


https://www.imageeprocessing.com/2019/04/texture-measures-from-glcm-
matlab-code.html

• GLCM TEXTURE: A TUTORIAL v. 3.0 March 2017:


https://www.researchgate.net/publication/315776784_GLCM_Texture_A_Tutorial
_v_30_March_2017

También podría gustarte