Informe Progrmacion 5
Informe Progrmacion 5
Informe Progrmacion 5
Este curso te dará la oportunidad de aprender los conceptos fundamentales del procesamiento
de imágenes, desde la adquisición de imágenes hasta la extracción de información valiosa de
ellas. El procesamiento de imágenes es una disciplina muy interesante que tiene una amplia
variedad de aplicaciones en campos como la medicina, la robótica y la visión por
computadora.
Al finalizar el curso, tendrás una base sólida en los conceptos fundamentales del
procesamiento de imágenes y estarás preparado para seguir explorando esta fascinante
disciplina. ¡Empecemos!
Resumen
Marco teórico
La función "imread"
La función "imread" se utiliza para leer una imagen en el formato especificado.
La función "imshow"
La función "imshow" es otra función de MATLAB que se utiliza para mostrar una imagen
en una ventana de visualización
La función "imshowpair”
La función "imshowpair" es otra función de MATLAB que se utiliza para mostrar dos
imágenes juntas en una ventana de visualización.
La función “imwrite”
La función "imwrite" se utiliza para escribir una imagen en un archivo en el disco. El
primer argumento es la imagen que se va a escribir en el archivo y el segundo argumento
es el nombre del archivo que se va a crear.
La función sz = size(…..)
Esta línea de código en MATLAB se utiliza para obtener el tamaño (dimensiones) de una
imagen y guardarlas en una variable llamada "sz".
La función R = I(:,:,1);
Esta línea de código en MATLAB se utiliza para extraer un canal de color de una imagen
y almacenarlo en una variable separada.
La función “Rmax = max(R,[],"all")”
Esta línea de código en MATLAB se utiliza para encontrar el valor máximo en un arreglo
o matriz y almacenarlo en una variable separada.
La función Rmin = min(R,[],"all")
Esta línea de código en MATLAB se utiliza para encontrar el valor minimo en un arreglo
o matriz y almacenarlo en una variable separada.
La función “montage({R,G,B})”
Esta línea de código en MATLAB se utiliza para mostrar varias imágenes juntas en una
ventana de visualización en un formato de mosaico.
La función “[R,G,B] = imsplit(I);”
Esta línea de código en MATLAB se utiliza para separar una imagen en sus canales de
color (rojo, verde y azul) y almacenar cada canal en una variable separada.
La función "im2gray"
La función "im2gray" se utiliza para convertir una imagen a escala de grises.
La función "imhist"
La función "imhist" se utiliza para calcular y mostrar el histograma de una imagen en
escala de grises. El histograma representa la distribución de intensidad de los píxeles en la
imagen.
La función "imadjust"
La función "imadjust" se utiliza para ajustar el contraste de una imagen en escala de
grises.
La función "imlocalbrighten"
La función "imlocalbrighten" se utiliza para ajustar el brillo de una imagen en color.
La función “>”
Esta línea de código en MATLAB convierte una imagen en escala de grises con contraste
ajustado en una imagen binaria utilizando un umbral y el operador de comparación ">".
Resultados
1. Introducción
Visión general del curso
El procesamiento de imágenes es un conjunto de técnicas que actúa
Sobre una imagen digital para modificarla o extraer su información. las técnicas de
procesamiento de imágenes se pueden usar para ajustar el contraste eliminar ruidos o
identificar bordes. Al combinar distintas técnicas, pueden diseñar algoritmos que
realizan tareas complejas.
ACTIVIDAD 3
Cargue IMG_002.jpg en la variable I2 y
muéstrela.
Recuerde usar un punto y coma (;)
cuando lea el archivo de imagen.
imshow(I2)
%lee la imagen "IMG_001.jpg" en "I2".
%muestra la imagen "I"
SEGUIR PRACTICANDO
Utilice imwrite para exportar I como
archivo PNG. Luego, use imread para
cargar el archivo de imagen en una
variable nueva y muéstrelo.
imwrite(I,"myImage.png")
Inew = imread("myImage.png");
imshow(Inew)
imwrite(I,"IMG_001.jpg")
Inew = imread("IMG_001.jpg");
imshow(Inew)
%guardar la imagen "I" en un archivo
llamado "IMG_001.jpg".
%Lee la imagen del archivo
"IMG_001.jpg" en una nueva variable
llamada "Inew".
%enseña la imagen "Inew" en una
ventana de visualización.
Imágenes en color y escala de grises
o (1/3) Cómo se almacenan las imágenes en MATLAB
Cuando se almacena una imagen en Matlab se muestra como un arreglo numérico. Cada
pixel corresponde a un elemento de arreglo. El arreglo tiene el mismo numero de filas que
la altura en los pixeles de la imagen, lo mismo sucede con las columnas.
o (2/3) Extraiga planos de color y valores de intensidad
ACTIVIDAD 1
Cargue IMG_003.jpg en la variable I y luego muéstrela usando imshow.
I = imread("IMG_003.jpg");
imshow(I)
%Lee la imagen "IMG_003.jpg" desde el archivo y almacenarla en la variable "I".
%enseña la imagen "I" en una ventana de visualización.
ACTIVIDAD 2
Averigüe el tamaño de I y almacene el resultado en sz.
sz = size(I)
%Obtiene las dimensiones de la imagen "I".
%Almacena las dimensiones de la imagen en una variable llamada "sz".
ACTIVIDAD 3
Extraiga el plano de color rojo de la imagen RGB I y almacénelo en R. Muestre R usando
imshow.
R = I(:,:,1);
imshow(R)
%Extrae el primer canal de color (el canal rojo) de la imagen "I".
%Almacena el canal rojo en una variable separada llamada "R".
ACTIVIDAD 4
Averigüe el mayor valor del plano de color rojo R y almacene el resultado en Rmax.
Rmax = max(R,[],"all")
%Encontrar el valor máximo en la matriz "R".
%Almacena el valor máximo en una variable separada llamada "Rmax".
ACTIVIDAD 5
Averigüe el menor valor de intensidad de los píxeles del plano de color rojo y almacene el
resultado en Rmin
Rmin = min(R,[],"all")
%Encontrar el valor minimo en la matriz "R".
%Almacena el valor minimo en una variable separada llamada "Rmax".
SEGUIR PRACTICANDO
Pruebe imsplit para extraer los planos de color de I. Muestre los tres planos de color usando
montage.
[R,G,B] = imsplit(I);
montage({R,G,B})
%Separa la imagen "I" en sus canales de color (rojo, verde y azul) y almacenar cada canal
en una variable separada ("R", "G" y "B").
%enseña los canales de color "R", "G" y "B" juntos en una ventana de visualización.
%enseña los canales de color en un formato de mosaico en la ventana de visualización
(usando la función "montage").
o (3/3) Convierta imágenes en color a escala de grises
I = imread("IMG_002.jpg");
imshow(I)
ACTIVIDAD 1
Convierta la imagen RGB I en una imagen en escala de grises y almacene el resultado en
gs. Muestre gs.
gs = im2gray(I);
imshow(gs)
%Convertir la imagen "I" a escala de grises.
%Almacena la imagen en escala de grises en una nueva variable "gs".
%Mostrar la imagen en escala de grises "gs" en una ventana de visualización.
ACTIVIDAD 2
Averigüe el tamaño de gs y almacene el resultado en sz.
sz = size(gs)
%Obtener las dimensiones de la imagen en escala de grises "gs".
%Almacena las dimensiones de la imagen en una variable llamada "sz".
SEGUIR PRACTICANDO
Use imwrite para guardar gs en el archivo gs.jpg.
imwrite(gs,"gs.jpg")
%Escribir la imagen en escala de grises "gs" en un archivo llamado "gs.jpg".
%Guarda el archivo "gs.jpg" en el disco.
Ajuste del contraste
I = imread("IMG_001.jpg");
I2 = imread("IMG_002.jpg");
gs = im2gray(I);
gs2 = im2gray(I2);
imshowpair(gs,gs2,"montage")
ACTIVIDAD 1
Muestre el histograma de intensidad de la imagen en escala de grises gs.
imhist(gs)
%Calcula el histograma de la imagen en escala de grises "gs".
%Mostrar el histograma utilizando la función "imhist"
ACTIVIDAD 2
Muestre el histograma de intensidad de gs2.
imhist(gs2)
%Calcula el histograma de la imagen en escala de grises "gs2".
%Mostrar el histograma utilizando la función "imhist"
ACTIVIDAD 3
Ajuste el contraste de gs2 y guarde el resultado en gs2Adj.
Muestre gs2 y gs2Adj en paralelo usando la función imshowpair con la opción "montage".
gs2Adj = imadjust(gs2);
imshowpair(gs2,gs2Adj,"montage")
%Ajuste el contraste de la imagen en escala de grises "gs2" utilizando la función
"imadjust", y almacenar la imagen ajustada en una variable "gs2Adj".
%Mostrar la imagen original "gs2" y la imagen ajustada "gs2Adj" juntas utilizando la
función "imshowpair" y el formato de mosaico "montage".
ACTIVIDAD 4
Muestre el histograma de intensidad de gs2Adj.
imhist(gs2Adj)
%Calcula el histograma de la imagen en escala de grises "gs2Adj".
%Mostrar el histograma utilizando la función "imhist"
SEGUIR PRACTICANDO
Intente ajustar el contraste de gs y mostrar el histograma ajustado. ¿Funciona bien imadjust
en este caso?
imadjust solo sirve para imágenes en escala de grises a menos que la función tenga
otros valores de entrada adicionales. Sin embargo, puede usar la función
imlocalbrighten para ajustar el contraste de una imagen en color. Pruebe
imlocalbrighten en la imagen en color I2 y muestre el resultado.
I2adj = imlocalbrighten(I2);
gsAdj = imadjust(gs);
I2adj = imlocalbrighten(I2);
%Ajusta el contraste de la imagen en escala de grises "gs" utilizando la función "imadjust",
y almacenar la imagen ajustada en una variable "gsAdj".
%Ajusta el brillo de la imagen en color "I2" utilizando la función "imlocalbrighten", y
almacenar la imagen ajustada en una variable "I2adj".
Trabajo interactivo con imágenes
o (1/2) App Image Viewer
Se puede usar la app para mostrar la imagen, ver la información y el histograma para ajustar
el contraste de forma interactiva.
3. Segmentación de imágenes
Ejemplo: fotos de recibos
Definición de la segmentación
La división de segmentación de imágenes consiste en dividir o segmentar una imagen en
regiones como carriles, coches y carreteras
ACTIVIDAD 2
Represente gráficamente el histograma de intensidad de gsAdj.
imhist(gsAdj)
%Calcula el histograma de la imagen en escala de grises "gsAdj".
% Mostrar el histograma utilizando la función "imhist".
ACTIVIDAD 3
Aplique un umbral de 200 a gsAdj y almacene el resultado en BW. Muestre BW.
BW = gsAdj > 200;
imshow(BW)
%Crea una imagen binaria "BW" a partir de la imagen ajustada "gsAdj" utilizando
un umbral de 200 y el operador de comparación ">".
%Mostrar la imagen binaria "BW" utilizando la función "imshow".
SEGUIR PRACTICANDO
Repita los pasos anteriores con IMG_004.jpg. ¿Funciona bien el mismo valor umbral con
este recibo? Si no es así, ¿qué valor umbral genera la mejor imagen binaria?
img = imread("IMG_004.jpg");
gs = im2gray(img);
gsAdj = imadjust(gs);
imshow(gsAdj)
imhist(gsAdj)
BW = gsAdj > 203;
imshow(BW)
%Cargar la imagen "IMG_004.jpg" en la variable "img".
%Convertir la imagen "img" a escala de grises utiliza "im2gray" y almacena en "gs".
%Ajustar el contraste de la imagen en escala de grises "gs" utilizando la función "imadjust"
y almacenar la imagen ajustada en la variable "gsAdj".
%Mostrar la imagen ajustada "gsAdj" utilizando la función "imshow".
%Calcula y mostrar el histograma de la imagen ajustada "gsAdj" utilizando "imhist".
%Convertir la imagen ajustada "gsAdj" en una imagen binaria utilizando un umbral de 203
y el operador de comparación ">" y almacenarla en "BW".
%Mostrar la imagen binaria "BW" utilizando la función "imshow".
o (2/2) Selección automática del valor umbral
ACTIVIDAD 1
Use imbinarize para crear una imagen binaria BW a partir de gsAdj y muestre BW.
BW = imbinarize(gsAdj);
imshow(BW)
ACTIVIDAD 2
Use imbinarize con la opción "adaptive" para crear una imagen binaria a partir de
gsAdj. Almacene el resultado en BWadapt.
Muestre gsAdj y BWadapt como un montaje usando imshowpair.
BWadapt = imbinarize(gsAdj,"adaptive");
imshowpair(gsAdj,BWadapt,"montage")
ACTIVIDAD 3
Use imbinarize con la opción "adaptive" y configure "ForegroundPolarity" con el
valor "dark" para crear una imagen binaria a partir de gsAdj. Almacene el resultado
en BWadapt.
Muestre gsAdj y BWadapt como un montaje usando imshowpair.
BWadapt = imbinarize(gsAdj,"adaptive","ForegroundPolarity","dark");
imshowpair(gsAdj,BWadapt,"montage")
SEGUIR PRACTICANDO
Pruebe a crear una imagen binaria a partir de IMG_005.jpg aplicando el método del valor
umbral adaptativo. Muestre el resultado junto con la imagen BWadapt que ha creado
anteriormente.