Está en la página 1de 17

PROCESAMIENTO

Tema 3. Filtros y
AUDIOVISUAL
transformaciones locales.
Programa de teora
1. Adquisicin y representacin de imgenes. 3.1. Filtros y convoluciones.
2. Procesamiento global de imgenes. 3.2. Suavizado, perfilado y bordes.
3. Filtros y transformaciones locales. 3.3. Filtros no lineales.
4. Transformaciones geomtricas.
5. Espacios de color y el dominio frecuencial. 3.4. Morfologa matemtica.
6. Anlisis de imgenes. A.3. Filtros en IPL y OpenCV.
7. Vdeo y sonido digital.

Procesamiento
(c) Gins Garca Audiovisual
Mateos, http://dis.um.es/profesores/ginesgm 1 Procesamiento Audiovisual 2
Temade
Dept. 3. Informtica
Filtros y transformaciones locales. de Murcia
y Sistemas, Universidad Tema 3. Filtros y transformaciones locales.

3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.


Recordatorio: en las transformaciones globales, cada Transformacin global:
pxel de salida depende slo de un pxel de entrada. R(x,y):= f(A(x,y)) R(x,y):= f(A(x,y), B(x,y))
90 67 75 78 Transf. global 62 68 78 81 Filtros y transformaciones locales:
92 87 78 82 102 89 76 85 R(x,y):= f(A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k))
45 83 80 130 83 109 80 111
39 69 115 154 69 92 115 120
Transf. local
Entrada Salida Ejemplo. Filtro de la media.
No se tiene en cuenta la relacin de vecindad entre pxeles.
R(x,y):= (A(x-1,y-1)+A(x,y-1)+A(x-1,y)+A(x,y))/4
El resultado no vara si los pxeles son permutados
aleatoriamente y despus reordenados. 92 78 82 - - -
45 80 130 - 74 93
Transformacin local: el valor de un pxel depende de
39 115 154 - 70 120
la vecindad local de ese pxel. /4
A R
Procesamiento Audiovisual 3 Procesamiento Audiovisual 4
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.


Ejemplo. Entrada, A Un tipo interesante de transformaciones locales son las
Salida, R convoluciones discretas.
Convolucin discreta: transformacin en la que el valor
del pxel resultante es una combinacin lineal de los
valores de los pxeles vecinos en la imagen.

Ejemplo. El filtro de la media es una convolucin.


Resultado: la imagen se suaviza, difumina o emborrona. R(x,y):= 1/4A(x-1,y-1) + 1/4A(x,y-1) + 1/4A(x-1,y) + 1/4A(x,y)
Las transformaciones locales tienen sentido porque existe
una relacin de vecindad entre los pxeles. Otra forma de ver la convolucin: (x-1,y-1) (x,y-1)
Recordatorio: un pxel representa una magnitud fsica en Matriz de coeficientes de la
un punto de una escena dos pxeles prximos combinacin lineal. 1/4 1/4
corresponden a puntos cercanos de la escena el mundo 1/4 1/4
es continuo los pxeles prximos tendrn valores
parecidos. (x-1,y) (x,y)
Procesamiento Audiovisual 5 Procesamiento Audiovisual 6
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.
La matriz de coeficientes es conocida como la mscara o Sea M una mscara de convolucin. Se puede definir
ncleo (kernel) de convolucin. como array [-k...k, -p...p] de real
Idea intuitiva: se pasa la mscara para todo pxel de la En X la mscara
imagen, aplicando los coeficientes segn donde caigan. va de -k a k, y en
Algoritmo. Clculo de una convolucin. Y de -p a p. El
Mscara de convolucin Denotamos la convolucin como: R:= MA punto central es
(0,0)
1/4 1/4 Entrada. A: imagen de maxX x maxY
Cunto valen
1/4 1/4 estos pxeles? M: array [-k...k, -p...p] de real
Salida. R: imagen de maxX x maxY
Imagen de entrada, A Imagen de salida, R
Algoritmo:
92 78 82 - - -
para cada pxel (x, y) de la imagen A hacer
45 80 130
- 74 93
39 115 154 - 70 120
R(x, y):= M(i, j)A(x+i, y+j)
i=-k..k j=-p..p
Procesamiento Audiovisual 7 Procesamiento Audiovisual 8
Tema 3. Filtros y transformaciones locales. + Tema 3. Filtros y transformaciones locales.

3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.


Ejemplos. R:= MA Punto central o ancla (anchor) Sobre una imagen se pueden aplicar sucesivas
M 1/9 1/9 1/9 M 1 1 1 N operaciones de convolucin: ...M3(M2(M1A)))
1/9 1/9 1/9 1/9 1 1 1 -1 1 A R R

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

El valor de un pxel Igual que antes, pero Restar al pxel el


es la media de los 9 factorizamos el mltiplo valor del pxel
pxeles circundantes comn (suma total = 1) de la izquierda
A R R Mscara de media Mscara de media
aplicada 4 veces + mscara de resta

Ojo: la combinacin de convoluciones es


equivalente a una sola convolucin:
M2(M1A) = MA
Procesamiento Audiovisual 9 Procesamiento Audiovisual 10
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.


Cmo calcular el resultado de la combinacin? Anlogamente, algunas convoluciones se pueden obtener
Respuesta: comprobar el efecto sobre una imagen slo combinando otras ms simples: ncleos separables.
con el pxel central a UNO (seal impulso). Ejemplo.
0 0 0 0 0
1 1 1 0 0 0 0 0 1 1 1 1
-1 1 1/9 1 1 1 0 0 1 0 0 =
1/3 1 1/3 1 1 1 A = 1/9 1 1 1 A
0 0 0 0 0 Mscara
1 1 1
equivalente 1 1 1 1
0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
Resultado: el filtro de la media es separable.
0 1 1 1 0 0 1 0 0 -1 En lugar de aplicar una mscara de 3x3 se pueden
1/9 0 1 1 1 0 = 1/9 0 aplicar dos mscaras de 1x3 y 3x1 (mscaras
-1 1 1 0 0 -1
unidimensionales).
0 1 1 1 0 0 1 0 0 -1
Puede ser til para hacer los clculos ms eficientes.
0 0 0 0 0 0 0 0 0 0
Procesamiento Audiovisual 11 Procesamiento Audiovisual 12
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.
Qu hacer con los 9 4 8 Las convoluciones son una discretizacin de la idea de
1/4 1/4 convolucin usada en seales. (Repasar teora de
pxeles de los bordes? 7 8 4
1/4 1/4 seales...)
3 2 2
Posibilidades: Diferencias: las convoluciones usadas aqu son
0 0 0 discretas y bidimensionales.
1. Asignar un 0 en el resultado a los
pxeles donde no cabe la mscara. 0 7 6 Idea: las mscaras de convolucin son matrices de
0 5 4 nmeros se pueden considerar, a su vez, como
2 3 3
2. Suponer que los pxeles que se salen imgenes.
4 7 6
tienen valor 0 (u otra constante).
2 5 4
Propiedades:
9 6 6 Asociativa: M2(M1A) = (M2M1)A
3. Modificar la operacin en los pxeles
8 7 6 Conmutativa: M2M1A = M1M2A
que no caben (variar el multiplicador).
5 5 4
5 4 4 Ojo: al aplicar una convolucin puede ocurrir saturacin
4. Suponer que la imagen se extiende 7 7 6
de pxeles. Si ocurre esto, el orden s que puede ser
por los extremos (p.ej. como un importante.
8 5 4
espejo). Procesamiento Audiovisual 13 Procesamiento Audiovisual 14
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2. Suavizado, perfilado y bordes. 3.2.1. Operadores de suavizado.


