Sei sulla pagina 1di 72

Transformaciones

e Histograma
1
1
2
3
M
2
3
N
) 3 , 2 ( g ) 3 , 2 ( f
1
1
2
3
M
2
3
N
Transformaciones bsicas
La transformacin de intensidades puede expresarse por:

)] , ( [ ) , ( y x f T y x g =
) (r T s =
donde:
r = Valor del pxel antes
del procesamiento
s = Valor del pxel despus
del procesamiento
T = Operador aplicado
sobre r
Transformacin umbral
Convierte niveles de gris a blanco y negro
>>BW = im2bw(I,magen, nivel)

>>BW = im2bw(I,magen, 128)
Transformacin complemento
r L s = ) 1 (
L-1 : Mximo nivel de gris con que se representa la imagen
Complemento
Original Complemento
Original
%Complemento
g=imcomplement(f);
Definicin del constraste
(contrast-stretching)
)] , ( [ ) , ( y x f T y x g =
Niveles de gris de entrada (f(x,y))
N
i
v
e
l
e
s

d
e

g
r
i
s

d
e

s
a
l
i
d
a

(
g
(
x
,
y
)
)

e
1
e
2

s
1

s
2

1 2
1 2
s s s
e e e
= A
= A

> +

< s +
A
A
<
=
2
2
2
2 1
1
1
1
) , ( ) , (
255
255
) , ( ) , (
) , ( ) , (
) , (
e y x f si c y x f
e
s
e y x f e si b y x f
e
s
e y x f si y x f
e
s
y x g
b e
e
s
s +
A
A
=
1 1
c e
e
s
s +

=
2
2
2
2
255
255
Funcin imadjust
) ], _ _ [ ], _ _ [ , ( gamma out high out low in high in low f imadjust g=
] 1 , 0 [ ] 255 , 0 [ uint8
] 1 , 0 [ ] _ _ [ ], _ _ [

e out high out low in high in low
Niveles de gris de entrada (f(x,y))
N
i
v
e
l
e
s

d
e

g
r
i
s

d
e

s
a
l
i
d
a

(
g
(
x
,
y
)
)

e
1
e
2

s
1

s
2

Complemento con imadjust
Original
Negativo imadjust
Original
% Complemento o negativo
g1=imadjust(f, [0 1], [1 0]);
Correccin de intervalos (I)
>> b=imadjust(a, [0 .2], []);
f(x,y)
g
(
x
,
y
)

Correccin de intervalos (II)
f(x,y)
g
(
x
,
y
)

>> b=imadjust(a, [0.8 1], []);
Correccin de intervalos (III)
f(x,y)
g
(
x
,
y
)

>> b=imadjust(a, [], [0 0.2]);
Correccin de intervalos (IV)
f(x,y)
g
(
x
,
y
)

>> b=imadjust(a, [], [0.8 1]);
Definicin del contraste
f(x,y)
g
(
x
,
y
)

b=imadjust(a, [.4 .6], [0.1 .9]);
Funcin de transformacin
por interpolacin
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)));
f(x,y)
g
(
x
,
y
)

Transformacin logartmica
>>II=im2grey(I);;
>> III=im2double(II);
>> V=2.*log(1+III);
>> IV=0.5.*log(1+III);
)) , ( 1 log( ) , ( y x f c y x g + =
Transformacin gamma
g
cr s =
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
) [], [], , ( gamma f imadjust g =
Oscurece
Aclara
b=imadjust(a, [ ], [ ], 3);
b=imadjust(a, [ ], [ ], 0.3);
Original
Definicin de contraste
E
y x f m
y x g
)) , ( / ( 1
1
) , (
+
=
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)
E
y x f m
y x g
)) , ( / ( 1
1
) , (
+
=
E=10
E=50
E=1000
m=0.5
m=0.5 L=128(uint8); E=0.8
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
)] , ( [ ) , ( y x f T y x g =
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)





Vecino prximo

Bilineal

Bicbico

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
Traslacin
Original
Empuje horizontal
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
>> size(k)
ans =
494 600

>> l=k(192:453,166:453);

>> l(49:262, 1:193)=255;
Distancia (pxels)
Otras opciones imtool
Ampliar zona
Valor de pxeles
Ajuste de contraste
Histograma
] [
k k
r h n =
Nmero de pxeles
r
k
e [0, L-1]
>> imhist(a)
Niveles de gris
k
r
k
n
Histograma (II)
>> I=imread('fig1.jpg');
>> II=rgb2gray(I);
>> [nk, rk]=imhist(II);
>> bar(rk, nk, 1);
Histograma normalizado
n
r h
n
k
k
] [
=
Nmero de pxeles
r
k
e [0, L-1]
>> imhist(I)/numel(I)
Niveles de gris
Nmero total de pxeles
Seleccin de umbral
utilizando el histograma
[0, 1,..,254,255] [0, 255]
) , ( y x g ) , ( y x f
T
Crestas
Valle
T
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')
uint8(mean(v(:,1)))
99
Mtodo de Otsu

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
k=0 k=1 k=2 k=3 k=4 k=5
3.11 1.52 0.55 0.49 0.97 2.24
2
w
o
Menor varianza entre clases
Seleccin de umbral
utilizando histograma (VII)
Otsu
Kmedias
Seleccin de umbral
utilizando histograma (VIII)
Otsu
Kmedias
Imagen original
Reduccin a colores
fundamentales
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]
Seleccin de umbral de cada matriz RGB
(2
8
)
3
=16,777,216
2
3
=8
Ecualizacin del histograma
] [
k k
r h n =

=
=
k
j
j k
n
n
s
0
1
k = 0L-1
n = Nmero total de pxeles
Funcin de probabilidad de ocurrencia de cada nivel de intensidad
Ecualizacin o linealizacin del histograma:
a) Se obtiene el histograma
b) Calcular nuevos valores de intensidades



a) Reemplazar intensidades
pxeles de No.
intensidad de nivel Mximo
0

(
(

=

=
k
j
j k
n s
Ejemplo de ecualizacin
A =
255 250 255
200 200 250
180 180 150
150
1
255 250 200 180
2
pxeles de No.
intensidad de nivel Mximo
0

(
(

=

=
k
j
j k
n s
>>.5* 255/9
14.1667
>> 2*255/9
56.6667
>> A=uint8(A)
A =
255 250 255
200 200 197
180 180 150
>> B=histeq(A,256)
B =
255 184 255
142 142 99
56 56 14
>> 5*255/9
141.6667
k=0255
Algoritmo de ecualizacin
b=imhist(I);
c=b./numel(a);
d=cumsum(c);
e=d.*255;
plot(0:1:255, e);
Funcin de transformacin
I
>> II=histeq(I,256);
II
Histograma ecualizado
I 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
Corrige intervalo
III
II
Ecualizacin
>> IV=histeq(II);
>> imhist(IV)
II
IV
III
Resultado
Ecualizacin
Correccin de
intervalo
Resultado (II)
Ecualizacin
Correccin de
intervalo
Uso de imtool (I)
Uso de imtool (II)
Especificacin del histograma
Funciones de transformacin

Funcin gausiana

Funcin campana

Funcin sigmoide

Funcin sigmoide invertida

Combinacin de funciones
] [
k k
r h n =

=
=
k
j
j k
n
n
s
0
1
| |
k k
s T r
1
=
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
Especificacin del histograma
c=histeq(b, a);
Combinacin de funciones
Especificacin del histograma (II)
Especificacin del histograma(III)
Especificacin del histograma(IV)
Especificacin del histograma(V)

Potrebbero piacerti anche