0% encontró este documento útil (0 votos)
10 vistas5 páginas

Informe Práctica de Laboratorio No.2

La práctica de laboratorio se centra en el uso de MATLAB para la lectura, procesamiento y escritura de imágenes digitales, abarcando comandos esenciales como imread, imwrite, y funciones de manipulación de imágenes. Se realizan ejercicios prácticos que incluyen la conversión de formatos de imagen, ajuste de brillo, y visualización de imágenes en diferentes espacios de color. Además, se exploran técnicas como el bit-slicing y la conversión de imágenes RGB a HSV, enfatizando la importancia de los bits más significativos en la representación de imágenes.

Cargado por

David
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas5 páginas

Informe Práctica de Laboratorio No.2

La práctica de laboratorio se centra en el uso de MATLAB para la lectura, procesamiento y escritura de imágenes digitales, abarcando comandos esenciales como imread, imwrite, y funciones de manipulación de imágenes. Se realizan ejercicios prácticos que incluyen la conversión de formatos de imagen, ajuste de brillo, y visualización de imágenes en diferentes espacios de color. Además, se exploran técnicas como el bit-slicing y la conversión de imágenes RGB a HSV, enfatizando la importancia de los bits más significativos en la representación de imágenes.

Cargado por

David
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PRÁCTICA DE LABORATORIO 2

MATLAB
FUNDAMENTOS DE IMÁGENES DIGITALES

David Felipe Nuñez Herrera


Facultad de Ingeniería Johann Santiago Niño Medina
Programa de Ingeniería Electrónica extensión Tunja
Facultad de Ingeniería
Universidad Pedagógica y Tecnológica de Colombia
Programa de Ingeniería Electrónica extensión Tunja
Tunja, Boyacá - Colombia
Universidad Pedagógica y Tecnológica de Colombia
[email protected]
Tunja, Boyacá - Colombia
[email protected]

Resumen— La presente práctica de laboratorio tiene como  Int8: Enteros de 8 bits en el rango de -128 a 127 (1 byte
objetivo conocer los comandos básicos y los más utilizados para por elemento).
la lectura, rl procesamiento y la escritura de imágenes mediante  Int16: Enteros de 16 bits varía entre -32768 a 32767 (2
el uso del software MATLAB, así mismo se pretende la bytes por elemento).
aplicación de ejercicios de procesamiento digital de imágenes  Int32: Enteros de 32 bits varía entre -2147483648 a
para evidenciar de forma práctica los temas abordados en el
2147483647 (4 bytes por elemento).
curso teórico.
 Logical: Valores de cero o uno (0 o 1) (1 bit por
elemento).

Abstract—This laboratory practice is intended to know the most


used and the basics commands to read, processing and write of  EJERCICIO 2
images using MATLAB software, also is intended to apply
exercises of digital image processing to check in practice the Describa la función que realizan los siguientes comandos de
topics viewed in the curse Matlab y diseñe un script donde se utilicen. Realice las
observaciones correspondientes especialmente revisando el
Palabras clave —MATLAB, procesamiento de imágenes . contenido de las matrices que contienen la información de la
imagen:
I. DESARROLLO DE LA PRACTICA
 EJERCICIO 1  Imread: cargar o leer una imagen.
 Inwrite: guarda una imagen en un archivo.
Describa los formatos de datos (matriz) que pueden llegar a  Imshow: clasifica la imagen en una figura según el tipo.
tener los pixeles de una imagen, en cuanto a capacidad y  Imagen: muestra la imagen de matriz.
calidad en Matlab, que se definen a continuación: Hay  Impixel: retorna el valor del pixel de la imagen
especificada.
diferentes tipos de datos, representan un dominio y la forma
 Size: retorna el tamaño de la matriz, correspondiente a la
en que se representan un valor: imagen, retorna el tamaño en un vector.
 Imresize: convierte una imagen aun tamaño específico.
 Double: punto flotante que varía aproximadamente  Imfinfo: retorna una estructura la cual contiene
entre -10308 a 10308 doble precisión (8 bytes por información sobre una imagen en un archivo gráfico.
elemento).  Imtool: abre el visor de imágenes.
 Uint8: Enteros de 8 bits varía entre 0 a 255 (1 bytes por  Gray2ind: convierte una imagen que está en escala de
elemento). grises o binaria a imagen indexada.
 Uint16: Enteros de 32 bits varía entre 0 a 65535 (2  Ind2rgb: convierte una imagen indexada a imagen en
bytes por elemento). formato RGB.
 Uint32: Enteros de 32 bits varía entre 0 a 4294967295  Rgb2gray: convierte una imagen en formato RGB a