Aplicando distintos operadores de convolucin es El operador de suavizado ms simple es la
posible obtener diferentes efectos: convolucin de media (media aritmtica).
Suavizado: o difuminacin de la imagen, reducir Parmetros del operador:
contrastes abruptos en la imagen. Ancho y alto de la regin en la que se aplica: w x h.
Perfilado: resaltar los contrastes, lo contrario al Posicin del ancla.
suavizado. Normalmente, w y h son impares y el ancla es el pxel
Bordes: detectar zonas de variacin en la imagen. central.
1 1 1 1 1
Deteccin de cierto tipo de caractersticas, como La mscara es
esquinas, segmentos, etc. 1 1 1 1 1 1 1 1
un simple array
1 1 1 1 1 1 1 1
Suavizado y perfilado son ms habituales en restauracin de unos de
1 1 1 1 1 1 1 1
y mejora de imgenes. tamao wxh.
Mscara de 1 1 1 1 1
Bordes y deteccin de caractersticas suelen usarse ms
en anlisis de imgenes. media de 3x3 Media de 5x5
Procesamiento Audiovisual 15 Procesamiento Audiovisual 16
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Cuanto mayor es la mscara, mayor es el efecto de Ventajas (respecto a otros suavizados):
difuminacin de la imagen.
Sencillo y rpido de aplicar.
Media de 11x11 Imagen de entrada

Fcil definir un comportamiento para los pxeles de los


Media de 5x5
(340x230)

bordes: tomar la media de los pxeles que quepan.


Recordatorio: el operador de media es separable.
1 1 1 1 1 1
1 1 1 1 1 1

Media de 21x21

1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
Media de 5x5 Media de 5x1 y de 1x5
Total: 25 sumas o(n2) Total: 10 sumas o(2n)
Procesamiento Audiovisual 17 Procesamiento Audiovisual 18
Tema 3. Filtros y transformaciones locales. + Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
En algunos casos puede ser interesante aplicar
Ejemplo 1. En una aplicacin trabajamos con imgenes
suavizados direccionales: horizontales, verticales o
capturadas de TV. El canal tiene muchas interferencias,
en cualquier direccin.
que provocan una oscilacin cada 7 pxeles horizontales.
1 0 0 1
Cmo reducir el efecto de las interferencias?
1 1 1 1 1 1 0 1 0
Media horizontal 5 pxeles 1 1 0 0
Media vertical 3p Media diagonal 3p
Media horiz. 31p

Media vert. 31p


Idea: Probar con una media
horizontal de 7 pxeles...
Procesamiento Audiovisual 19 Procesamiento Audiovisual 20
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Aplicacin de media horizontal de 7 pxeles. 1 1 1 1 1 1 1 Ejemplo 2. Entrelazado de vdeo: para aumentar la
frecuencia de refresco del vdeo se separan las lneas pares
y las impares (1 campo (field)=1/2 imagen). Al capturar una
imagen, se mezclan los campos produciendo efectos raros.

25 imgenes/seg. 50
campos/seg. 20 mseg.
entre campos
Procesamiento Audiovisual 21 Procesamiento Audiovisual 22
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Duplicar las filas pares (o las impares) y luego aplicar 1 Ejemplo 3. Efecto de niebla. Dada una imagen bien
una media vertical de 2 pxeles (para interpolar). 1 definida, queremos simular una niebla (objetivo empaado).
Idea: calcular una media ponderada entre la imagen original
y un suavizado gaussiano de la imagen.
A. Imagen original B. Suaviz. gauss. 40x40 Suma: 0,3A+0,7B

Imagen entrelazada Duplicadas filas pares Suavizado vertical (interp.)

Se puede conseguir el mismo resultado con una sola


convolucin. Cul sera la mscara equivalente?
Procesamiento Audiovisual 23 Procesamiento Audiovisual 24
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
Cuando se aplica la media con tamaos grandes se Suavizado gaussiano: media ponderada, donde los
obtienen resultados artificiosos (a menudo indeseados).
pesos toman la forma de una campana de Gauss.
Ejemplo. Suavizado gaussiano horizontal.

Suavizado de

Gaussiana
Campana discreta

media
Campana de Gauss
-x2/s2
f(x) = e

s2 es la
Motivo: la media se calcula en una regin cuadrada. varianza
0 0 1 1 1 0 0
Sera mejor aplicarla
0 1 1 1 1 1 0
a una regin redonda. 1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
O, mejor, usar suavizado gaussiano... 1/64 1 6 15 20 15 6 1
0 1 1 1 1 1 0
0 0 1 1 1 0 0
Procesamiento Audiovisual 25 Procesamiento Audiovisual 26
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales. +

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


