0% encontró este documento útil (0 votos)
80 vistas

CAPÍTULO 3 - Pdi

Este documento describe diferentes tipos de operaciones que se pueden realizar con imágenes, incluyendo operaciones con una sola imagen, dos imágenes y operaciones espaciales. Las operaciones con una sola imagen incluyen cambios de escala, umbralización y posterización. Las operaciones con dos imágenes incluyen suma, resta y operaciones lógicas. Las operaciones espaciales más importantes son la convolución, que puede usarse para suavizado o detección de bordes, y el suavizado usando un kernel gaussiano.

Cargado por

Eddylson
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
80 vistas

CAPÍTULO 3 - Pdi

Este documento describe diferentes tipos de operaciones que se pueden realizar con imágenes, incluyendo operaciones con una sola imagen, dos imágenes y operaciones espaciales. Las operaciones con una sola imagen incluyen cambios de escala, umbralización y posterización. Las operaciones con dos imágenes incluyen suma, resta y operaciones lógicas. Las operaciones espaciales más importantes son la convolución, que puede usarse para suavizado o detección de bordes, y el suavizado usando un kernel gaussiano.

Cargado por

Eddylson
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 35

CAPÍTULO 3

OPERACIONES CON IMÁGENES


3.1.- OPERACIONES CON UNA IMAGEN
A partir de una imagen MxN, el resultado es otra imagen MxN. Cada pixel de salida es función
de su correspondiente pixel de entrada:

O( x, y ) = f ( I ( x, y )) , ∀( x, y ) ∈ I ( 1)

EJEMPLOS

- Suma, multiplicación de la imagen por un escalar.


- Cambio de tipo de datos de la imagen.
- Conversión de la imagen de color a escala de grises.
- Mejoramiento de la imagen por ecualización o ajuste de histograma.
- Operación NOT en imagen binaria.
- Umbralización de imagen.
- Inversa de imagen.
- Posterización: reducción del número de niveles de gris.

3.2.- OPERACIONES CON DOS IMÁGENES.


Si se tiene dos imágenes, I1 e I 2 , de tamaños MxN, se obtiene una tercera imagen MxN:

O( x, y ) = f ( I1 ( x, y ), I 2 ( x, y )) , ∀( x, y ) ∈ I1 , I 2 ( 2)

EJEMPLOS

- Suma, sustracción de imágenes.


- Operaciones lógicas entre imágenes: OR, AND, XOR.
- Multiplicación elemento por elemento entre imágenes.
- Superposición de imagen objeto con imagen de fondo (Figura 1).

Objeto Objeto
Con +
Fondo x Fondo
verde negro

Mascara
binaria Fondo
+ +
Objeto
Mascara
inversa
Fondo
Fondo
+
A x Objeto
Apare-
negro
cer

Figura 1.- Superposición de imagen objeto con imagen de fondo


