Práctica 1 - 1958896 - JavierOsmarCovarrubiasBautista
Práctica 1 - 1958896 - JavierOsmarCovarrubiasBautista
Práctica 1 - 1958896 - JavierOsmarCovarrubiasBautista
Grupo: 308
El objetivo inicial por el que se desarrollaron estas técnicas era para mejorar la calidad
de las imágenes, especialmente para el ojo humano.
Contenido
1. Con el soporte de diferentes comandos, leer (imread) y mostrar (imshow) una imagen
en escala de grises. Si elige una imagen de Matlab por default, usar una diferente a
la de los ejercicios anteriores. Al guardar una imagen en el directorio de Matlab,
podemos leer y escribir (imwrite), por ejemplo, una imagen a color y guardarla en
escala de grises. Si decide seguir esta sugerencia, la figura debe estar como la de
peppers, a color y escala de grises.
2. Leer y mostrar una imagen a color.
Código:
Explicación:
1. Primeramente, la función “imread(‘Osmar.jpg’)” carga la imagen desde el
archivo de MATLAB y la almacena en la variable Imagen_color. La imagen se
carga en su forma original, con todos los canales de color (rojo, verde y azul).
2. Seguido de esto la función “rgb2gray(‘Imagen_color’)” convierte la imagen a
escala de grisis. La variable Imagen_escala_de_grises ahora contiene la
versión en blanco y negro de la imagen original.
3. Ahora la función “fig = figure('Name', 'Mi Figura', 'NumberTitle', 'off')” crea una
figura, la cual se abre en una ventana aparte, y le da el nombre “Mi figura”.
4. La función “fig.Color = 'white'” establece el color de fondo de la figura en
blanco.
5. Ahora para mostrar la imagen hacemos uso de “subplot(1,2,1)” para dividir el
área de trazado en 1 fila y 2 columnas, y selecciona la primera subparcela.
6. La función “imshow(Imagen_color)” muestra la imagen a color en la primer
subparcela. Y la función “title('Imagen a color')” agrega un título a la misma.
7. Por otro lado, la función “set(gca, 'XColor', 'red', 'YColor', 'red')” cambia el color
de los ejes a rojo en la primera subparcela.
8. Ahora la función “subplot(1,2,2)” cambia a la segunda parcela, seguido de esto
la función “imshow(Imagen_escala_de_grises)” muestra la imagen en escala
de grises. Finalmente “title('Imagen en escala de grises')” agrega un titulo a la
segunda subparcela.
Resultado obtenido:
3. Obtener el histograma de las tres componentes de la imagen a color.
Código:
Explicación:
1. Primeramente, la función “imread(‘Osmar.jpg’)” carga la imagen desde el
archivo de MATLAB y la almacena en la variable Imagen_normal.
2. A partir de la instrucción “figure” creamos una nueva figura.
3. Posteriormente hacer uso de la función “subplot(1,3,1)” para dividir el área de
trazado en 1 fila y 3 columnas, y selecciona la primera subparcela.
4. A partir de la función “imhist(Imagen_normal(:,:,1))” calculamos el histograma
para la imagen en escala de grises o para un canal especifico de una imagen
en color.
5. Repetimos los pasos 3 y 4 para los otros canales de color.
Resultado obtenido:
Método 1
Código:
Explicación:
1. Primeramente, la función “imread(‘Osmar.jpg’)” carga la imagen desde el archivo
de MATLAB y la almacena en la variable Imagen_color.
2. Ahora la función “imagesc(Imagen_color)” muestra la imagen en una figura.
Posteriorimente usamos la función “Imagen_color = Imagen_color(:)” convertimos
la imagen en un vector unidimensional (columna).
3. La función “p = imhist(Imagen_color)” calcula el histograma de la imagen. Por otro
lado la función “p( p == 0 ) = []” elimina los valores de histograma que son cero.
Seguido de esto usamos la función “p = p ./ numel(Imagen_color)” para normalizar
el histograma dividiendo cada valor por el numero total de pixeles en la imagen.
4. Por último, la función “E = round(-sum(p.*log2(p)), 3)” calcula la entropía de la
imagen.
Resultado obtenido:
Método 2
Código:
Explicación:
1. Primeramente, la función “imread(‘Osmar.jpg’)” carga la imagen desde el archivo
de MATLAB y la almacena en la variable Imagen_color.
2. Las funciones “Imagen_colorRed = Imagen_color(:,:,1);, Imagen_colorGreen =
Imagen_color(:,:,2); y Imagen_colorBlue = Imagen_color(:,:,3)” extrae los
componentes de color rojo, verde y azul de la imagen original.
3. Seguido de esto hacemos uso de las funciones “entRed =
entropy(Imagen_colorRed);, entGreen = entropy(Imagen_colorGreen); y entBlue
= entropy(Imagen_colorBlue)” para calcular la entropía de cada componente de
color.
4. Por último, la función “T = table({'Red'; 'Green'; 'Blue'}, [entRed; entGreen;
entBlue], 'VariableNames', {'Componente', 'Entropia'})” crea una tabla con tres filas
(una para cada componente de color) y dos columnas: “Componente” y ”Entropia”.
Resultado Obtenido:
Método 1
Código:
Explicación:
1. Primeramente, la función “imread(‘Osmar.jpg’)” carga la imagen desde el archivo
de MATLAB y la almacena en la variable Imagen_color.
2. Ahora con la función “P = double(Imagen_color)” convertimos la imagen en una
matriz de valores de punto flotante (doble precisión).
3. Seguido de esto hacemos uso de la función “x1 = double(P(:,1:end-1));” y “y1 =
double(P(:,2:end));” para extraer los componentes del canal rojo y verde de la
imagen respectivamente.
4. Se seleccionan 1000 pares de valores aleatorios de los componentes x e y. Se
calculan las medias (Ex y Ey), varianzas (Dx y Dy), covarianza(coxy) y coeficientes
de correlación (rxy) entre x e y.
5. Usando la función “plot(x, y)” graficamos los puntos (x, y) en un gráfico
bidimensional.
6. Después usamos la función “r_xy1 = corrcoef(x, y)” para calcular la matriz de
correlación entre x e y.
7. Finalmente, usando la función “x1 .* y1” multiplicamos elemento por elemento los
componentes x e y.
Resultado obtenido:
Método 2
Código:
Explicación:
Resultado obtenido:
Conclusión
Esta práctica me ha permitido desafiar y expandir mis conocimientos previos de Matlab,
específicamente en el ámbito del procesamiento digital de señales. He logrado
comprender e implementar funciones esenciales como imread e imshow, las cuales son
fundamentales para cargar y visualizar imágenes. Adicionalmente, he aprendido a utilizar
el comando rgb2gray para convertir imágenes a escala de grises. En este proceso,
descubrí y dominé nuevas funciones que me permitieron obtener el histograma, calcular
la entropía y determinar las correlaciones de una imagen. Estos conceptos, que eran
completamente nuevos para mí, han enriquecido mi comprensión sobre el análisis de
imágenes. He constatado que la plataforma de MATLAB es una herramienta poderosa y
versátil, no solo para extraer datos relevantes de una imagen, sino también para
manipular su paleta de colores (RGB). Esta experiencia ha reforzado mi apreciación por
MATLAB como una herramienta indispensable en el procesamiento de imágenes y
señales.