La varianza, s2, indica el nivel de suavizado. Magia! Las filas del tringulo de Pascal forman
Varianza grande: campana ms ancha, ms suavizado. discretizaciones de la campana de Gauss.
Varianza pequea: campana ms estrecha, menos
1/2 1 1
suavizado.
Se mide en pxeles.
1/4 1 2 1
Clculo de la mscara gaussiana (1D): calcular la
funcin, discretizar en el rango, discretizar en el valor y 1/8 1 3 3 1
calcular el multiplicador... 1
1 1 1/16 1 4 6 4 1
No existe una forma ms rpida? 1 2 1
1 3 3 1 1/32 1 5 10 10 5 1 Por qu ocurre as?
Idea: el tringulo de Pascal. Recordar el teorema
1 4 6 4 1
1/64 1 6 15 20 15 6 1 central del lmite...
1 5 10 10 5 1
Procesamiento Audiovisual 27 Procesamiento Audiovisual 28
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Normalmente, el suavizado gaussiano se aplica en dos Propiedad interesante: el filtro gaussiano es separable.
dimensiones. Los pesos de la mscara dependen de la Resultado: se puede obtener un suavizado 2D aplicando
distancia al pxel central. dos mscaras gaussianas bidimensionales, una horizontal
Campana de Gauss 2D Mscara y otra vertical.
-(x2+y2)/s2 gaussiana de 3x3
f(x,y) = e 1 2 1 1
1 2 1 2 4 2 1 2 1 2
1/16 2 4 2 1 2 1 1
1 2 1

1: blanco
0: negro

Procesamiento Audiovisual 29 Procesamiento Audiovisual 30


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
Comparacin: media y suavizado gaussiano, 2D. Comparacin: media y suavizado gaussiano, 1D.

Media horiz. 31p


Media de 21x21

Media vert. 31p


Media de 11x11

Gaussiana 41x41
Gaussiana 21x21

Gaussiana 61x1

Gaussiana 1x61
Procesamiento Audiovisual 31 Procesamiento Audiovisual 32
Tema 3. Filtros y transformaciones locales. + Tema 3. Filtros y transformaciones locales.

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Resultados de la comparacin: Ejemplo 1. Proteccin de testigos. Se aplica un
Para conseguir un mismo grado de suavizado la suavizado pero slo
mscara gaussiana debe ser de mayor tamao. en cierta regin de
Se puede tomar como medida la varianza de la inters (ROI), en
mscara correspondiente. este caso elptica.
Cmo encontrar la
El efecto del suavizado gaussiano es ms natural (ms posicin de la cara
similar a un desenfoque) que la media. Ejemplo 2. Resaltar objetos de inters. automticamente?
Suele ser ms habitual en procesamiento y anlisis
de imgenes. Se suaviza el fondo
para destacar al
Ambos filtros son separables. personaje, simulando
Si la mscara es de nxn, pasamos de o(n2) a o(2n). un desenfoque.

Procesamiento Audiovisual 33 Procesamiento Audiovisual 34


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales. +

3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.


Ejemplo 3. Sombra difusa. A B
Aadir a una imagen A una etiqueta de texto B, con un
efecto de sombra difuminada. Umbralizar B, con nivel 10
B U M

Suavizado gaussiano de Desplazar S en 7 pxeles Multiplicar A por M, en Sumar T y B, en posicin


15x15, de U en X e Y, y dividir por 2 posicin (x0, y0) (x0, y0)
S D T R

Sumar U y D
M

Procesamiento Audiovisual 35 Procesamiento Audiovisual 36


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.
Perfilado y deteccin de bordes estn relacionados Matemticamente, la variacin de una funcin f(x)
con el suavizado: cualquiera viene dada por la derivada de esa funcin:
Suavizado: reducir las variaciones en la imagen. f(x) > 0 : funcin creciente en X
Perfilado: aumentar las variaciones en la imagen. f(x) < 0 : funcin decreciente en X
Bordes: encontrar las zonas de variacin. f(x) = 0 : funcin uniforme en X
Perfil de una fila de una imagen En nuestro caso, tenemos funciones discretas. La
Perfil de la img. derivada discreta se obtiene calculando diferencias.
255

f(x) = f/x
Valor de pxel

255
Suavizado
192

Valor de pxel
f = f(x)-f(x-1) x = 1

192
Perfilado
128

f
f(x) = f(x) - f(x-1)

128
f(x)
x Conclusin: la derivada se
64

Bordes

64
f(x) calcular con mscaras del

0
tipo:
0

0 160 320 480 640 0 1 2 3 4 5 6 -1 1


X X
Procesamiento Audiovisual 37 Procesamiento Audiovisual 38
Tema 3. Filtros y transformaciones locales. + Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.


Mscara de Derivada Derivadas en Los bordes decrecientes se saturan a 0...
derivada en X (M): en Y: diagonales: Podemos sumar 128 para apreciar mejor el resultado:
-1 -1 0 0 -1 Gris (128): diferencia 0
-1 1 Negro: decreciente
1 0 1 1 0
Blanco: creciente
Ejemplo. Derivada en X. R:= MA Rx Ry

Derivada X (+128)

Derivada Y (+128)
Imagen de entrada

A R
Derivada en X (x2)

Se produce una especie de bajorrelieve (emboss), que


[0..255]-[0..255]= puede usarse en efectos especiales.
[-255..255]
Procesamiento Audiovisual 39 Procesamiento Audiovisual 40
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.


Los operadores de bordes son muy sensibles al ruido. Existen algunos operadores de bordes estndar.
Es posible (y adecuado) combinar los operadores de Filtros de Prewitt:
bordes con suavizados.
Filtro de -1 0 1 -1 -1 -1
1 2 1 1 1 -1 -1 Filtro de
Prewitt 3x3, -1 0 1 Prewitt 3x3, 0 0 0
-1 1 2 4 2 = 2 2 -2 -2 derivada en X derivada en Y
-1 0 1 1 1 1
1 2 1 1 1 -1 -1

Filtros de Scharr:
Rx Rx
Derivada X (+128)

Suaviz. + Deriv. X

Filtro de -3 0 3 -3 -10 -3
Filtro de
Scharr 3x3, -10 0 10 Scharr 3x3, 0 0 0
derivada en X -3 0 3 derivada en Y 3 10 3

Procesamiento Audiovisual 41 Procesamiento Audiovisual 42


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.
Filtros de Sobel: se construyen usando la derivada Ejemplos.

Imagen de entrada
de la gaussiana.

Prewitt Y (3x3)
Filtro de -1 0 1 -1 -2 -1
Filtro de
Sobel 3x3, -2 0 2 Sobel 3x3, 0 0 0
derivada en X -1 0 1 derivada en Y 1 2 1

Adems, el filtro de Sobel permite calcular derivadas

Sobel 2 deriv. Y
Sobel Y (3x3)
conjuntas en X e Y, derivadas segundas, terceras, etc.
Ejemplo. Derivada segunda en X.

-1 1 -1 1 = -1 2 -1

Procesamiento Audiovisual 43 Procesamiento Audiovisual 44


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.