3.3.- OPERACIONES ESPACIALES
Un pixel de la imagen salida es función de varios pixeles alrededor del correspondiente pixel de
la imagen de entrada:

) f ( I ( x + i, y + j )) , ∀(i, j ) ∈ W , ∀( x, y ) ∈ I
O( x, y= ( 3)

Donde W es una ventana (máscara) de tamaño w× w ( w impar de longitud =


w 2h + 1 ) de
entrada en la posición ( x, y ) del pixel (Figura 2):

X-h X+h
y-h

w=2h+1
(x,y) h=2
W
y+h
w=2h+1

Figura 2.- Formato de la mascara W

3.3.1.- CONVOLUCIÓN
Es una operación espacial lineal de la forma:

O (=
x, y ) ∑
( i , j )∈W
I ( x + i, y + j ) ⋅ K (i, j ) , ∀( x, y ) ∈ I ( 4)

w× w
Donde K ∈ℜ es el Kernel de convolución.

Para cada pixel de salida, su correspondiente ventana de pixeles W en la imagen de entrada es


multiplicada elemento por elemento con el kernel K . El centro de la ventana y kernel es
considerado como la coordenada (0,0) e i, j ∈ [ − h, h] . Esto puede considerarse como una
suma ponderada de los pixeles de la ventana, donde los pesos están definidos por los elementos
del kernel K .

El kernel K puede ser escogido para realizar funciones tales como:

- Suavizado
- Cálculo del gradiente (detección de bordes), etc.

La convolución puede ser escrita en forma operacional como:

O= K ⊗ I ( 5)

La convolución es computacionalmente cara. Una imagen N×N con un kernel de w× w ,


2 2
requiere w N multiplicaciones y adiciones.
Ejemplo 1.- Calcular y demostrar el número de operaciones de sumas y multiplicaciones al
convolucionar una imagen 6x6 con un kernel 3x3 (Figura 3).

SOLUCIÓN

N=6, w=3

k1 k2 k3
k 4 k5 k 6 w=3
k7 k8 k9 N =6

W w=3
N =6
I
Figura 3.- Imagen con N=6 y kernel de tamaño w=3.

O ( x, =
y) ∑ I ( x + i, y + j ) ⋅ K (i,=
W
j)

O ( x, y ) =
I ( x − 1, y − 1) ⋅ k1 + I ( x − 1, y ) ⋅ k4 + I ( x − 1, y + 1) ⋅ k7 +
I ( x, y − 1) ⋅ k2 + I ( x, y ) ⋅ k5 + I ( x, y + 1) ⋅ k8 +
I ( x + 1, y − 1) ⋅ k3 + I ( x + 1, y ) ⋅ k6 + I ( x + 1, y + 1) ⋅ k9

Número de operaciones(sumas y restas): w=


2
N 2 9=
*36 324 .

3.3.2.- SUAVIZADO
Se consigue suavizado en base a un kernel de volumen unidad (la suma de sus valores es 1). Este
kernel realiza el promedio de los pixeles pertenecientes a la ventana de operación. Desventaja:
desenfoca la imagen.

Ejemplo 2.- Realice el suavizado de 4 pixeles ((xo,yo),(xo+1,yo),(xo+2,yo),(xo+3,yo)) en la imagen


entrada 6x5 (Figura 4), en base a un kernel de volumen unidad de orden 3 (Figura 5).

x0
3 7 0 1 2 3
y0 4 8 2 3 1 5
1 4 6 10 11 2
2 1 2 11 4 2
3 4 8 4 2 1
Figura 4
Kernel (Figura 5):

1/ 9 1/ 9 1/ 9

1/ 9 1/ 9 1/ 9
1/ 9 1/ 9 1/ 9

Figura 5.- Kernel volumen unidad

Matlab:

>>K=ones(3,3)./3^2;

SOLUCIÓN

O( xo , yo ) = 19 3 + 19 7 + 19 0 + 19 4 + 19 8 + 19 2 + 19 1 + 19 4 + 19 6 =
3 + 7 + 0 + 4 + 8 + 2 + 1 + 4 + 6 35
O( xo , y=
o) = = 3.9
9 9

7 + 0 + 1 + 8 + 2 + 3 + 4 + 6 + 10 41
O( xo + 1, yo ) = = = 4.5
9 9

0 + 1 + 2 + 2 + 3 + 1 + 6 + 10 + 11 36
O( xo + 2, yo ) = = = 4
9 9

1 + 2 + 3 + 3 + 1 + 5 + 10 + 11 + 2 38
O( xo + 3, yo ) = = = 4.2
9 9

x0 x0 + 1 x0 + 2 x0 + 3

y0 3.9 4.5 4 4.2

Figura 6

NOTA: En Matlab: >>iconv(I, K) ó >>conv2(I, K, ’same’).


3.3.2.1.- FUNCIÓN GAUSSIANA BIDIMENSIONAL
RECORDANDO:

FUNCIÓN GAUSSIANA UNIDIMENSINAL:


x2 ( 6)
1
G ( x) = e 2σ 2

σ 2π

Figura 7.- Función Gaussiana unidimensional

FUNCIÓN GAUSSIANA BIDIMENSIONAL:

Útil para suavizado de imágenes. El kernel es una función gaussiana de la forma:


u 2 + v2 ( 7)
1
G (u , v) = e 2σ 2
2πσ 2
Es una función simétrica respecto al origen, y de volumen la unidad, el ancho de la función G
es gobernado por el parámetro σ (desviación standard, en pixeles).

Matlab: “kgauss(sigma)”

EJERCICIO:

>>k=kgauss(0.5)

>>surf(k)

Nota: probar con sigma=1, 2,3, etc

Nota2: comprobar que la suma de sus elementos es la unidad.

>>total=0;

>>for i=1:numcols(k);

for j=1:numrows(k);

total=total+k(j,i);

end; end;
Nota 3: alternativa: utilizar commando “sum()”.

>>total=sum(sum(k))

3.3.3.- DETECCIÓN DE BORDES


La detección de bordes es de suma importancia y utilidad, para tareas como reconocimiento de
objetos, segmentación de regiones, etc.

3.3.3.1.- BORDE
Es la frontera entre dos regiones con valores de nivel de gris abruptamente distintos. La
detección de bordes se realiza con operadores de “derivación”.

DEMOSTRACIÓN

1.- Cargar y mostrar por pantalla en escala de grises, tipo doble, la imagen “castle_sign.jpg” en
la variable I, añadir ejes.

>>I=imread(‘castle_sign.jpg’);

>>I=rgb2gray(I);

>>I=double(I);

>>imshow(I,gray(256)), axis on

2.- Sacar un perfil horizontal en la posición 360 y plotear:

>>p=I(360,:);

>>figure, plot(p), grid on

3.- Hacer un acercamiento en la letra “T” (posición [560:610]), y plotear:

>>figure, plot([560:610], p(560:610)), grid on

Se observa un cambio abrupto en niveles de gris a los costados de la letra “T”.

La derivada de primer orden de p es

p '[v] = p[v] − p[v − 1] ( 8)

En Matlab existe el comando “diff()”.

4.- Derivar p y mostrar en la posición [560:609]:

>>P2=diff(p);

>>figure, plot(560:609,p2(560:609)), grid on

Se observa la velocidad de cambio positiva y negativa en ambos costados de la letra “T”.

La derivada en el punto v, puede ser también ser escrita como la derivada de primer orden
“simétrica”:
1 ( 9)
p '[=
v] ( p[v + 1] − p[v − 1])
2
En matrices:

 1 1 ( 10)
k = − 0
 2 2 
Convolucionando la imagen I con este kernel, se muestran los bordes verticales.

>>figure, idisp(iconv(I, k), ‘invsigned’)

Se consiguen los bordes horizontales transponiendo k:

>>figure, idisp(iconv(I, k’), ‘invsigned’)

Muchos kernels han sido propuestos para calcular el gradiente horizontal. El más común es el
kernel de Sobel:

 −1 0 1  ( 11)
Du =  −2 0 2 
 −1 0 1 
Concolucionando la imagen I con Du, se muestran los bordes verticales:

>>figure, idisp(iconv(I, Du),’invsigned’)

