Imágenes en Matlab. Clase 25

Anuncio
Procesamiento básico de
Imágenes en Matlab
Histogramas. Filtros de Bordes. Color
Introducción a la Computación
Clase 25
María Elena Buemi
Leyendo una imagen
• >>imread(nombre);
Tipos de imágenes
.tif , .tiff
.jpg , .jpeg
.bmp
.png
•
•
•
•
>> imread('rosa.jpg');
>> I=imread('rosa.jpg');
>> [N M]=size(I);
>> whos I
Name
I
Size
1024x1024
Bytes Class
1048576 uint8
Attributes
¿Qué imágenes soporta Matlab?
• Intensidad
• Binarias
• Indexadas
• RBG
Repaso vectores
>>v=[13579]
ans
v =1 3 5 7 9
>> v(2)
ans=
5
V se convierte en columna con el operador
traspuesta ( . ' ):
>> w = v.'
>> v(1:3)
ans =
1 3 5
>> v(2:4)
ans =
3 5 7
>> v(2:end)
ans =
3 5 7
>> v(:)
ans =
1
3
5
7
9
>> v(1:end)
ans =
1 3 5
9
7
9
Matrices
>> A=[1 2 3;4 5 6;7 8 9]
A=
1 2 3
4 5 6
7 8 9
>> A(2,3)
ans =
6
>> C3=A(:,3)
C3 =
3
6
9
>> R2=A(2,:)
R2 =
4 5 6
>> T2=A(1:2,1:3)
T2 =
1 2 3
4 5 6
>> B=A;
>> B(:,3)
ans =
3
6
9
>> B(:,3)=0
B=
1 2 0
4 5 0
7 8 0
>> A(end,end) %ans =
9
>> A(end, end - 2) %ans = 7
>> A(2:end,end:-2:1)
ans =
6 4
9 7
>> A
A=
1 2 3
4 5 6
7 8 9
>> E=A([1 3],[2 3])
E=
2 3
8 9
>> D=logical([1 0 0;0 0 1;0 0 0])
D=
1 0 0
0 0 1
0 0 0
>> A(D)
ans =
1
6
>> suma=sum(sum(A))
suma =
45
>> S=sum(A(:))
S=
45
>>[N M]=size(A);%devuelve N=filas y
M=columnas de A
Flip vertical- Crop
•
•
•
•
>>Ip = I(end:-1:1,:) ; %gira vertical
>> Ic = I(257:768,257:768);%recorta
>> imshow(Ip)
>> imshow(Ic)
Histograma y Ploteo
•
Dados valores de intensidad L, entre 0 y G, se define una función
discreta
h(r_k)=n_k
Donde r_k es un nivel de intensidad entre 0 y G y n_k es la cantidad de
r_k.
En gral se trabaja con histogramas normalizados:
p(r_k)=h(r_k)/n=n_k/n, n el total de pixels.
>>h=imhist(I,b), donde b es la cantidad de bines.
Bin es una subdivisión de los niveles de intensidad, por ejemplo 256 o
128 o 64.
Si el histograma está normalizado:
>>p = imhist(f, b)/numel(I) %numel(I) da la cantidad de elementos de I
Ejercicio:
1) Observar h para bins 256, 128, 32, 4, 2.
Equalización de histograma
r_k
n_k
n_k/100
0
1
2
3
4
5
6
7
4
17
15
18
24
12
0
10
100
0.04
0.17
0.15
0.18
0.24
0.12
0
0.10
1.00
Acum
Acum/100
4
21
36
54
78
90
90
100
0.04
0.21
0.36
0.54
0.78
0.90
0.90
1.00
Algoritmo
1. Calcula el histograma
2. Lo normaliza
3. Calcula el histograma Acumulado
4. Normaliza el histograma acumulado
7*Acum/100
0.28
1.47
2.52
3.78
4.46
6.3
6.3
7
s_k
0
1
3
4
4
6
6
7
5.Calcula el max Gris*histograma
acumulado
6. Determina los valores de gris
de salida para los de entrada.
histeq
>> A=imread('mamografia.jpg');
>> Ah=histeq(A);
>> imshow(Ah)
>> B=imread('polen.jpg');
>> Bh=histeq(B);
>> imshow(Bh,[])
Ejercicio 2: hacer un algoritmo de equalización y
compararlo con histeq, para alguna de las
imágenes dadas
Filtrado lineal
•
Las operaciones
lineales que usaremos
consisten en multiplicar
cada pixel del
vecindario por un
coeficiente
correspondiente y
sumarlo para obtener
el nuevo valor. Los
coeficientes estan
agrupados en una
matriz llamada
máscara o ventanas o
kernel,…
Ejemplo sobel
>> clear all
>> I=imread('moon.jpg');
>> w=fspecial('sobel');
>> C1=imfilter(I,w);
>>figure(1)
>> imshow(C1,[ ]);
>> C2=imfilter(I,w');
>> figure(2)
>> imshow(C2,[ ])
>> C=C1+C2;
>> figure(3)
>> imshow(C,[ ])
Ejercicio 3
Repetir para Prewitt y Laplace
Color-RGB
>> I=imread('lenac.jpg');
>> imshow(I)
>> I(:,:,1)=0;
>> imshow(I)
>> I(:,:,2)=0;
>> imshow(I)
Descargar