LABORATORIO TDI 1

8
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(x i ,y i ) MxN

Transcript of LABORATORIO TDI 1

Page 1: LABORATORIO TDI 1

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

Page 2: LABORATORIO TDI 1

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.

Page 3: LABORATORIO TDI 1

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

Page 4: LABORATORIO TDI 1

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

Page 5: LABORATORIO TDI 1

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

Page 6: LABORATORIO TDI 1

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%)

Page 7: LABORATORIO TDI 1

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.

Page 8: LABORATORIO TDI 1

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.