Realmente, en dos o ms dimensiones, en lugar de la El gradiente en un punto es un vector (u, v):
derivada tiene ms sentido el concepto de gradiente. ngulo: direccin de mxima variacin.
Qu es el gradiente? Repasar clculo... Magnitud: intensidad de la variacin.
El gradiente indica la direccin de mxima variacin dy
de una funcin (en 2D, la mxima pendiente). (u, v)

dx

El gradiente est relacionado con las derivadas:


u = Derivada en X del punto
v = Derivada en Y del punto
Teniendo dy y dx, cunto vale el ngulo y la magnitud?
Procesamiento Audiovisual 45 Procesamiento Audiovisual 46
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.


Clculo del gradiente: El gradiente da lugar al concepto de borde.
Calcular derivada en X: Dx (por ejemplo, con un filtro Un borde en una imagen es una curva a lo largo de la
de Sobel, Prewitt,...) cual el gradiente es mximo.
Calcular derivada en Y: Dy
Magnitud del gradiente: Dx2 + Dy2
ngulo del gradiente: atan2 (Dy, Dx) El borde es
perpendicular a
la direccin del
gradiente.

Valor absoluto de Valor absoluto de


derivada en X derivada en Y
(Sobel de 3x3) (Sobel de 3x3) Magnitud del gradiente
Procesamiento Audiovisual 47 Procesamiento Audiovisual 48
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.
Los bordes de una escena son invariantes a cambios de Otras formas de calcular los bordes:
luminosidad, color de la fuente de luz, etc. En anlisis
1. Calcular la derivada en diferentes direcciones: D1, D2, D3, D4.
de imgenes usar los bordes (en lugar de las originales).
2. Para cada punto, la magnitud del gradiente es la derivada de
mximo valor absoluto:
G(x,y):= max {|D1(x,y)|, |D2(x,y)|, |D3(x,y)|, |D4(x,y)|}
3. La direccin del gradiente viene dada por el ngulo que ha
producido el mximo:
A(x,y):= argmax {|D1(x,y)|, |D2(x,y)|, |D3(x,y)|, |D4(x,y)|}

-1 -1 -1 -1 -1 0 -1 0 1 0 1 1
0 0 0 -1 0 1 -1 0 1 -1 0 1
1 1 1 0 1 1 -1 0 1 -1 -1 0
D1: N-S D2: NE-SO D3: E-O D4: SE-NO
Procesamiento Audiovisual 49 Procesamiento Audiovisual 50
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.


Otra forma ms sencilla (aproximada) es usar mscaras de La mscara laplaciana se define usando la funcin de
convolucin adecuadas, por ejemplo de Laplace. Laplace.
La funcin de Laplace es la segunda derivada de la Ejemplos de mscaras de Laplace.
gaussiana. Diferencia entre el
0 1 0 -1 -1 -1
pxel central y la
1 -4 1 -1 8 -1 media de sus
0 1 0 -1 -1 -1 vecinos...

Imagen de entrada

Laplaciana 2 (3x3)
2 2
f(x) = e -x /s df(x)/dx d2f(x)/dx2
Msc. Gaussiana Msc. Sobel Msc. Laplaciana
Operador de Operador de Operador de
suavizado derivacin gradiente
Procesamiento Audiovisual 51 Procesamiento Audiovisual 52
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.2.2. Operadores de bordes. 3.2.3. Operadores de perfilado.


Detector de bordes de Canny:
Perfilado: destacar y hacer ms visibles las variaciones y
No slo usa convoluciones (operadores de gradiente), sino
que busca el mximo gradiente a lo largo de un borde.
bordes de la imagen. Es lo contrario al suavizado.
El resultado es una imagen binaria (borde/no borde), Permite eliminar la apariencia borrosa de las imgenes,
ajustable mediante un umbral. debida a imperfecciones en las lentes.
... aunque tampoco se pueden hacer milagros...

Suavizado Original Perfilado


Procesamiento Audiovisual 53 Procesamiento Audiovisual 54
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.2.3. Operadores de perfilado. 3.2.3. Operadores de perfilado.
El perfilado se puede conseguir sumando a la imagen Ejemplos. Variando pesos y tamao de la laplaciana.
original, la laplaciana ponderada por cierto factor.

Imagen de entrada

Perfilado 33%, 3x3


Lo cual equivale a usar una mscara de convolucin
adecuada:
Laplaciana Identidad Perfilado
-1 -1 -1 0 0 0 -1 -1 -1
1 -1 8 -1 + 0 1 0 = -1 9 -1
-1 -1 -1 0 0 0 -1 -1 -1

Perfilado 60%, 1x1

Perfilado 15%, 7x7


Ms o menos perfilado dando distintos pesos, a.
0 -1 0 0 0 0 0 -a 0
a -1 4 -1 + 0 1 0 = -a 4a+1 -a
0 -1 0 0 0 0 0 -a 0
Ojo: la funcin cvLaplace usa mscaras
Procesamiento Audiovisual 55 Procesamiento Audiovisual 56
invertidas, luego a debe
Tema 3. Filtros ser < 0 locales.
y transformaciones Tema 3. Filtros y transformaciones locales.

3.2.3. Operadores de perfilado. 3.2. Suavizado, perfilado y bordes.


Cuidado con el perfilado. La operacin de perfilado
aumenta el nivel de ruido de la imagen. Conclusiones:
Las convoluciones son una herramienta fundamental en
Perfilado 60%, 3x3 Perfilado 33%, 3x3
por interferencias
Imagen con ruido

procesamiento de imgenes.
Una misma base comn: combinaciones lineales de una
TV

vecindad local de los pxeles (de cierto tamao).


Diversos usos: segn los valores de los coeficientes:
suavizado, eliminacin de ruido, bordes, perfilado, etc.
Se pueden definir operaciones similares sobre vdeo
Imagen con ruido

(usando la dimensin temporal, por ejemplo, suavizado a lo


por compresin

largo del tiempo), y sobre audio digital (por ejemplo,


JPEG

suavizado de la seal o introduccin de eco).


Es importante conocer el significado matemtico de los
procesos aplicados (derivadas, gradientes, integrales,...).

Procesamiento Audiovisual 57 Procesamiento Audiovisual 58


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.3. Filtros no lineales. 3.3. Filtros no lineales.


Recordatorio: las transformaciones locales son Ejemplo. Media geomtrica de 5x5. ... muy parecido a la
media aritmtica...
funciones del tipo:

R(x,y):= f(A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k))

En las convoluciones, f es una combinacin lineal


