Você está na página 1de 14

Prctica 1: Manejo Bsico de Imgenes con Matlab

David Garca Prez Grupo de Visin Articial

Manejo Bsico de Imgenes con Matlab

Imagen tamao MxM pxeles En Matlab: Imagen = Matriz/es Cada elemento de la matriz indica el tono de gris en imgenes en blanco y negro Si la imagen es en color, existen 3 matrices, cada una representa el valor de un tono de color Los ndices de la matriz son (r,c), donde r representa la (row) y c la columna (column)
1 1 2 3 4 5 6 M 2 3 4 5 6 N

Manejo Bsico de Imgenes con Matlab

Leyendo Imgenes de disco: >> f = imread(nombre_archivo) >> f = imread(imagen.jpg) >> f = imread(D:\imagen.jpg)

Esto crea en Matlab un matriz f, donde cada elemento tendr un valor de gris

Manejo Bsico de Imgenes con Matlab

Obteniendo informacin de f

Para determinar el tamao de la imagen: >> size(f) ans = 1024 1024 Si lo queremos almacenar en una variable >> [M N] = size(f) Si lo que queremos es obtener imormacin ms detallada >> whos f

Manejo Bsico de Imgenes con Matlab

Para mostrar imgenes imshow(f,G) donde f es la imagen a mostrar, G es una matriz indicando el nmero de niveles de grises a mostrar. Si G se omite se usa 256. La sintaxis es la siguiente >> imshow(f, [low high])

imshow(f)

imshow(f, [0 50])

Manejo Bsico de Imgenes con Matlab

Una utilidad interesante de imshow es el comando imshow(f,[]), esto espande el rango dinmico de la imagen, pone como lmite inferior, el valor mnimo de intensidad y como lmite superior el valor mximo. imshow(f,[])

imshow(f)

Manejo Bsico de Imgenes con Matlab

Si se ejecuta pixval en la consola de Matlab, en la ltima gura abierta, se podr ver el valor de intensidad cuando el ratn pasa sobre un pxel correcto.Y tambin se puede medir la distancia eucldea entre dos puntos Matlab usualmente cuando dibuja una nueva gura sobreescribe la ventana de la gura anteriormente mostrada. Para mostrar la segunda gura en una ventana independiente, ejecutar lo siguiente >> figure, imshow(f)

Manejo Bsico de Imgenes con Matlab

Para almacenar imgenes se usa el comando: imwrite(f,nombre) donde f es la imagen a guardar y nombre el nombre del chero donde lo vamos a guardar, este tiene que tener una extensin que Matlab reconozca. Tambin se puede especicar el formato en una variable separada: imwrite(f,nombre, tif) Los formatos con los que vamos a trabajar son tiff y jpeg. En este ltimo caso se puede especicar la calidad imwrite(f,nombre.jpg, quality, q)

Manejo Bsico de Imgenes con Matlab

q es un nmero de 0 a 100 que especica la calidad de la imagen

mayor compresin menor calidad

menor compresin mayor calidad

50

100

Para obtener informacin de un chero imagen almacenado en disco imfinfo nombre_fichero

Manejo Bsico de Imgenes con Matlab


>>imfinfo prueba.jpg ans = Filename: prueba.jpg FileModDate: 08-feb-2005 17:18:23 FileSize: 6125 Format: jpg FormatVersion: Width: 600 Height: 494 BitDepth: 8 ColorType: grayscape FormatSignature: NumberOfSamples: 1 CodingMethod: Huffman CodingProcess: Sequential Comment: {}

Manejo Bsico de Imgenes con Matlab

Clases de Imgenes

double Doble precisin, nmeros en punto otante que varan en un rango aproximado de -10308 a 10308 (8 bytes por elmento) uint8 Enteros de 8 bits en el rango de [0,255] (1 byte por elemento)

uint16 Enteros de 16 bits en el rango de [0, 65535] (2 bytes


por elemento)

uint32 Enteros de 32 bits en el rango de [0, 4294967295]


(4 bytes por element) elemento)

int8 Enteros de 8 bits en el rango de [-128, 127] (1 byte por

Manejo Bsico de Imgenes con Matlab

int16 Enteros de 16 bits en el rango de [-32768, 32767] (2 bytes por elemento) int32 Enteros de 32 bits en el rango de [-2147483648, 2147483647] (4 bytes por elemento) single Nmero en punto otante de precisin simple, con valores aproximadamente en el rango de -1038 a 1038 (4 bytes por elemento) char Carcteres (2 byte por elemento) logical Los valores son 0 1 (1 bit por elemento)

Manejo Bsico de Imgenes con Matlab

Tipos de Imgenes

Imgenes de Intensidad Una matriz cuyos valores han sido escalados para representar intensidad. Pueden ser uint8 uint16. Sin son double, los valores estn escalados entre [0, 1] Imgenes binarias Imgenes que solamente tienen valor 0 1. Se representan en Matlab a partir de arrays lgicos. Para convertir en Matlab un array de 0s y 1s en array lgico: B = logical(A). Para comprobar si un array es lgico: isLogical(A), devuelve 1 si es lgica y un 0 si no lo es Imgenes indexadas Imgenes RGB Se vern ms adelante

Manejo Bsico de Imgenes con Matlab

Convirtiendo tipos y clases de imgenes


Comando im2uint8 im2uint16 mat2gray im2double im2bw Convierte a uint8 uint16 double([0,1]) double logical Tipo vlido de entrada logical, uint8, uint16 y double logical, uint8, uint16 y double double logical, uint8, uint16 y double uint8, uint16 y double
g = [0 0.3; 0.7 0.9]; gb = im2bw(g, 0.6) gb = 0 0 0 0

f = [0 0.5; 0.75 1.5]; g = im2uint8(f) g = 0 128 191 255

Você também pode gostar