Se consiguen los bordes horizontales transponiendo Du:

 −1 −2 −1 ( 12)
Du ' =  0 0 0 
 1 2 1 
>>figure, idisp(iconv(I, Du’),’invsigned’)

NOTACIÓN:

∂I
=∇u I =Iu
∂u ( 13)
∂I
=∇v I =Iv
∂v
En forma operacional:

I u= D ⊗ I ( 14)

=
I v DT ⊗ I
Donde D : kernel derivativo.

Nota: en Matlab: “Du=ksobel”.

Existen otros kernels derivativos:

De Roberts:
0 1 1 0
−1 0 0 −1

Figura 8.- Kernels de Roberts

De Prewitt:

−1 0 1 −1 −1 −1
−1 0 1 0 0 0
−1 0 1 1 1 1

Figura 9.- Kernels de Prewitt

Isotrópico:

−1 0 1 −1 − 2 −1
− 2 0 2 0 0 0
−1 0 1 1 2 1

Figura 10.- Kernels isotrópicos

Se puede reducir el efecto del ruido suavizando (mediante una función gaussiana) la imagen
antes de derivar:

D ⊗ ( G (σ ) ⊗ I ) =⊗
Iu = ( D G (σ ) ) ⊗ I =
(D  G) ⊗ I ( 15)

D  G puede conseguirse como:


>>Gu=iconv(Du,kgauss(sigma));

Ó analíticamente, en la dirección u, según la ecuación gaussiana:


u 2 + v2 ( 16)
u
G '(u , v)u = − e 2σ 2
2πσ 4
EJERCICIO:

>>Du=ksobel

>>G=kgauss(3);

>>Gu=iconv(Du,G);

>>figure, idisp(iconv(I, Gu),’invsigned’)

>>figure, idisp(iconv(I, Gu’),’invsigned’)

Ver la función Gu en forma superficial:

>>figure, surf(Gu)

>>figure, surf(Gu’)

Existe un comando en Matlab que obtiene D  G en forma directa:

>>Gu2=kdgauss(sigma);

Se puede calcular las componentes horizontal y vertical del gradiente:

>>Iu=iconv(I,kdgauss(2));

>>Iv=iconv(I,kdgauss(2)’);

Permite encontrar la magnitud del gradiente en cada pixel:

>>Im=sqrt(Iu.^2+Iv.^2);

Al displayar su imagen se observan bordes horizontales y verticales:

>>figure, idisp(Im,’invsigned’)

También se puede calcular la dirección del gradiente en cada pixel:

>>Io=atan2(Iv,Iu);

3.3.3.2.- ALGORITMO DE CANNY (J. Canny, 1986)


Se realiza en tres etapas:

1.- OBTENCIÓN DEL GRADIENTE

En base a la primera derivada, se obtienen dos imágenes: una con la magnitud Im, y otra con la
dirección del gradiente Io, a partir de la imagen original previamente filtrada con una máscara
de convolución de tipo gaussiana con desviación estándar sigma.

2.- SUPRESIÓN DE NO MÁXIMOS

Se logra el adelgazamiento del ancho de los bordes (hasta 1 pixel) obtenidos con el gradiente,
mediante el siguiente procedimiento:

2.1.- Entrada: Im, Io, salida: In


2.2.- Considerar 4 direcciones dk: d1,d2,d3,d4, identificadas por las direcciones 0°, 45°, 90°,
135° respecto a la horizontal.

2.3.- Para cada pixel (x,y):

- Encontrar la dirección dk que mejor se aproxime a la dirección Io(x,y) (que viene a ser la
perpendicular al borde).

- Si Im(x,y) es más pequeño que al menos uno de sus dos vecinos en la dirección dk, entonces
In(x,y)=0 (supresión), caso contrario: In(x,y)=Im(x,y).

3.- HISTÉRESIS DE UMBRAL

Con este proceso se pretende reducir la probabilidad de bordes falsos

- Entrada: In, Io, T1, T2 (T1<T2).

Para cada pixel (x,y):

- Localiza el siguiente punto, tal que In(x,y)>T2 (pixel fuerte),


- Caso contrario:
- Seguir las cadenas de máximos locales a partir de In(x,y) en ambas direcciones
perpendiculares a Io(x,y) (normal al borde) siempre que In(x,y)>T1 (pixel débil), si es
así, marcar In(x,y) como punto borde.

Matlab: “edge(I,’canny’)” ó “icanny(I)”

OpenCv: “cvCanny()”

EJERCICIO:

>>edges=icanny(I,2);

>>figure, idisp(edges,’invert’)

>>edges2=edge(I,’canny’);

>>figure, idisp(edges2,’invert’)

3.3.3.3.- LAPLACIANO
Otra alternativa es encontrar el gradiente máximo, calculando la 2da derivada y determinar
dónde es cero, entonces se tiene el operador Laplaciano:

∂2 I ∂2 I ( 17)
∇2 I = + = I uu + I vv
∂u 2 ∂v 2
Es la suma de las segundas derivadas espaciales en las direcciones horizontal y vertical.

Matlab:

>>L=klaplace
0 1 0 0 −1 0 −1 −1 −1
1 −4 1 −1 4 −1 −1 8 −1
0 1 0 0 −1 0 −1 −1 −1

Figura 11.- Kernels de Laplace

PROPIEDADES:

- Es isotrópico.
- El elemento central del kernel es positivo y los otros son negativos, o viceversa.
- La sumatoria de los pesos del kernel es cero.
- En una imagen binaria, al aplicar el kernel laplaciano, si la convolución es diferente de
cero, entonces es un borde.