cualquiera. Pero...
Tambin puede ser interesante usar otras funciones
no lineales.
Aunque existen muchas (en teora infinitas) posibles
Ejemplo, media geomtrica. transformaciones no lineales, en la prctica no todas
4
R(x,y):= A(x-1,y-1)A(x,y-1)A(x-1,y)A(x,y) son tiles e interesantes.
Las que ms se usan son: mximo, mnimo y
Procesamiento Audiovisual 59
mediana. Procesamiento Audiovisual 60
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales. 3.3. Filtros no lineales.
Filtro de Mximo: El resultado es un cierto efecto de difuminacin y
R(x,y):= max {A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k)} aclaramiento de la imagen. Desaparecen los detalles ms
donde k es el radio, el tamao (o apertura) es 2k+1 oscuros.

Mx., tamao 12 Mximo, tamao 3


Mx., tamao 6 Imagen de entrada
Si el tamao es grande, pueden ocurrir dos efectos:
1. Efecto de cuadriculado.
Como el mximo se aplica en
una zona cuadrada, los pxeles
muy claros generan un
cuadrado uniforme alrededor.
2. Aparicin de colores falsos.
Al aplicarlo en los tres canales
(R,G,B) independientemente,
el mximo en los 3 puede no
corresponder a un color
presente en la imagen original.
Procesamiento Audiovisual 61 Procesamiento Audiovisual 62
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.3. Filtros no lineales. 3.3. Filtros no lineales.


Filtro de Mnimo: El efecto es parecido al mximo, pero tomando los valores
R(x,y):= min {A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k)} menores (los ms oscuros).
donde k es el radio, el tamao (o apertura) es 2k+1 Mximo
Mnimo, tamao 3
Mn., tamao 6 Imagen de entrada

Mnimo

Ideas:
Mn., tamao 12

Para evitar el efecto de cuadriculado se podra aplicar


el mximo/mnimo a una zona circular.
Para evitar la aparicin de colores falsos se podra
tomar el mximo de las sumas de R+G+B.
Procesamiento Audiovisual 63 Procesamiento Audiovisual 64
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.3. Filtros no lineales. 3.3. Filtros no lineales.


Otro filtro relacionado es el de la mediana. La mediana produce un efecto de suavizado, aunque ms
La mediana de m nmeros es un nmero p tal que m/2 abrupto en los bordes que la media y el suavizado gaussiano.
de esos nmeros son p, y otros m/2 son p.
R(x,y):= mediana {A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k)}
Mediana 6x6 Imagen de entrada

Mediana 3x3

Suavizado
Mediana gaussiano Mediana
Mediana 12x12

Pero el verdadero inters es la eliminacin de ruido puntual.


Procesamiento Audiovisual 65 Procesamiento Audiovisual 66
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales. 3.3. Filtros no lineales.
Ejemplo. El ruido denominado sal y pimienta es Se puede intentar eliminar (o reducir) el ruido con un filtro
gaussiano o con una mediana.
producido por picos de perturbacin, positivos o
negativos. Puede deberse a un canal ruidoso.

Mediana 3x3
Filtro gaussiano
Procesamiento Audiovisual 67 Procesamiento Audiovisual 68
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.3. Filtros no lineales. 3.3. Filtros no lineales.


Se puede intentar eliminar (o reducir) el ruido con un filtro Otros ejemplos de eliminacin de ruido.
gaussiano o con una mediana.

Mediana 7x7
Mediana 3x3

Con este tipo de


ruido funciona
mucho mejor
Filtro gaussiano

Mediana 7x3
El ruido se
difumina, pero no
llega a desaparecer

Procesamiento Audiovisual 69 Procesamiento Audiovisual 70


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.3. Filtros no lineales. 3.3. Filtros no lineales.


Ms filtros no lineales: recordar la ecualizacin local Algoritmo. Ecualizacin local de tamao axb:
del histograma. 1. Para cada punto (x,y) de la imagen A, calcular el
Considerar una operacin global como el estiramiento, histograma de una regin rectangular desde
la ecualizacin del histograma o la umbralizacin. (x-a, y-b) hasta (x+a, y+b) H(v)
Globalmente se calculan los parmetros y se aplican a 2. Calcular el percentil del valor A(x,y), es decir:
toda la imagen: estiramiento (mximo y mnimo del
p:= (H(0)+H(1)+...H(A(x,y)))/((2a+1)(2b+1))
histograma), ecualizacin (funcin de ecualizacin) y
umbralizacin (umbral a aplicar). 3. Hacer R(x,y):= 255p
En lugar de aplicarlos globalmente, calcular los
parmetros para cada punto, usando una vecindad 0,62*255
local. = 158
62%
Aplicar la transformacin a cada punto, usando sus
parmetros especficos.

Procesamiento Audiovisual 71 Procesamiento Audiovisual 72


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales. 3.4. Morfologa matemtica.
Ejemplo. Ecualizacin local del histograma. Los operadores de morfologa matemtica son un
conjunto de filtros locales sencillos, que se pueden
Imagen de entrada combinar para obtener resultados ms complejos.
Resolucin: 299x202 Originalmente, estn definidos sobre imgenes
binarias.
La idea es muy parecida a una convolucin, pero
utilizando las operaciones booleanas AND y OR.
Ejemplo. R(x,y):= A(x-1,y-1) AND A(x,y) AND A(x+1,y+1)
(x-1,y-1)
Elemento
1 0 0
estructurante (x,y) Punto de ancla
(= mscara de 0 1 0
Tamao: 25x25 Tamao: 50x50 Tamao: 120x120 convolucin) 0 0 1
La misma idea se podra aplicar a umbralizacin y (x+1,y+1)
estiramiento. Procesamiento Audiovisual 73 Procesamiento Audiovisual 74
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.4. Morfologa matemtica. 3.4. Morfologa matemtica.


El efecto de la dilatacin es extender o ampliar las
El elemento estructurante define los pxeles que se usan
regiones de la imagen con valor 1 (color blanco), mientras
en la operacin y los que no.
que la erosin las reduce.
Dado un elemento estructurante, E, de cierta forma y
La cantidad depende del tamao y forma del elemento
tamao, y una imagen binaria B, se definen dos
estructurante y del nmero de veces que se aplican.
operaciones:
Ejemplo.
Dilatacin BE. Combinar con OR los valores corres-

Dilatacin 3
Dilatacin 1
Imagen de entrada
pondientes a los pxeles 1 del elemento estructurante.
Erosin BE. Combinar con AND los valores corres-
pondientes a los pxeles 1 del elemento estructurante.

La idea se puede generalizar a imgenes no binarias:

