Está en la página 1de 43

Visin

Sesin 2: Filtrado de imgenes

Departamento CCIA http://www.jtech.ua.es/vision/2011/

Hoy
Representacin de imgenes Tipos de datos e imgenes en OpenCV Filtros lineales Suavizado del ruido Resaltado de aristas con filtros lineales Operadores morfolgicos Filtros y operaciones en OpenCV

Referencias
Svetlana Lazebnik Michael J. Black Derek Hoeim

Imgenes como funciones


Podemos pensar en una imagen como una funcin f, de R2 to R: f ( x, y ) devuelve la intensidad en la posicin ( x, y ) En la realidad, la imagen slo est definida sobre un rectngulo [a,b]x[c,d] Una imagen de color son tres funciones juntas. Podemos formalizar este concepto con una funcin color image is just three functions pasted together. We can write this as a vector-valued function:

(S. Seitz)
3

Qu es una imagen digital?


Trabajamos con imgenes digitales (discretas):
Muestreamos al espacio 2D sobre una rejilla regular Discretizamos cada muestra (se redondea hasta el entero ms cercano)

Si nuestras muestras estn separadas en , podemos escribir esto como:


f[i ,j] = Quantize{ f(i , j ) }

La imagen puede representarse entonces como una matriz de valores enteros

Discretizacin
Array de sensores Sensor Array

CMOS sensor

Perfil real 1D

Actual 1D profile

CS143 Intro to Computer Vision

Michael J. Black

Imgenes digitales
Niveles de gris The raster image (pixel matrix)
0.92 0.95 0.89 0.96 0.71 0.49 0.86 0.96 0.69 0.79 0.91 0.93 0.89 0.72 0.95 0.81 0.62 0.84 0.67 0.49 0.73 0.94 0.94 0.82 0.51 0.88 0.81 0.60 0.74 0.54 0.56 0.90 0.89 0.97 0.89 0.55 0.94 0.87 0.58 0.58 0.85 0.66 0.67 0.49 0.62 0.56 0.51 0.56 0.57 0.50 0.51 0.48 0.43 0.33 0.41 0.37 0.31 0.42 0.46 0.37 0.60 0.39 0.37 0.42 0.61 0.78 0.85 0.75 0.57 0.91 0.80 0.58 0.73 0.88 0.77 0.69 0.78 0.97 0.92 0.41 0.87 0.88 0.50 0.92 0.90 0.73 0.79 0.77 0.93 0.81 0.49 0.90 0.89 0.61 0.91 0.94 0.71 0.73 0.89 0.92 0.95 0.91 0.97 0.79 0.45 0.49 0.82 0.90 0.93 0.99 0.99 0.91 0.92 0.95 0.85 0.33 0.74 0.93 0.99 0.97 0.93

Color, 3 canales Color Image (R,G,B)


R

(Hoeim)
6

Tipos de datos de OpenCV


Tipos de datos en OpenCV

Matrices e imgenes
CvArr: clase abstracta CvMat: matriz 2D multi-canal
Constructor: CreateMat(filas: int, columnas: int, tipo: int) tipo = CV_<bit_depth><S|U|F>C<num_channels>
Ejemplo: CreateaMat(200,200, cv.CV_32FC3) devuelve una matriz formada por tuplas de 3 nmeros reales de 32 bits CreateMatHeader(filas: int, columnas: int, tipo: int) CreateData(array: CvArr)

Otros constructores:

IplImage: imagen. Aade algunos elementos a CvMat propios de imgenes.


CreateImage (size: CvSize, depth: int, channels: int)

Estructura de imagen en OpenCV


Las matrices se mapean en memoria como una secuencia de nmeros del tipo especificado Para recorrer las matrices de forma eficiente (C):

Posicin de un punto en la matriz

ROI: Regin de inters


xOffset, yOffset, height, weight

