simulacion opencv

Upload: jfhack

Post on 10-Oct-2015

76 views

Category:

Documents


2 download

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);