Documente Academic
Documente Profesional
Documente Cultură
Tema 3. Filtros y
AUDIOVISUAL
transformaciones locales.
Programa de teoría
1. Adquisición y representación de imágenes. 3.1. Filtros y convoluciones.
2. Procesamiento global de imágenes. 3.2. Suavizado, perfilado y bordes.
3. Filtros y transformaciones locales. 3.3. Filtros no lineales.
4. Transformaciones geométricas.
5. Espacios de color y el dominio frecuencial. 3.4. Morfología matemática.
6. Análisis de imágenes. A.3. Filtros en IPL y OpenCV.
7. Vídeo y sonido digital.
Procesamiento
(c) Ginés García Audiovisual
Mateos, http://dis.um.es/profesores/ginesgm 1 Procesamiento Audiovisual 2
Temade3.Informática
Dept. Filtros y transformaciones locales. de Murcia
y Sistemas, Universidad Tema 3. Filtros y transformaciones locales.
1
3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.
• La matriz de coeficientes es conocida como la máscara o • Sea M una máscara de convolución. Se puede definir
núcleo (kernel) de convolución. como array [-k...k, -p...p] de real
• Idea intuitiva: se pasa la máscara para todo píxel de la En X la máscara
imagen, aplicando los coeficientes según donde caigan. va de -k a k, y en
• Algoritmo. Cálculo de una convolución. Y de -p a p. El
Máscara de convolución Denotamos la convolución como: R:= M⊗A punto central es
(0,0)
·1/4 ·1/4 • Entrada. A: imagen de maxX x maxY
¿Cuánto valen
·1/4 ·1/4 estos píxeles? 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 píxel (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.
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 máscara de 3x3 se pueden
aplicar dos máscaras de 1x3 y 3x1 (máscaras
-1 1 ⊗ 1/9· 0 1 1 1 0 = 1/9· 0 1 0 0 -1
unidimensionales).
0 1 1 1 0 0 1 0 0 -1
– Puede ser útil para hacer los cálculos más 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.
2
3.1. Filtros y convoluciones. 3.1. Filtros y convoluciones.
• ¿Qué hacer con los 9 4 8 • Las convoluciones son una discretización de la idea de
píxeles de los bordes?
·1/4 ·1/4
⊗ 7 8 4
convolución usada en señales. (Repasar teoría de
·1/4 ·1/4 señales...)
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
píxeles donde no cabe la máscara. 0 7 6 • Idea: las máscaras de convolución son matrices de
0 5 4 números Æ se pueden considerar, a su vez, como
2 3 3
2. Suponer que los píxeles que se salen imágenes.
4 7 6
tienen valor 0 (u otra constante). • Propiedades:
2 5 4
9 6 6 – Asociativa: M2⊗(M1⊗A) = (M2⊗M1)⊗A
3. Modificar la operación en los píxeles
que no caben (variar el multiplicador). 8 7 6 – Conmutativa: M2⊗M1⊗A = M1⊗M2⊗A
5 5 4
5 4 4 – Ojo: al aplicar una convolución puede ocurrir saturación
4. Suponer que la imagen se extiende 7 7 6
de píxeles. 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.
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
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
• En algunos casos puede ser interesante aplicar
• Ejemplo 1. En una aplicación trabajamos con imágenes
suavizados direccionales: horizontales, verticales o
capturadas de TV. El canal tiene muchas interferencias,
en cualquier dirección.
que provocan una oscilación cada 7 píxeles horizontales.
1 0 0 1
¿Cómo reducir el efecto de las interferencias?
1 1 1 1 1 1 0 1 0
Media horizontal 5 píxeles 1 1 0 0
Media vertical 3p Media diagonal 3p
Media horiz. 31p
25 imágenes/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.
4
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
• Cuando se aplica la media con tamaños 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 región cuadrada. varianza
0 0 1 1 1 0 0
• Sería mejor aplicarla
0 1 1 1 1 1 0
a una región “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... 0 1 1 1 1 1 0
1/64· 1 6 15 20 15 6 1
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. +
1: blanco ⊗
0: negro
5
3.2.1. Operadores de suavizado. 3.2.1. Operadores de suavizado.
• Comparación: media y suavizado gaussiano, 2D. • Comparación: media y suavizado gaussiano, 1D.
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.
Sumar U y D
M
6
3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.
• Perfilado y detección de bordes están relacionados • Matemáticamente, la variación de una función f(x)
con el suavizado: cualquiera viene dada por la derivada de esa función:
– Suavizado: reducir las variaciones en la imagen. – f’(x) > 0 : función creciente en X
– Perfilado: aumentar las variaciones en la imagen. – f’(x) < 0 : función decreciente en X
– Bordes: encontrar las zonas de variación. – f’(x) = 0 : función 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 píxel
255
Suavizado
192
Valor de píxel
∆f = f(x)-f(x-1) ∆x = 1
192
Perfilado ∆f
128
128
∆x • Conclusión: la derivada se
64
Bordes
64
f’(x) calculará con máscaras del
tipo:
0
0
Derivada Y (+128)
Imagen de entrada
A R
Derivada en X (x2)
R’x
• Filtros de Scharr:
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
7
3.2.2. Operadores de bordes. 3.2.2. Operadores de bordes.
• Filtros de Sobel: se construyen usando la derivada • Ejemplos.
de la gaussiana.
Imagen de entrada
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
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
dx
8
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 análisis
1. Calcular la derivada en diferentes direcciones: D1, D2, D3, D4.
de imágenes usar los bordes (en lugar de las originales).
2. Para cada punto, la magnitud del gradiente es la derivada de
máximo valor absoluto:
G(x,y):= max {|D1(x,y)|, |D2(x,y)|, |D3(x,y)|, |D4(x,y)|}
3. La dirección del gradiente viene dada por el ángulo que ha
producido el máximo:
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.
Laplaciana 2 (3x3)
2 2
f(x) = e -x /s df(x)/dx d2f(x)/dx2
Másc. Gaussiana Másc. Sobel Másc. Laplaciana
Operador de Operador de Operador de
suavizado derivación gradiente
Procesamiento Audiovisual 51 Procesamiento Audiovisual 52
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
9
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 tamaño de la laplaciana.
original, la laplaciana ponderada por cierto factor.
Imagen de entrada
procesamiento de imágenes.
– Una misma base común: combinaciones lineales de una
TV
10
3.3. Filtros no lineales. 3.3. Filtros no lineales.
• Filtro de Máximo: • El resultado es un cierto efecto de difuminación 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 más
donde k es el radio, el tamaño (o apertura) es 2k+1 oscuros.
Mínimo
• Ideas:
Mín., tamaño 12
Mediana 3x3
Suavizado
Mediana gaussiano Mediana
Mediana 12x12
11
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 perturbación, 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.
Mediana 7x7
Mediana 3x3
Mediana 7x3
El ruido se
difumina, pero no
llega a desaparecer
12
3.3. Filtros no lineales. 3.4. Morfología matemática.
• Ejemplo. Ecualización local del histograma. • Los operadores de morfología matemática son un
conjunto de filtros locales sencillos, que se pueden
Imagen de entrada combinar para obtener resultados más complejos.
Resolución: 299x202 • Originalmente, están definidos sobre imágenes
binarias.
• La idea es muy parecida a una convolución, 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
(= máscara de 0 1 0
Tamaño: 25x25 Tamaño: 50x50 Tamaño: 120x120 convolución) 0 0 1
• La misma idea se podría aplicar a umbralización y (x+1,y+1)
estiramiento. Procesamiento Audiovisual 73 Procesamiento Audiovisual 74
Tema 3. Filtros y transformaciones locales. Tema 3. Filtros y transformaciones locales.
Dilatación 3
Dilatación 1
Imagen de entrada
pondientes a los píxeles 1 del elemento estructurante.
– Erosión B⊗E. Combinar con AND los valores corres-
pondientes a los píxeles 1 del elemento estructurante.
Erosión 3
Erosión 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.
Cerrar: se rellenan
los huecos negros
Elemento de cierto tamaño Falsos
1 1 1
• Usar morfología 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.
13
3.4. Morfología matemática. 3.4. Morfología matemática.
Imagen umbralizada Cerrar 2 (B⊕E⊕E)⊗E⊗E • El resultado es la máscara para segmentar el objeto.
Eliminar falsos
negativos
Abrir 1 (B⊗E)⊕E Erosión 2 (B⊗E)⊗E • ¿Para qué se hacen las dos últimas erosiones?
Eliminar píxeles
Eliminar falsos
de los bordes
positivos
Erosión, 1
• Ejemplo 2. Adelgazamiento
Dilatación, 3
14
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
Operaciones de procesamiento local: • Filtros lineales predefinidos:
• La mayoría están disponibles en IPL y en OpenCV. En
– cvSmooth, cvSobel, cvLaplace, cvCanny (estándar pero no
principio, manejaremos preferiblemente las de OpenCV. lineal...), iplBlur, iplFixedFilter
• De modo práctico, podemos clasificar las operaciones de
filtrado en los siguientes grupos: • Filtros lineales arbitrarios:
– Filtros lineales predefinidos de suavizado y detección – cvFilter2D, IplConvKernel, iplCreateConvKernel,
de bordes iplGetConvKernel, iplDeleteConvKernel, iplConvolve2D,
– Filtros lineales arbitrarios, definidos por el usuario en iplConvolveSep2D
tiempo de ejecución • Filtros de máximo, mínimo y mediana:
– Filtros de máximo, mínimo y mediana – iplMaxFilter, iplMinFilter, iplMedianFilter
– Operaciones de morfología matemática • Filtros de morfología matemática:
• Ojo con las restricciones. Algunas operaciones requieren – cvCreateStructuringElementEx, cvReleaseStructuringElement,
imágenes de 1 canal o profundidad float (recordar cvSplit, cvErode, cvDilate, cvMorphologyEx
cvMerge y cvConvertScale).
15
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
• Filtros lineales arbitrarios: son los más flexibles. Nos • Aplicar una máscara de convolución arbitraria en OpenCV:
definimos la máscara de convolución que queramos y la void cvFilter2D (const CvArr* src, CvArr* dst,
aplicamos sobre las imágenes. const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1))
• Para los filtros que están predefinidos no hace falta utilizar estas – Las imágenes src y dst deben ser del mismo tipo y tamaño.
funciones (que, además, serán menos eficientes). – kernel es una matriz de 1 canal y 32F (usar el tipo CV_32FC1),
• IPL y OpenCV manejan las máscaras de convolución de forma indica los coeficientes de la máscara
distinta: – anchor es el punto de ancla (por defecto, el centro de la máscara).
– OpenCV: la máscara de convolución es una matriz de tipo – La operación admite modo in-place.
CvMat, de 1 canal y profundidad 32F. – Ejemplo. Aplicar a la imagen img el perfilado de la pág. 55.
– IPL: se definen dos tipos específicos para las máscaras de int w= 3, h= 3; // Tamaño de la máscara de convolución
convolución, IplConvKernel (máscara 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 máscara. CvMat *mask= cvCreateMat(h, w, CV_32FC1);
for (int y= 0; y<h; y++)
• En general, es más sencillo utilizar las operaciones de OpenCV. for (int x= 0; x<w; x++)
• Aunque las de IPL son más flexibles y pueden ser más 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.
16
A.3. Filtros en IPL y OpenCV. A.3. Filtros en IPL y OpenCV.
• Aplicar erosión morfológica a una imagen: • Aplicar operaciones morfológicas 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 erosión, según el parámetro iterations. IplConvKernel* B, CvMorphOp op, int iterations)
– Soporta modo in-place e imágenes multicanal. – Permite aplicar una operación morfológica compuesta por otras
– Si el elemento B es NULL (el valor por defecto) se usa un rectángulo elementales, erosiones, dilataciones y diferencias.
de 3x3. – El parámetro op indica el tipo de operación: CV_MOP_OPEN,
• Aplicar dilatación morfológica 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 dilatación, según el parámetro iterations. – El parámetro temp es una imagen temporal para cálculos internos
– Soporta modo in-place e imágenes multicanal. (del mismo tamaño 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 rectángulo tipos de operaciones.
de 3x3. – Ejemplo. Los dos siguientes códigos deberían dar la misma salida:
– Ejemplo. Aplicar una dilatación 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 también 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.
17