Usualmente se le utiliza con un operador gaussiano (debido a que es muy sensitivo al ruido).

L ⊗ ( G (σ ) ⊗ I ) =
∇2 I = ( L ⊗ G (σ ) ) ⊗ I =
(L  G) ⊗ I ( 18)

Donde

L  G : Kernel Laplaciano del gaussiano


Matemáticamente:

u 2 + v2 ( 19)
∂2 I ∂2 I 1  u 2 + v2  −
L  G (u , v) = 2 + 2 = − 1 e 2σ 2
∂u ∂v πσ 4  2σ 2 
Es conocido como el operador Marr-Hildreth o kérnel sombrero mexicano invertido.

Matlab:

>>k=klog(sigma);

-4
10

-2

-4

-6
40

30 40

20 30
20
10
10
0 0

Figura 12.- Kernel LoG, sigma=5


EJEMPLO:

>>Lap=iconv(I,klog(2));

>>idisp(Lap,’invsigned’);

Sacando un perfil horizontal en v=360, desde [570:600]:

>>p=Lap(360,:);

>>figure, plot(570:600,p(570:600),’.-’), grid on

Se observa pasos de positivo a negativo o viceversa.

Se puede calcular los cruces por cero:

>>zc=zcross(Lap);

>>figure, idisp(zc,’invert’)

Se observa doble borde.

3.3.4.- TEMPLATE MATCHING


En este caso el kernel es una imagen o parte de una imagen, constituyendo este kernel una
plantilla. La idea es encontrar qué parte de la imagen de entrada es más similar a la plantilla.
Su expresión matemática:

O( x, y ) = s (T , W ) , ∀( x, y ) ∈ I ( 20)

Donde T es una plantilla w × w ' con tamaño de lado impar: =


w 2h + 1 . W es una
ventana centrada en ( x, y ) en la imagen de entrada, del mismo tamaño de T .

En general, la función s ( I1 , I 2 ) es una medida escalar que describe la “similaridad” de las


dos imágenes I1 , I 2 del mismo tamaño. Existen tres formas de medir la similaridad:

3.3.4.1.- SUMA DE LAS DIFERENCIAS ABSOLUTAS (SAD)


=S ∑
( x , y )∈I
I1 ( x, y ) − I 2 ( x, y ) ( 21)

Ó su expresión “zero offset” (diferencia con el centroide):

( 22)
=S ∑
( x , y )∈I
 I1 ( x, y ) − I1  −  I 2 ( x, y ) − I 2 

Donde I1 , I 2 son los centroides de I1 , I 2 respectivamente.

S=0 si I1 e I 2 son idénticas, S aumenta con la disimilaridad.


3.3.4.2.- SUMA DE LAS DIFERENCIAS AL CUADRADO (SSD)
( 23)
= ∑ ( I ( x, y ) − I ( x, y ) )
2
S 1 2
( x , y )∈I

Su expresión zero offset:

∑ (  I ( x, y) − I  −  I )
2 ( 24)
=S 1 1 2 ( x, y ) − I 2 
( x , y )∈I

Al igual que el caso anterior, S=0 si I1 e I 2 son idénticas, S aumenta con la “disimilaridad”.

3.3.4.3.- CORRELACIÓN CRUZADA NORMALIZADA (NCC)


Se demuestra que la correlación permite detectar patrones dentro de una imagen, mientras que
la correlación normalizada evita posibles cambios en los niveles de gris entre el modelo que se
busca y el objeto en la imagen.


( x , y )∈I
I1 ( x, y ) ⋅ I 2 ( x, y )
S= ( 25)

( x , y )∈I
I12 ( x, y ) ⋅ ∑
( x , y )∈I
I 22 ( x, y )

Su expresión zero offset:


( x , y )∈I
 I1 ( x, y ) − I1  ⋅  I 2 ( x, y ) − I 2 
S= ( 26)
∑ ∑
2 2
 I1 ( x, y ) − I1  ⋅  I 2 ( x, y ) − I 2 
( x , y )∈I ( x , y )∈I

S ∈ [ −1 1] si S = 1 entonces I1 e I 2 son idénticas. Un valor aceptable es 0.8

EJEMPLO

>>lena=iread(‘lena.png’,’double’,’mono’);

>>T=iroi(lena,[240 290;250 300]);

>>Imshow(lena)

>>figure, imshow(T)

Imágenes iguales:

>>S=sad(T,T)

>> S=ssd(T,T)

>> S=ncc(T,T)

1
Escalamiento:

>> S=sad(T,T*0.9)

101.9137

>> S=ssd(T,T*0.9)

4.6093

>> S=ncc(T,T*0.9)

Desplazamiento:

>> S=sad(T,T+0.1)

260.1

>> S=ssd(T,T+0.1)

26.01

>> S=ncc(T,T+0.1)

0.9975

Desplazamiento, funciones zero offset:

>> S=zsad(T,T+0.1)

4.9587e-12

>> S=zssd(T,T+0.1)

9.4550e-27

>> S=zncc(T,T+0.1)

1.00

Escalamiento y desplazamiento, zero offset

>> S=zsad(T,T*0.9+0.1)

34.2991

>> S=zssd(T,T*0.9+0.1)

0.6161

>> S=zncc(T,T*0.9+0.1)

1.00

Conclusión: zncc es invariante al escalamiento y a la variación de offset. Desventaja:


computacionalmente muy cara: sumas y diferencias, productos, raíces cuadradas.
EJEMPLO 2

En la imagen “lena.png”

