simulacion opencv
TRANSCRIPT
-
Procesamiento Audiovisual 1
Tema 3. Filtros y transformaciones locales.
PROCESAMIENTO
AUDIOVISUAL
Programa de teora
1. Adquisicin y representacin de imgenes.
2. Procesamiento global de imgenes.
3. Filtros y transformaciones locales.
4. Transformaciones geomtricas.
5. Espacios de color y el dominio frecuencial.
6. Anlisis de imgenes.
7. Vdeo y sonido digital.
-
Procesamiento Audiovisual 2
Tema 3. Filtros y transformaciones locales.
Tema 3. Filtros y
transformaciones locales.
3.1. Filtros y convoluciones.
3.2. Suavizado, perfilado y bordes.
3.3. Filtros no lineales.
3.4. Morfologa matemtica.
A.3. Filtros en IPL y OpenCV.
-
Procesamiento Audiovisual 3
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Recordatorio: en las transformaciones globales, cada pxel de salida depende slo de un pxel de entrada.
No se tiene en cuenta la relacin de vecindad entre pxeles. El resultado no vara si los pxeles son permutados
aleatoriamente y despus reordenados.
Transformacin local: el valor de un pxel depende de la vecindad local de ese pxel.
90 67 75 78
92 87 78 82
45 83 80 130
39 69 115 154
62 68 78 81
102 89 76 85
83 109 80 111
69 92 115 120
Transf. global
Transf. localEntrada Salida
-
Procesamiento Audiovisual 4
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Transformacin global:
R(x,y):= f(A(x,y)) R(x,y):= f(A(x,y), B(x,y))
Filtros y transformaciones locales:R(x,y):= f(A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k))
Ejemplo. Filtro de la media.
R(x,y):= (A(x-1,y-1)+A(x,y-1)+A(x-1,y)+A(x,y))/4
92 78 82
45 80 130
39 115 154
- - -
- 74 93
- 70 120 / 4A R
-
Procesamiento Audiovisual 5
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Ejemplo. Entrada, A Salida, R
Resultado: la imagen se suaviza, difumina o emborrona.
Las transformaciones locales tienen sentido porque existe una relacin de vecindad entre los pxeles.
Recordatorio: un pxel representa una magnitud fsica en un punto de una escena dos pxeles prximos corresponden a puntos cercanos de la escena el mundo es continuo los pxeles prximos tendrn valores parecidos.
-
Procesamiento Audiovisual 6
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Un tipo interesante de transformaciones locales son las 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.
R(x,y):= 1/4A(x-1,y-1) + 1/4A(x,y-1) + 1/4A(x-1,y) + 1/4A(x,y)
Otra forma de ver la convolucin:
Matriz de coeficientes de la
combinacin lineal.1/4 1/4
1/4 1/4
(x-1,y-1) (x,y-1)
(x-1,y) (x,y)
-
Procesamiento Audiovisual 7
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
La matriz de coeficientes es conocida como la mscara o ncleo (kernel) de convolucin.
Idea intuitiva: se pasa la mscara para todo pxel de la imagen, aplicando los coeficientes segn donde caigan.
1/4 1/4
1/4 1/4
92 78 82
45 80 130
39 115 154
- - -
- 74 93
- 70 120
Mscara de convolucin
Imagen de entrada, A Imagen de salida, R
Cunto valen
estos pxeles?
+
-
Procesamiento Audiovisual 8
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Sea M una mscara de convolucin. Se puede definir como array [-k...k, -p...p] de real
Algoritmo. Clculo de una convolucin.Denotamos la convolucin como: R:= MA
Entrada. A: imagen de maxX x maxYM: array [-k...k, -p...p] de real
Salida. R: imagen de maxX x maxY Algoritmo:
para cada pxel (x, y) de la imagen A hacer
R(x, y):= M(i, j)A(x+i, y+j)i=-k..k j=-p..p
En X la mscara
va de -k a k, y en
Y de -p a p. El
punto central es
(0,0)
-
Procesamiento Audiovisual 9
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Ejemplos. R:= MA
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
El valor de un pxel
es la media de los 9
pxeles circundantes
1 1 1
1 1 1
1 1 1
1/9
Igual que antes, pero
factorizamos el mltiplo
comn (suma total = 1)
-1 1
Restar al pxel el
valor del pxel
de la izquierda
M M N
A R R
Punto central o ancla (anchor)
-
Procesamiento Audiovisual 10
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Ojo: la combinacin de convoluciones es equivalente a una sola convolucin:
M2(M1A) = MA
Sobre una imagen se pueden aplicar sucesivas operaciones de convolucin: ...M3(M2(M1A)))
Mscara de media aplicada 4 veces
Mscara de media + mscara de resta
A R R
-
Procesamiento Audiovisual 11
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Cmo calcular el resultado de la combinacin?
Respuesta: comprobar el efecto sobre una imagen slo con el pxel central a UNO (seal impulso).
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
1/9 =
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
1/9 = 1/9
0 0 0 0 0
0 1 0 0 -1
0 1 0 0 -1
0 1 0 0 -1
0 0 0 0 0
1 1 1
1 1 1
1 1 1
-1 1
-1 1
Mscara
equivalente
-
Procesamiento Audiovisual 12
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Resultado: el filtro de la media es separable.
En lugar de aplicar una mscara de 3x3 se pueden aplicar dos mscaras de 1x3 y 3x1 (mscaras
unidimensionales).
Puede ser til para hacer los clculos ms eficientes.
Anlogamente, algunas convoluciones se pueden obtener
combinando otras ms simples: ncleos separables.
Ejemplo.
1 1 1
1 1 1
1 1 1
A = 1/9
1
1
1
1/3 1 1 1 1/3 A
-
Procesamiento Audiovisual 13
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Qu hacer con lospxeles de los bordes?
Posibilidades:
1. Asignar un 0 en el resultado a los
pxeles donde no cabe la mscara.
2. Suponer que los pxeles que se salen
tienen valor 0 (u otra constante).
3. Modificar la operacin en los pxeles
que no caben (variar el multiplicador).
4. Suponer que la imagen se extiende
por los extremos (p.ej. como un
espejo).
1/4 1/4
1/4 1/4
9 4 8
7 8 4
3 2 2
0 0 0
0 7 6
0 5 42 3 3
4 7 6
2 5 4
9 6 6
8 7 6
5 5 45 4 4
7 7 6
8 5 4
-
Procesamiento Audiovisual 14
Tema 3. Filtros y transformaciones locales.
3.1. Filtros y convoluciones.
Las convoluciones son una discretizacin de la idea de convolucin usada en seales. (Repasar teora de seales...)
Diferencias: las convoluciones usadas aqu son discretas y bidimensionales.
Idea: las mscaras de convolucin son matrices de nmeros se pueden considerar, a su vez, como imgenes.
Propiedades:
Asociativa: M2(M1A) = (M2M1)A
Conmutativa: M2M1A = M1M2A
Ojo: al aplicar una convolucin puede ocurrir saturacinde pxeles. Si ocurre esto, el orden s que puede ser importante.
-
Procesamiento Audiovisual 15
Tema 3. Filtros y transformaciones locales.
3.2. Suavizado, perfilado y bordes.
Aplicando distintos operadores de convolucin es posible obtener diferentes efectos:
Suavizado: o difuminacin de la imagen, reducir contrastes abruptos en la imagen.
Perfilado: resaltar los contrastes, lo contrario al suavizado.
Bordes: detectar zonas de variacin en la imagen.
Deteccin de cierto tipo de caractersticas, como esquinas, segmentos, etc.
Suavizado y perfilado son ms habituales en restauracin y mejora de imgenes.
Bordes y deteccin de caractersticas suelen usarse ms en anlisis de imgenes.
-
Procesamiento Audiovisual 16
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
El operador de suavizado ms simple es la convolucin de media (media aritmtica).
Parmetros del operador:
Ancho y alto de la regin en la que se aplica: w x h.
Posicin del ancla.
Normalmente, w y h son impares y el ancla es el pxel central.
La mscara esun simple array
de unos de
tamao wxh.
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 1Mscara de
media de 3x3 Media de 5x5
-
Procesamiento Audiovisual 17
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Cuanto mayor es la mscara, mayor es el efecto de difuminacin de la imagen.
Med
ia d
e 5
x5
Me
dia
de
11
x11
Me
dia
de
21
x2
1
Image
n d
e e
ntr
ada
(34
0x2
30
)
+
-
Procesamiento Audiovisual 18
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Ventajas (respecto a otros suavizados):
Sencillo y rpido de aplicar.
Fcil definir un comportamiento para los pxeles de los 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 1 1 1
1 1 1 1 1
1 1 1 1 1
Media de 5x5
Total: 25 sumas o(n2)
1 1 1 1 1
1
1
1
1
1
Media de 5x1 y de 1x5
Total: 10 sumas o(2n)
-
Procesamiento Audiovisual 19
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
En algunos casos puede ser interesante aplicar suavizados direccionales: horizontales, verticales o en cualquier direccin.
0 0 1
0 1 0
1 0 0Media horizontal 5 pxeles
1 1 1 1 1
1
1
1
Media vertical 3p Media diagonal 3p
Media
hori
z. 31
p
Media
vert
. 3
1p
-
Procesamiento Audiovisual 20
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Ejemplo 1. En una aplicacin trabajamos con imgenes capturadas de TV. El canal tiene muchas interferencias,
que provocan una oscilacin cada 7 pxeles horizontales.
Cmo reducir el efecto de las interferencias?
Idea: Probar con una media horizontal de 7 pxeles...
-
Procesamiento Audiovisual 21
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Aplicacin de media horizontal de 7 pxeles. 1 1 1 1 1 1 1
-
Procesamiento Audiovisual 22
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
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 23
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Duplicar las filas pares (o las impares) y luego aplicar una media vertical de 2 pxeles (para interpolar).
1
1
Duplicadas filas paresImagen entrelazada Suavizado vertical (interp.)
-
Procesamiento Audiovisual 24
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Ejemplo 3. Efecto de niebla. Dada una imagen bien definida, queremos simular una niebla (objetivo empaado).
Idea: calcular una media ponderada entre la imagen original y un suavizado gaussiano de la imagen.
B. Suaviz. gauss. 40x40A. Imagen original Suma: 0,3A+0,7B
Se puede conseguir el mismo resultado con una sola convolucin. Cul sera la mscara equivalente?
-
Procesamiento Audiovisual 25
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Cuando se aplica la media con tamaos grandes se obtienen resultados artificiosos (a menudo indeseados).
Motivo: la media se calcula en una regin cuadrada.
Sera mejor aplicarlaa una regin redonda.
O, mejor, usar suavizado gaussiano...S
ua
viz
ad
o d
e
media
Gaussia
na
0 0 1 1 1 0 0
0 1 1 1 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
0 1 1 1 1 1 0
0 0 1 1 1 0 0
-
Procesamiento Audiovisual 26
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Suavizado gaussiano: media ponderada, donde los pesos toman la forma de una campana de Gauss.
Ejemplo. Suavizado gaussiano horizontal.
1 6 15 20 15 6 1
Campana de Gauss
f(x) = e-x2/s2
s2 es la
varianza
Campana discreta
1/64
+
-
Procesamiento Audiovisual 27
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
La varianza, s2, indica el nivel de suavizado.
Varianza grande: campana ms ancha, ms suavizado.
Varianza pequea: campana ms estrecha, menos suavizado.
Se mide en pxeles.
Clculo de la mscara gaussiana (1D): calcular la funcin, discretizar en el rango, discretizar en el valor y
calcular el multiplicador...
No existe una forma ms rpida?
Idea: el tringulo de Pascal.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
-
Procesamiento Audiovisual 28
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Magia! Las filas del tringulo de Pascal forman discretizaciones de la campana de Gauss.
1 6 15 20 15 6 1
1 5 10 10 5 1
1 4 6 4 1
1 3 3 1
1 2 1
1 11/2
1/4
1/8
1/16
1/32
1/64
Por qu ocurre as?
Recordar el teorema
central del lmite...
-
Procesamiento Audiovisual 29
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Normalmente, el suavizado gaussiano se aplica en dos dimensiones. Los pesos de la mscara dependen de la
distancia al pxel central.
1 2 1
2 4 2
1 2 1
Campana de Gauss 2D
f(x,y) = e-(x2+y2)/s2
1/16
Mscara
gaussiana de 3x3
1: blanco
0: negro
-
Procesamiento Audiovisual 30
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Propiedad interesante: el filtro gaussiano es separable.
Resultado: se puede obtener un suavizado 2D aplicando dos mscaras gaussianas bidimensionales, una horizontal
y otra vertical.
1 2 1
2 4 2
1 2 1
1 2 1
1
2
1
-
Procesamiento Audiovisual 31
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Comparacin: media y suavizado gaussiano, 2D.
Me
dia
de
11
x11
Media
de 2
1x21
Gau
ssia
na 2
1x21
Gaussia
na
41x41
+
-
Procesamiento Audiovisual 32
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Comparacin: media y suavizado gaussiano, 1D.
Media
hori
z. 31
p
Me
dia
ve
rt.
31
p
Gau
ssia
na 6
1x1
Ga
ussia
na
1x6
1
-
Procesamiento Audiovisual 33
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Resultados de la comparacin:
Para conseguir un mismo grado de suavizado la mscara gaussiana debe ser de mayor tamao.
Se puede tomar como medida la varianza de la mscara correspondiente.
El efecto del suavizado gaussiano es ms natural (ms similar a un desenfoque) que la media.
Suele ser ms habitual en procesamiento y anlisis de imgenes.
Ambos filtros son separables. Si la mscara es de nxn, pasamos de o(n2) a o(2n).
-
Procesamiento Audiovisual 34
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Ejemplo 1. Proteccin de testigos.
Ejemplo 2. Resaltar objetos de inters.
Se aplica un
suavizado pero slo
en cierta regin de
inters (ROI), en
este caso elptica.
Se suaviza el fondo
para destacar al
personaje, simulando
un desenfoque.
Cmo encontrar la
posicin de la cara
automticamente?
+
-
Procesamiento Audiovisual 35
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
Ejemplo 3. Sombra difusa.Aadir a una imagen A una etiqueta de texto B, con un
efecto de sombra difuminada.
D
UB
Umbralizar B, con nivel 10
S
Suavizado gaussiano de
15x15, de U
Desplazar S en 7 pxeles
en X e Y, y dividir por 2
Sumar U y D
M
-
Procesamiento Audiovisual 36
Tema 3. Filtros y transformaciones locales.
3.2.1. Operadores de suavizado.
R
A B
Multiplicar A por M, en
posicin (x0, y0)
Sumar T y B, en posicin
(x0, y0)
M
T
-
Procesamiento Audiovisual 37
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Perfilado y deteccin de bordes estn relacionados con el suavizado: Suavizado: reducir las variaciones en la imagen. Perfilado: aumentar las variaciones en la imagen. Bordes: encontrar las zonas de variacin.
Valo
r de
px
el
0 640320160 480
0255
128
64
192
X
Perfil de la img.
Suavizado
Perfilado
Bordes
Perfil de una fila de una imagen
+
-
Procesamiento Audiovisual 38
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Matemticamente, la variacin de una funcin f(x)cualquiera viene dada por la derivada de esa funcin: f(x) > 0 : funcin creciente en X f(x) < 0 : funcin decreciente en X f(x) = 0 : funcin uniforme en X
En nuestro caso, tenemos funciones discretas. La derivada discreta se obtiene calculando diferencias.
-1 10 421 3
0255
128
64
192
65
Va
lor
de
px
el
X
f(x) = f/x
f
x
x = 1f = f(x)-f(x-1)
f(x) = f(x) - f(x-1)f(x)
f(x) Conclusin: la derivada se
calcular con mscaras del
tipo:
-
Procesamiento Audiovisual 39
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Mscara de
derivada en X (M):
-1 1
Derivada
en Y:
-1
1
Derivadas en
diagonales:
-1 0
0 1
0 -1
1 0
Ejemplo. Derivada en X. R:= MA
Ima
ge
n d
e e
ntr
ad
a
Deri
vad
a e
n X
(x2)A R
[0..255]-[0..255]=
[-255..255]
-
Procesamiento Audiovisual 40
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Los bordes decrecientes se saturan a 0...
Podemos sumar 128 para apreciar mejor el resultado:
Gris (128): diferencia 0
Negro: decreciente
Blanco: creciente
Deri
vada
X (
+128
)
Deri
vada
Y (
+128
)Rx Ry
Se produce una especie de bajorrelieve (emboss), que puede usarse en efectos especiales.
-
Procesamiento Audiovisual 41
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Los operadores de bordes son muy sensibles al ruido.
Es posible (y adecuado) combinar los operadores de bordes con suavizados.
=
1 2 1
2 4 2
1 2 1
-1 1
1 1 -1 -1
2 2 -2 -2
1 1 -1 -1
Deri
vada
X (
+128
)Rx Rx
Suaviz
. +
Deri
v. X
-
Procesamiento Audiovisual 42
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Existen algunos operadores de bordes estndar.
Filtros de Prewitt:
-1 0 1
-1 0 1
-1 0 1
-1 -1 -1
0 0 0
1 1 1
Filtros de Scharr:
Filtro de
Scharr 3x3,
derivada en X
Filtro de
Scharr 3x3,
derivada en Y
Filtro de
Prewitt 3x3,
derivada en X
Filtro de
Prewitt 3x3,
derivada en Y
-3 0 3
-10 0 10
-3 0 3
-3 -10 -3
0 0 0
3 10 3
-
Procesamiento Audiovisual 43
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Filtros de Sobel: se construyen usando la derivada de la gaussiana.
-1 0 1
-2 0 2
-1 0 1
-1 -2 -1
0 0 0
1 2 1
Filtro de
Sobel 3x3,
derivada en X
Filtro de
Sobel 3x3,
derivada en Y
Adems, el filtro de Sobel permite calcular derivadas conjuntas en X e Y, derivadas segundas, terceras, etc.
Ejemplo. Derivada segunda en X.
-1 1 -1 1 -1 2 -1 =
-
Procesamiento Audiovisual 44
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Ejemplos.
Ima
ge
n d
e e
ntr
ad
a
Pre
witt Y
(3x3)
So
be
l Y
(3
x3
)
So
be
l 2
d
eri
v. Y
-
Procesamiento Audiovisual 45
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Realmente, en dos o ms dimensiones, en lugar de la derivada tiene ms sentido el concepto de gradiente.
Qu es el gradiente? Repasar clculo...
El gradiente indica la direccin de mxima variacin de una funcin (en 2D, la mxima pendiente).
-
Procesamiento Audiovisual 46
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
El gradiente en un punto es un vector (u, v):
ngulo: direccin de mxima variacin.
Magnitud: intensidad de la variacin.
(u, v)
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?
dx
dy
-
Procesamiento Audiovisual 47
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Clculo del gradiente:
Calcular derivada en X: Dx (por ejemplo, con un filtro de Sobel, Prewitt,...)
Calcular derivada en Y: Dy
Magnitud del gradiente: Dx2 + Dy2
ngulo del gradiente: atan2 (Dy, Dx)
Valor absoluto de
derivada en X
(Sobel de 3x3)
Valor absoluto de
derivada en Y
(Sobel de 3x3) Magnitud del gradiente
-
Procesamiento Audiovisual 48
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
El gradiente da lugar al concepto de borde.
Un borde en una imagen es una curva a lo largo de la cual el gradiente es mximo.
El borde es
perpendicular a
la direccin del
gradiente.
-
Procesamiento Audiovisual 49
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Los bordes de una escena son invariantes a cambios de luminosidad, color de la fuente de luz, etc. En anlisis de imgenes usar los bordes (en lugar de las originales).
-
Procesamiento Audiovisual 50
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Otras formas de calcular los bordes:
1. Calcular la derivada en diferentes direcciones: D1, D2, D3, D4.
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 0 1
-1 0 1
-1 0 1
-1 -1 -1
0 0 0
1 1 1
-1 -1 0
-1 0 1
0 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 51
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Otra forma ms sencilla (aproximada) es usar mscaras de convolucin adecuadas, por ejemplo de Laplace.
La funcin de Laplace es la segunda derivada de la gaussiana.
Msc. Gaussiana
Operador de
suavizado
f(x) = e -x2/s2 df(x)/dx
Msc. Sobel
Operador de
derivacin
Msc. Laplaciana
Operador de
gradiente
d2f(x)/dx2
-
Procesamiento Audiovisual 52
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
La mscara laplaciana se define usando la funcin de Laplace.
Ejemplos de mscaras de Laplace.
0 1 0
1 -4 1
0 1 0
-1 -1 -1
-1 8 -1
-1 -1 -1
Diferencia entre el pxel central y la
media de sus
vecinos...
Ima
ge
n d
e e
ntr
ad
a
Lap
lacia
na
2 (
3x3)
-
Procesamiento Audiovisual 53
Tema 3. Filtros y transformaciones locales.
3.2.2. Operadores de bordes.
Detector de bordes de Canny:
No slo usa convoluciones (operadores de gradiente), sino que busca el mximo gradiente a lo largo de un borde.
El resultado es una imagen binaria (borde/no borde), ajustable mediante un umbral.
-
Procesamiento Audiovisual 54
Tema 3. Filtros y transformaciones locales.
3.2.3. Operadores de perfilado.
Perfilado: destacar y hacer ms visibles las variaciones y bordes de la imagen. Es lo contrario al suavizado.
Permite eliminar la apariencia borrosa de las imgenes, debida a imperfecciones en las lentes.
... aunque tampoco se pueden hacer milagros...
Original Suavizado Perfilado
-
Procesamiento Audiovisual 55
Tema 3. Filtros y transformaciones locales.
3.2.3. Operadores de perfilado.
El perfilado se puede conseguir sumando a la imagen original, la laplaciana ponderada por cierto factor.
Lo cual equivale a usar una mscara de convolucin adecuada:
-1 -1 -1
-1 8 -1
-1 -1 -1
0 0 0
0 1 0
0 0 0
+ =
-1 -1 -1
-1 9 -1
-1 -1 -1
0 -1 0
-1 4 -1
0 -1 0
0 0 0
0 1 0
0 0 0
+ =
0 -a 0
-a 4a+1 -a
0 -a 0
a
Laplaciana Identidad Perfilado
Ms o menos perfilado dando distintos pesos, a.
1
Ojo: la funcin cvLaplace usa mscaras invertidas, luego a debe ser < 0
-
Procesamiento Audiovisual 56
Tema 3. Filtros y transformaciones locales.
3.2.3. Operadores de perfilado.
Ejemplos. Variando pesos y tamao de la laplaciana.
Ima
ge
n d
e e
ntr
ad
a
Perf
ilado
33%
, 3x3
Perf
ilado
60%
, 1x1
Perf
ilad
o 1
5%
, 7x7
-
Procesamiento Audiovisual 57
Tema 3. Filtros y transformaciones locales.
3.2.3. Operadores de perfilado.
Cuidado con el perfilado. La operacin de perfilado aumenta el nivel de ruido de la imagen.
Ima
ge
n c
on
ru
ido
po
r in
terf
ere
ncia
s
TV
Perf
ilado
33%
, 3x3
Image
n c
on r
uid
o
po
r co
mp
resi
n
JP
EG
Perf
ilado
60%
, 3x3
-
Procesamiento Audiovisual 58
Tema 3. Filtros y transformaciones locales.
3.2. Suavizado, perfilado y bordes.
Conclusiones:
Las convoluciones son una herramienta fundamental en procesamiento de imgenes.
Una misma base comn: combinaciones lineales de una 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(usando la dimensin temporal, por ejemplo, suavizado a lo
largo del tiempo), y sobre audio digital (por ejemplo,
suavizado de la seal o introduccin de eco).
Es importante conocer el significado matemtico de los procesos aplicados (derivadas, gradientes, integrales,...).
-
Procesamiento Audiovisual 59
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Recordatorio: las transformaciones locales son 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 linealcualquiera. Pero...
Tambin puede ser interesante usar otras funciones no lineales.
Ejemplo, media geomtrica.
R(x,y):= A(x-1,y-1)A(x,y-1)A(x-1,y)A(x,y)4
-
Procesamiento Audiovisual 60
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Ejemplo. Media geomtrica de 5x5.
Aunque existen muchas (en teora infinitas) posibles transformaciones no lineales, en la prctica no todas
son tiles e interesantes.
Las que ms se usan son: mximo, mnimo y mediana.
... muy parecido a la
media aritmtica...
-
Procesamiento Audiovisual 61
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Filtro de Mximo:R(x,y):= max {A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k)}
donde k es el radio, el tamao (o apertura) es 2k+1
Ima
ge
n d
e e
ntr
ad
a
Mxim
o, ta
mao
3
M
x.,
ta
ma
o
6
Mx.,
tam
a
o 1
2
-
Procesamiento Audiovisual 62
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
El resultado es un cierto efecto de difuminacin y aclaramiento de la imagen. Desaparecen los detalles ms
oscuros.
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 63
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Filtro de Mnimo:R(x,y):= min {A(x-k,y-k), ..., A(x,y), ..., A(x+k,y+k)}
donde k es el radio, el tamao (o apertura) es 2k+1
Ima
ge
n d
e e
ntr
ad
a
Mn
imo, ta
mao
3
Mn
., ta
ma
o
6
Mn
., ta
ma
o 1
2
-
Procesamiento Audiovisual 64
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
El efecto es parecido al mximo, pero tomando los valores menores (los ms oscuros).
Mximo
Mnimo
Ideas:
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 65
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Otro filtro relacionado es el de la mediana. La mediana de m nmeros es un nmero p tal que m/2
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)}
Image
n d
e e
ntr
ada
Media
na
3x3
Me
dia
na
6x6
Media
na
12x12
-
Procesamiento Audiovisual 66
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
La mediana produce un efecto de suavizado, aunque ms abrupto en los bordes que la media y el suavizado gaussiano.
Pero el verdadero inters es la eliminacin de ruido puntual.
MedianaMedianaSuavizado
gaussiano
-
Procesamiento Audiovisual 67
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Ejemplo. El ruido denominado sal y pimienta es producido por picos de perturbacin, positivos o
negativos. Puede deberse a un canal ruidoso.
-
Procesamiento Audiovisual 68
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Se puede intentar eliminar (o reducir) el ruido con un filtro gaussiano o con una mediana.
Me
dia
na
3x3
Filt
ro g
au
ssia
no
-
Procesamiento Audiovisual 69
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Se puede intentar eliminar (o reducir) el ruido con un filtro gaussiano o con una mediana.
Me
dia
na
3x3
Filt
ro g
au
ssia
no
El ruido se
difumina, pero no
llega a desaparecer
Con este tipo de
ruido funciona
mucho mejor
-
Procesamiento Audiovisual 70
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Otros ejemplos de eliminacin de ruido.
Media
na
7x7
Me
dia
na
7x3
-
Procesamiento Audiovisual 71
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Ms filtros no lineales: recordar la ecualizacin local del histograma.
Considerar una operacin global como el estiramiento, la ecualizacin del histograma o la umbralizacin.
Globalmente se calculan los parmetros y se aplican a toda la imagen: estiramiento (mximo y mnimo del
histograma), ecualizacin (funcin de ecualizacin) y
umbralizacin (umbral a aplicar).
En lugar de aplicarlos globalmente, calcular los parmetros para cada punto, usando una vecindad
local.
Aplicar la transformacin a cada punto, usando sus parmetros especficos.
-
Procesamiento Audiovisual 72
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Algoritmo. Ecualizacin local de tamao axb:
1. Para cada punto (x,y) de la imagen A, calcular el
histograma de una regin rectangular desde
(x-a, y-b) hasta (x+a, y+b) H(v)
2. Calcular el percentil del valor A(x,y), es decir:
p:= (H(0)+H(1)+...H(A(x,y)))/((2a+1)(2b+1))
3. Hacer R(x,y):= 255p
62%
0,62*255
= 158
-
Procesamiento Audiovisual 73
Tema 3. Filtros y transformaciones locales.
3.3. Filtros no lineales.
Ejemplo. Ecualizacin local del histograma.
Imagen de entrada
Resolucin: 299x202
Tamao: 25x25 Tamao: 50x50 Tamao: 120x120
La misma idea se podra aplicar a umbralizacin y estiramiento.
-
Procesamiento Audiovisual 74
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
Los operadores de morfologa matemtica son un conjunto de filtros locales sencillos, que se pueden
combinar para obtener resultados ms complejos.
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)
1 0 0
0 1 0
0 0 1
Elemento
estructurante
(= mscara de
convolucin)
(x-1,y-1)
(x+1,y+1)
(x,y) Punto de ancla
-
Procesamiento Audiovisual 75
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
El elemento estructurante define los pxeles que se usan en la operacin y los que no.
Dado un elemento estructurante, E, de cierta forma y tamao, y una imagen binaria B, se definen dos
operaciones:
Dilatacin BE. Combinar con OR los valores corres-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:
Dilatacin. Combinar con Mximo.
Erosin. Combinar con Mnimo.
-
Procesamiento Audiovisual 76
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
El efecto de la dilatacin es extender o ampliar las regiones de la imagen con valor 1 (color blanco), mientras
que la erosin las reduce.
La cantidad depende del tamao y forma del elemento estructurante y del nmero de veces que se aplican.
Ejemplo.Imagen de entrada
Elemento
estructurante
1 1 1
1 1 1
1 1 1
Dila
taci
n 1
Dila
taci
n 3
Ero
si
n 1
Ero
si
n 3
-
Procesamiento Audiovisual 77
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
Existen otras dos operaciones frecuentes basadas en erosin y dilatacin:
Abrir. Aplicar erosin y despus dilatacin: (BE)E
Cerrar. Aplicar dilatacin y despus erosin: (BE)E
Imagen de entrada
Elemento
estructurante
1 1 1
1 1 1
1 1 1
Abrir:
desaparecen los
puntos sueltos o
estructuras finas
Cerrar: se rellenan
los huecos negros
de cierto tamao
-
Procesamiento Audiovisual 78
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
Ejemplo. Segmentacin de objetos.Para segmentar un objeto del fondo usamos una simple
umbralizacin. Funciona ms o menos bien, pero aparecen
algunos puntos mal clasificados.
Falsos
negativosFalsos
positivos Usar morfologa para
arreglar los falsos.
Imagen de entrada Umbralizada (u=130)
-
Procesamiento Audiovisual 79
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
Cerrar 2 (BEE)EE
Abrir 1 (BE)E
Imagen umbralizada
Elim
inar
fals
os
negativos
Elim
inar
fals
os
positiv
os
Erosin 2 (BE)E
Elim
inar
px
ele
s
de los b
ord
es
-
Procesamiento Audiovisual 80
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
El resultado es la mscara para segmentar el objeto.
Para qu se hacen las dos ltimas erosiones?
-
Procesamiento Audiovisual 81
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
En imgenes no binarias, el resultado de dilatacin y erosin es parecido a las operaciones de mximo y mnimo.
De hecho, es igual si el elemento estructurante es todo 1.
Image
n e
ntr
ada
Ero
si
n, 1
Dila
taci
n, 3
Cie
rre
, 2
-
Procesamiento Audiovisual 82
Tema 3. Filtros y transformaciones locales.
3.4. Morfologa matemtica.
Existen otras operaciones de morfologa, basadas en las elementales, que son tiles en anlisis de imgenes.
Ejemplo 1. Borde morfolgico: (BE) - BImagen de entrada Borde morfolgico
Ejemplo 2. Adelgazamiento (thinning). Aplicar una erosin,
pero no eliminar el punto (no
poner a 0) si se separa una
regin conexa en varias o si slo
queda un punto.
-
Procesamiento Audiovisual 83
Tema 3. Filtros y transformaciones locales.
3. Filtros y transformaciones locales.
Conclusiones:
Las operaciones de procesamiento local son esencialesen mejora de imgenes, restauracin, anlisis, etc.
Dos categoras bsicas:
Filtros lineales o convoluciones: la salida es una combinacin lineal de los pxeles en una vecindad Suavizado, bordes, perfilado, etc.
Filtros no lineales: se usan funciones no lineales Mximo, mnimo, operaciones de morfologa, etc.
Es posible combinarlas con operaciones de procesamiento global.
La idea de localidad se puede extender a vdeo y a sonido, considerando la dimensin temporal.
-
Procesamiento Audiovisual 84
Tema 3. Filtros y transformaciones locales.
Anexo A.3.
Filtros en IPL y OpenCV.
Filtros lineales predefinidos.
Filtros lineales arbitrarios.
Filtros de mximo, mnimo y mediana.
Operaciones de morfologa matemtica.
Ejercicios.
-
Procesamiento Audiovisual 85
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Operaciones de procesamiento local: La mayora estn disponibles en IPL y en OpenCV. En
principio, manejaremos preferiblemente las de OpenCV.
De modo prctico, podemos clasificar las operaciones de filtrado en los siguientes grupos:
Filtros lineales predefinidos de suavizado y deteccin de bordes
Filtros lineales arbitrarios, definidos por el usuario en tiempo de ejecucin
Filtros de mximo, mnimo y mediana Operaciones de morfologa matemtica
Ojo con las restricciones. Algunas operaciones requieren imgenes de 1 canal o profundidad float (recordar cvSplit, cvMerge y cvConvertScale).
-
Procesamiento Audiovisual 86
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros lineales predefinidos:
cvSmooth, cvSobel, cvLaplace, cvCanny (estndar pero no lineal...), iplBlur, iplFixedFilter
Filtros lineales arbitrarios:
cvFilter2D, IplConvKernel, iplCreateConvKernel, iplGetConvKernel, iplDeleteConvKernel, iplConvolve2D,
iplConvolveSep2D
Filtros de mximo, mnimo y mediana:
iplMaxFilter, iplMinFilter, iplMedianFilter
Filtros de morfologa matemtica:
cvCreateStructuringElementEx, cvReleaseStructuringElement, cvErode, cvDilate, cvMorphologyEx
-
Procesamiento Audiovisual 87
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros de suavizado de una imagen:
void cvSmooth (const CvArr* src, CvArr* dst, int type=CV_GAUSSIAN,int param1=3, int param2=0)
El parmetro type indica el tipo de suavizado a aplicar, y el tamao viene dado en param1 y param2:
CV_BLUR: media de param1xparam2. Ojo! deben ser impares.
CV_BLUR_NO_SCALE: media, pero sin dividir por el nmero de pxeles (usar slo con profundidades mayores que 8 bits).
CV_GAUSSIAN: filtro gaussiano de param1xparam2, valores impares.
CV_MEDIAN: filtro de mediana, de param1xparam1 (siempre cuadrado).
CV_BILATERAL: es un filtro de suavizado. No es una convolucin en el sentido tradicional. Reduce el nmero de colores de una imagen, pero no altera los bordes abruptos. param1 indican el grado de similitud entre colores, y param2 es un parmetro espacial. Ver la documentacin.
void iplBlur (IplImage* srcImage, IplImage* dstImage,
int nCols, int nRows, int anchorX, int anchorY)
Aplica un filtro de media de tamao nColsxnRows, con ancla en la posicin especificada.
Es ms recomendable cvSmooth, pues maneja mejor los extremos de la imagen.
-
Procesamiento Audiovisual 88
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros de Sobel de una imagen:void cvSobel (const CvArr* A, CvArr* R, int dx, int dy, int apertureSize=3) A: imagen de origen, R: imagen de destino. Ambas deben ser de 1 solo
canal. Adems, R debe ser de 16 bits (si A es de 8), o float de 32.
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
(resta simple), 3, 5 7.
Ejemplo. Obtener la magnitud del gradiente de la imagen img con 3 canales.
int i;IplImage *tmp, *can[9]; // can[0,1,2] = canales orig.; [3,4,5] = deriv. X, [6,7,8] = deriv. Ytmp= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 3);cvConvert(img, tmp);for (i= 0; i
-
Procesamiento Audiovisual 89
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros de Laplace de una imagen:
void cvLaplace (const CvArr* A, CvArr* R, int apertureSize=3)
A: imagen de origen, R: imagen de destino. Ambas deben ser de 1 solo canal. Adems, R debe ser de 16 bits (si A es de 8), o float de 32.
apertureSize: tamao de la mscara de convolucin (igual que cvSobel).
Calcula la laplaciana de una imagen (suma de las 2 derivadas en X e Y).
Mucho cuidado!! La laplaciana puede tomar valores negativos: no convertir el resultado a 8U (los negativos se saturan a 0).
Si se va a usar para un perfilado, el coeficiente que multiplica al resultado debe ser negativo, ya que usa mscaras inversas a las que hemos visto.
Filtro de bordes de Canny:void cvCanny (const CvArr* img, CvArr* edges, double threshold1,
double threshold2, int apertureSize=3)
Ojo, es un filtro de bordes ms avanzado que los otros. Usa filtros de Sobel y luego un algoritmo voraz para extraer los bordes ms relevantes. Tambin
requiere imgenes de 1 slo canal, pero edges puede ser de 8 bits.
threshold1, threshold2: umbrales del algoritmo. Se refieren al valor mnimo de la magnitud del gradiente para ser considerada como un borde relevante.
apertureSize: tamao de la mscara de convolucin (igual que cvSobel).
-
Procesamiento Audiovisual 90
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Ejemplo. Aplicacin del operador de bordes de Canny, sobre img.IplImage *tmp= cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
IplImage *tmp2= cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
cvCvtColor(img, tmp, CV_RGB2GRAY);
cvCanny(tmp, tmp2, param*4, param*3); // Probar, p.ej., param=20
cvZero(res);
cvCopy(img, res, tmp2); // res es el resultado, del mismo tipo que img
cvReleaseImage(&tmp);
cvReleaseImage(&tmp2);
Otras convoluciones predefinidas:
void iplFixedFilter (IplImage* src, IplImage* dst, IplFilter filter)
El parmetro filter es un nombre de filtro predefinido. Puede valer:
IPL_PREWITT_3x3_V, IPL_PREWITT_3x3_H, IPL_SOBEL_3x3_V, IPL_SOBEL_3x3_H, IPL_LAPLACIAN_3x3, IPL_LAPLACIAN_5x5,
IPL_GAUSSIAN_3x3, IPL_GAUSSIAN_5x5, IPL_HIPASS_3x3,
IPL_HIPASS_5x5, IPL_SHARPEN_3x3.
Admite imgenes con 1 3 canales, y distintas profundidades.
-
Procesamiento Audiovisual 91
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros lineales arbitrarios: son los ms flexibles. Nos definimos la mscara de convolucin que queramos y la aplicamos sobre las imgenes.
Para los filtros que estn predefinidos no hace falta utilizar estas funciones (que, adems, sern menos eficientes).
IPL y OpenCV manejan las mscaras de convolucin de forma distinta:
OpenCV: la mscara de convolucin es una matriz de tipo CvMat, de 1 canal y profundidad 32F.
IPL: se definen dos tipos especficos para las mscaras de convolucin, IplConvKernel (mscara de coeficientes enteros o char) e IplConvKernelFP (coeficientes float). Hay operaciones para crear, eliminar y aplicar la mscara.
En general, es ms sencillo utilizar las operaciones de OpenCV.
Aunque las de IPL son ms flexibles y pueden ser ms eficientes...
-
Procesamiento Audiovisual 92
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Aplicar una mscara de convolucin arbitraria en OpenCV:
void cvFilter2D (const CvArr* src, CvArr* dst,
const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1))
Las imgenes src y dst deben ser del mismo tipo y tamao.
kernel es una matriz de 1 canal y 32F (usar el tipo CV_32FC1), indica los coeficientes de la mscara
anchor es el punto de ancla (por defecto, el centro de la mscara).
La operacin admite modo in-place.
Ejemplo. Aplicar a la imagen img el perfilado de la pg. 55.
int w= 3, h= 3; // Tamao de la mscara de convolucin
float coef[3][3]= {{-1,-1,-1}, {-1,9,-1}, {-1,-1,-1}}; // Coeficientes
CvMat *mask= cvCreateMat(h, w, CV_32FC1);
for (int y= 0; y
-
Procesamiento Audiovisual 93
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Aplicar una mscara de convolucin arbitraria en OpenCV:
Si la mscara de convolucin cae fuera de la imagen, los pxeles que se salen se interpolan con los pxeles de los bordes de la propia imagen.
Ejemplo. Aplicar a la imagen img el perfilado de la pg. 55 (mtodo alternativo).
int w= 3, h= 3; // Tamao de la mscara
float coef[3*3]= {-1,-1,-1, -1,9,-1, -1,-1,-1}; // Coeficientes
CvMat *mask= cvCreateMatHeader(h, w, CV_32FC1);
cvSetData(mask, coef, w*sizeof(float));
cvFilter2D(img, img, mask);
cvReleaseMat(&mask); Esta es una forma alternativa
(y ms rpida) para crear una
matriz de tipo CvMat.
-
Procesamiento Audiovisual 94
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Filtros no lineales de mximo, mnimo y mediana:void iplMaxFilter (IplImage* srcImage, IplImage* dstImage,
int nCols, int nRows, int anchorX, int anchorY)
void iplMinFilter (IplImage* srcImage, IplImage* dstImage,
int nCols, int nRows, int anchorX, int anchorY)
void iplMedianFilter (IplImage* srcImage, IplImage* dstImage,
int nCols, int nRows, int anchorX, int anchorY)
El tamao del filtro es nColsxnRows y el ancla (anchorX,anchorY) (empezando en 0,0).
Admite imgenes multicanal, pero no permite uso in-place. Recordar el problema de la aparicin de colores falsos. Para evitarlo,
existe la funcin: iplColorMedianFilter. Encuentra la mediana en un
espacio de color 3D.
Conceptualmente es ms adecuado, pero en la prctica es mucho ms lento y produce prcticamente los mismos resultados.
Usar la funcin iplSetBorderMode antes aplicar los filtros, para indicar lo que se hace con los pxeles de los bordes. Recomendado:
iplSetBorderMode(img, IPL_BORDER_REPLICATE, IPL_SIDE_ALL, 0);
-
Procesamiento Audiovisual 95
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
En OpenCV, recordar que la mediana se puede obtener con: cvSmooth(src, dst, CV_MEDIAN, tamao);
Filtros de morfologa matemtica: el manejo es parecido a las convoluciones arbitrarias. 1: definir un elemento
estructurante. 2: aplicarlo sobre las imgenes con
operaciones de erosin, dilatacin, apertura o cierre.
El elemento estructurante es de tipo IplConvKernel. Aunque tambin podemos ahorrarnos ese paso si usamos el
elemento por defecto, un rectngulo de 3x3.
Crear y liberar un elemento estructurante: cvCreateStructuringElementEx, cvReleaseStructuringElement
Operaciones bsicas de morfologa matemtica: cvErode, cvDilate
Operaciones extendidas: cvMorphologyEx
-
Procesamiento Audiovisual 96
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Crear un elemento estructurante:
IplConvKernel* cvCreateStructuringElementEx (int nCols, int nRows,
int anchorX, int anchorY, CvElementShape shape, int* values)
El tamao del elemento es de nCols x nRows, y el ancla est situada en (anchorX, anchorY).
Existen dos alternativas: usar una forma predefinida o una propia. Si se quiere una forma predefinida, el parmetro shape puede valer:
CV_SHAPE_RECT, CV_SHAPE_CROSS, CV_SHAPE_ELLIPSE.
Para una forma propia, shape debe valer CV_SHAPE_CUSTOM, y values ser un array con las celdas (cero / no cero) del elemento
estructurante (de arriba abajo, de izquierda a derecha).
Liberar un elemento estructurante:void cvReleaseStructuringElement (IplConvKernel** ppElement)
Ojo, ver que recibe un doble puntero. Si *ppElement es NULL, no hace nada.
-
Procesamiento Audiovisual 97
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Aplicar erosin morfolgica a una imagen:void cvErode (const CvArr* A, CvArr* R, IplConvKernel* B=0, int iterations=1)
Aplica uno o varios pasos de erosin, segn el parmetro iterations. Soporta modo in-place e imgenes multicanal. Si el elemento B es NULL (el valor por defecto) se usa un rectngulo
de 3x3.
Aplicar dilatacin morfolgica a una imagen:void cvDilate (const CvArr* A, CvArr* R, IplConvKernel* B=0, int iterations=1)
Aplica uno o varios pasos de dilatacin, segn el parmetro iterations. Soporta modo in-place e imgenes multicanal. Si el elemento B es NULL (el valor por defecto) se usa un rectngulo
de 3x3.
Ejemplo. Aplicar una dilatacin de 5x5, con elemento en forma de cruz.
IplConvKernel* el= cvCreateStructuringElementEx(5,5,2,2,CV_SHAPE_CROSS, 0);
cvErode(img, res, el, 1);
cvReleaseStructuringElement(&el);
Ver tambin el programa morphology.c en los ejemplos de OpenCV.
-
Procesamiento Audiovisual 98
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Aplicar operaciones morfolgicas compuestas:void cvMorphologyEx (const CvArr* A, CvArr* R, CvArr* temp,
IplConvKernel* B, CvMorphOp op, int iterations)
Permite aplicar una operacin morfolgica compuesta por otras elementales, erosiones, dilataciones y diferencias.
El parmetro op indica el tipo de operacin: CV_MOP_OPEN, CV_MOP_CLOSE, CV_MOP_GRADIENT, CV_MOP_TOPHAT,
CV_MOP_BLACKHAT.
El parmetro temp es una imagen temporal para clculos internos (del mismo tamao y tipo que A y C). Se necesita en los tres ltimos
tipos de operaciones.
Ejemplo. Los dos siguientes cdigos deberan dar la misma salida:
a) cvMorphologyEx(img, res, tmp, NULL, CV_MOP_OPEN, 1);
b) cvErode(img, tmp, NULL, 1);
cvDilate(tmp, res, NULL, 1);
-
Procesamiento Audiovisual 99
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Ejemplo 1. Aplicar un ajuste (o estiramiento) local del histograma a la imagen img, con ancho dado:
IplImage *min= cvCreateImage(cvGetSize(img), img->depth,
img->nChannels);
IplImage *max= cvCreateImage(cvGetSize(img), img->depth,
img->nChannels);
int tam= 2*ancho+1; // ancho es el tamao de vecindad local elegido
iplSetBorderMode(img, IPL_BORDER_REPLICATE, IPL_SIDE_ALL, 0);
iplMinFilter(img, min, tam, tam, ancho, ancho);
iplMaxFilter(img, max, tam, tam, ancho, ancho);
cvSub(img, min, res);
cvSub(max, min, max);
cvDiv(res, max, res, 255.0);
cvReleaseImage(&min);
cvReleaseImage(&max);
-
Procesamiento Audiovisual 100
Tema 3. Filtros y transformaciones locales.
A.3. Filtros en IPL y OpenCV.
Ejemplo 2. Efecto de transicin entre dos imgenes img1e img2 (que deben ser de igual tamao), a travs de un
suavizado intermedio:
IplImage *res= cvCloneImage(img1);
cvNamedWindow("img", 0);
int i;
for (i= 0; i=0; i--) {
cvSmooth(img2, res, CV_BLUR, 1+i*6, 1+i*6);
cvShowImage("img", res);
cvWaitKey(10);
}
cvReleaseImage(&res);