Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MATLAB
CLASE III
Es ms fcil escribir un programa incorrecto,
que entender uno correcto Alan Perlis
2010
Agenda
Procesamiento de Imgenes.
Introduccin.
Parmetros y Operaciones.
Filtros.
Operaciones Morfolgicas.
FRBA
Informtica I
2010
Procesamiento de Imgenes
Introduccin:
a. MatLab puede leer imgenes en los distintos
formatos.
b. Guardarlos en el formato de origen o en otro
formato. Posee un formato propio PNG (Portable
Network Image)
c. La Toolbox permite realizar operaciones de tales
como:
FRBA
Ecualizacin de Imgenes.
Filtrado.
Suma y resta de imgenes.
Operaciones Morfolgicas. Erosin, Dilatacin,
Deteccin de bordes.
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 1:
>> I=imread(pout.tif)
>> size(I)
>> I
>> whos
>> imshow(I)
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 1:
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 2:
>> C=imread(peppers.png)
>> size(C)
>> whos
>> clf
>> imshow(C)
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 2:
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 2:
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 2:
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 1:
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 1:
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 1:
>> imshow(I)
>> valor = impixel
FRBA
Informtica I
2010
Procesamiento de Imgenes
1. Leer una imagen.
Ejemplo 2:
>> improfile
FRBA
Informtica I
2010
Procesamiento de Imgenes
2. Guardar una imagen.
Ejemplo 1:
Informtica I
2010
Procesamiento de Imgenes
3. Ecualizar una imagen.
Ejemplo 1:
Informtica I
2010
Procesamiento de Imgenes
4. Submuestrear una imagen.
Ejemplo 2:
>> imshow(C)
>> C2= C(1:2:end, 1:2:end, 1:end)
>> figure, imshow(C2)
FRBA
Informtica I
2010
Procesamiento de Imgenes
4. Cambio de formato en los pixel.
Ejemplo 1:
>> imshow(I)
>> Idoble = double(I);
>> Idoble = 0.5*Idoble;
>> IU8 = uint8(Idoble)
>> figure, imshow(IU8)
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrado espacial.
Imagen Original (io)
(i-1, j-1)
(i-1, j)
(i, j-1)
(i, j)
(i, j+1)
(i+1, j-1)
(i+1, j)
(i+1, j+1)
(i-1, j+1)
(i, j)
w11
1
w21
h
w31
if i , j
FRBA
w12
w13
w21
w23
w32
w33
1
w11 * io i 1, j 1 w12 * io i 1, j w13 * io i 1, j
h
w21 * io i , j 1 w22 * io i , j w23 * io i , j
w31 * io i
1, j 1
w32 * io i
Informtica I
1, j
Filtro o Mscara
w33 * io i
1, j 1
2010
Procesamiento de Imgenes
5. Filtrado espacial. Correlacin - Convolucin
Imagen Original (io)
17
24
15
23
4
14
16
13
20
22
10
12
19
21
11
18
25
FRBA
Filtro (h)
Informtica I
2010
Procesamiento de Imgenes
5. Filtrado espacial. Correlacin
>> clear, clc
>> io = [ 17 24 2 9]
>> h = [8 1 6; 3 5 7; 4 9 2]
>> ifc = imfilter(io, h)
5. Filtrado espacial. Convolucin
>> ifcn = imfilter(io, h,conv)
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrado espacial. Convolucin
>> hr = [2 9 4; 7 5 3; 6 1 8]
>> ifcnr = imfilter(io, hr,conv)
>> ifc = imfilter(io, h)
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 3:
>> Io = imread('coins.png');
>> imshow(Io), title('Imagen Original')
>> h = ones(5,5)/25;
>> figure, imhist(I2)
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 3:
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 4:
>> Ie = imread(moon.tif');
>> imshow(Ie), title('Imagen Original')
>> h = [ 0 0 1 0 0
00100
11111
00100
0 0 1 0 0]/9
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 4:
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 4:
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen.
Ejemplo 5 Filtro Predefinido:
>> h1 = fspecial(unsharp)
>> Ifu = imfilter(Ie, h1);
>> figure, imshow(Ifu), title('Imagen Filtrada Unsharp')
FRBA
Informtica I
2010
Procesamiento de Imgenes
5. Filtrar una imagen. Color
Ejemplo 6 :
>> C=imread(peppers.png)
>> imshow(C), title('Imagen Color)
>> h = ones(5,5)/25;
>> C2 = imfilter(C, h);
>>figure,imshow(C2),title('Imagen Color Filtrada)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Erosin.
Dilatacin.
Deteccin de bordes.
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Dilatacin:
Adiciona (realza el valor de un pixel en
funcin de sus vecinos) pixels en los
extremos del objeto de una imagen.
1
Elementos Estructurados
17
24
15
24
23
14
16
23
13
20
22
10
12
19
21
12
18
25
18
11
Imagen de Entrada
FRBA
24
Imagen de Salida
Informtica I
2010
10
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Dilatacin:
>> A=[17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9]
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Dilatacin:
>> A=[17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9]
>> SE = strel(square, 3)
>> Adil = imdilate(A, SE)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Dilatacin Ejemplo 7:
>> I=imread(pout.tif);
>> Idil = imdilate(A, SE);
>> SE1 = strel(square, 15);
>> Idil1 = imdilate(A, SE1);
FRBA
Informtica I
2010
11
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Dilatacin Ejemplo 7:
>> subplot(1,3,1), subimage(I),title('Original')
>> subplot(1,3,2), subimage(Idil), title('Dil 3*3')
>> subplot(1,3,3), subimage(Idil1),title('Dil 15*15')
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Erosin:
Quita (deprime el valor de un pixel en
funcin de sus vecinos) pixels en los
extremos del objeto de una imagen.
1
Elementos Estructurados
17
24
15
23
14
16
4
4
13
20
22
10
12
19
21
11
18
25
10
Imagen de Entrada
FRBA
Imagen de Salida
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Erosin:
>> A=[17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9]
>> SE = strel(square, 3)
>> eroA = imerode(A, SE)
FRBA
Informtica I
2010
12
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Erosin Ejemplo 7:
>> I=imread(pout.tif);
>> Iero = imerode(A, SE);
>> Iero1 = imerode(A, SE1);
>> subplot(1,3,1), subimage(I),title('Original')
>> subplot(1,3,2), subimage(Iero), title('Erosin 3*3')
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Erosin - Dilatacin Ejemplo 8:
>> Cir=imread(circbw.tif);
>> imshow(Cir)
>> SE = strel('rectangle',[40 30]);
>> Cir1=imerode(Cir, SE);
>> imshow(Cir1)
>> Cir2=imdilate(Cir1, SE);
FRBA
>> imshow(Cir2)
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Skeletonizatin:
FRBA
Informtica I
2010
13
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Skeletonizatin Ejemplo 8:
>> Cir=imread(circbw.tif);
>> Cir1=bwmorph(Cir,'skel',Inf);
>> imshow(Cir1)
>> Cir2=bwperim(Cir);
>> imshow(Cir2)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Skeletonizatin Ejemplo 9:
>> BW = imread('circles.png');
>> imshow(BW);
>> BW3 = bwmorph(BW,'skel',Inf);
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> I = imread(rice.png');
>> imshow(I);
>> BW3 = bwmorph(BW,'skel',Inf);
>> figure, imshow(BW3)
>> BW2 = bwmorph(BW,'remove');
>> figure, imshow(BW2)
FRBA
Informtica I
2010
14
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> I = imread(rice.png');
>> imshow(I);
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> fondo = imopen(I,strel('disk',15));
>> figure, imshow(fondo)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> figure, surf(double(fondo(1:8:end, 1:8:end))),zlim([0 255]);
>> set(gca,'ydir','reverse');
FRBA
Informtica I
2010
15
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> I2 = imsubtract(I,fondo);
>> figure, imshow(I2)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> I3 =imadjust(I2);
>> figure, imshow(I3)
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> nivel= graythresh(I3)
>> bn= im2bw(I3,nivel);
>> figure, imshow(bn)
FRBA
Informtica I
2010
16
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> [labeled, num_objetos]=bwlabel(bn, 4)
num_objetos =
101
FRBA
Informtica I
2010
Procesamiento de Imgenes
6. Operaciones Morfolgicas:
Contar Objetos Ejemplo 10:
>> seudocolor=label2rgb(labeled,@spring,'c','shuffle');
>> imshow(seudocolor);
FRBA
Informtica I
2010
Preguntas
y
Respuestas
FRBA
Informtica I
2010
17
FIN
FRBA
Informtica I
2010
18