>>S=isimilarity(T,lena,@zncc);

>>[mx p]=peak2(S,1,’npeaks’,5);

>>disp(mx)

>>disp(p)

>>figure(1), hold on

>>plot(p(1,1),p(2,1),’sr’)

EJEMPLO 3

>>crowd=iread(‘wheres_walle.png’,’double’,’mono’);

>>figure, Imshow(crowd)

>>T2=iread(‘bender.png’,’double’,’mono’);

>>figure, imshow(T2)

>>S2=isimilarity(T2,crowd,@zncc);

>>[mx2 p2]=peak2(S2,1,’npeaks’,5);

>>disp(mx2)

>>disp(p2)

>>figure(3), hold on

>>plot(p2(1,1),p2(2,1),’sr’)

3.4.- MORFOLOGÍA MATEMÁTICA


Es una forma de operaciones espaciales no lineales, hace uso de las propiedades de conjuntos.
Cada pixel de salida es función de un subconjunto de pixeles en una región (elemento
estructurante) alrededor del pixel de entrada, por lo que su resultado es sensible a la forma de
dicho elemento estructurante:

O( x, y=
) f ( I [ x + i, y + j ]) , ∀(i, j ) ∈ S , ∀( x, y ) ∈ I ( 27)

Donde S es el elemento estructurante de dimensión w × z . La morfología matemática tiene


que ver con la forma de los objetos.

3.4.1.- EROSIÓN
“La salida es verdadera si todos los pixeles bajo el elemento estructurante S son verdadero”.
En forma operacional:

O = Iθ S ( 28)
3.4.2.- DILATACIÓN
“La salida es verdadera bajo el elemento estructurante S , si cualquiera de los pixeles bajo el
elemento estructurante es verdadero”. En forma operacional:

O= I ⊕ S ( 29)

Las operaciones morfológicas son asociativas:

( A ⊕ B) ⊕ C = A ⊕ ( B ⊕ C ) ( 30)
( Aθ B )θ C = Aθ ( Bθ C )
Matlab:”imerode()”, “imdilate()”

Ejemplo 3.- Se tiene el elemento estructurante S, y la imagen binaria I 8x8, (Figura 13)

a) Hallar una erosión seguida de una dilatación.


b) Hallar una dilatación seguida de una erosión.

NOTA: pixeles fuera de imagen: si importan.

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1
Elemento estructurante S

Imagen de entrada

Figura 13.- Imagen de entrada I y elemento estructurante S

SOLUCIÓN

a) Erosión, luego dilatación:

1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1
1 1 1

Erode Dilate

Figura 14
b) Dilatación, luego erosión:

1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1
Dilate Erode
Figura 15

Matlab:

>>I=logical(zeros(8,8));

>>I(2:4,3:7)=1; I(5:6,5:7)=1; I(6:7,2:3)=1;

>>disp(I)

>>S=logical(ones(3,3))

>>A=imerode(I,S)

>>B=imdilate(A,S)

>>C=imdilate(I,S)

>>D=imerode(C,S)

3.4.3.- APERTURA (OPENING)


Erosión seguida de una dilatación:

=
I S ( Iθ S ) ⊕ S ( 31)

Generalmente suaviza el contorno de un objeto, rompe itsmos estrechos, y elimina elementos


aislados pequeños (ruido).

3.4.4.- CIERRE (CLOSING)


Dilatación seguida de una erosión:

I • S = ( I ⊕ S )θ S ( 32)

También suaviza contornos de objetos, fusiona separaciones estrechas y entrantes delgadas,


elimina pequeños huecos del objeto, y rellena agujeros del contorno.

Matlab: imopen(), imclose()


Ejemplo 4.- Verificar los resultados de la parte a) y b) del Ejemplo 3

SOLUCIÓN

>>B1=imopen(I,S)

>>D1=imclose(I,S)

Comparar con los resultados del Ejemplo 3

NOTA: El elemento estructurante S, no siempre es simétrico, en caso no sea simétrico, debe


indicarse su punto pivote (posición (0,0)).

3.4.5.- EXTRACCIÓN DE BORDES


El borde β ( A) del objeto A está dado por:

β ( A)= A − ( Aθ B) ( 33)

donde B es un elemento estructurante de forma adecuada.

Ejemplo 5.- Hallar el borde del objeto de la imagen A de la Figura 16, usando el elemento
estructurante B.

1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 11 1
1 1 1 1 1 1 1 1 11 11 1
1 1 1 1 1 1 1 1 1 1
Elemento estructurante B
1 1 1 1 1 1 1 1 1 1

Imagen de entrada A
Figura 16

SOLUCIÓN

Erosión Aθ B

1 1 1 1
1 1 1 1
1 1 1 1 1 1 11
Aplicando β ( A)= A − ( Aθ B ) , se tiene el borde buscado:

1 1 1 1 1 1 1 1
1 1 1 1
1 1 1 1 11
1 1
1 1 1 1 1 1 1 1 1 1

3.4.6.- FILTRO MORFOLÓGICO


Elimina ruido en la imagen (es decir ruido del objeto y ruido del fondo de imagen), está
constituido de una apertura seguido de un cierre:

( 34)
=
F ( I  S ) •=
S ( I θ S ) ⊕ S  •=
S  ( I θ S ) ⊕ S  ⊕ S  θ S

Ejemplo 6.- A partir de la imagen A y el elemento estructurante S (Figura 17), a) halle un


opening, b)Halle un closing

1 1 1 1 1 Elemento estructurante S

1 1
1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 y0 1 1 1 y0 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