(4 bytes por elemento). imagen en escala de grises.
 Rgb2ind: convierte una imagen en formato RGB a
imagen indexada.
 Mat2gray: convierte una matriz en una imagen en escala Fig. 2. Suma de pixeles en imagen RGB adicionando valores de
de grises. (+15 y -15).
 Im2uint8: convierte una imagen a enteros sin signo (8
bits). Revisar anexo Ejercicio3_4.m
 Im2bw: convierte una imagen a imagen binaria basada
en blanco y negro o en el umbral.
 Im2double: convierte una imagen en datos de tipo  EJERCICIO 5
double.
 Im2uint16: convierte una imagen a enteros sin Realizar una función mediante un script que construya y visualice
signo (16 bits). dos imágenes de 256x256 con variación del nivel de gris en filas y
 Imrotate: rotar la imagen. columnas.
 Imcrop: recortar la imagen
 Isbw: retorna el valor verdadero de una imagen Para crear una imagen con variación del nivel de grises en filas y
 Isgray: retorna el valor verdadero de una imagen en columnas, se define una matriz con valores nulos, el cual creara
 Isind: retorna el valor verdadero de una imagen una imagen en negro. Luego se crea una función encargada de
 Isrgb: retorna el valor verdadero de una imagen darle valores en forma ascendente desde 0 a 255. En este caso para
 Imadjust: ajusta la intensidad de la imagen o colormap. una matriz 256x256 los datos son enteros de 8 bits, para lo cual se
usa un dato tipo (uint8); en la figura 3 se muestra la variación por
Revisar anexo Ejercicio2.m fila y en la figura 4 se muestra la variación en columna.

 EJERCICIO 3 Y 4

escalar en una locación individual (Píxel). (𝑖𝑖,𝑗𝑗) = 𝐼𝐼(𝑖𝑖,𝑗𝑗)+25


Realice un programa que permita adicionar y sustraer un valor

o 𝐼𝐼(𝑖𝑖,𝑗𝑗)= 𝐼𝐼(𝑖𝑖,𝑗𝑗)−25. Utilice una imagen en escala de


grises. ¿Cuál es el efecto de adicionar o restar valores? Expanda la
técnica a una imagen RGB adicionando o restando a los tres
canales escalares. Pruebe cambiando uno de los canales
manteniendo los otros sin cambiar.

Basado en el ejercicio anterior, usando la función for de


MATLAB, realice un programa (Script, sin interfaz gráfica), que
permita pasar por todos los píxeles de la imagen, adicionando o
restando valores, el programa no debe sobrepasar el valor límite
adicionable (255 para 8 bits, 216 para 16 bits).

Al realizar la suma de valores, la imagen adquiere brillo, si se


realiza la resta se verá más oscura como se muestra en la figura 1.

Fig. 3. Matriz variación en fila (grises).

Fig. 1. Suma de pixeles en imagen adicionando valores de (+15 y -


15).

Al expandir a una imagen en RGB, como se muestra en la figura 2,


se observa que los tonos toman más intensidad en la imagen.
Fig. 5. Diseños de color falso incorporados en Matlab.

Mediante comandos usando subplot en pantalla se muestra:

 EJERCICIO 7

Realice un script que utilice la función de escritura de


imágenes y guarde una imagen con extensión JPEG (por
ejemplo prueba.jpg) y una vez con formato PNG
(prueba.png). Cargue estas dos imágenes en Matlab usando
las variables ‘Ijpg’ y ’Ipng’. Use la función imabsdiff para
crear la imagen de diferencia entre ‘Ijpg’ y ’Ipng. Muestre la
imagen usando imagsec. Explique los resultados según la
teoría vista en clase.

Para leer una imagen en MATLAB se utiliza el comando imread el


cual almacena en una variable, la imagen que se le entrega como
argumento, de esta manera con el comando imwrite puede
generarse un archivo de la extensión que se desee, para este
ejercicio en concreto, se utiliza el primer comando para almacenar
la imagen en una variable, posteriormente con el comando imwrite,
se generan dos archivos a partir de la imagen original, uno jpg, y
Fig. 4. Matriz variación en columna (grises). otro png con el fin de poder visualizar perdidas de información
haciendo la diferencia entre ambas imágenes con ayuda del
Revisar anexo Ejercicio5.m comando imabsdiff.
 EJERCICIO 6
