matlab-03

18
1 2010 Universidad Tecnológica Nacional Facultad de Regional Buenos Aires Carrera: Ingeniería Electrónica MATLAB CLASE III “Es más fácil escribir un programa incorrecto, que entender uno correcto” Alan Perlis “Es más fácil escribir un programa incorrecto, que entender uno correctoInformática I 2010 FRBA Agenda Procesamiento de Imágenes. Introducción. Leer una Imagen. Parámetros y Operaciones. Filtros. Operaciones Morfológicas. “Es más fácil escribir un programa incorrecto, que entender uno correctoInformática I 2010 FRBA Procesamiento de Imágenes Introducción: a. MatLab puede leer imágenes 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: Ecualizaciónde Imágenes. Filtrado. Suma y resta de imágenes. Operaciones Morfológicas. Erosión, Dilatación, Detección de bordes.

Upload: gideontargrave7

Post on 12-Dec-2015

217 views

Category:

Documents


1 download

DESCRIPTION

m

TRANSCRIPT

1

2010

Universidad Tecnológica Nacional

Facultad de Regional Buenos Aires

Carrera: Ingeniería Electrónica

MATLAB

CLASE III

“Es más fácil escribir un programa incorrecto,

que entender uno correcto” Alan Perlis

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Agenda

Procesamiento de Imágenes.

Introducción.

Leer una Imagen.

Parámetros y Operaciones.

Filtros.

Operaciones Morfológicas.

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de ImágenesIntroducción:

a. MatLab puede leer imágenes 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:

• Ecualización de Imágenes.

• Filtrado.

• Suma y resta de imágenes.

• Operaciones Morfológicas. Erosión, Dilatación,

Detección de bordes.

2

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 1:

>> I=imread(‘pout.tif’)

>> imshow(I)

>> I

>> whos

>> size(I)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 1:

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 2:

>> C=imread(‘peppers.png’)

>> clf

>> whos

>> size(C)

>> imshow(C)

3

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 2:

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 2:

>> CplanoR = C(:,:,1) ;

>> imshow(CplanoR)

>> size(CplanoR)

>> figure

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 2:

4

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 1:

>> [x, y] = meshgrid([1:240],[1:291])

>> mesh(x, y,z)

>> z = double(I)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 1:

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 1:

>> imshow(I)

>> valor = impixel

Repetir con ejemplo 2

5

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

1. Leer una imagen.

Ejemplo 2:

>> improfile

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

2. Guardar una imagen.

Ejemplo 1:

>> imwrite( I, ‘pout.png’)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

3. Ecualizar una imagen.

Ejemplo 1:

>> figure, imhist(I)

>> I2 = histeq(I);

>> figure, imshow(I2)

>> figure, imhist(I2)

6

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

4. Submuestrear una imagen.

Ejemplo 2:

>> C2= C(1:2:end, 1:2:end, 1:end)

>> figure, imshow(C2)

>> imshow(C)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

4. Cambio de formato en los pixel.

Ejemplo 1:

>> imshow(I)

>> Idoble = double(I);

>> Idoble = 0.5*Idoble;

>> IU8 = uint8(Idoble)

>> figure, imshow(IU8)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

(i, j)

(i-1, j-1) (i-1, j) (i-1, j+1)

(i, j-1) (i, j) (i, j+1)

(i+1, j-1) (i+1, j) (i+1, j+1)

Procesamiento de Imágenes

5. Filtrado espacial.Imagen Original (io)

333231

232121

1312111

www

www

www

hw

Imagen Filtrada (if)

Filtro o Máscara

1,133,1321,131

1,23,221,21

1,113,1121,111,

***

***

***1

jijiji

jijiji

jijijiji

iowiowiow

iowiowiow

iowiowiowh

if

7

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

5. Filtrado espacial. Correlación - ConvoluciónImagen Original (io) Imagen Filtrada (ifc)

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

8 1 6

3 5 7

4 9 2

Filtro (h)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

5. Filtrado espacial. Correlación

>> clear, clc

>> io = [ 17 24 … 2 9]

>> h = [8 1 6; 3 5 7; 4 9 2]

>> ifc = imfilter(io, h)

>> ifcn = imfilter(io, h,’conv’)

5. Filtrado espacial. Convolución

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> ifcnr = imfilter(io,hr,’conv’)

Procesamiento de Imágenes

5. Filtrado espacial. Convolución

>> hr = [2 9 4; 7 5 3; 6 1 8]

>> ifc = imfilter(io, h)

8

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 3:

>> Io = imread('coins.png');

>> imshow(Io), title('Imagen Original')

>> h = ones(5,5)/25;

>> figure, imhist(I2)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> imshow(Ifcn), title('Imagen Filtrada Conv.')

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 3:

>> Ifc= imfilter(Io, h);

>> imshow(Ifc), title('Imagen Filtrada Corr.')

>> Ifcn= imfilter(Io, h,'conv');

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 4:

>> Ie = imread(‘moon.tif');

>> imshow(Ie), title('Imagen Original')

>> h = [ 0 0 1 0 0

0 0 1 0 0

1 1 1 1 1

0 0 1 0 0

0 0 1 0 0]/9

9

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> figure, imshow(Ifd), title('Imagen Diferencia')

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 4:

>> If= imfilter(Ie, h);

>> figure, imshow(If), title('Imagen Filtrada ')

>> Ifd = imsubtract(Ie, If);

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> figure, imshow(Ift), title('Imagen Final')

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 4:

>> Ifda= imadjust(Ifda);

>> figure, imshow(Ifda), title('Imagen Filtr. Eq ')

>> Ift = imadd(Ie, Ifda);

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> figure, imshow(Ifu), title('Imagen Filtrada ‘Unsharp')

Procesamiento de Imágenes

5. Filtrar una imagen.

Ejemplo 5 Filtro Predefinido:

>> h1 = fspecial(‘unsharp’)

>> Ifu = imfilter(Ie, h1);

10

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>>figure,imshow(C2),title('Imagen Color Filtrada)

Procesamiento de Imágenes

5. Filtrar una imagen. Color

Ejemplo 6 :

>> C=imread(‘peppers.png’)

>> imshow(C), title('ImagenColor‘)

>> h = ones(5,5)/25;

>> C2 = imfilter(C, h);

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

• Erosión.

• Dilatación.

• Detección de bordes.

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Dilatación:Adiciona („realza el valor de un pixel en

función de sus vecinos) pixels en los

extremos del objeto de una imagen.

Imagen de Entrada Imagen de Salida

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

24 24

23

6

12

18

1 1 1 Elementos Estructurados

11

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

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

Procesamiento de Imágenes6. Operaciones Morfológicas:

Dilatación:

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

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

Procesamiento de Imágenes6. Operaciones Morfológicas:

Dilatación:

>> Adil = imdilate(A, SE)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> SE1 = strel(‘square’,15);

>> I=imread(‘pout.tif’);

>> Idil1 = imdilate(A, SE1);

>> Idil = imdilate(A, SE);

Procesamiento de Imágenes6. Operaciones Morfológicas:

Dilatación Ejemplo 7:

12

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

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

Procesamiento de Imágenes6. Operaciones Morfológicas:

Dilatación Ejemplo 7:

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Erosión:Quita („deprime el valor de un pixel en

función de sus vecinos) pixels en los

extremos del objeto de una imagen.

Imagen de Entrada Imagen de Salida

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

5 1

4

4

4

10

1 1 1 Elementos Estructurados

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

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

Procesamiento de Imágenes6. Operaciones Morfológicas:

Erosión:

>> eroA = imerode(A, SE)

13

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> I=imread(‘pout.tif’);

>> Iero1 = imerode(A, SE1);

>> Iero = imerode(A, SE);

Procesamiento de Imágenes6. Operaciones Morfológicas:

Erosión Ejemplo 7:

>> subplot(1,3,1), subimage(I),title('Original')

>> subplot(1,3,2), subimage(Iero), title('Erosión 3*3')

>> subplot(1,3,3), subimage(Iero1),title('Erosión 15*15')

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> Cir=imread(‘circbw.tif’);

Procesamiento de Imágenes6. Operaciones Morfológicas:

Erosión - Dilatación Ejemplo 8:

>> imshow(Cir)

>> SE = strel('rectangle',[40 30]);

>> Cir1=imerode(Cir, SE);

>> imshow(Cir1)

>> Cir2=imdilate(Cir1, SE);

>> imshow(Cir2)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Skeletonizatión:

Reduce todo objeto en una imagen a líneas,

sin cambios esenciales en la estructura de

la imagen. Para este proceso denominado

esqueletización (“skeletonization”), se usa

la función bwmorph.

14

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

>> Cir=imread(‘circbw.tif’);

Procesamiento de Imágenes6. Operaciones Morfológicas:

Skeletonizatión Ejemplo 8:

>> Cir1=bwmorph(Cir,'skel',Inf);

>> imshow(Cir1)

>> Cir2=bwperim(Cir);

>> imshow(Cir2)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Skeletonizatión Ejemplo 9:

>> BW = imread('circles.png');

>> imshow(BW);

>> BW3 = bwmorph(BW,'skel',Inf);

>> figure, imshow(BW3)

>> BW2 = bwmorph(BW,'remove');

>> figure, imshow(BW2)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

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)

15

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> I = imread(‘rice.png');

>> imshow(I);

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> fondo = imopen(I,strel('disk',15));

>> figure, imshow(fondo)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> figure, surf(double(fondo(1:8:end, 1:8:end))),zlim([0 255]);

>> set(gca,'ydir','reverse');

16

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> I2 = imsubtract(I,fondo);

>> figure, imshow(I2)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> I3 =imadjust(I2);

>> figure, imshow(I3)

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> nivel= graythresh(I3)

>> bn= im2bw(I3,nivel);

>> figure, imshow(bn)

17

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> [labeled, num_objetos]=bwlabel(bn, 4)

num_objetos =

101

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Procesamiento de Imágenes6. Operaciones Morfológicas:

Contar Objetos Ejemplo 10:

>> seudocolor=label2rgb(labeled,@spring,'c','shuffle');

>> imshow(seudocolor);

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

Preguntas

y Respuestas

18

“Es más fácil escribir un programa incorrecto, que entender uno correcto”

Informática I 2010FRBA

F I N