Imagen de entrada A

Figura 17

SOLUCIÓN

a) Opening
1 1 1 y0 1

1 1 1 1
1 1 1 1

Imagen A erosionada

1 1 1 1 1 y0 1 1 1

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

Imagen A erosionada y dilatada


b) Closing:

1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 y0 1 1 1 y0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1

Imagen A dilatada
1 1
1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 y0 1 1 1 y0 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

Imagen A dilatada y erosionada

Pruebas con Matlab:

>>A=logical(zeros(11,18));

>>A(9:10,3:10)=1; A(2:7,15:16)=1; A(3:7,5:8)=1; A(4:6,11:13)=1; A(5,9:10)=1;

Parte a)

>>S=logical(ones(1,5))

>>B=imerode(A,S)

>>C=imdilate(B,S)

>>imopen(A,S)

Parte b)

>>D=imdilate(A,S)

>>E=imerode(D,S)

>>imclose(A,S)

Ejemplo 7.- Para la imagen A y su elemento estructurante B de la Figura 18 , halle: a) una erosión
seguida de una dilatación, b)una dilatación seguida de una erosión.
1 1 1 1 1 1 1 1
1
1 1 1
1 Elemento estructurante B
1
1
1
Imagen de entrada A

Figura 18

SOLUCIÓN

a) Erosión seguida de una dilatación

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Imagen A erosionada Imagen A erosionada y dilatada

b) Dilatación seguida de una erosión

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
Imagen A dilatada Imagen A dilatada y erosionada
Matlab:

>>A=logical(zeros(8,8));

>>A(2,:)=1; A(2:8,2)=1;

>>disp(A)

>>B=strel([1 1])

Parte a)

>>C=imerode(A;B)

>>D=imdilate(C,B)

>>imopen(A,B)

Parte b)

>>E=imdilate(A;B)

>>F=imerode(E,B)

>>imclose(A,B)

3.4.7.- HIT OR MISS (ACERTAR O ERRAR)


Busca patrones particulares de pixeles de primer plano y de fondo en una imagen:

A ⊗ ( B1, B 2 ) =( Aθ B1) ∩ ( AC θ B 2 ) ( 35)

B1, B 2 Son elementos estructurantes principal y secundario respectivamente, generalmente


de tamaño 3x3. Aplicaciones: detección de formas en el objeto, adelgazamiento,
ensanchamiento. Matlab: “bwhitmiss()”

Ejemplo 8.- hallar el hit or miss de la imagen A 6x6 de la (Figura 19) con los elementos
estructurantes B1, B 2 .

1 1 × 0 0 × 1 1
1 1 1 1 1 1 0 0 0 1
1 1 1 1 × 1 × × 0 ×
1 1 B1 B2
1
Imagen de entrada A

Figura 19

NOTA: × : no importa.
SOLUCIÓN

1 1 1 1 1 1
1 1 1 1 1
1 1 1
1 1
1 1 1 1
1 1 1 1 1
AC AC θ B 2

1 1
1 1 1 1
1 1

Aθ B1 ( Aθ B1) ∩ ( ACθ B 2 )
Matlab:

>>A=logical(zeros(6,6));

>>A(3:4,2:5)=1; A(2:5,3:4)=1; A(6,3)=1;

>>B1=logical(zeros(3,3));

>>B1(2,1:2)=1; B1(3,2)=1;

>>B2=logical(zeros(3,3));

>>B2(1,2:3)=1; B2(2,3)=1;

>>Ac=not(A)

>>C=imerode(A,B1)

>>D=imerode(Ac,B2)

>>HM=C&D

>>bwhitmiss(A,B1,B2)
Ejemplo 9.- hallar el hit or miss de la imagen A 8x8 de la (Figura 20) con los elementos
estructurantes B1, B 2 .

1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 00 0 0 1 0
1 1 1 1 1 1 0 1 0 0 0 0
1 1 1 1 1 1 0 10 0 0 0
1 1 1 1 1 1 B1 B2

Imagen de entrada A

Figura 20

SOLUCIÓN

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1
1 1
1 1
1 1
1 1
1 1 1 1 1 1 1 1
AC AC θ B 2

1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1

Aθ B1 ( Aθ B1) ∩ ( ACθ B 2 )
3.5.- SEGMENTACIÓN
Mediante la segmentación se separan los objetos presentes en la imagen. Se basa en tres
principios:

a) Similitud: los pixeles del objeto tienen valores parecidos con respecto a alguna
propiedad determinada.
b) Discontinuidad: El objeto se diferencia o destaca del entorno.
c) Conectividad: Los pixeles de una región son contiguos, formando regiones homogéneas.

Existen dos tipos de segmentación: segmentación basada en regiones y segmentación por


histograma (también llamada por umbralización).

3.5.1.- SEGMENTACIÓN BASADA EN REGIONES


Busca dividir la imagen en sectores que comparten ciertas características comunes, aplica el
criterio de homogeneidad. El criterio de homogeneidad puede ser el color o la textura.

3.5.2.- SEGMENTACIÓN POR UMBRALIZACIÓN


La umbralización es una operación que implica realizar comprobaciones frente a una función T
de la forma:

T = T ( ( x, y ), p ( x, y ), I ( x, y ) ) ( 36)

I ( x, y ) :nivel de gris del punto ( x, y ) , y p ( x, y ) representa alguna propiedad local en ese


punto. Si T depende solamente de I ( x, y ) , el umbral se llama “global”; si T depende a la
vez de I ( x, y ) y p ( x, y ) se denomina “local”; si T además depende de ( x, y ) , el umbral
se llama “dinámico”.