El comando imabsdiff o ‘Absolute Difference of Two Images” resta
Usando una imagen en escala de grises. Investigue el uso de elemento por elemento la matriz 1 de la 2, es decir, para el caso,
diferentes mapas de falso color para mostrar la imagen (help resta la imagen jgp de la png y retorna la diferencia en una matriz
graph3d), observe la lista correspondiente en la línea de comandos. Z.
Revise también (help colormap). Realice con subplot una pantalla
de imágenes en todos los mapas de falso color de las que se Los resultados del ejercicio se muestran en la Fig.6.
encuentran en estas secciones.

Al revisar en help de Matlab, en el comando colormap


encontramos la siguiente escala de colores falsos y su palabra de
código para obtener el color como se muestra en la figura 5. Para
“help graph3d” da los comandos que se pueden usar en Matlab. A
continuación en la figura 6 se muestra la aplicación de los colores
falsos de la figura 5.

Fig. 6. Resultados de la diferencia de las imágenes, mostradas con


el comando imagesc (superior) e imshow (inferior).

El comando imagesc, es un comando que no realiza


optimizaciones para la visualización de imágenes, es decir,
no oculta los ejes de visualización, sin embargo ofrece
visualización en todo el rango de colores, mientras que el
comando imshow si está destinado a la visualización de
imágenes, por eso oculta automáticamente los ejes de
coordenadas y abscisas como puede evidenciarse en la
Fig.6.

 EJERICIO 8

Implemente un programa para hacer la operación bit-slicing


descrita en clase y extraiga/muestre los resultados en
imágenes separadas usando la función subplot. No utilice la
función bitget, ni bitset, sino implemente una función que
realice el procedimiento.

El bit-slicing es una técnica de compresión de imágenes que


permite seleccionar o establecer el número de bits que
representan cada pixel en una imagen, siendo el objetivo del
ejercicio, mostrar la misma imagen con 1 bit hasta 8 bits,
para esto se requiere llegar a obtener un equivalente binario
de la información de cada pixel en la imagen a tratar, esto se
hace para poder crear un algoritmo de desplazamiento de
bits con el fin de representar la imagen con el número de
bits deseado. Fig. 7. Resultados de la aplicación de bit-slicing para un
desplazamiento de 1 a 8 bits.
Inicialmente se lee la imagen a procesar con el comando
imread, luego se establece una ventana de dibujado de 3x3 Como se ve en la Fig.7, cuando se utilizan los bits menos
con el comando subplot. significativos, la información no es suficiente para
representar la imagen haciéndose clara la pérdida de
El algoritmo creado consiste en emplear ciclos for para información, incluso en el sexto desplazamiento, no puede
realizar el desplazamiento de bits y recorrer la imagen en observarse una similitud aceptable en la imagen
cuestión, de esta forma los pasos que sigue el algoritmo son representada, por lo cual se concluye que los bits más
los siguientes: significativos son los que contienen la mayor parte de
información para efectos de representación de la imagen.
 Se obtiene la imagen original.
Para el ejercicio en cuestión se utiliza una imagen en escala
de grises para facilitar la apreciación de las diferencias.
 Se convierte la primera columna a binario.
Cada pixel tiene 8 bits asignados para su representación
 Se aumenta el apuntador de columna.

 Se desplaza en 1, el numero de bits a representar la


imagen.
 EJERICIO 9
 Se representa la imagen.
Use la función rgb2hsv, escriba un programa que permita
visualizar los canales (hue, saturation, value) para una
El proceso se repite hasta que se recorre toda la imagen y
imagen RGB.
hasta que se han desplazado ocho bits, de esta manera de
obtiene el siguiente resultado.
El comando rgb2hsv permite la conversión de una imagen
en formato RGB a el formato HSV (Hue, Saturation, Value)
o (Hue, Saturation, Brightness).

Al utilizar esta función, se genera un grupo de matrices el


cual contiene cada canal del formato, luego con el comando
imshow pueden visualizarse por separado los mismos. El la
Fig.8 se muestran los resultados.
Fig. 8. Visualización de la imagen original, en HSV y los tres
canales por separado del formato HSV.

El formato HSV y el RGB tienen una diferencia notable, ya


que no se muestra la misma imagen, y los canales del
formato HSV no poseen color, estando los tres en escala de
grises.

También podría gustarte