Upload
emerson-kleem
View
23
Download
1
Embed Size (px)
Citation preview
LABORATORIO 1: FUNDAMENTOS EN LA TEORÍA DEL TRATAMIENTO DIGITAL DE IMÁGENES
OBJETIVOS
Aprender la lectura, escritura y visualización de imágenes en Matlab.
Conocer las clases de datos y tipos de imágenes en Matlab.
PROCEDIMIENTO
A. REPRESENTACION DE IMÁGENES DIGITALES
Una imagen matemáticamente está definida como una función f(x,y), donde las variables x e y
son coordinadas espaciales. La amplitud de la función f para cualquier valor de (x,y) es
denominado la intensidad de la imagen en dicho punto. Para el caso de imágenes en escala de
grises el valor de dicha amplitud de la función vendría a ser la intensidad del nivel de gris de la
imagen.
Donde cada elemento de la matriz f es denominado pixel.
B. LECTURA, VISUALIZACION Y ESCRITURA DE IMÁGENES EN MATLAB
1) LECTURA DE IMÁGENES
La lectura de imágenes se realiza de la siguiente manera: Formato del comando.
f = imread('filename')
Donde:
filename : cadena que contiene el nombre completo de la imagen.
f : matriz o arreglo que contiene los datos de la imagen.
Ejemplo: f = imread(’frutas.tif’); % Leer imagen. Ahora f es un % arreglo que contiene los % datos de la imagen.
Y
X F(xi,yi)
MxN
2) VISUALIZACION DE IMÁGENES
La visualización de imágenes se realiza de la siguiente manera: 1er Formato del comando.
imshow(f)
Donde:
f: matriz o arreglo que contiene los datos de la imagen.
Ejemplo: figure(1) imshow(f) % Mostrar el arreglo(imagen) f.
2do Formato del comando.
imshow(f,[low high])
Descripción:
Usado generalmente para visualizar imágenes en “BAJO RANGO DINAMICO”
de niveles de gris.
Muestra como “negro” todos los valores menores o iguales que low y
como “blanco” todos los valores mayores o iguales que high.
Ejemplo:
figure(2) imshow(f,[85 170]) % Mostrar en fig2. como "negro" todos % los pixeles de f cuyo valor de gris % es menor o igual a 85, y mostrar % como "blanco" todos los pixeles de f % cuyo valor de gris es mayor o igual % a 170.
3er Formato del comando.
imshow(f,[])
Descripción:
Usado igualmente que el 2do formato. En este low sería el mínimo valor
de los elementos de la matriz o arreglo f y high sería el máximo valor
del los elementos de la matriz o arreglo f.
Ejemplo:
figure(1) , f = imread(’frutas_bc.tif’); imshow(f)
figure(2) imshow(f,[]) % Mostrar imagen en fig2. Usando el % segundo formato, donde "low" es % el mínimo valor de f y "high" es % el máximo valor de f.
3) ESCRITURA DE IMÁGENES
La escritura de imágenes se realiza de la siguiente manera 1er Formato del comando.
imwrite(f,'filename')
Donde:
f: matriz o arreglo de la imagen.
filename: nombre completo de la imagen a escribir.
Ejemplo
imwrite(f,'frutas_w.tif'); % Escribir la imagen f. Si no
% no se especifica la ruta de
% datos, el comando guarda el
% archivo en el Directorio de
% Trabajo.
2do Formato del comando.
Sintaxis del comando imwrite aplicable sólo a imágenes JPEG
imwrite(f,'filename.jpeg','quality',q)
Donde:
f: matriz o arreglo de la imagen.
filename: nombre completo de la imagen a escribir.
quality: parámetro que controla la característica de la imagen de
salida.
q: valor entero de 0 to 100 (nivel de compresión JPEG)
Descripción:
Este tipo de escritura es usado solo para la creación de imágenes de
formato jpg. Un valor bajo de “q” significa una imagen de baja
calidad, la imagen es comprimida reduciendo el peso del archivo (KB o
MB) pero a la vez se degrada la imagen.
Ejemplo
g = imread('luna.tif'); % Leer imagen.
figure(1), imshow(g) % Mostrar imagen en fig1.
title('Original')
figure(2)
imwrite(g,'luna50.jpg','quality',50); % Escribir imagen en
imshow('luna50.jpg') % formato jpg con una
title('Quality 50') % calidad del 50%.
figure(3)
imwrite(g,'luna25.jpg','quality',25); % Escribir imagen en
imshow('luna25.jpg') % formato jpg con una
title('Quality 25') % calidad del 25%.
figure(4)
imwrite(g,'luna15.jpg','quality',15); % Escribir imagen en
imshow('luna15.jpg') % formato jpg con una
title('Quality 15') % calidad del 15%.
figure(5)
imwrite(g,'luna5.jpg','quality',5); % Escribir imagen en
imshow('luna5.jpg') % formato jpg con una
title('Quality 5') % calidad del 5%.
figure(6)
imwrite(g,'luna0.jpg','quality',0); % Escribir imagen en
imshow('luna0.jpg') % formato jpg con una
title('Quality 0') % calidad del 0%.
Original Quality 50 Quality 25
100% 50% 25%
494KB 65.2KB 48.4KB
3er Formato del comando.
Sintaxis del comando imwrite aplicable sólo a imágenes TIF
imwrite(f, 'filename.tif', 'compression', 'parameter', ...
'resolution', [colres rowres])
Donde:
'parameter' :
'none' => sin compresión.
'packbits' => compresión LZW o packbit compression (imagen no binaria)
'ccitt' => compresión ccitt (imagen binaria)
[colres rowres] : resolución columna y fila en puntos por unidad.
(el valor por defecto es [72 72])
Descripción:
Este tipo de formato de escritura el parámetro a utilizar comúnmente
será el de la resolución, el cual determina la nitidez de la imagen al
momento de la impresión.
Ejemplo
Se tiene una imagen en formato jpg, a una resolución de 300dpi, de un
tamaño de 3000x2400 pixels y a una dimensión de 10x8 pulgadas. Se
desea almacenar esta imagen en formato tif, sin ninguna compresión,
con el nombre cityhall_fixdpi. Además se desea reducir el tamaño de la
imagen a 2.5x2 pulgadas manteniendo el tamaño de la imagen.
Entonces la nueva resolución de la imagen será de:
f = imread('cityhall_300dpi.jpg'); figure(1) , imshow(f)
imwrite(f,'cityhall_fixdpi.tif','compression','none',... 'resolution',[1200 1200]); figure(2) imshow('cityhall_fixdpi.tif')
Quality 15 Quality 5 Quality 0
15% 5% 0%
33.4KB 14.8KB 9.74KB
El listado de la siguiente tabla muestra los formatos soportados por los comandos de lectura y
escritura en Matlab 7.7.
Formato Descripción Extensión Reconocida
BMP† Windows Bitmap .bmp
CUR Windows Cursor Resources .cur
FITS† Flexible Image Transport System .fts, .fits
GIF Graphics Interchange Format .gif
HDF Hierarchical Data Format .hdf
ICO† Windows Icon Resources .ico
JPEG Joint Photographic Experts Group .jpg, .jpeg
JPEG 2000† Joint Photographic Experts Group .jp2, .jpf, .jpx, j2c, j2k
PBM Portable Bitmap .pbm
PGM Portable Graymap .pgm
PNG Portable Network Graphics .png
PNM Portable Any Map .pnm
RAS Sun Raster .ras
TIFF Tagged Image File Format .tif, .tiff
XWD X Window Dump .xwd
† Soportado solo por el comando imread, pero no por imwrite.
NOTA 1.: Conversión de imágenes de color a escala de grises.
Formato del comando.
g = rgb2gray(f)
Donde:
f: matriz o arreglo de la imagen a color.
g: matriz equivalente a la imagen original en escala de grises.
Ejemplo
f = imread('cityhall_fixdpi.tif'); % Leer imagen.
figure(1), imshow(g) % Mostrar imagen.
title('Original a color')
CityHall_300dpi.jpg (40%) CityHall_fixdpi.tif (100%)
figure(2)
g = rgb2gray(f); % Convertir imagen a escala de grises.
imshow(g) % Mostrar imagen.
title('Original a color')
C. CLASES DE DATOS
Todos los tipos de datos en Matlab son diseñados para funcionar como clases en la
programación orientada a objetos. En el caso del procesamiento digital de imágenes se utilizan
valores enteros para designar las coordinadas espaciales de una imagen, pero los valores de
los pixeles (su intensidad) no están restringidos a ser solamente enteros ya que por ejemplo
después de haber realizado una operación de transformación a una imagen, los valores de los
pixeles tomarían ahora valores con punto decimal.
El siguiente listado muestra las diferentes clases de datos que soporta Matlab para representar
los valores de los pixeles (intensidad).
Las clases uint8 y logical son comúnmente usadas en la lectura de imágenes. Las clases de
punto flotante como single y double son usadas en operaciones o como resultado de
operaciones como la Transformada de Fourier.
D. TIPOS DE IMAGENES
Las operaciones más comunes en el procesamiento de imágenes monocromas se realizan
sobre:
1) Imágenes en Escala de Grises
Una imagen en escala de grises es una matriz de datos donde cada elemento representa un
nivel de gris. Cuando los elementos de una imagen son de clase uint8 entonces sus valores
están en el rango [0 255]. Para valores de clase punto flotante single o double los valores
están escalados en el rango [0 1].
2) Imágenes Binarias.
Una imagen binaria es una matriz de datos con elementos lógicos 0’s o 1’s, donde 0
significa negro y 1 significa blanco.
ACTIVIDAD
Utilizando imágenes de prueba de su elección:
1. Describir las características y/o propiedades de cada imagen, de por lo menos 5 de ellas.
2. Mostrar cada imagen, en escala de grises.
3. Mostrar cada imagen modificando su rango dinámico.
4. Crea imágenes en formato jpg, a partir de las elegidas, de diferentes niveles de compresión.
5. Analiza cada imagen jpg creada, obtén las propiedades de cada una: calidad, tamaño, radio
de compresión.
6. Realiza una tabla con los datos del paso 6, añade comentarios describiendo lo que se
observa en cada imagen creada.
7. Describe una aplicación práctica o un caso en donde la compresión de imágenes sea de gran
utilidad.
8. Crea imágenes en formato tif. Duplica la resolución de 2 de ellas y reduce la resolución a la
mitad a otras 2.
9. Investigar sobre la conversión de clases de datos de una imagen en Matlab. Mostrar una
tabla de conversión así como un ejemplo por cada función de conversión.
REFERENCIAS
1. Digital Imagen Processing Using Matlab, Gonzales and Woods.