DLT / RANSAC

Anuncio
Estimación de homografı́as
Visión en Robótica
1er cuatrimestre de 2013
1.
Introducción del problema
Una homografı́a es una transformación proyectiva que determina una correspondencia entre puntos. El problema que se plantea resolver es el siguiente:
dado un conjunto de puntos xi ∈ Pn y su conjunto de puntos correspondientes
x0i ∈ Pn , calcular la transformación proyectiva que lleva xi a x0i . Es decir, calcular h : Pn → Pn tal que h (x) = x´ = Hx. El objetivo es estimar la matriz
H.
2.
Algoritmo de transformación lineal directa
(DLT)
Este método sirve para estimar la matriz H antes mencionada.
Algoritmo 1 Dados un conjunto de n puntos de correspondencia (n ≥ 4),
{xi ↔ x´i }, determinar H (homografı́a) tal que x´i = Hxi
1. Para cada correspondencia xi ↔ x´i , calcular la matriz Ai de dimensión
2×9
Ai =
−wi0 xTi
0T
0T
wi0 xTi
yi0 xTi
−x0i xTi
donde
xi = (xi , yi , wi ) y 0T = (0, 0, 0)
2. Generar una matriz A, de dimensión 2n × 9, con las matrices Ai
3. Descomponer A según el SVD:
A = U DV t ,
1
4. Luego, la matriz H que estamos buscando es la siguiente:


h1 h2 h3
H =  h4 h5 h6 
h7 h8 h9
donde h es la última columna de V . Notar que h es un vector de 9 elementos. Ver la demostración correspondiente en el apéndice A.
3.
DLT con normalización de datos
Se hace una traslación y un escalamiento de tal manera que el algoritmo
queda invariante con respecto a la elección arbitraria de la escala y del origen de
coordenadas. Se elige una sistema de coordenadas canónico donde el algoritmo
DLT es invariante a las transformaciones por similaridad.
Algoritmo 2 DLT con normalización de los datos
Dado un conjunto {xi → x0i } de n puntos de correspondencia, calcular las
e yH
e 0 que consisten en una traslación y un
transformaciones de similaridad H
escalamiento.
1. Traslación de las coordenadas en cada imagen: para los datos xi y x0i , se
calculan el centroide x̄ y x̄0 de cada conjunto de puntos correspondiente,
según:
n
x̄ =
1X
xi
n i=1
x̄0 =
1X 0
x
n i=1 i
n
2. El centroide será el nuevo origen de coordenadas en cadacaso. Es decir,
se
genera un nuevo conjunto de puntos de correspondencia xei → xei 0 donde
ei = s (xi − x̄) y x
e0i = s0 (x0i − x̄0 )
x
con s y s0 escalares que se obtienen como se describe a continuación.
ei y de los x
e0i . Hallamos un escalar
3. Calculamos la norma media de los x
0
s y s tal que al multiplicar √
cada uno por la norma media de los puntos
trasladados, el resultado sea 2, es decir:
Si
n
1X
d¯ =
k(xi − x̄)k
n i=1
2
queremos que
sd¯ =
√
2
entonces
√
2
s= ¯
d
En forma análoga se define:
√
2
s0 = ¯0
d
4. Finalmente, los dos conjuntos de puntos homólogos son:
√
√
2
ei = ¯ (xi − x̄) ,
x
d
e0i
x
2
= ¯0 (x0i − x̄0 ) con i = 1, ..., n
d
e yH
e 0 de simiPara aplicar dichas transformaciones se pueden plantear las H
laridad correspondientes. De esta forma, los nuevos puntos quedarı́an definidos
según
e i
x
ei = Hx
e 0 x0i
x
e0i = H
(1)
(2)
Luego de aplicar estas transformaciones, se utiliza el algoritmo DLT sin
e0i }.
alteraciones para los nuevos conjuntos de n puntos homólogos: {e
xi → x
Sin embaro, el resultado del algoritmo DLT será en realidad una transformacion Ḣ tal que:
x
e0i = Ḣ x
ei
(3)
mientras que lo que se buscaba en realidad es una transformación H tal que
x0i = Hxi
(4)
Asi que, para obtener H aplicaremos las definiciones (1) y (2) de x
ei y x
e0i en
la ecuación (3) obtieniendo:
e 0 x0i = Ḣ Hx
e i
H
e 0−1 obtenemos que
y multiplicando a ambos lados por H
e 0−1 e 0 0
e 0−1 e
|H {z H} xi = H Ḣ Hxi
I n×n
3
por lo que, utilizando (4), queda que:
e 0−1 Ḣ H
e
H=H
que era lo que buscabamos.
4.
RANSAC
Si nos restringimos a P1 , el problema de correspondencia serı́a el siguiente.
Supongamos que queremos hallar una transformación afı́n unidimensional,
Ha , entre un conjunto de puntos correspondientes {xi → x0i } que están sobre
dos lı́neas.
a b
xi
axi + b
0
xi = Ha xi =
=
,
0 1
1
1
entonces
xi = axi + b con xi ∈ R.
(5)
El objetivo entonces es hallar una recta que minimice la suma de las distancias ortogonales al cuadrado, d2⊥i , sujeto a la condición de que no haya ningún
punto que se desvı́e de la recta buscada más allá de una cierta distancia umbral
t, que dependerá del ruido de medición. Entonces, dado un conjunto de puntos
homólogos debemos
1. estimar una recta de ajuste, y
2. clasificar los puntos como inliers y outliers (según t).
Se propone un estimador robusto para elegir los puntos homólogos, denominado RANSAC (por RANdom SAmple Consensus), que puede usarse cuando la
proporción de outliers es muy grande.
4.1.
Idea general del algoritmo (en P1 )
1. Se seleccionan aleatoriamente 2 puntos, con los que se calcula una recta r
que pasa por ellos. Esta recta es el modelo de ajuste de los puntos (ecuación
(5)).
2. Se calcula el soporte de r, definido este como el conjunto de puntos que se
encuentran a una cierta distancia del modelo. En esta caso, esa distancia
será la distancia ortogonal de los puntos a la recta.
3. Se repite esta selección aleatoria (pasos 1 y 2) un número N de veces.
4. La recta de ajuste con mayor soporte es la recta (o modelo) de ajuste
elegida.
Los puntos que caen dentro del soporte serán los inliers del modelo y definen
el conjunto de consenso S (fig. 1).
4
c
b
a
d
Figura 1: Dos conjuntos de consenso (demarcadas mediante lı́neas punteadas)
con diferentes soportes. El conjunto de consenso asociado a la recta que pasa
por los puntos a,b tiene soporte igual a 10.
4.2.
Algoritmo general (en P2 )
Retornando ahora a P2 , volvemos ahora a la formulación original del problema de correspondencia, planteado al principio de este apunte. En este caso, el
modelo ya no será una recta sino una homografı́a planar.
Como se mencionó previamente, el algoritmo tiene una forma iterativa, con
un umbral N en la cantidad de iteraciones. Sin embargo, como se verá a continuación, N será estimado en forma adaptativa, en base a la proporción de
outliers obtenidos hasta el momento (inicialmente, en base a un dado).
Algoritmo 3 RANSAC
1. Definir un ∈ [0, 1] que representa la proporción estimada de outliers
asociados al modelo
2. Elegir s pares de correspondencias de puntos no-colineales y estimar la homografı́a entre dichos pares (por ejemplo, utilizando DLT). En P 2 , alcanza
con s = 4 para fijar los grados de libertad necesarios de H.
3. Para cada par de puntos, calcular la distancia entre estos y los puntos
transformados con H. Si bien en P1 esto se hacı́a directamente con la
distancia ortogonal, en P2 la medida de distancia debe ser redefinida. Por
ello, se define d2i de la siguiente forma:
d2i = d(xi , H −1 xi 0 )2 + d(xi 0 , Hxi )2
donde d(·, ·) corresponde a la distancia euclı́dea.
5
4. Clasificar todos los pares de puntos xi → x0i como outliers o inliers en base
a un umbral t, definiendo ası́ el conjunto de consenso S para la iteración
actual, que contendrá a los inliers. Es decir:
S = xi → x0i / d2i < t2
El umbral t está definido de antemano y se encuentra tabulado. Para el
caso de P2 , t2 = 5,99σ 2 (donde se puede tomar σ = 1).
5. Repetir el proceso N veces, quedándonos siempre con la H que maximiza
la cantidad de inliers (es decir, que maximiza el cardinal del conjunto de
consenso S asociado a la H actual). Cada vez que se obtenga un H mejor
a la anterior, se debe reestimar y N , según:
#S
n
log(1 − p)
N←
log(1 − (1 − )s )
←1−
donde p se define de antemano y corresponde a la probabilidad de que al
menos una selección de puntos esté libre de outliers. En general se toma
p = 0,99.
6. Una vez terminado el ciclo, solo se debe re-estimar la H encontrada (nuevamente, puede utilizarse DLT), esta vez usando los puntos pertenecientes
al mejor conjunto de consenso S encontrado.
6
A.
Descomposición en valores singulares (SVD)
Sean A una matriz de dimensión m × n, con m ≥ n. Entonces se puede
descomponer de la forma:
A = U DV t
donde U es matriz ortogonal de dimensión m × n, D es una matriz diagonal de
n×n y V es una matriz ortogonal de n×n. Como U tiene columnas ortogonales,
entonces U t U = In×n . Además U preserva la norma, es decir, se cumple que
kU xk = kxk ∀x
pues,
kU xk =
q
t
√
(U x) (U x) =
xt U t U x =
√
xt Ix = kxk
Los valores singulares de la matriz A son los valores de la diagonal D (son no
negativos), que son las raı́ces cuadradas de los valores propios (también llamados
autovalores) de la matriz At A. Para ver esto observemos que si:
A = U DV t
entonces:
At A = U DV t
t
t
U DV t = V DU
U DV t = V D2 V t = V D2 V −1
|{z}
In×n
pues, como
V t V = In×n
entonces
V −1 = V t .
Luego se tiene que:
At A = V D2 V −1
Ahora, si llamamos H = At A, y multiplicamos a izquierda de ambos miembros por V , tenemos que:
HV = V D2 .
Llamando



vi = 


v1i
v2i
.
.
vni






a cada columna de la matriz V , podemos escribir:
Hvi = d2i vi ,
7
es decir,

(Hv1


Hv2 ...Hvn ) = 


v11
.
.
.
vn1
v12
v22
.
.
vn2
.
.
v1n
.
.
.
.
vnn
.
= d21 v1 , ..., d2n vn






d21
0
.
.
0
0
d22
.
0
.
.
.
.
.
.
0
0
0
.
.
d2n



=


con d21 ≥ d22 ≥ ... ≥ d2n .
Estas ecuaciones definen los valores propios de At A, que son los elementos de la
diagonal D2 , y vienen dados por d2i con i = 1, .., n. Las columnas de V son los
vectores propios (o autovectores) de At A, luego los valores singulares de A son
las raı́ces cuadradas de los valores propios de At A. Como At A es una matriz
simétrica y definida positiva entonces los valores propios son reales y positivos,
y entonces los valores singulares también son reales y positivos.
Ası́ escrito tenemos que la última columna de la matriz V corresponde al
valor singular menor de la matriz A.
Proposición 1 Dada la matriz A de m × n, tal que m ≥ n, hallar x, de dimensión n, tal que minimice kAxk sujeto a la condición kxk = 1. La solución
es la última columna de la matriz V , donde A = U DV t es la descomposición
SVD de la matriz A.
Desmostración: Sea A de m × n, podemos realizamos la descomposición SVD,
entonces A = U DV t . Luego queremos minimizar: kAxk = kU DV t xk Se tiene
que:
U DV t x = DV t x
pues U es ortogonal y preserva la norma, luego queremos minimizar kDV t xk
bajo la condición kV t xk = 1, esto es cierto pues se cumple que: kV t xk =
t
(V t x) (V t x) = kxk = 1.
Sea y = V t x, hay que minimizarkDyk bajo la condición kyk = 1,
donde la matriz diagonal


d1 0 . . 0
 0 d2 0 . 0 


.
. 
D=
 .

 .
.
. 
0
. . 0 dn
es tal que d1 ≥ d2 ≥ ... ≥ dn , o sea,

d1 0 . . 0
 0 d2 0 . 0

 .
.
.

 .
.
.
0
. . 0 dn






8
y1
y2
.
.
yn


 
 
=
 
 
d1 y1
d2 y2
.
.
dn yn






tal que
q
y12 + ... + yn2 = 1.
 
0
 0 
n
X
 
2

Como kDyk =
d2i yi2 ⇒ y = 
 .  es el vector que minimiza la norma
 . 
i=1
1
kDyk, entonces

  

v1n
0
v11 v12 . . v1n

  
 .
v22
. 
 0   . 






.
.
.  .  =  . 
x = V y = .

 .
.
.
.  .   . 
vnn
1
vn1 vn2
vnn
que es la última columna de la matriz V.
B.
RANSAC
El algoritmo de RANSAC incluye los siguientes términos:
: proporción de outliers que se estima existien en el modelo (este parámetro luego se irá re-estimando en forma adaptativa).
t: umbral de clasificación de puntos como inliers o outliers
T : tamaño del conjunto de consenso, es decir T = #S
N : número de iteraciones o muestras aleatorias para ensayar el modelo.
B.1.
Parámetro t
Si definimos α como la probabilidad de que un punto dado sea inlier, es
decir: P (x es inlier) = α lo que se busca es encontrar un t tal que satisfaga esta
ecuación.
Supongamos que los errores de medición, e, siguen
una distribución normal
con media 0 y varianza σ 2 , es decir e ∼ N 0, σ 2 , entonces se puede calcular t,
a partir de e. Con estas consideracioes, el cuadrado de la distancia ortogonal,
d2⊥ , es la suma de variables aleatorias gaussianas, y por lo tanto,
d2⊥ ∼ χ2n
donde χ2n es la distribución Chi-cuadrado con n grados de libertad, y n es la
codimensión del modelo (en una homografı́a planar es n = 2). Para una lı́nea la
codimensión es 1 (sólo es considerada la distancia ortogonal a la lı́nea).
9
Entonces, como:
P χ2n ≤ k
2
= Fn k
2
Zk
2
=
χ2n (ζ) dζ = α
0
tomamos
t2 = Fn−1 (α) σ 2
En resumen, consideramos que un par de puntos correspondientes se clasifica
como:
inlier si d2⊥ < t2
outlier si d2⊥ ≥ t2
En general se pide α = 0,95, o lo que es lo mismo P (x es inlier) = 0,95; es
decir que la probabilidad de rechazar un punto que es inlier sea 0,05.
En el caso de la estimación de una recta de ajuste la codimensión será n = 1,
mientras que en el caso de la homografı́a la codimensión será n = 2. En el
siguiente cuadro se muestran los valores del umbral t2 para α = 0,95, para cada
valor de n, dependiendo del error de medición σ.
n
1
2
3
B.2.
modelo
recta, F
homografı́a, cámara
tensor
umbral t2
3,84σ 2
5,99σ 2
7,81σ 2
Parámetro T
Para determinar un tamaño válido para el conjunto de consenso S, se puede
pensar que deberı́a ser similar al número de inliers que se cree hay inicialmente
en los datos. Entonces, si es la proporción de outliers y n es la cantidad total
de datos, definimos T de la siguiente manera:
T = (1 − )N
B.3.
Parámetro N
Para asegurar, con probabilidad p, que al menos una muestra aleatoria de s
puntos está libre de outliers, se debe obtener un N que sea la cantidad de muestras aleatorias a tomar, por lo ranto, la cantidad de iteraciones del algoritmo.
Vamos a obtener N de la siguiente forma:
Definimos
α = P (el punto seleccionado es inlier) ,
entonces
= 1 − α = P (el punto seleccionado es outlier)
αs = P (los s puntos sean inliers)
10
Recordemos que s es 2 en el caso de que el modelo sea una recta y 4 en el caso
de una homografı́a planar. Luego
1 − αs = P (haya uno o más outliers entre los s puntos) .
Con en N selecciones se tiene:
N
(1 − αs )
= P (en N selecciones de s puntos haya outliers en todas ellas) .
Si
p = P (en N selecciones de s puntos, al menos una no tenga outliers)
entonces
1 − p = P (en N selecciones de s puntos, todas tengan outliers)
entonces se tiene que:
N
1 − p = (1 − αs ) .
Tomando logaritmos:
log (1 − p) = N log (1 − αs ) ,
luego
N=
log (1 − p)
log (1 − p)
=
s
s
log (1 − α )
log (1 − (1 − ) )
(6)
En resumen, N es el número de selecciones que se require para asegurar,
con probabilidad p, que al menos una muestra no tiene outliers para un dado
tamaño de muestra s y una dada proporción de outliers .
B.3.1.
Determinación adaptativa del parámetro N
Si asumimos ahora desconocido, para determinar N se puede proceder de
la siguiente forma.
Algoritmo 4 Algoritmo adaptativo para determinar N
1. Iniciar = 0,5 y N = ∞.
2. Iniciar un contador de iteraciones (o muestras) i = 0.
3. Repetir, mientras i < N :
a) Tomar una muestra aleatoria y contar la cantidad outliers k.
b) Asignar =
k
N.
c) Calcular N usando p y , en base a la ecuación (6).
d) Incrementar i.
11
B.3.2.
Función de costo robusta
P
En vez de minimizar la función de costo C = i d2⊥i sobre los inliers otra
posibilidad serı́a minimizar una función de costo robusta que incluya a todos
los datos. Esta función de costo viene dada por:
X
D=
γ (d⊥i )
i
donde
γ (d) =
d2
t2
12
si
si
d2 < t2
d2 ≥ t2
Descargar