Erosin 3
Erosin 1
Dilatacin. Combinar con Mximo.
Erosin. Combinar con Mnimo. Elemento 1 1 1

estructurante 1 1 1
1 1 1
Procesamiento Audiovisual 75 Procesamiento Audiovisual 76
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.4. Morfologa matemtica. 3.4. Morfologa matemtica.


Existen otras dos operaciones frecuentes basadas Ejemplo. Segmentacin de objetos.
en erosin y dilatacin: Para segmentar un objeto del fondo usamos una simple
Abrir. Aplicar erosin y despus dilatacin: (BE)E umbralizacin. Funciona ms o menos bien, pero aparecen
algunos puntos mal clasificados.
Cerrar. Aplicar dilatacin y despus erosin: (BE)E
Imagen de entrada Umbralizada (u=130)
Abrir:
Imagen de entrada desaparecen los
puntos sueltos o
estructuras finas

Cerrar: se rellenan
los huecos negros
Elemento 1 1 1 de cierto tamao Falsos
Usar morfologa para Falsos
estructurante 1 1 1
positivos negativos
1 1 1
arreglar los falsos.
Procesamiento Audiovisual 77 Procesamiento Audiovisual 78
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica. 3.4. Morfologa matemtica.
Imagen umbralizada Cerrar 2 (BEE)EE El resultado es la mscara para segmentar el objeto.

Eliminar falsos
negativos
Abrir 1 (BE)E Erosin 2 (BE)E Para qu se hacen las dos ltimas erosiones?

Eliminar pxeles
Eliminar falsos

de los bordes
positivos

Procesamiento Audiovisual 79 Procesamiento Audiovisual 80


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3.4. Morfologa matemtica. 3.4. Morfologa matemtica.


En imgenes no binarias, el resultado de dilatacin y Existen otras operaciones de morfologa, basadas en
erosin es parecido a las operaciones de mximo y mnimo. las elementales, que son tiles en anlisis de imgenes.
De hecho, es igual si el elemento estructurante es todo 1. Ejemplo 1. Borde morfolgico: (BE) - B
Imagen de entrada Borde morfolgico
Imagen entrada

Erosin, 1

Ejemplo 2. Adelgazamiento
Dilatacin, 3

(thinning). Aplicar una erosin,


Cierre, 2

pero no eliminar el punto (no


poner a 0) si se separa una
regin conexa en varias o si slo
Procesamiento Audiovisual 81
queda un punto. Procesamiento Audiovisual 82
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

3. Filtros y transformaciones locales.


Conclusiones: Anexo A.3.
Las operaciones de procesamiento local son esenciales
en mejora de imgenes, restauracin, anlisis, etc.
Filtros en IPL y OpenCV.
Dos categoras bsicas:
Filtros lineales o convoluciones: la salida es una Filtros lineales predefinidos.
combinacin lineal de los pxeles en una vecindad Filtros lineales arbitrarios.
Suavizado, bordes, perfilado, etc.
Filtros de mximo, mnimo y mediana.
Filtros no lineales: se usan funciones no lineales
Mximo, mnimo, operaciones de morfologa, etc. Operaciones de morfologa matemtica.
Es posible combinarlas con operaciones de Ejercicios.
procesamiento global.
La idea de localidad se puede extender a vdeo y a
sonido, considerando la dimensin temporal.

Procesamiento Audiovisual 83 Procesamiento Audiovisual 84


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
Operaciones de procesamiento local: Filtros lineales predefinidos:
La mayora estn disponibles en IPL y en OpenCV. En
cvSmooth, cvSobel, cvLaplace, cvCanny (estndar pero no
principio, manejaremos preferiblemente las de OpenCV.
lineal...), iplBlur, iplFixedFilter
De modo prctico, podemos clasificar las operaciones de
filtrado en los siguientes grupos: Filtros lineales arbitrarios:
Filtros lineales predefinidos de suavizado y deteccin cvFilter2D, IplConvKernel, iplCreateConvKernel,
de bordes iplGetConvKernel, iplDeleteConvKernel, iplConvolve2D,
Filtros lineales arbitrarios, definidos por el usuario en iplConvolveSep2D
tiempo de ejecucin Filtros de mximo, mnimo y mediana:
Filtros de mximo, mnimo y mediana iplMaxFilter, iplMinFilter, iplMedianFilter
Operaciones de morfologa matemtica Filtros de morfologa matemtica:
Ojo con las restricciones. Algunas operaciones requieren cvCreateStructuringElementEx, cvReleaseStructuringElement,
imgenes de 1 canal o profundidad float (recordar cvSplit, cvErode, cvDilate, cvMorphologyEx
cvMerge y cvConvertScale).

Procesamiento Audiovisual 85 Procesamiento Audiovisual 86


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.


Filtros de suavizado de una imagen: Filtros de Sobel de una imagen:
void cvSmooth (const CvArr* src, CvArr* dst, int type=CV_GAUSSIAN, void cvSobel (const CvArr* A, CvArr* R, int dx, int dy, int apertureSize=3)
int param1=3, int param2=0) A: imagen de origen, R: imagen de destino. Ambas deben ser de 1 solo
El parmetro type indica el tipo de suavizado a aplicar, y el tamao canal. Adems, R debe ser de 16 bits (si A es de 8), o float de 32.
viene dado en param1 y param2: dx, dy: orden de la derivada en X y en Y. Normalmt. usaremos (1,0) o (0,1).
apertureSize: tamao de la mscara de convolucin: -1 (filtro de Scharr), 1
CV_BLUR: media de param1xparam2. Ojo! deben ser impares. (resta simple), 3, 5 7.
CV_BLUR_NO_SCALE: media, pero sin dividir por el nmero de pxeles Ejemplo. Obtener la magnitud del gradiente de la imagen img con 3 canales.
(usar slo con profundidades mayores que 8 bits).
CV_GAUSSIAN: filtro gaussiano de param1xparam2, valores impares. int i;
IplImage *tmp, *can[9]; // can[0,1,2] = canales orig.; [3,4,5] = deriv. X, [6,7,8] = deriv. Y
CV_MEDIAN: filtro de mediana, de param1xparam1 (siempre cuadrado). tmp= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 3);
CV_BILATERAL: es un filtro de suavizado. No es una convolucin en el cvConvert(img, tmp);
sentido tradicional. Reduce el nmero de colores de una imagen, pero no for (i= 0; i<9; i++) can[i]= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);
altera los bordes abruptos. param1 indican el grado de similitud entre cvSplit(tmp, can[0], can[1], can[2], 0);
for (i= 0; i<3; i++) {
colores, y param2 es un parmetro espacial. Ver la documentacin. cvSobel(can[i], can[3+i], 1, 0, 3); cvPow(can[3+i], can[3+i], 2.0); // Derivada X
void iplBlur (IplImage* srcImage, IplImage* dstImage, cvSobel(can[i], can[6+i], 0, 1, 3); cvPow(can[6+i], can[6+i], 2.0); // Derivada Y
cvAdd(can[3+i], can[6+i], can[3+i], 0); cvPow(can[3+i], can[3+i], 0.5); // Mdulo
int nCols, int nRows, int anchorX, int anchorY) }
Aplica un filtro de media de tamao nColsxnRows, con ancla en la cvMerge(can[3], can[4], can[5], 0, tmp);
posicin especificada. cvConvert(tmp, res); // Se supone que res es 8U con 3 canales
for (i= 0; i<9; i++) cvReleaseImage(&can[i]);
Es ms recomendable cvSmooth, pues maneja mejor los extremos cvReleaseImage(&tmp);
de la imagen. Procesamiento Audiovisual 87 Procesamiento Audiovisual 88
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.


