Tema Tema 6: Contornos - webdiis.unizar.eswebdiis.unizar.es/~neira/12082/L5contornos.pdf · •...
Transcript of Tema Tema 6: Contornos - webdiis.unizar.eswebdiis.unizar.es/~neira/12082/L5contornos.pdf · •...
112082 - Visión por Computador - J.D. Tardós
TemaTema 6: 6: ContornosContornos1. Introducción
2. Filtrado de imágenes: Convolución
3. Detección de Contornos– Detectores de Gradiente: Sobel, Canny, ...– Cruces por Cero: Marr-Hildreth
4. Segmentación de Contornos– Seguimiento Local– Transformada de Hough
212082 - Visión por Computador - J.D. Tardós
DetecciDeteccióón de contornosn de contornos• Extracción de contornos: Separación de elementos
significativos de la superficie de los objetos• Los contornos resumen la mayor parte de la
información de una imagen
312082 - Visión por Computador - J.D. Tardós
ExtracciExtraccióón de Contornosn de Contornos• Detección de puntos de contorno
– Cambios de luminosidad en la imagen» Máximos del Gradiente
(1ª derivada de la luminosidad)» Cruces por cero del Laplaciano
(2ª derivada de la luminosidad)
• Segmentación de contornos– Agrupación de puntos de contorno– Eliminación de ruidos
• Ajuste de rectas o curvas
Máscaras de
convolución
Máscaras de
convolución
412082 - Visión por Computador - J.D. Tardós
Ejemplo: Contornos de Ejemplo: Contornos de CannyCanny• Operador de Canny: derivada de la Gaussiana
• Detección de máximos
• Segmentación de contornos: – Seguimiento local + Umbral con histéresis
• Ajuste de rectas o curvas
Módulo y orientación del gradiente
Máximos locales del gradiente
Cadenas de pixelsde contorno
Rectas y curvasde contorno
512082 - Visión por Computador - J.D. Tardós
2. Filtrado de im2. Filtrado de imáágenesgenes• Ruidos Típicos en una imagen:
– ruido de “sal y pimienta”: ocurrencias aleatorias de pixeles completamente blancos y completamente negros.
– ruido gausiano: el nivel de gris de todos los pixeles de la imagen es perturbado con una normal
),0( ],[],[ 2ideal σNppjiIjiI ≈+=
figura 4.5 Jain
612082 - Visión por Computador - J.D. Tardós
Filtrado lineal: ConvoluciFiltrado lineal: Convolucióónn• Cada pixel de la imagen resultado es combinación
lineal de varios pixels vecinos de la imagen original• Máscara de convolución (Kernel):
• Normalmente, máscaras centradas• Si no, se marca el pixel central
[ ]
[ ] [ ] [ ] [ ] [ ]njmifnmKjifnmKjig
kkk
kkk
kkk
nmK
b
am
d
cn
dbbcb
dc
daaca
++=∗=
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
=
∑ ∑−= −
−
−
−−−−
,,,,,
,
,0,,
,00,0,0
,0,,
LL
LLLLL
LL
LLLLL
LL
712082 - Visión por Computador - J.D. Tardós
ConvoluciConvolucióón: Ejemplosn: Ejemplos• Máscara descentrada
– Diferencia hacia adelante
• Máscara centrada– Filtro binomial 3x3 B3x3 =
116
1 2 12 4 21 2 1
g(i, j) = 116
[ f(i −1, j −1) + 2 f(i −1, j) + f(i −1, j +1)+
2 f (i, j −1) + 4 f(i, j) + 2 f(1, j +1)+f (i +1, j −1) + 2 f(i +1, j) + f(i +1, j +1)]
K= −1• 1 g(i, j)= f(i,j +1)− f(i, j)
812082 - Visión por Computador - J.D. Tardós
ConvoluciConvolucióón: banda de basuran: banda de basura• La máscara “se sale” de la imagen
• Para una máscara n x n con n impar, el tamaño de la banda de basura es: (n-1)/2– Dejar valores no válidos (basura)– Mejor rellenarla con ceros
Banda de basura
912082 - Visión por Computador - J.D. Tardós
Suavizado (filtrado de ruidos)Suavizado (filtrado de ruidos)• Filtro de media
– Todos los pixeles igual peso
• Filtro binomial– Valores sacados del triángulo de Pascal:
– Píxeles más lejanos, menor peso:
• Para no alterar el brillo medio, se divide por la suma de los valores de la máscara
K3x 3 =19
1 1 11 1 11 1 1
11 1
1 2 11 3 3 1
1 4 6 4 1
B3x 3 = 116
1 2 12 4 21 2 1
1012082 - Visión por Computador - J.D. Tardós
Suavizado de la imagenSuavizado de la imagen• Filtro Gaussiano
– La constante c se calcula para que los coeficientes sumen 1– A mayor σ, mayor suavizado– Tamaño de la máscara: 5σ - 7σ
• Ejemplo: máscara 5 x 5 para σ
= 1
Gσ (i , j) = c ⋅ e−
(i 2 + j 2 )2 σ 2
0.0183 0.0821 0.1353 0.0821 0.01830.0821 0.3679 0.6065 0.3679 0.08210.1353 0.6065 1.0000 0.6065 0.13530.0821 0.3679 0.6065 0.3679 0.08210.0183 0.0821 0.1353 0.0821 0.0183
c = 1/6.1689
1112082 - Visión por Computador - J.D. Tardós
Suavizado de la imagenSuavizado de la imagen• Filtrado Gaussiano con σ
= 1, 2, 3, 4
1212082 - Visión por Computador - J.D. Tardós
MMááscaras separablesscaras separables• Condición: rango(K) = 1
– Filtro binomial:
– Filtro Gaussiano:
)],()([)()],()([)(),(),(),(
)()(),(
jifiKjKjifjKiKjifjiKjig
jKiKjiK
yxxy
xy
∗∗=∗∗=∗=
⋅=
Máscara nxn
Máscara nx1+
Máscara 1xn+ Eficiente+ Eficiente
B3x 3 =1
16
1 2 12 4 21 2 1
=1
16
121
⋅ 1 2 1
Gσ =1 =1
6.1689
0.13530.60651.00000.60650.1353
⋅ 0.1353 0.6065 1.0000 0.6065 0.1353
1312082 - Visión por Computador - J.D. Tardós
MMááscaras separablesscaras separables• Programación eficiente:
• Sólo se necesita una fila intermedia:
),()(),(
),()(),(
)],()([)(),(),(),(
jifjKjig
jifiKjif
jifiKjKjifjiKjig
x
y
yx
′∗=
∗=′
∗∗=∗=
fila i de f’(i,j)Kx
fila i de g(i,j)
Ky fila i de f(i,j)
1412082 - Visión por Computador - J.D. Tardós
Filtro de medianaFiltro de mediana• Filtro no lineal
– ordenar los nxn vecinos por nivel de gris ascendente– asignar la mediana, esto es, el valor que ocupe la mitad en
la lista ordenada
• Buena eliminación de ruido de sal y pimienta • Los espurios, (outliers) no tienen ninguna influencia
1512082 - Visión por Computador - J.D. Tardós
Filtro de medianaFiltro de mediana
0
64
128
192
256
(81,151) (152,151)
0
32
64
96
128
(81,150) (152,150)
0
40
80
120
160
(80,150) (151,150)
Original
Filtro de mediana
Filtro Lineal
1612082 - Visión por Computador - J.D. Tardós
3. Detecci3. Deteccióón de Puntos de Contornon de Puntos de Contorno• Máximo local del gradiente (1ª derivada)• Cruce por cero del Laplaciano (2ª derivada)
0 0 0 1 1 1
intensidad luminosa imagen digital
0 0 1 0 0 0
1ª derivada -1 1•
0 0 1 1 0 0 -
2ª derivada 1 -2 12ª diferencia
1ª diferencia
1712082 - Visión por Computador - J.D. Tardós
3.1 Detecci3.1 Deteccióón con el Gradienten con el Gradiente• Gradiente:
• Operadores:
Dividir por la suma de los valores positivos
Dividir por la suma de los valores positivos
( )
( ) ( )
( )xy
yx
yx
nOrientació
fMódulo
yf
xfyxGradiente f
∇∇=
∇+∇=∇
⎟⎟⎠
⎞⎜⎜⎝
⎛=∇∇=∇
→
,2atan
,,),(
22
θ
∂∂
∂∂
∇ x ∇ y
1ª diferencia −1• 1 1•−1
Roberts 0• 1−1 0
1• 00 −1
Prewitt−1 0 1−1 0 1−1 0 1
1 1 10 0 0−1 −1 −1
Sobel−1 0 1−2 0 2−1 0 1
1 2 10 0 0
−1 −2 −1
1812082 - Visión por Computador - J.D. Tardós
Gradiente: Operador de Gradiente: Operador de CannyCanny• Optimiza tres criterios:
– Robustez de detección frente al ruido– Precisión en la localización– Unicidad de la respuesta
• Similar a la derivada de una Gaussiana
• Tamaño de la máscara: 5σ−7σ• Ejemplo, para σ
= 1
′ G σ (x) =− xσ 2 exp
−x 2
2σ 2⎛
⎝ ⎜
⎞
⎠ ⎟
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
-3 -2 -1 0 1 2 3
σ=1
0.2707 0.6065 0.0 -0.6065 -0.2707
Dividir por la suma de los valores positivos
Dividir por la suma de los valores positivos
1912082 - Visión por Computador - J.D. Tardós
Gradiente: Operador de Gradiente: Operador de CannyCanny• Cálculo de gradiente en x e y
– Pueden utilizarse máscaras separadas
– Para el caso σ
= 1, n = 5
∇ x = ′ G σ (x)∗Gσ (y)∗ f (i, j)∇ y = Gσ (x )∗ ′ G σ (y)∗ f (i, j )
∇ x = 1K −0.2707 −0.6065 0.0 0.6065 0.2707 ∗
0.13530.6065
1.00.60650.1353
∗ f (i, j)
∇ y = 1K 0.1353 0.6065 1.0 0.6065 0.1353 ∗
0.27070.6065
0.0−0.6065−0.2707
∗ f (i, j)
2012082 - Visión por Computador - J.D. Tardós
MMááximos del Gradienteximos del Gradiente
• Para cada pixel con módulo mayor que un umbral, se toma una ventana 3x3
– Se calcula el módulo del gradiente en B y C, interpolando linealmente entre los valores de A3-A4 y A7-A8
– El pixel A es punto de contorno si su módulo es mayor que el de B y mayor o igual que el de C
Máximos locales del módulo en la dirección del GradienteMáximos locales del módulo en la dirección del Gradiente
A1 A2 A3
A8 A A4
A7 A6 A5
B
C
g
2112082 - Visión por Computador - J.D. Tardós
MMááximos del Gradienteximos del Gradiente
σ
= 1, 2, 3, 4
2212082 - Visión por Computador - J.D. Tardós
ImagenImagen, , gxgx, , gygy, , magmag, , oriori, , contornoscontornos
2312082 - Visión por Computador - J.D. Tardós
GradienteGradiente: : GxGx
2412082 - Visión por Computador - J.D. Tardós
GradienteGradiente: : GyGy
2512082 - Visión por Computador - J.D. Tardós
MagnitudMagnitud del del GradienteGradiente
2612082 - Visión por Computador - J.D. Tardós
OrientaciOrientacióónn del del GradienteGradiente
2712082 - Visión por Computador - J.D. Tardós
ContornosContornos
2812082 - Visión por Computador - J.D. Tardós
3.2 Detecci3.2 Deteccióón con la 2n con la 2ªª derivadaderivada• Laplaciano:
• Operadores para el Laplaciano
– Cruces por cero: contornos conexos, cerrados, y delgados– La 2ª derivada amplifica mucho el ruido: necesario filtrar
∇2 f (x, y) = ∇2 x + ∇2 y =∂ 2 f∂x 2 +
∂ 2 f∂y2
∇2x ∇2
y
2ª diferencia 1 −2 11−21
0 1 01 −4 10 1 0
1 4 14 −20 41 4 1
2912082 - Visión por Computador - J.D. Tardós
Operador de Operador de MarrMarr--HildrethHildreth• Filtro Gaussiano + Operador Laplaciano
∇2 ∗ Gσ ∗ f (i, j) = ∇2Gσ( ) ∗ f (i, j )
∇2Gσ (r) =r 2 − 2σ 2
σ 4 exp−r 2
2σ 2⎛
⎝ ⎜
⎞
⎠ ⎟
σ=1
-2
-1.5
-1
-0.5
0
0.5
-4 -2 0 2 4
2 2σ
Sombrero mexicano(invertido)
Sombrero mexicano(invertido)
3012082 - Visión por Computador - J.D. Tardós
Contornos: Cruces por ceroContornos: Cruces por cero• Se consideran contornos los cruces por cero de
magnitud superior a un umbral
my:= 0mx:= 0si g(i,j) >= 0 entoncessi g(i+1,j) < 0 entoncesmy:= g(i,j) - g(i+1,j)
fsisi g(i,j+1) < 0 entoncesmx:= g(i,j) - g(i,j+1)
fsisinosi g(i+1,j) >= 0 entoncesmy:= g(i+1,j) - g(i,j)
fsisi g(i,j+1) >= 0 entoncesmx:= g(i,j+1) - g(i,j)
fsifsimagnitud(i,j):= max(my,mx)
my:= 0mx:= 0si g(i,j) >= 0 entoncessi g(i+1,j) < 0 entoncesmy:= g(i,j) - g(i+1,j)
fsisi g(i,j+1) < 0 entoncesmx:= g(i,j) - g(i,j+1)
fsisinosi g(i+1,j) >= 0 entoncesmy:= g(i+1,j) - g(i,j)
fsisi g(i,j+1) >= 0 entoncesmx:= g(i,j+1) - g(i,j)
fsifsimagnitud(i,j):= max(my,mx)
3112082 - Visión por Computador - J.D. Tardós
Contornos: Cruces por ceroContornos: Cruces por cero
3212082 - Visión por Computador - J.D. Tardós
4. Segmentaci4. Segmentacióón de Contornosn de Contornos• Objetivos:
– Extracción de rectas o curvas– Eliminación de contornos espúreos
• Técnicas:– Análisis local:
» Seguimiento de contornos•Umbral con histéresis
» Ajuste de rectas o curvas•División recursiva•Mínimos cuadrados
– Transformada de Hough– Método de Burns: segmentación de rectas usando la
orientación del gradiente
3312082 - Visión por Computador - J.D. Tardós
4.1 Seguimiento de Contornos4.1 Seguimiento de Contornos• Objetivo: cadenas de puntos de contorno de una
cierta “intensidad” (módulo del gradiente o magnitud del cruce por cero)
• Elegir un valor de umbral es difícil
Umbral = 8Contornos rotosUmbral = 8
Contornos rotosUmbral = 4
Demasiado ruidoUmbral = 4
Demasiado ruido
3412082 - Visión por Computador - J.D. Tardós
Umbral con histUmbral con histééresisresis• Cada cadena de contorno debe tener:
– Todos los pixels >= Uinf– Al menos un pixel >= Usup
• Además filtrado por longitud del contorno
Uinf=4, Usup=8Uinf=4, Usup=8 Uinf=4, Usup=8, Long > 30Uinf=4, Usup=8, Long > 30
3512082 - Visión por Computador - J.D. Tardós
Seguimiento de ContornosSeguimiento de Contornosprocedimiento encadenar_contornos
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnas
inicial:=(i,j)si modulo(inicial) >= Umbral_sup entonces
n:= 0seguir(inicial,cadena,n)reverse(cadena, n)seguir(siguiente(inicial),cadena,n))si n >= longitud_minima entonces
guardar(cadena,n)fsi
fsifpara
fparafin encadenar_contornos
procedimiento seguir(actual,var cadena,var n)mientras actual <> nulo
n:=n+1cadena(n):= actualmodulo(actual):= 0actual:= siguiente(actual)
fmientrasfin seguir
funcion siguiente(actual) devuelve pixelpara sigte en vecinos(actual)
si modulo(sigte) >= Umbral_inf entoncesdevolver sigte
fsifparadevolver nulo
fin siguiente
procedimiento encadenar_contornospara i:= 1 hasta nfilas
para j:= 1 hasta ncolumnasinicial:=(i,j)si modulo(inicial) >= Umbral_sup entonces
n:= 0seguir(inicial,cadena,n)reverse(cadena, n)seguir(siguiente(inicial),cadena,n))si n >= longitud_minima entonces
guardar(cadena,n)fsi
fsifpara
fparafin encadenar_contornos
procedimiento seguir(actual,var cadena,var n)mientras actual <> nulo
n:=n+1cadena(n):= actualmodulo(actual):= 0actual:= siguiente(actual)
fmientrasfin seguir
funcion siguiente(actual) devuelve pixelpara sigte en vecinos(actual)
si modulo(sigte) >= Umbral_inf entoncesdevolver sigte
fsifparadevolver nulo
fin siguiente
En qué orden?
3612082 - Visión por Computador - J.D. Tardós
SeguimientoSeguimiento: en : en ququéé ordenorden??• Orden de lectura
• Primero los 4-vecinos
1 2 34 56 7 8
5 1 62 37 4 8
•••
•••
•••
•••
Contono Roto
3712082 - Visión por Computador - J.D. Tardós
DivisiDivisióón recursiva en rectasn recursiva en rectas1. División recursiva de una cadena:
– Recta que une los extremos de la cadena– Punto que más se separa de la recta– Si separación > umbral (ej: 2 pixels), partir la cadena por
dicho punto– Repetir para las dos subcadenas obtenidas
2. Fusión de segmentos:– Dos segmentos adyacentes se fusionan si la desviación del
pixel más alejado de la recta es menor que el umbral
3. Eliminar segmentos muy cortos o con gradiente pequeño
4. Recta definida por los extremos de la cadena, o ajustada por mínimos cuadrados
3812082 - Visión por Computador - J.D. Tardós
DivisiDivisióón recursiva en rectasn recursiva en rectas• Ejemplo DividirDividir DividirDividir
No DividirNo Dividir FusionarFusionar
3912082 - Visión por Computador - J.D. Tardós
DivisiDivisióón recursiva en rectasn recursiva en rectas• Distancia de un punto a la recta que pasa por otros
dos puntos:
(x1,y1)
(x2,y2)(x3,y3)
d
d =x3 y1 − y2( )− y3 x1 − x2( )+ y2 x1 − y1x2
y1 − y2( )2 + x1 − x2( )2
4012082 - Visión por Computador - J.D. Tardós
DivisiDivisióón y ajuste de rectasn y ajuste de rectas• Cadenas de contornos y rectas obtenidas
4112082 - Visión por Computador - J.D. Tardós
AjusteAjuste de de rectasrectas• Mínimos cuadrados (regresión total)
– Minimizar la suma del cuadrado de las distancias pixel-recta
• Solución: eje de “minima inercia”– Igual que el calculo de la posición y orientación de un blob.
• Extremos: proyección del pixel inicial y final sobre la recta obtenida
Ecuación de la recta: x cosθ + ysinθ − ρ = 0
Distancia del pixel i: di = xi cosθ + yi sinθ − ρ
Minimizar: D2 = xi cosθ + yi sinθ − ρ( )i
∑ 2
x
yθ
ρ di
4212082 - Visión por Computador - J.D. Tardós
4.2 4.2 TransformadaTransformada de Houghde Hough• Detección global de rectas o curvas• Se representan de forma paramétrica• Parámetros para las rectas: ρ
y θ
ρ
= x cosθ
+ y senθ
x = j - ncolumnas/2y = nfilas/2 - i
θ
ρ
x y1 1
x y2 2
x y3 3
x y4 4
x
yi
j
4312082 - Visión por Computador - J.D. Tardós
TransformadaTransformada de Houghde Hough• Un pixel de coordenadas (xi, yi) puede pertenecer a
cualquier recta de ecuación: ρ = xi cosθ
+ yi senθ• Se divide el espacio (ρ,θ) en celdas• Cada pixel vota a todas las rectas a las que puede
pertenecer• Buscar las rectas más votadas
-90° 90°0°
10
0
-10
ρ
θ
x y1 1
x y2 2
x y3 3
x y4 4
-10
10
0
11
1
11
11
11
1
11
11
111
111
11
1
1
11
11
1
11
11
11
23
14
1111
111111
22 2 3
11
111
1
11
ρ
4412082 - Visión por Computador - J.D. Tardós
Tr. Hough: Tr. Hough: UsoUso de la de la orientaciorientacióónn• Tiempo de cálculo excesivo• Mejora: cada pixel solo vota en orientaciones
similares a la orientación de su gradiente
-90° 90°0°-10
10
0
31
41
3
θ
ρ
θ
ρ
x y1 1
x y2 2
x y3 3
x y4 4 X
Y
Gradiente
4512082 - Visión por Computador - J.D. Tardós
Tr. Hough: Tr. Hough: UsoUso de la de la orientaciorientacióónn
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbralx:= j - ncolumnas/2y:= nfilas/2 - iθ:= orientacion(i,j)ρ:= x*cos(θ) + y*sin(θ)votar_recta(i,j,ρ,θ)
fsifpara
fpara
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbralx:= j - ncolumnas/2y:= nfilas/2 - iθ:= orientacion(i,j)ρ:= x*cos(θ) + y*sin(θ)votar_recta(i,j,ρ,θ)
fsifpara
fpara
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbralx:= j - ncolumnas/2y:= nfilas/2 - ipara θ:=θmin hasta θmax
ρ:= x*cos(θ) + y*sin(θ)votar_recta(i,j,ρ,θ)
fparafsi
fparafpara
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbralx:= j - ncolumnas/2y:= nfilas/2 - ipara θ:=θmin hasta θmax
ρ:= x*cos(θ) + y*sin(θ)votar_recta(i,j,ρ,θ)
fparafsi
fparafpara
Con OrientaciónCon OrientaciónSin OrientaciónSin Orientación
4612082 - Visión por Computador - J.D. Tardós
Tr. de Hough: Tr. de Hough: CCíírculosrculos• También sirve para curvas, pero el número de
parámetros es mayor• Elemplo: círculos
– Radio y Centro (r, a, b)– Forma paramétrica (polar)
– Usando la orientación del gradiente:
r 2 = ( x − a)2 + ( y − b)2
x = a + r cosθy = b + r sinθ
a = x − r cosθb = y − r sinθ
θgra
(a,b)
a = x + r cosθb = y + r sinθ
θgra
(a,b)
(x,y) (x,y)
4712082 - Visión por Computador - J.D. Tardós
Tr. de Hough: Tr. de Hough: CCíírculosrculos• Tabla de acumulación 3D: (r,a,b)
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbral entoncesx:= j - ncolumnas/2y:= nfilas/2 - iθ:= orientacion(i,j)para r:= rmin hasta rmaxa:= x - r*cos(θ)b:= y - r*sin(θ)votar_circulo(i,j,r,a,b)
fparafsi
fparafpara
para i:= 1 hasta nfilaspara j:= 1 hasta ncolumnassi modulo(i,j)>=Umbral entoncesx:= j - ncolumnas/2y:= nfilas/2 - iθ:= orientacion(i,j)para r:= rmin hasta rmaxa:= x - r*cos(θ)b:= y - r*sin(θ)votar_circulo(i,j,r,a,b)
fparafsi
fparafpara
Con OrientaciónCon Orientación
4812082 - Visión por Computador - J.D. Tardós
AplicaciAplicacióónn: : puntopunto de de fugafuga de un de un pasillopasillo
• Cada punto de contorno vota a un punto de la línea del horizonte
Δ
ΔLínea del horizonte