Filtros
Transforman imgenes in nuevas imgenes Aplicaciones:
Suavizado del ruido Resaltado de aristas y otras caractersticas de la imagen Bsqueda de plantillas

Hybrid Images, Oliva et al., http://cvcl.mit.edu/hybridimage.htm

Filtros lineales y convolucin Muestreo y aliasing Filtros como plantillas Pirmides gaussianas

Filtro lineal
Operador de vecindad: el valor resultante de un pxel se calcula como una funcin de su vecindad Filtro lineal:

El componente h se denomina el ncleo o mscara del filtro y los valores k,l representan la vecindad del pxel i,j La operacin anterior es una correlacin

Convolucin:

f
10

Convolucin
Reemplazamos cada pxel con la media ponderada de los pxeles vecinos Los pesos se denominan el kernel (o mscara) del filtro Ejemplo: la media de los 9 puntos vecinos se calcula con el siguiente kernel (mean filter)

1 1 1 1 1 1 1 1 1
Filtros de imagen en OpenCV Filter2D realiza una convolucin

11

Propiedades de los filtros lineales


Linealidad: filter(f1 + f2) = filter(f1) + filter(f2) filter(a f1 + b f2) = a filter(f1) + b filter(f2) Invarianza al desplazamiento (shift invariance): el mismo comportamiento independientemente de la posicin del pixel: filter(shift(f)) = shift(filter(f)) Resultado terico: cualquier operador lineal invariante al desplazamiento se puede representar con una convolucin La linealidad nos permite construir filtros complejos:

12

Propiedades de los filtros lineales


Linealidad: filter(f1 + f2) = filter(f1) + filter(f2) filter(a f1 + b f2) = a filter(f1) + b filter(f2) Invarianza al desplazamiento (shift invariance): el mismo comportamiento independientemente de la posicin del pixel: filter(shift(f)) = shift(filter(f)) Resultado terico: cualquier operador lineal invariante al desplazamiento se puede representar con una convolucin La linealidad nos permite construir filtros complejos:

unit impulse

Gaussian

Laplacian of Gaussian

12

Ejemplos con distintas mscaras

Blur

13

Sharpening

original

=
smoothed (5x5)
detail

+
original
detail

=
sharpened

14

El problema del borde


Cuando la mscara llega a los puntos del borde de la imagen no es posible hacer la convolucin Varias tcnicas posibles para inventarse los nuevos puntos:

CopyMakeBorder es la funcin de OpenCV

15

Ruido en las imgenes


Distintos tipos de ruido

Ruido de sal y pimienta (salt and pepper noise): ocurrencias aleatorias de pxeles blancos y negros Ruido de impulso (impulse noise): ocurrencias aleatorias de pxeles blancos Ruido gausiano (gaussian noise): variaciones en la intensidad generadas por una distribucin gausiana normal

16

Ruido gaussiano
Modela bien el ruido real: suma de mltiples factores

Ejemplo: ruido en imgenes reales


Comparativa de 5 cmaras: iPhone 4S, iPhone 4, Samsung Galaxy SII, Olympus XZ-1, Canon 20D

Ars Technica: Can the iPhone 4S replace a "real" digital camera?

17

Suavizado del ruido con el filtro de media

El filtro de media reemplaza un pixel por la media de valores de su vecindad Se denomina tambin filtro de caja (box filter) Suaviza la imagen, eliminando las diferencias y, por tanto, el ruido

Mejora: filtrado gausiano, sustituimos el kernel por un kernel gaussiano que da ms peso al centro y menos a los bordes
1 2 1 2 4 2 1 2 1

18

Kernel gaussiano
Distintos valores de la y del tamao del kernel Choosing kernel width cambian la forma de la gaussiana
The Gaussian function has infinite support, but discrete filters use finite kernels

Choosing kernel width


Rule of thumb: set filter half-width to about 3

Source: K. Grauman

Consejo: el ancho del kernel debe ser 6

19

Separabilidad del filtro gaussiano

