Documentos de Académico
Documentos de Profesional
Documentos de Cultura
e Histograma
Transformaciones bsicas
La transformacin de intensidades puede expresarse por:
g ( x , y ) T [ f ( x, y )]
donde:
r = Valor del pxel antes 1
del procesamiento
2
s = Valor del pxel despus
3
del procesamiento
T = Operador aplicado
sobre r
M
s T (r )
f (2,3)
1
g (2,3)
N
1
1
2
3
Transformacin umbral
Convierte niveles de gris a blanco y negro
>>BW = im2bw(I,magen, nivel)
>>BW = im2bw(I,magen, 128)
Transformacin complemento
s ( L 1) r
L-1 : Mximo nivel de gris con que se representa la imagen
Complemento
Original
Original
Complemento
%Complemento
g=imcomplement(f);
g ( x , y ) T [ f ( x , y )]
s1
e f ( x, y )
1
si f ( x, y ) e1
s
f ( x, y ) b si e1 f ( x, y ) e2
255 s2
255 e f ( x, y ) c si f ( x, y ) e2
2
g ( x, y )
s2
e e2 e1
s s2 s1
s1
s1
e1
e2
s2
s
e1 b
e
255 s2
e2 c
255 e2
s2
s1
Funcin imadjust
e1
e2
Original
Negativo imadjust
% Complemento o negativo
g1=imadjust(f, [0 1], [1 0]);
g(x,y)
f(x,y)
g(x,y)
f(x,y)
g(x,y)
f(x,y)
g(x,y)
f(x,y)
g(x,y)
f(x,y)
g(x,y)
Funcin de transformacin
por interpolacin
f(x,y)
Transformacin logartmica
>>II=im2grey(I);;
>> III=im2double(II);
>> V=2.*log(1+III);
>> IV=0.5.*log(1+III);
g ( x, y ) c log(1 f ( x, y ))
Transformacin gamma
s cr
g<1
g=1
g>1
>> a=[0.1:0.2:1]
>> b=[1:1:5]
>> g=[a, b]
r=uint8(0:1:255);
for i=1:10
d(i,:)=imadjust(r, [0 1], [0 1], g(1,i));
plot(r,d(i,:));
hold on
end
Correccin de gamma
Aclara
Oscurece
Definicin de contraste
1
g ( x, y )
1 (m / f ( x, y )) E
r=0:1:255;
E=10:10:1000;
for i=1:9
d(i,:)=255*(1./(1+(128./r).^E(1,i)));
plot(r,d(i,:));
hold on
end
1
1 (m / f ( x, y )) E
E=50
0.9
E=1000
0.8
E=10
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
10
20
30
40
50
60
m=0.5
70
80
90
100
Original
Definicin de contraste
utilizando lgica borrosa
Si Pxel es Oscuro Entonces Pxel Resultante es Oscurecer
Desarrollo
Definicin de contraste
utilizando lgica borrosa (II)
Si Pxel es Oscuro Entonces Pxel Resultante es Oscurecer
Si Pxel es Claro Entonces Pxel Resultante es Aclarar
Si Pxel es Gris Entonces Pxel Resultante es Mantener
Si Pxel es Menos oscuro Entonces Pxel Resultante es Oscurecer
Si Pxel es Menos claro Entonces Pxel Resultante es Aclarar
g ( x, y ) T [ f ( x , y )]
Definicin de contraste
utilizando lgica borrosa (III)
for i=1:M
for j=1:N
% Se aplica sistema borroso a cada pxel
IV(i,j)=evalfis(III(i,j),MejoraC);
end
end
Original
Interpolacin de imgenes(I)
Interpolacin: Proceso a travs del cual se utilizan datos
conocidos para estimar valores en otras ubicaciones
no conocidas
Ejemplo:
x = 0:1:10;
y = sin(x);
xi = 0:.1:10;
ylin = interp1(x,y,xi); % Interpolacin lineal
ycub = spline(x,y,xi); % Interpolacin Spline
plot(x,y,'o',xi,ylin,'r',xi,ycub,'g')
Interpolacin de imgenes(II)
Interpolacin de imgenes(III)
Interpolacin de imgenes(IV)
Transformaciones
geomtricas (I)
Las transformaciones geomtricas se aplican en:
I.- Registro o fusin de imgenes que se han tomado en
diferentes intervalos de tiempo o diferentes sensores.
II.- Corregir la distorsin de una lente.
III.- Corregir los efectos de la orientacin de una cmara.
IV.- Incorporar efectos artsticos en las imgenes.
Transformaciones
geomtricas (II)
Transformaciones
geomtricas (III)
Transformacin afn
Preserva la colinealidad : todos los puntos
pertenecientes a una lnea original, permanecen en esa
lnea despus de la transformacin)
Razn de distancias : El punto medio de una lnea
permanece como punto medio de la lnea despus de la
transformacin
Transformaciones
geomtricas (IV)
Rotacin de una imagen
Transformaciones
geomtricas (V)
Otras transformaciones
Original
Empuje horizontal
Traslacin
Empuje vertical
Transformaciones
geomtricas (VI)
Programa
I = imread('tabla.jpg');
% Empuje horizontal (cambio en b)
a=1; b=.2; c=0; d=0; e=1; f=0;
tform = maketform('affine',[a d 0; b e 0; c f 1]);
II = imtransform(I,tform);
% Empuje vertical (cambio en d)
a=1; b=0; c=0; d=-.2; e=1; f=0;
tform = maketform('affine',[a d 0; b e 0; c f 1]);
IV = imtransform(I,tform);
% Ampliacin (cambio en a y e)
a=5; b=0; c=0; d=0; e=5; f=0;
tform = maketform('affine',[a d 0; b e 0; c f 1]);
VII = imtransform(I,tform);
Transformaciones
geomtricas (VII)
Secuencia de transformaciones afines
Transformaciones
geomtricas (VIII)
I=imread('edificio.jpg'); II=rgb2gray(I);
% Rotacin
t=45/(2*pi); % ngulo de rotacin
a=cos(t); b=-sin(t); c=0; d=sin(t); e=cos(t); f=0;
t1=[a d 0; b e 0; c f 1];
% Empuje vertical (cambio en d)
a=1; b=0; c=0; d=-.2; e=1; f=0;
t2=[a d 0; b e 0; c f 1];
% Ampliacin (cambio en a y e)
a=5; b=0; c=0; d=0; e=5; f=0;
t3=[a d 0; b e 0; c f 1];
% Como producto matricial
tr=t3*t2*t1;
tform = maketform('affine',tr);
VI = imtransform(II,tform);
figure, imshow(II), figure, imshow(VI)
Transformaciones
geomtricas (IX)
Transformacin geomtrica inversa
xy
xy90
Transformaciones
geomtricas (X)
Transformaciones geomtrica con Simulink
Regin de inters
>> l(49:262, 1:193)=255;
>> size(k)
ans =
494 600
>> l=k(192:453,166:453);
Distancia (pxels)
Ampliar zona
Valor de pxeles
Ajuste de contraste
Histograma
nk h[rk ]
Nmero de pxeles
Niveles de gris
rk [0, L-1]
>> imhist(a)
nk
rk
Histograma (II)
>> I=imread('fig1.jpg');
>> II=rgb2gray(I);
>> [nk, rk]=imhist(II);
>> bar(rk, nk, 1);
Histograma normalizado
Nmero de pxeles
h[rk ]
nk
n
>> imhist(I)/numel(I)
Niveles de gris
rk [0, L-1]
Nmero total de pxeles
Seleccin de umbral
utilizando el histograma
f ( x, y )
Crestas
g ( x, y )
T
[0, 1,..,254,255]
[0, 255]
Valle
Seleccin de umbral
utilizando el histograma (II)
Seleccin visual del umbral
Seleccin de umbral
utilizando histograma (III)
Media entre grupos (Clustering)
y=imhist(II);
x=[0:1:255]';
datos=[x, y];
[U, v, sumd, D]=kmeans(datos,2);
plot(datos(:,1),datos(:,2),'*')
hold on
plot(v(:,1),v(:,2),'rs')
Mtodo de Otsu
uint8(mean(v(:,1)))
99
graythresh(II)*255
117
Seleccin de umbral
utilizando histograma (IV)
Mtodo de Otsu
Seleccin de umbral
utilizando histograma (V)
Mtodo de Otsu
Seleccin de umbral
utilizando histograma (VI)
Mtodo de Otsu
w2
k=0
k=1
k=2
k=3
k=4
k=5
3.11
1.52
0.55
0.49
0.97
2.24
Seleccin de umbral
utilizando histograma (VII)
Otsu
Kmedias
Seleccin de umbral
utilizando histograma (VIII)
Imagen original
Otsu
Kmedias
Reduccin a colores
fundamentales
Seleccin de umbral de cada matriz RGB
Color
Combinacin
RGB
Negro
[0 0 0]
Azul
[0 0 1]
Verde
[0 1 0]
Cian
[0 1 1]
Rojo
[1 0 0]
Magenta
[1 0 1]
Amarillo
[1 1 0]
Blanco
[1 1 1]
(28)3=16,777,216
23=8
1 k
sk n j
n j 0
nk h[rk ]
k = 0L-1
n = Nmero total de pxeles
Ejemplo de ecualizacin
A=
255 250 255
200 200 250
180 180 150
>> A=uint8(A)
A=
255 250 255
200 200 197
180 180 150
sk
nj
j 0
2
1
150
>>.5* 255/9
14.1667
>> 5*255/9
141.6667
>> 2*255/9
56.6667
180
200
250
k=0255
>> B=histeq(A,256)
B=
255 184 255
142 142 99
56 56 14
255
Algoritmo de ecualizacin
b=imhist(I);
c=b./numel(a);
d=cumsum(c);
e=d.*255;
plot(0:1:255, e);
>> II=histeq(I,256);
Funcin de transformacin
II
Histograma ecualizado
II
Correccin de intervalo
vs ecualizacin
>> I=imread('lincoln.jpg');
>> II=rgb2gray(I);
>> maximo=max(II(:))
189
>> minimo=min(II(:))
13
>> imhist(II)
Correccin de intervalo
% Se extiende rango
>> III=imadjust(II,[13/255 189/255],[0 1]);
>> maximo=max(III(:))
255
>> minimo=min(III(:))
0
II
Corrige intervalo
III
Ecualizacin
>> IV=histeq(II);
>> imhist(IV)
III
II
IV
Resultado
Correccin de
intervalo
Ecualizacin
Resultado (II)
Correccin de
intervalo
Ecualizacin
1 k
sk n j
n j 0
rk T
Funciones de transformacin
Funcin gausiana
Funcin campana
Funcin sigmoide
Funcin sigmoide invertida
Combinacin de funciones
sk
Ecualizacin
6000
5000
4000
3000
2000
1000
0
1200
50
100
150
200
250
50
100
150
200
250
6000
1000
5000
800
4000
600
3000
400
2000
200
1000
0
50
100
150
200
250
50
100
150
200
250
6000
5000
4000
3000
2000
1000
0
0
50
100
150
200
250
c=histeq(b, a);
50
100
150
200
150
200
250
6000
5000
4000
3000
2000
1000
0
0
50
100
250
50
100
150
200
250
50
100
150
200
250
50
100
150
200
250
5000
4000
3000
2000
1000
0
0
50
100
50
100
150
200
250
6000
5000
4000
3000
2000
1000
0
0
150
200
250