3.5.2.1.- DE UMBRAL ÚNICO

p (rk )
Fondo Objeto

T rk

Figura 21.- Umbral único

Una imagen umbralizada por umbral único g ( x, y ) se define como:

1 si I ( x, y ) ≥ T Objeto ( 37)
g ( x, y ) = 
0 si I ( x, y ) < T Fondo
Matlab: “graythresh()”
EJEMPLO

>>I=imread(‘cameraman.tif’);

>>imshow(I)

>>figure,imhist(I)

>>level=graythresh(I)

>>figure,imshow(I<level*255)

3.5.2.2.- MULTINIVEL

p (rk )
Fondo Objeto 1 Objeto 2

T1 T2 rk

Figura 22.- Umbral multinivel

 si T1 < I ( x, y ) ≤ T2 Objeto1

 si I ( x, y ) > T2 Objeto 2 ( 38)
 si I ( x, y ) ≤ T1
 Fondo

3.6.- COLOR
Es una propiedad que poseen los cuerpos que se manifiesta al recibir iluminación y cuyo reflejo
es percibido por nuestros órganos visuales. Todos los colores están contenidos en el espectro
de luz visible (400nm-700nm) pero en diferente longitud de onda. De dónde viene el color?
(Figura 23)

Respuesta del ojo M (λ )

Sensación de color
Iluminancia Reflectancia ∫ E (λ ) R (λ ) M (λ ) d λ
E (λ ) R (λ ) Luminancia
L (λ ) = E (λ ) R (λ )

Figura 23
3.6.1.- ILUMINANCIA (INTENSIDAD LUMÍNICA)
Cantidad de luz que cae sobre el objeto (Lux)=(Lumen/m2). Ejemplo: noche de luna llena: 1Lux,
medio día: 32,000 Lux

3.6.2.- LUMINANCIA
Es proporcional a la luz percibida por el ojo. Cantidad de luz emitida (reflejada) por un objeto
iluminado (Cd/m2).

3.6.3.- SENSACIÓN DE COLOR


Hombre: visión tricromática. La respuesta a la luz visible está entre 400-700 nm.

Animales (mamíferos): visión bicromática, tienen diferente respuesta espectral.

Aves, peces, anfibios: visión tetracromática.

3.6.4.- RETINA HUMANA


Contiene células tipo cono y tipo bastón (rodillos):

a) Rodillos: contiene Rhodopsina (proteina) sensitiva a niveles bajos de iluminación


(noche): visión escotópica.
b) Conos: contiene Photopsina (proteina) relacionada a la rhodopsina. Hay tres tipos de
photopsina: sensitiva al rojo, al verde, al azul: visión photópica (día), (Figura 24).

Re spuesta 534 564


420 498

nm
350 400 700

Figura 24

Nota: respuesta color negro: respuesta de rodillos (Figura 24).

El sensor en una cámara digital es análogo a la retina, pero en vez de conos y rodillos, posee un
arreglo de elementos sensitivos basados en silicio, cada uno de tamaño entre 1 a 10
micrómetros cuadrados, con señal de salida proporcional a la cantidad de luz que cae en su
superficie.

El color es percibido directamente por el sensor, y a diferencia de otras propiedades como la


textura o el flujo óptico (cambios orientados en secuencia de imágenes) no requiere complejo
procesamiento. Aplicaciones: robótica, indexación de base de datos de imágenes, sensado
remoto, seguimiento, biométrica, etc.

3.6.5.- MODELO RGB


Los valores RGB son denominados valores triestímulos (colores primarios) que forman un cubo
espacial tridimensional que contiene todos los posibles valores triestímulos (Figura 25)
blu
magenta

white
cian

black red

green
yellow

Figura 25

3.6.5.1.- CROMATICIDAD
Los valores triestímulos normalizados son la cromaticidad r , g , b .

R G B ( 39)
r= g= b=
R+G+ B R+G+ B R+G+ B
Los cuales son invariantes al brillo (iluminación). Además, cumplen con:

r + g +b =
1 ( 40)

Lo que significa que sólo dos valores de cromaticidad son necesarios para describir el color,
generalmente r , g (Figura 26).

verdePuro
1

0.75 NoPosible

0.5

0.25 RojoPuro

AzulPuro 0.25 0.5 0.75 r


1

Figura 26.- Cromaticidad r VS r

Ejemplo 10.- Se tiene los siguientes valores triestímulo en soleado (0.6, 0.4, 0.2) y nublado
(0.3,0.2,0.1)

a) Codificar con γ .
b) Hallar la cromaticidad r , g para soleado y nublado
SOLUCIÓN

a) Codificación gamma:

[0.6 0.4 0.2] = [ 0.795 0.662 0.485]


1/ 2.2

[0.3 0.2 0.1] = [ 0.582 0.485 0.355]


1/ 2.2

b) Cálculo de la cromaticidad r , g .

Soleado:

0.795
=r = 0.409
0.795 + 0.662 + 0.485
0.662
=g = 0.341
0.795 + 0.662 + 0.485
0.485
=b = 0.250
0.795 + 0.662 + 0.485
Nublado:

0.582
=r = 0.409
0.582 + 0.485 + 0.355
0.485
=g = 0.341
0.582 + 0.485 + 0.355
0.355
=b = 0.250
0.582 + 0.485 + 0.355
Conclusión: en soleado o nublado, la cromaticidad es la misma.

3.6.6.- MODELO CMY


