Agroindustria
procesamiento de imágenes
Visión por Computador
Esther de Ves Cuenca
Representación de imágenes en MATLAB
Matlab almacena las imágenes como
vectores bidimensionales (matrices), en el
que cada elemento de la matriz
corresponde a un sólo pixel.
Trabajar con imágenes en matlab
es equivalente a trabajar con
el tipo de dato matriz
1
Tipos de imágenes enmatlab:
• Imágenes indexadas
1
2
3
5
3
3
3
2
2
1
3
4
2
2
7
8
• Imágenes en niveles de
gris
2
3
3
2
0
0.6
0.03
0.29
0.06
0.06
20 32 31
2
0
18 30 20
2
B
0
7
5
G
0.06
1
R
8
Tipos de imágenes en matlab
• Imágenes binarias
1
0
0
0
1
1
0
0
1
1
0
01
1
1
0
61
62
65
63
63
63
63
67
• Imágenes RGB (color)
R
63 65
61 59
63 66
67 63
29 30
62 63
65 10
63 62
G
34
34
10
50
36
38
65
63
40
62
65
50
B
45
18
63
53
34
29
63
68
38
32
66
70
2
Tipos de imágenes (según tipo de
de dato de sus elementos)
El tipo de dato matriz, que contendrá una imagen puede
ser de varios tipos(según el tipo de dato de cada pixel):
• double Doble precisión, números en punto flotante que
varían 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 porelemento)
• int8 Enteros de 8 bits en el rango de [-128, 127] (1 byte
por elemento)
• 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)
• logical Los valores son 0 ó 1 (1 bit por
elemento)
3
Comando
Convierte a
Tipo válido de entrada
im2uint8
uint8
logical,uint8, uint16 y double
Im2uint16
uint16
logical, uint8, uint16 y double
Im2double
double
uint8, uint16 y double
Im2bw
logical
uint8, uint16 y double
f = [0 0.5; 0.75
g = [0 0.3; 0.7 0.9];
1.0];
gb = im2bw(g, 0.6)
g = im2uint8(f)
gb = [0 0 ;1 1]
g =[0 128 ;191 255]
Nota: Se pueden utilizar también las
funciones de conversión de tipo, pero
el resultado esdiferente
Leer y escribir imágenes
• Para leer una imagen en matlab:
imread(nombrefichero)
im = imread(‘foto.tif’);
• Para escribir (guardar) una matriz en
fichero:
imwrite(var, nombrefichero)
imwrite(im,‘foto.tif’);
4
Visualizar una imagen
• Para visualizar una imagen:
imshow(imagen_var);
• Para que se cree una nueva figura:
figure; imshow(imagen_var);
• Permite ver losvalores de cada uno de los
pixeles en la imagen:
figure; imshow(imagen_var);pixval on;
Visualizar según tipo de dato
• La función imshow permite visualizar una
imagen del tipo uint8 ([0,255]) como
distintos niveles de gris:
• La función imshow visualiza una imagen
del tipo double([0,1]) como distintos
niveles de gris:
uint8
0
Si la imagen es de tipo
double, con valores
mayores de 1,es necesario
escalar (imagesc)
double
255
0
1
5
Imagen: como una matriz
• ¿Cómo se accede a cada
pixel de la imagen?
– De la misma forma que
se accede a un elemento
en una matriz en matlab
col
88
180
78
150
155
56
23
150
150
150
0
34
10
9
150
150
0
6
6
8
150
150
0
fil
150
90
0
– Con lafunción de la
toolbox de imagen
92
78
valor = imagen(fil,col)
5
4
9
0
150
valor = impixel(im,col,fil);
[c,r,valor]=impixel;%interactivo
180
imagen
Otras funciones básicas
• Tamaño de una
matriz: size
band, contiene el
número de bandas de
la imagen
imagen gris = 1
imagen color = 3
[fil,col] = size(imagen)
o
[fil,col,band]=size(imagen)
• Cambiar...
Regístrate para leer el documento completo.