Aplicado a convolucin de un kernel gaussiano:

Separability example
2D convolution (center location only) ( y)

The e filter e factors ac o s into a product of 1D filters:

Perform convolution along rows:

Followed by convolution along l th the remaining i i column: l

=
Source: K. Grauman

20

Filtrado gaussiano para eliminar ruido


Aplicacin de un filtro gaussiano y de caja

Distintos valores de tienen distintos efectos en el filtrado del ruido. Mayores eliminan ms ruido, pero difuminan ms la imagen

21

Filtrado de mediana
El filtro gaussiano no funciona bien con ruido sal y pimienta
Salt and pepper noise: contains random occurrences of black and white pixels Impulse noise: Salt and pepper noise contains random 5x5 Original 3x3 occurrences of white pixels Filtro de mediana Gaussian noise: variations in intensity drawn from a Gaussian normal distribution
Gaussian noise
Source: S. Seitz

se

ginal

7x7

e noise

La mediana es un estimador robusto frente a outliers

22

Filtrado de mediana
El filtro gaussiano no funciona bien con ruido sal y pimienta
Salt and pepper noise: contains random occurrences of black and white pixels Impulse noise: Salt and pepper noise contains random 5x5 Original 3x3 occurrences of white pixels Filtro de mediana Gaussian noise: variations in intensity drawn from a Gaussian normal distribution
Gaussian noise
Source: S. Seitz

se

ginal

7x7

e noise

La mediana es un estimador robusto frente a outliers

22

Ejemplos del filtro de mediana

108

Original con ruido

Filtro mediana

(a)

(b)

3 Image proces

(a)

(b)

Original con ruido (e)

(c)

(f)

(d)

Figure 3.18 Median and bilateral ltering: (a) original image median ltered; (d) bilaterally ltered; (e) original image with sho (h) bilaterally ltered. Note that the bilateral lter fails to remov different from their neighbors.

(e)

Filtro gaussiano (f)

3.3 More neighborhood op Filtro de mediana (g) (h)

As we have just seen, linear lters can perf e 3.18 Median and bilateral ltering: (a) original image with Gaussian noise; (b) Gaussian ltered However non-linear lters, such as edge-prese n ltered; (d) bilaterally ltered; (e) original image with shot noise; (f) Gaussian ltered; (g) median lt perform even better. Other examples of neigh aterally ltered. Note that the bilateral lter fails to remove the shot noise because the noisy pixels ar ators that operate on binary images,23 as well nt from their neighbors.

El filtro de suavizado en OpenCV


Smooth realiza un suavizado de la imagen aplicando distintos tipos de filtros

24

Filtrado para resaltar aristas Correspond to fast

Edges

changes Aristas: pxeles de la imagen donde se produce un Where the magnitude fuerte of thegradiente derivative is(tanto positivo como negativo)
large

fast

gnitude ve is

Simple Signal
CS143 Intro to Computer Vision Michael J. Black

Simple Signal
CS143 Intro to Computer Vision

Imagen suavizada con gaussiana

Michael J. Black

Discontinuous

Smoothed with Gaussian


CS143 Intro to Computer Vision Michael J. Black

Primera derivada

nuous

Smoothed with Gaussian


CS143 Intro to Computer Vision Michael J. Black

25

Derivadas con filtros lineales


Podemos calcular la derivada con un filtro lineal Compute Derivatives

We can implement this as a linear filter: 1.0

1.0

[ -1 1] Or [-1 0 1] symmetric

-1

0 1

-1

0 1

En 2D tenemos que utilizar las derivadas parciales con respecto a x e y

CS143 Intro to Computer Vision

Michael J. Black

26

Funciona con el ruido?


Imagen original Actual 1D profile

CS143 Intro to Computer Vision

Michael J. Black

Suavizada con una gaussiana Smoothed with a Gaussian

Derivadas Barbara signal and derivatives


CS143 Intro to Computer Vision