Filtros de Laplace de una imagen: Ejemplo. Aplicacin del operador de bordes de Canny, sobre img.
void cvLaplace (const CvArr* A, CvArr* R, int apertureSize=3) IplImage *tmp= cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
A: imagen de origen, R: imagen de destino. Ambas deben ser de 1 solo IplImage *tmp2= cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
canal. Adems, R debe ser de 16 bits (si A es de 8), o float de 32. cvCvtColor(img, tmp, CV_RGB2GRAY);
apertureSize: tamao de la mscara de convolucin (igual que cvSobel). cvCanny(tmp, tmp2, param*4, param*3); // Probar, p.ej., param=20
Calcula la laplaciana de una imagen (suma de las 2 derivadas en X e Y). cvZero(res);
Mucho cuidado!! La laplaciana puede tomar valores negativos: no convertir cvCopy(img, res, tmp2); // res es el resultado, del mismo tipo que img
el resultado a 8U (los negativos se saturan a 0). cvReleaseImage(&tmp);
Si se va a usar para un perfilado, el coeficiente que multiplica al resultado cvReleaseImage(&tmp2);
debe ser negativo, ya que usa mscaras inversas a las que hemos visto.
Filtro de bordes de Canny: Otras convoluciones predefinidas:
void cvCanny (const CvArr* img, CvArr* edges, double threshold1, void iplFixedFilter (IplImage* src, IplImage* dst, IplFilter filter)
double threshold2, int apertureSize=3) El parmetro filter es un nombre de filtro predefinido. Puede valer:
Ojo, es un filtro de bordes ms avanzado que los otros. Usa filtros de Sobel y IPL_PREWITT_3x3_V, IPL_PREWITT_3x3_H, IPL_SOBEL_3x3_V,
luego un algoritmo voraz para extraer los bordes ms relevantes. Tambin IPL_SOBEL_3x3_H, IPL_LAPLACIAN_3x3, IPL_LAPLACIAN_5x5,
requiere imgenes de 1 slo canal, pero edges puede ser de 8 bits. IPL_GAUSSIAN_3x3, IPL_GAUSSIAN_5x5, IPL_HIPASS_3x3,
threshold1, threshold2: umbrales del algoritmo. Se refieren al valor mnimo IPL_HIPASS_5x5, IPL_SHARPEN_3x3.
de la magnitud del gradiente para ser considerada como un borde relevante.
Admite imgenes con 1 3 canales, y distintas profundidades.
apertureSize: tamao de la mscara de convolucin (igual que cvSobel).
Procesamiento Audiovisual 89 Procesamiento Audiovisual 90
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
Filtros lineales arbitrarios: son los ms flexibles. Nos Aplicar una mscara de convolucin arbitraria en OpenCV:
definimos la mscara de convolucin que queramos y la void cvFilter2D (const CvArr* src, CvArr* dst,
aplicamos sobre las imgenes. const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1))
Para los filtros que estn predefinidos no hace falta utilizar estas Las imgenes src y dst deben ser del mismo tipo y tamao.
funciones (que, adems, sern menos eficientes). kernel es una matriz de 1 canal y 32F (usar el tipo CV_32FC1),
IPL y OpenCV manejan las mscaras de convolucin de forma indica los coeficientes de la mscara
distinta: anchor es el punto de ancla (por defecto, el centro de la mscara).
OpenCV: la mscara de convolucin es una matriz de tipo La operacin admite modo in-place.
CvMat, de 1 canal y profundidad 32F. Ejemplo. Aplicar a la imagen img el perfilado de la pg. 55.
IPL: se definen dos tipos especficos para las mscaras de int w= 3, h= 3; // Tamao de la mscara de convolucin
convolucin, IplConvKernel (mscara de coeficientes enteros
float coef[3][3]= {{-1,-1,-1}, {-1,9,-1}, {-1,-1,-1}}; // Coeficientes
o char) e IplConvKernelFP (coeficientes float). Hay
operaciones para crear, eliminar y aplicar la mscara. CvMat *mask= cvCreateMat(h, w, CV_32FC1);
for (int y= 0; y<h; y++)
En general, es ms sencillo utilizar las operaciones de OpenCV. for (int x= 0; x<w; x++)
Aunque las de IPL son ms flexibles y pueden ser ms cvSet2D(mask, y, x, cvScalar(coef[y][x]));
eficientes... cvFilter2D(img, img, mask);
cvReleaseMat(&mask);
Procesamiento Audiovisual 91 Procesamiento Audiovisual 92
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.


