imagen e histograma

Post on 12-Jul-2015

24.131 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Transformaciones e Histograma

1 123

M

2 3 N)3,2(g)3,2(f

1 123

M

2 3 N

Transformaciones básicas

La transformación de intensidades puede expresarse por:

)],([),( yxfTyxg = )(rTs =ó

donde:r = Valor del píxel antes del procesamientos = Valor del píxel después del procesamiento T = Operador aplicado sobre r

Transformación umbral

Convierte niveles de gris a blanco y negro

>>BW = im2bw(I,magen, nivel)

>>BW = im2bw(I,magen, 128)

Transformación complemento

rLs −−= )1(

L-1 : Máximo nivel de gris con que se representa la imagen

Complemento

Original Complemento

Original%Complemento

g=imcomplement(f);

Definición del constraste (contrast-stretching)

)],([),( yxfTyxg =

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

Niv

eles

de

gris

de

salid

a (g

(x,y

))

e1 e2

s1

s2

12

12

sss

eee

−=∆−=∆

≥+−−

<≤+∆∆

<

=

22

2

21

11

1

),(),(255

255

),(),(

),(),(

),(

eyxfsicyxfe

s

eyxfesibyxfe

s

eyxfsiyxfe

s

yxg

bee

ss +

∆∆= 11

cee

ss +

−−= 2

2

22 255

255

Función imadjust

)],__[],__[,( gammaouthighoutlowinhighinlowfimadjustg =

]1,0[]255,0[uint8

]1,0[]__[],__[

≡⇒∈outhighoutlowinhighinlow

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

eles

de

gris

de

salid

a (g

(x,y

))

e1 e2

s1

s2

Complemento con imadjustOriginal Negativo imadjust

Original% Complemento o negativog1=imadjust(f, [0 1], [1 0]);

Corrección de intervalos (I)

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

f(x,y)

g(x,

y)

Corrección de intervalos (II)

f(x,y)

g(x,

y)

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

Corrección de intervalos (III)

f(x,y)

g(x,

y)

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

Corrección de intervalos (IV)

f(x,y)

g(x,

y)

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

Definición del contraste

f(x,y)

g(x,

y)

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

Función de transformación por interpolación

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)

Transformación logarítmica

>>II=im2grey(I);; >> III=im2double(II); >> V=2.*log(1+III);>> IV=0.5.*log(1+III);

)),(1log(),( yxfcyxg +=

Transformación gamma

gcrs =

g<1

g=1g>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 onend

Corrección de gamma

)[],[],,( gammafimadjustg =

OscureceAclara

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

Definición de contraste

Eyxfmyxg

)),(/(1

1),(

+=

r=0:1:255;E=10:10:1000;for i=1:9d(i,:)=255*(1./(1+(128./r).^E(1,i)));plot(r,d(i,:));hold onend

Definición de contraste (II)

Eyxfmyxg

)),(/(1

1),(

+=

0 10 20 30 40 50 60 70 80 90 1000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

E=10

E=50E=1000

m=0.5

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

Original

Definición de contraste utilizando lógica borrosa

Si Píxel es Oscuro Entonces Píxel Resultante es Oscurecer

Desarrollo

Definición de contraste utilizando lógica borrosa (II)

Si Píxel es Oscuro Entonces Píxel Resultante es OscurecerSi Píxel es Claro Entonces Píxel Resultante es AclararSi Píxel es Gris Entonces Píxel Resultante es MantenerSi Píxel es Menos oscuro Entonces Píxel Resultante es OscurecerSi Píxel es Menos claro Entonces Píxel Resultante es Aclarar

)],([),( yxfTyxg =

Definición de contraste utilizando lógica borrosa (III)

for i=1:M for j=1:N% Se aplica sistema borroso a cada píxel IV(i,j)=evalfis(III(i,j),MejoraC);end end

Original

Interpolación de imágenes(I)

Interpolación: Proceso a través 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); % Interpolación lineal ycub = spline(x,y,xi); % Interpolación Splineplot(x,y,'o',xi,ylin,'r',xi,ycub,'g')

Interpolación de imágenes(II)

Interpolación de imágenes(III)

Interpolación de imágenes(IV)

Vecino próximo

Bilineal

Bicúbico

Transformaciones geométricas (I)

Las transformaciones geométricas se aplican en:

I.- Registro o fusión de imágenes que se han tomado en diferentes intervalos de tiempo o diferentes sensores.

II.- Corregir la distorsión de una lente.

III.- Corregir los efectos de la orientación de una cámara.

IV.- Incorporar efectos artísticos en las imágenes.

Transformaciones geométricas (II)

� ©ǡǡǡ

Transformaciones geométricas (III)

Transformación afín

•Preserva la colinealidad : todos los puntos pertenecientes a una línea original, permanecen en esa línea después de la transformación)

•Razón de distancias : El punto medio de una línea permanece como punto medio de la línea después de la transformación

Transformaciones geométricas (IV)

Rotación de una imagen

Transformaciones geométricas (V)

Otras transformaciones

Traslación

Original Empuje horizontal

Empuje vertical

Transformaciones geométricas (VI)

ProgramaI = 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); % Ampliación (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 geométricas (VII)

Secuencia de transformaciones afines

Transformaciones geométricas (VIII)

I=imread('edificio.jpg'); II=rgb2gray(I);

% Rotaciónt=45/(2*pi); % ángulo de rotacióna=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];

