Académique Documents
Professionnel Documents
Culture Documents
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 (c) Gins Garca Mateos, http://dis.um.es/profesores/ginesgm Tema 3. Filtros y transformaciones locales. Dept. de Informtica y Sistemas, Universidad de Murcia 1
Transf. global
62 102 83
68 89 109 92
78 76 80 115
81 85 111 120
Entrada
Transf. local
69
Salida
No se tiene en cuenta la relacin de vecindad entre pxeles. El resultado no vara si los pxeles son permutados aleatoriamente y despus reordenados.
74 70
93 120
/4
R
4
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 Tema 3. Filtros y transformaciones locales. 5
Otra forma de ver la convolucin: (x-1,y-1) Matriz de coeficientes de la 1/4 combinacin lineal. 1/4
(x-1,y)
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
(x,y-1)
1/4 1/4
(x,y)
6
Sea M una mscara de convolucin. Se puede definir como array [-k...k, -p...p] de real
Imagen de entrada, A
92 45 39 78 80 115 82 130 154
Entrada. A: imagen de maxX x maxY M: 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):=
74 70
93 120
7
i=-k..k j=-p..p
M
1/9
1 1 1
1 1 1
1 1 1
N
-1 1
Cmo calcular el resultado de la combinacin? Respuesta: comprobar el efecto sobre una imagen slo con el pxel central a UNO (seal impulso).
1 -1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
Ejemplo.
1 1 1 1 1 1 1 1
1/9 1
1
0 0 1 0 0 =
Mscara equivalente
0 0 0 0 0 0 -1 -1 -1 0
11
1/3
1 1
1/3
A = 1/9
1 1
-1
1/9 0 1 1 1 0 = 1/9 0
0 0
1/4 1/4
1/4 1/4
4 8 2 0 6 4 2 4 2
7 3
0 0 0
0 7 5
3 7 5
3 6 4
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 saturacin de pxeles. Si ocurre esto, el orden s que puede ser importante.
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 14
4 6 4
Normalmente, w y h son impares y el ancla es el pxel central. 1 1 1 1 1 La mscara es 1 1 1 1 1 1 1 1 un simple array 1 1 1 1 1 1 1 1 de unos de 1 1 1 1 1 1 1 1 tamao wxh.
Mscara de media de 3x3
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
Media de 5x5
16
Media de 21x21
1 1 1
17
19
Imagen entrelazada
23
Se puede conseguir el mismo resultado con una sola convolucin. Cul sera la mscara equivalente?
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
24
f(x) = e
-x2/s2 s2 es la varianza
Motivo: la media se calcula en una regin cuadrada. 0 0 1 1 1 0 Sera mejor aplicarla 0 1 1 1 1 1 a una regin redonda. 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
25
0 0 1 1 1 0 0
1 0 0
1/64 1
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
15 20 15
6
26
Clculo de la mscara gaussiana (1D): calcular la funcin, discretizar en el rango, discretizar en el valor y 1 calcular el multiplicador... No existe una forma ms rpida? Idea: el tringulo de Pascal.
1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
27
5 10 10 5 6 15 20 15 6
Campana de Gauss 2D
f(x,y) = e
-(x2+y2)/s2
2 1
1: blanco 0: negro
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 29 Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
30
Gaussiana 21x21
Gaussiana 41x41
Gaussiana 61x1
31
34
Gaussiana 1x61
Sumar U y D
M
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 35 Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 36
255
0 0
64
128
160
320
37
480
640
38
Derivada en Y:
-1 1
Derivadas en diagonales:
-1 0 0 1 0 1 -1 0
Valor de pxel
192
128
[0..255]-[0..255]= [-255..255]
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 40
Rx
Ry
-1
2 1
Rx
Rx
Se produce una especie de bajorrelieve (emboss), que puede usarse en efectos especiales.
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 41
Derivada en X (x2)
Imagen de entrada
En nuestro caso, tenemos funciones discretas. La derivada discreta se obtiene calculando diferencias.
255
64
Filtros de Scharr:
Filtro de Scharr 3x3, derivada en X -3 -10 -3 0 0 0 3 10 3 Filtro de Scharr 3x3, derivada en Y -3 0 3 -10 0 10 -3 0 3
Adems, el filtro de Sobel permite calcular derivadas conjuntas en X e Y, derivadas segundas, terceras, etc. Ejemplo. Derivada segunda en X.
-1
43
-1
-1
-1
44
Ejemplos.
45
Sobel 2 deriv. Y
Sobel Y (3x3)
46
49
50
-1 0
f(x) = e -x /s
df(x)/dx
Msc. Sobel Operador de derivacin
d2f(x)/dx2
Msc. Laplaciana Operador de gradiente
52
-1 -1 0
D1: N-S
D2: NE-SO
D3: E-O
D4: SE-NO
51
53
54
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:
Laplaciana -1 -1 8 -1 -1 -1 -1 Identidad 0 0 1 0 0 0 0 Perfilado -1 -1 9 -1 -1 -1 -1
1 -1
-1
0 0
-1 -1
a -1
Suavizado Original Perfilado
55 Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales.
-a 4a+1 -a 0
0 0 0 0 -1 0 Ojo: la funcin cvLaplace usa mscaras Procesamiento Audiovisual Tema 3. a debe ser < 0 invertidas, luego Filtros y transformaciones locales.
57
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 Tema 3. Filtros y transformaciones locales. 59
10
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
Mx., tamao 12 Mximo, tamao 3 Mn., tamao 12
64
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. Procesamiento Audiovisual 61
Tema 3. Filtros y transformaciones locales.
62
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
Mn., tamao 6 Imagen de entrada Mnimo, tamao 3 Mediana 12x12
66
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.
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 Tema 3. Filtros y transformaciones locales. 65
11
La mediana produce un efecto de suavizado, aunque ms abrupto en los bordes que la media y el suavizado gaussiano.
Mediana
Suavizado gaussiano
Mediana
Se puede intentar eliminar (o reducir) el ruido con un filtro gaussiano o con una mediana.
Mediana 3x3
Se puede intentar eliminar (o reducir) el ruido con un filtro gaussiano o con una mediana.
Mediana 3x3
Filtro gaussiano
Filtro gaussiano
69
71
Mediana 7x3
12
62%
Tamao: 25x25
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 73
Tamao: 50x50
Tamao: 120x120
74
1 0 0
0 1 0
0 0 1
Imagen de entrada
Dilatacin 1
Dilatacin 3
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.
Abrir: desaparecen los puntos sueltos o estructuras finas Cerrar: se rellenan los huecos negros de cierto tamao
78
Elemento estructurante
Erosin 1
Erosin 3
1 1 1
1 1 1
1 1 1
Elemento estructurante
1 1 1
1 1 1
77
13
Falsos positivos
Falsos negativos
79
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.
Imagen entrada Erosin, 1 Cierre, 2
81
Existen otras operaciones de morfologa, basadas en las elementales, que son tiles en anlisis de imgenes. Ejemplo 1. Borde morfolgico: (BE) - B
Imagen 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
Tema 3. Filtros y transformaciones locales.
83
Dilatacin, 3
14
Filtros en OpenCV.
Filtros lineales predefinidos. Filtros lineales arbitrarios. Filtros de mximo, mnimo y mediana. Operaciones de morfologa matemtica. Ejercicios.
Anexo A.3.
Operaciones de procesamiento local: De modo prctico, podemos clasificar las operaciones de filtrado existentes 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 (habr que usar: cvSplit, cvMerge y cvConvertScale).
85
86
15
91
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 la constante CV_32FC1), indica los coeficientes de la mscara de convolucin. 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 pgina 56. 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<h; y++) for (int x= 0; x<w; x++) cvSet2D(mask, y, x, cvScalar(coef[y][x])); cvFilter2D(img, img, mask); cvReleaseMat(&mask);
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 93
Filtros no lineales de mximo, mnimo: no existen en OpenCV, sino que deben hacerse utilizando las operaciones morfolgicas cvDilate (mximo) y cvErode (mximo). Ambas operaciones reciben como parmetro un valor de tipo IplConvKernel que indica la forma del elemento estructurante (la mscara de convolucin). Implementacin de las operaciones de mximo y mnimo local:
void MinLocal (IplImage *ent, IplImage *sal, int ancho, int alto) { IplConvKernel* element= cvCreateStructuringElementEx(ancho, alto, ancho/2, alto/2, CV_SHAPE_RECT); cvErode(ent, sal, element); cvReleaseStructuringElement(&element); } void MaxLocal (IplImage *ent, IplImage *sal, int ancho, int alto) { IplConvKernel* element= cvCreateStructuringElementEx(ancho, alto, ancho/2, alto/2, CV_SHAPE_RECT); cvDilate(ent, sal, element); cvReleaseStructuringElement(&element); } Procesamiento Audiovisual 95
Tema 3. Filtros y transformaciones locales.
Operaciones extendidas:
cvMorphologyEx
Procesamiento Audiovisual Tema 3. Filtros y transformaciones locales. 96
16
99
100
17