Se basa en la síntesis sustractiva, a partir de colores secundarios (cian, magenta, amarillo), estos
al mezclarse sustraen o absorben más luz produciendo tonos más oscuros. Utilizado para tareas
de impresión.

C  1  R 
 M=  1 − G 
      ( 41)
 Y  1  B 
Nota: R,G,B: valores normalizados.

3.6.7.- MODELO YIQ


Luminancia (L), fase (I), y cuadratura (Q), se usa en emisiones de TV (estándar NTSC). Ventaja: la
luminancia L y la información de color (I,Q), están desacopladas, es decir, la luminancia puede
procesarse (p.e. ecualizar histograma) sin afectar su contenido cromático.
Y  0.299 0.587 0.114   R 
  0.596 −0.275 −0.321 G 
 I =    ( 42)
Q   0.212 −0.523 0.311   B 

3.6.8.- MODELO HSI (HSV)


TONO (H): atributo cromático que describe un color puro (p.e. rojo, amarillo, etc.).

SATURACIÓN (S): monto de color que está presente (p.e. rojo y rosa).

INTENSIDAD (I): monto de luz (p.e. rojo oscuro, rojo claro).

I está desacoplado de H y S. H y S están íntimamente relacionadas con la forma en que los


humanos percibimos el color.

Ventaja del modelo HSI: necesita menor requerimiento de memoria.

OBSERVACIÓN:

Si S=0, H no está definido

Si I=0, S es indefinida

Si B/I > G/I, H=360°-H.

Relación entre modelo RGB y HSI:

1
I= [ R + G + B]
3
min ( R, G, B )
S = 1− ( 43)
I
 0.5 ( R − G ) + ( R − B )  
H = a cos    
 
 ( R − G ) + ( R − B )( G − B ) 
2

Ejemplo 11.- Hallar los valores HSI para los valores triestímulo en soleado del Ejemplo 10

SOLUCIÓN:

1
I= [0.6 + 0.4 + 0.2=] 0.4
3
min ( 0.6, 0.4, 0.2 )
S=1− = 0.5
I
 0.5 ( 0.6 − 0.4 ) + ( 0.6 − 0.2 )  
H a= cos   0.5236
 
 ( 0.6 − 0.4 ) + ( 0.6 − 0.2 )( 0.4 − 0.2 ) 
2
3.6.8.1.- REPRESENTACIÓN
Se representa por un doble cono invertido (Figura 27), donde

blanco

verde amarillo
H
cian rojo

azul magenta

negro

Figura 27.- Representación del modelo HSI

H: Angulo en el plano horizontal con referencia al rojo (p.e. si H=0°, entonces es rojo, H=60°,
entonces amarillo), rango teórico: [0 360]. Nota: OpenCv: [0 180].

S: en el plano horizontal, distancia hacia la línea vertical central. Más cerca a la línea, entonces,
menor saturación, rango teórico: [0 1]. Nota: OpenCv: [0 255].

I: Se mide según la línea central vertical de los conos. En el cono inferior los colores son más
oscuros hasta llegar al negro, en el cono superior, más claros hasta llegar al blanco, rango
teórico: [0 1], OpenCv: [0 255].

Nota: en imágenes muy claras o muy oscuras, el valor de S es bajo (ver Figura 27), y H es muy
ruidoso, por lo tanto, no es conveniente.

3.6.9.- FALSO COLOR (PSEUDO COLOR)


Consiste en la transformación de una imagen en escala de grises a imagen a color. La visión
humana sólo puede distinguir 30 escalas de gris, pero puede diferenciar cientos de diferentes
colores.

La técnica de falso color, asigna artificialmente colores a la escala de grises. Existen varias
técnicas.
3.6.9.1.- DIVISIÓN DE INTENSIDAD
Se puede interpretar como la colocación de planos paralelos horizontales que dividen a la
función I ( x, y ) , por ejemplo, la división en dos regiones por el plano en I ( x, y ) = li : cada
región es asignada un color diferente (Figura 28).

I ( x, y )

li

Figura 28.- Un plano dividiendo en dos regiones

DEFINICIÓN:

Si se ha definido M planos en los niveles l1 , l2 ,  , lM y se hace que represente al negro


I ( x, y ) = 0 , y lL represente al blanco I ( x, y ) = L , y 0 < M < L ; Los M planos dividen
la escala de grises en M + 1 regiones, las asignaciones de color se hacen de acuerdo con la
relación:

I ( x , y ) = Ck si I ( x, y ) = Rk ( 44)

Donde Ck es el color asociado a la región Rk , definido por los planos de color.

3.6.10.- CAMSHIFT (CONTINOUSLY ADAPTIVE MEAN SHIFT)


Algoritmo para el seguimiento de objetos basado en color, usando el modelo HSI, presentado
por Gary Brasky en 1998 (G. Brasky, 1998), planteado inicialmente para el seguimiento de
rostros, es una mejora del algoritmo MEANSHIFT (Cheng, 1995).

ALGORITMO: Se describe en el siguiente diagrama de bloques (Figura 29).


Figura 29.- Camshift (G. Brasky,1998)

En una aplicación se podría ver como la distribución de probabilidad de la Figura 30.

C2

C1

Figura 30.- Representación de distribución de probabilidad

DESVENTAJAS

1.- Sensitivo a la iluminación.


2.- Sensitivo a factores medioambientales.

3.- Si el objeto y el fondo son de colores similares, puede perderse el objeto.

4.- Si hay un fondo dinámico, se puede perder el objeto.

p (rk ) = nk ( 45)

También podría gustarte