% Ampliación (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 matricialtr=t3*t2*t1;tform = maketform('affine',tr);VI = imtransform(II,tform);figure, imshow(II), figure, imshow(VI)

Transformaciones geométricas (IX)

Transformación geométrica 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 geométricas (X)

Transformaciones geométrica con Simulink

Registro de las imágenes (I)

Registro de las imágenes: Proceso a través del cual se alinean dos o más imágenes de una misma escena

Pasos fundamentales 1.- Seleccionar puntos de control, significativos de las imágenes base y de entrada.

2.- Obtener la matriz de transformación basado en los puntos de control.

3.- Realizar la transformación espacial.

Registro de las imágenes (II)

Selección de puntos de control (cpselect)

Registro de las imágenes (III)

Selección de puntos de control (cpselect)

% Se crea la matriz de transformacióntform = cp2tform(input_points, base_points, 'projective'); % Se alinea la imagen de entrada[alineada xdata ydata] = imtransform(II45, tform,... 'FillValues', 255);% Se superponen ambas imágenesfigure; imshow(alineada, 'XData', xdata, 'YData', ydata)hold onimshow(II);

Región de interés

>> size(k)ans = 494 600

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

>> l(49:262, 1:193)=255;

Distancia (píxels)

Otras opciones imtool

Ampliar zonaValor de píxelesAjuste de contraste

Histograma

][ kk rhn =Número de píxelesrk ∈ [0, L-1]

>> imhist(a)

Niveles de gris

kr

kn

Histograma (II)

>> I=imread('fig1.jpg');>> II=rgb2gray(I); >> [nk, rk]=imhist(II);>> bar(rk, nk, 1);

Histograma normalizado

n

rhn kk

][=Número de píxeles rk ∈ [0, L-1]

>> imhist(I)/numel(I)

Niveles de gris

Número total de píxeles

Selección de umbral utilizando el histograma

[0, 1,..,254,255] [0, 255]

),( yxg),( yxf

T

Crestas

ValleT

Selección de umbral utilizando el histograma (II)

Selección visual del umbral

Selección 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 onplot(v(:,1),v(:,2),'rs')

uint8(mean(v(:,1)))99

Método de Otsu

graythresh(II)*255117

Selección de umbral utilizando histograma (IV)

Método de Otsu

Para los k=[0, L-1] niveles de grises, se selecciona la menor

varianza entre clases

Selección de umbral utilizando histograma (V)

Método de Otsu

Selección de umbral utilizando histograma (VI)

Método 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.242wσ

Menor varianza entre clases

Selección de umbral utilizando histograma (VII)

Otsu Kmedias

Selección de umbral utilizando histograma (VIII)

Otsu KmediasImagen original

Reducción a colores fundamentales

Color Combinación 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]

Selección de umbral de cada matriz RGB

(28)3=16,777,216 23=8

Ecualización del histograma

][ kk rhn = ∑=

=k

jjk n

ns

0

1 k = 0…L-1n = Número total de píxeles

Función de probabilidad de ocurrencia de cada nivel de intensidad

Ecualización o linealización del histograma:b) Se obtiene el histogramac) Calcular nuevos valores de intensidades

g) Reemplazar intensidades

píxeles de No.

intensidaddenivelMáximo

0

×

= ∑

=

k

jjk ns

Ejemplo de ecualización

A = 255 250 255 200 200 250 180 180 150

150

1

255250200180

2

píxeles de No.

intensidaddenivelMáximo

0

×

= ∑

=

k

jjk ns

>>.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=0…255

Algoritmo de ecualizaciónb=imhist(I);c=b./numel(a);d=cumsum(c);e=d.*255;plot(0:1:255, e);

Función de transformación

I

>> II=histeq(I,256);

II

Histograma ecualizado

I II

Corrección de intervalo vs ecualización

>> I=imread('lincoln.jpg');>> II=rgb2gray(I);>> maximo=max(II(:))189>> minimo=min(II(:)) 13

>> imhist(II)

Corrección 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

Ecualización

>> IV=histeq(II);>> imhist(IV)

II

IV

III

Resultado

EcualizaciónCorrección de

intervalo

Resultado (II)

EcualizaciónCorrección de

intervalo

Uso de imtool (I)

Uso de imtool (II)

Especificación del histograma

Funciones de transformación

Función gausiana

Función campana

Función sigmoide

Función sigmoide invertida

Combinación de funciones

][ kk rhn = ∑=

=k

jjk n

ns

0

1 [ ]kk sTr 1−=

Utilizando función de ecualización

% Programa de ecualización basado en Gauss% Centro de la campanacg=128;% Ancho de la campanaac=50;% Se crea campanaa=exp(-((([1:1:256]-cg)./ac)).^2)';plot(a); % Figura a convertirfigure;b=imread(‘imagen.tif');imshow(b); % Se ecualizac=histeq(b, a);figure;imshow(c)imhist(c)

Ecualización

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

50 100 150 200 2500

200

400

600

800

1000

1200

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

Especificación del histograma

50 100 150 200 2500

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

c=histeq(b, a);Combinación de funciones

Especificación del histograma (II)

50 100 150 200 2500

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

Especificación del histograma(III)

50 100 150 200 2500

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

Especificación del histograma(IV)

50 100 150 200 2500

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

Especificación del histograma(V)

50 100 150 200 2500

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 50 100 150 200 250

0

1000

2000

3000

4000

5000

6000

top related