Aplicar una mscara de convolucin arbitraria en OpenCV: Filtros no lineales de mximo, mnimo y mediana:
Si la mscara de convolucin cae fuera de la imagen, los void iplMaxFilter (IplImage* srcImage, IplImage* dstImage,
pxeles que se salen se interpolan con los pxeles de los int nCols, int nRows, int anchorX, int anchorY)
bordes de la propia imagen. void iplMinFilter (IplImage* srcImage, IplImage* dstImage,
int nCols, int nRows, int anchorX, int anchorY)
Ejemplo. Aplicar a la imagen img el perfilado de la pg. 55
void iplMedianFilter (IplImage* srcImage, IplImage* dstImage,
(mtodo alternativo).
int nCols, int nRows, int anchorX, int anchorY)
El tamao del filtro es nColsxnRows y el ancla (anchorX,anchorY)
int w= 3, h= 3; // Tamao de la mscara (empezando en 0,0).
float coef[3*3]= {-1,-1,-1, -1,9,-1, -1,-1,-1}; // Coeficientes Admite imgenes multicanal, pero no permite uso in-place.
CvMat *mask= cvCreateMatHeader(h, w, CV_32FC1); Recordar el problema de la aparicin de colores falsos. Para evitarlo,
existe la funcin: iplColorMedianFilter. Encuentra la mediana en un
cvSetData(mask, coef, w*sizeof(float));
espacio de color 3D.
cvFilter2D(img, img, mask); Conceptualmente es ms adecuado, pero en la prctica es mucho
cvReleaseMat(&mask); Esta es una forma alternativa ms lento y produce prcticamente los mismos resultados.
(y ms rpida) para crear una Usar la funcin iplSetBorderMode antes aplicar los filtros, para
matriz de tipo CvMat. indicar lo que se hace con los pxeles de los bordes. Recomendado:
iplSetBorderMode(img, IPL_BORDER_REPLICATE, IPL_SIDE_ALL, 0);

Procesamiento Audiovisual 93 Procesamiento Audiovisual 94


Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.


En OpenCV, recordar que la mediana se puede obtener Crear un elemento estructurante:
con: cvSmooth(src, dst, CV_MEDIAN, tamao); IplConvKernel* cvCreateStructuringElementEx (int nCols, int nRows,
int anchorX, int anchorY, CvElementShape shape, int* values)
Filtros de morfologa matemtica: el manejo es parecido a El tamao del elemento es de nCols x nRows, y el ancla est
las convoluciones arbitrarias. 1: definir un elemento situada en (anchorX, anchorY).
estructurante. 2: aplicarlo sobre las imgenes con Existen dos alternativas: usar una forma predefinida o una propia.
Si se quiere una forma predefinida, el parmetro shape puede valer:
operaciones de erosin, dilatacin, apertura o cierre. CV_SHAPE_RECT, CV_SHAPE_CROSS, CV_SHAPE_ELLIPSE.
El elemento estructurante es de tipo IplConvKernel. Aunque Para una forma propia, shape debe valer CV_SHAPE_CUSTOM, y
tambin podemos ahorrarnos ese paso si usamos el values ser un array con las celdas (cero / no cero) del elemento
elemento por defecto, un rectngulo de 3x3. estructurante (de arriba abajo, de izquierda a derecha).
Crear y liberar un elemento estructurante:
cvCreateStructuringElementEx, cvReleaseStructuringElement Liberar un elemento estructurante:
void cvReleaseStructuringElement (IplConvKernel** ppElement)
Operaciones bsicas de morfologa matemtica: Ojo, ver que recibe un doble puntero.
cvErode, cvDilate Si *ppElement es NULL, no hace nada.
Operaciones extendidas:
cvMorphologyEx
Procesamiento Audiovisual 95 Procesamiento Audiovisual 96
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
Aplicar erosin morfolgica a una imagen: Aplicar operaciones morfolgicas compuestas:
void cvErode (const CvArr* A, CvArr* R, IplConvKernel* B=0, int iterations=1) void cvMorphologyEx (const CvArr* A, CvArr* R, CvArr* temp,
Aplica uno o varios pasos de erosin, segn el parmetro iterations. IplConvKernel* B, CvMorphOp op, int iterations)
Soporta modo in-place e imgenes multicanal. Permite aplicar una operacin morfolgica compuesta por otras
Si el elemento B es NULL (el valor por defecto) se usa un rectngulo elementales, erosiones, dilataciones y diferencias.
de 3x3. El parmetro op indica el tipo de operacin: CV_MOP_OPEN,
Aplicar dilatacin morfolgica a una imagen: CV_MOP_CLOSE, CV_MOP_GRADIENT, CV_MOP_TOPHAT,
void cvDilate (const CvArr* A, CvArr* R, IplConvKernel* B=0, int iterations=1) CV_MOP_BLACKHAT.
Aplica uno o varios pasos de dilatacin, segn el parmetro iterations. El parmetro temp es una imagen temporal para clculos internos
Soporta modo in-place e imgenes multicanal. (del mismo tamao y tipo que A y C). Se necesita en los tres ltimos
Si el elemento B es NULL (el valor por defecto) se usa un rectngulo tipos de operaciones.
de 3x3. Ejemplo. Los dos siguientes cdigos deberan dar la misma salida:
Ejemplo. Aplicar una dilatacin de 5x5, con elemento en forma de cruz.
a) cvMorphologyEx(img, res, tmp, NULL, CV_MOP_OPEN, 1);
IplConvKernel* el= cvCreateStructuringElementEx(5,5,2,2,CV_SHAPE_CROSS, 0);
cvErode(img, res, el, 1); b) cvErode(img, tmp, NULL, 1);
cvReleaseStructuringElement(&el); cvDilate(tmp, res, NULL, 1);
Ver tambin el programa morphology.c en los ejemplos de OpenCV.
Procesamiento Audiovisual 97 Procesamiento Audiovisual 98
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.


Ejemplo 1. Aplicar un ajuste (o estiramiento) local del Ejemplo 2. Efecto de transicin entre dos imgenes img1
histograma a la imagen img, con ancho dado: e img2 (que deben ser de igual tamao), a travs de un
suavizado intermedio:
IplImage *min= cvCreateImage(cvGetSize(img), img->depth,
IplImage *res= cvCloneImage(img1);
img->nChannels);
cvNamedWindow("img", 0);
IplImage *max= cvCreateImage(cvGetSize(img), img->depth,
int i;
img->nChannels);
for (i= 0; i<20; i++) {
int tam= 2*ancho+1; // ancho es el tamao de vecindad local elegido
cvSmooth(img1, res, CV_BLUR, 1+i*6, 1+i*6);
iplSetBorderMode(img, IPL_BORDER_REPLICATE, IPL_SIDE_ALL, 0);
cvShowImage("img", res);
iplMinFilter(img, min, tam, tam, ancho, ancho);
cvWaitKey(10);
iplMaxFilter(img, max, tam, tam, ancho, ancho);
}
cvSub(img, min, res);
for (i= 19; i>=0; i--) {
cvSub(max, min, max);
cvSmooth(img2, res, CV_BLUR, 1+i*6, 1+i*6);
cvDiv(res, max, res, 255.0);
cvShowImage("img", res);
cvReleaseImage(&min);
cvWaitKey(10);
cvReleaseImage(&max);
}
cvReleaseImage(&res);
Procesamiento Audiovisual 99 Procesamiento Audiovisual 100
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.

También podría gustarte