Michael J. Black

CS143 Intro to Computer Vision

Michael J. Black

27

Filtro suavizado gaussiano y derivada


En 1D

Derivatives and Smoothing

G
CS143 Intro to Computer Vision

dG
Michael J. Black

En 2D

In 2D

Compare with [-1 0 1] filters.


CS143 Intro to Computer Vision Michael J. Black

28

Funciona?
La derivada amplifica las pequeas variaciones

1D Barbara signal

Smoothed Signal

First Derivative

Se podra utilizar un umbral para detectar las aristas


CS143 Intro to Computer Vision Michael J. Black

Note the amplification of small variations.

Thresholding the Thresholding the Derivative?


Derivative?

CS143 Intro to Computer Vision

Michael J. Black

CS143 Intro to Computer Vision

Michael J. Black

29

Una solucin mejor: segunda derivada


Clculo de la segunda Secondderivada Derivative

Filter kernel? [1 -2 1]

Las aristas estaranCS143 en los cruces por el Michael cero (zero Intro to Computer Vision J. Black crossing)

Maxima of first derivative

zero crossings of second derivative


CS143 Intro to Computer Vision Michael J. Black

30

The Laplacian En 2D: Laplaciana


Formulacin

The Laplacian

Just Unanother filtro lineal Just another linear filter. linear filter.

Kernel de la Laplaciana

CS143 Intro to Computer Vision

Michael J. Black

CS143 Intro to Computer Vision

Michael J. Black

31

Aproximacin de la Laplaciana
La Laplaciana tambin se puede aproximar como una diferencia de gaussianas a diferentes escalas Difference of Gaussians at different
scales.

Approximating the Laplacian

The Laplacian Pyramid


Gaussian Pyramid
expan d

Laplacian Pyramid

=
CS143 Intro to Computer Vision Michael J. Black

Sept, 2007
CS143 Intro to Computer Vision

=
Michael J. Black

32

Pirmides de imgenes
Las pirmides de imgenes permiten representar una imagen a mltiples escalas
Mltiples usos: caractersticas, compresin

Pirmides gaussianas y laplacianas

33

Cruces por cero


Imagen original

LoG zero crossings


(where the lterla response changes sign) Cruces por cero de laplaciana

sigma=4

sigma=2

Se denomina operador de Marr/Hildreth Ponce & Forsyth


CS143 Intro to Computer Vision Michael J. Black

34

Otros filtros
Sobel

Imgenes hbridas, Oliva et al., http://cvcl.mit.edu/ hybridimage.htm

35

Funciones en OpenCV
Laplace aplica un filtro de Laplace

Sobel aplica un filtro de Sobel

36

Funciones en OpenCV
PyrDown reduce la imagen despus de aplicar un filtro gaussiano

Threshold realiza un umbralizado de la imagen

37

Filtros morfolgicos
Filtros no lineales para imgenes binarias Convolucin de la imagen con el elemento estructurante (kernel), seguida de una umbralizacin Definimos la umbralizacin:

Definimos la convolucin entre una imagen f y el elemento estructurante s como el nmero de pxeles que estn a 1 dentro del elemento estructurante de tamao S Operaciones:
dilatacin(f,s) = (c,1) erosin(f,s) = (c,S) mayora(f,s) = (c,S/2) apertura(f,s) = dilatacin(erosin(f,s),s) cierre(f,s) = erosin(dilatacin(f,s),s)

38

Funciones en OpenCV
CreateStructuringElementEx devuelve un elemento estructurante

Erode realiza una erosin

Dilate realiza una dilatacin

39

Funciones en OpenCV
MorphologyEx realiza operaciones morfolgicas avanzadas

40

Referencias
Computer Vision: Algorithms and Applications de Szelinsky: cap. 3.1, 3.2, 3.3, 3.5 Learning OpenCV: cap. 3, 5, 6.1-6.4

41

También podría gustarte