Está en la página 1de 72

Transformaciones

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

Definicin del constraste


(contrast-stretching)

Niveles de gris de salida (g(x,y))

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

Niveles de gris de entrada (f(x,y))

s2

s
e1 b
e

255 s2
e2 c
255 e2

s2

s1

Niveles de gris de salida (g(x,y))

Funcin imadjust

Niveles de gris de entrada (f(x,y))

e1

e2

g imadjust ( f , [low _ in high _ in], [low _ out high _ out ], gamma )


[low _ in high _ in], [low _ out high _ out ] [0, 1]
uint8 [0, 255] [0, 1]

Complemento con imadjust


Original

Original

Negativo imadjust

% Complemento o negativo
g1=imadjust(f, [0 1], [1 0]);

g(x,y)

Correccin de intervalos (I)

f(x,y)

>> b=imadjust(a, [0 .2], []);

g(x,y)

Correccin de intervalos (II)

f(x,y)

>> b=imadjust(a, [0.8 1], []);

g(x,y)

Correccin de intervalos (III)

f(x,y)

>> b=imadjust(a, [], [0 0.2]);

g(x,y)

Correccin de intervalos (IV)

f(x,y)

>> b=imadjust(a, [], [0.8 1]);

g(x,y)

Definicin del contraste

f(x,y)

b=imadjust(a, [.4 .6], [0.1 .9]);

g(x,y)

Funcin de transformacin
por interpolacin

f(x,y)

x=[0, 121, 141, 161, 255]


y=[0, 25, 255/2, 230, 255]
modelo = interp1(x,y,'linear','pp');
III=uint8(ppval(modelo, double(II)));

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

g imadjust ( f , [], [], gamma)


Original

b=imadjust(a, [ ], [ ], 0.3); b=imadjust(a, [ ], [ ], 3);

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

Definicin de contraste (II)


g ( x, y )

1
1 (m / f ( x, y )) E

m=0.5 L=128(uint8); E=0.8

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

% Obtiene la inversa (imagen original)


[x,y] = tforminv(tform, xy90(:,1), xy90(:,2));
% A partir de la imagen original, la rotada
[u,v] = tformfwd(tform,x,y);

xy

xy90

Transformaciones
geomtricas (X)
Transformaciones geomtrica con Simulink

Registro de las imgenes (I)


Registro de las imgenes: Proceso a travs del cual
se alinean dos o ms imgenes de una misma escena
Pasos fundamentales
1.- Seleccionar puntos de control, significativos de las
imgenes base y de entrada.
2.- Obtener la matriz de transformacin basado en los
puntos de control.
3.- Realizar la transformacin espacial.

Registro de las imgenes (II)


Seleccin de puntos de control (cpselect)

Registro de las imgenes (III)


Seleccin de puntos de control (cpselect)

% Se crea la matriz de transformacin


tform = cp2tform(input_points, base_points, 'projective');
% Se alinea la imagen de entrada
[alineada xdata ydata] = imtransform(II45, tform,...
'FillValues', 255);
% Se superponen ambas imgenes
figure; imshow(alineada, 'XData', xdata, 'YData', ydata)
hold on
imshow(II);

Regin de inters
>> l(49:262, 1:193)=255;
>> size(k)
ans =
494 600
>> l=k(192:453,166:453);
Distancia (pxels)

Otras opciones imtool

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

Para los k=[0, L-1] niveles de grises,


se selecciona la menor
varianza entre clases

Seleccin de umbral
utilizando histograma (V)
Mtodo de Otsu

Seleccin de umbral
utilizando histograma (VI)
Mtodo de Otsu

Menor varianza entre clases

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

Ecualizacin del histograma


Funcin de probabilidad de ocurrencia de cada nivel de intensidad

1 k
sk n j
n j 0

nk h[rk ]

k = 0L-1
n = Nmero total de pxeles

Ecualizacin o linealizacin del histograma:


a) Se obtiene el histograma
b) Calcular nuevos valores de intensidades
k
Mximo nivel de intensidad
sk
nj
No. de pxeles
j 0
a) Reemplazar intensidades

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

Mximo nivel de intensidad


No. de pxeles

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

Uso de imtool (I)

Uso de imtool (II)

Especificacin del histograma


nk h[rk ]

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

Utilizando funcin de ecualizacin


% Programa de ecualizacin basado en Gauss
% Centro de la campana
cg=128;
% Ancho de la campana
ac=50;
% Se crea campana
a=exp(-((([1:1:256]-cg)./ac)).^2)';
plot(a);
% Figura a convertir
figure;
b=imread(imagen.tif');
imshow(b);
% Se ecualiza
c=histeq(b, a);
figure;
imshow(c)
imhist(c)

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

Especificacin del histograma


Combinacin de funciones
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

50

100

150

200

250

6000
5000
4000
3000
2000
1000
0
0

50

100

150

200

250

c=histeq(b, a);

Especificacin del histograma (II)


1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

50

100

150

200

150

200

250

6000
5000
4000
3000
2000
1000
0
0

50

100

250

Especificacin del histograma(III)


1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
6000
5000
4000
3000
2000
1000
0

50

100

150

200

250

Especificacin del histograma(IV)


1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
6000

50

100

150

200

250

50

100

150

200

250

5000
4000
3000
2000
1000
0
0

Especificacin del histograma(V)


1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

50

100

50

100

150

200

250

6000
5000
4000
3000
2000
1000
0
0

150

200

250

También podría gustarte