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