MATLAB-03
-
Upload
gideontargrave7 -
Category
Documents
-
view
217 -
download
1
description
Transcript of MATLAB-03
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