En aras de la integridad, SVD es la factorización de una matriz [matemática] m \ veces n [/ matemática] [matemática] A [/ matemática] tal que [matemática] A = USV ^ T [/ matemática] tal que [matemática ] U [/ matemática] es [matemática] m \ veces m [/ matemática] ortonormal, [matemática] S [/ matemática] es [matemática] m \ veces n [/ matemática] diagonal y [matemática] V [/ matemática] es [matemática] n \ veces n [/ matemática] ortonormal.
Antes de discutir las aplicaciones de SVD a la geometría computacional, veamos cómo se puede usar para dar una solución de mínimos cuadrados de un conjunto de ecuaciones lineales sobre-restringidas, porque la mayoría de las aplicaciones se basan en ese truco.
Suponga que tiene un sistema [math] A \ mathbf {x} = 0 [/ math], donde [math] A [/ math] es [math] m \ times n [/ math] y [math] \ mathbf {x } [/ math] es un vector n-dimensional. Si [math] A = USV ^ T [/ math] es la SVD de [math] A [/ math], la solución de mínimos cuadrados del sistema es la columna de [math] V [/ math] correspondiente a la diagonal más pequeña entrada en [matemáticas] \ Sigma [/ matemáticas]. Para obtener detalles, incluida la prueba, consulte Descomposición de valores singulares y Página en utah.edu.
Teniendo esto en cuenta, veamos algunas aplicaciones:
- ¿Cómo es tomar Math 4330 (Álgebra lineal de honores) en Cornell?
- Cómo encontrar el producto cruzado de dos vectores en C ++ usando una función
- ¿Cuáles son las aplicaciones de la cuantización vectorial?
- ¿Cuál es la mejor manera de comprender intuitivamente la rápida transformación de Fourier de un grupo (simétrico)?
- Estoy aprendiendo que hay muchas nociones diferentes de campos en matemáticas, como los campos de Galois, los campos escalares, los campos finitos, etc. ¿Están todas estas nociones interconectadas de alguna manera?
Encontrar homografía
Una homografía es una relación que mapea puntos de un plano a otro. Si tiene 4 correspondencias punto a punto no colineales, puede resolver las 8 ecuaciones y obtener la homografía exactamente, pero necesita SVD si tiene más de 4 correspondencias. Este suele ser el caso, por ejemplo, cuando utiliza alguna técnica de coincidencia de características para obtener correspondencias entre dos imágenes.
Suponga que [math] \ mathbf {x_i} [/ math] y [math] \ mathbf {x_i} ‘[/ math] son sus correspondencias de puntos en coordenadas homogéneas. Desea encontrar una homografía [math] H [/ math] tal que [math] \ mathbf {x} ‘= H \ mathbf {x} [/ math]. Suponer
[matemáticas]
H = \ begin {bmatrix}
h_1 y h_2 y h_3 \\
h_4 y h_5 y h_6 \\
h_7 y h_8 y h_9
\ end {bmatrix}
[/matemáticas]
Para cada punto, escribir la multiplicación y dividir la primera y segunda ecuación por la tercera ecuación te da
[matemáticas] -h_1x-h_2y-h_3 + (h_7x + h_8y + h_9) x ‘= 0 [/ matemáticas]
[matemáticas] -h_4x-h_5y-h_6 + (h_7x + h_8y + h_9) y ‘= 0 [/ matemáticas]
Recuerde, estas ecuaciones son para una sola correspondencia, y tenemos un montón de esas correspondencias. Enemigos cada uno podemos escribir, en la forma familiar de matriz,
[math] A_i \ mathbf {h} = \ mathbf {0} [/ math]
Donde [math] A_i [/ math] y [math] \ mathbf {h} [/ math] se construyen a partir de las ecuaciones anteriores. Los [math] A_i [/ math] s para todas las correspondencias se pueden apilar en hileras y se puede construir un gran problema SVD, que usted sabe cómo resolver.
Ajuste de curvas
La sección sobre la resolución de ecuaciones lineales excesivamente restringidas también mostró implícitamente cómo ajustar una línea a un conjunto de puntos. Pero también puede ajustar cónicas como elipse, círculo e hipérbola a un conjunto de puntos usando SVD. Todas las cónicas se pueden representar mediante una curva cuadrática,
[matemáticas] ax ^ 2 + 2bxy + cy ^ 2 + dx + ef + g = 0 [/ matemáticas], que puede escribirse como
[matemáticas] A_i \ mathbf {q} = 0 [/ matemáticas]
[matemáticas] A_i = [x ^ 2 \ quad 2xy \ quad y ^ 2 \ quad x \ quad y \ quad 1] ^ T [/ matemáticas]
[math] \ mathbf {q} = [a \ quad b \ quad c \ quad d \ quad e \ quad f \ quad g] ^ T [/ math].
Apila los [math] A_i [/ math] s uno encima del otro y tienes un problema SVD. Por supuesto, si está buscando una cónica en particular, tendrá que filtrar la [matemática] q [/ matemática] resultante al verificar las condiciones mencionadas en la Curva Cuadrática – de Wolfram MathWorld. Si está tratando de encontrar puntos suspensivos en una imagen y tiene muchos puntos de detección de bordes, también debe agrupar este método con RANSAC para obtener detecciones robustas.
Rotación entre dos conjuntos de puntos.
Suponga que tiene dos conjuntos de puntos 3D y desea encontrar la rotación y la traslación que mejor alinean estos dos conjuntos de puntos en un sentido de mínimos cuadrados. Si también recibe las correspondencias de puntos, es decir, información sobre qué punto del primer conjunto se transforma en qué punto del segundo conjunto, puede usar SVD para obtener la matriz de rotación.
Suponga que los dos conjuntos son las matrices [matemáticas] A [/ matemáticas] y [matemáticas] B [/ matemáticas] en las que cada punto es una columna y los puntos se ordenan según la correspondencia. Suponga que [math] \ mu_a [/ math] y [math] \ mu_b [/ math] son los centros de masa (media) de los dos conjuntos de puntos. Entonces sí
[math] W = (A- \ mu_a) \ times (B – \ mu_b) ^ T [/ math] es la matriz de covarianza cruzada y si
[matemáticas] W = USV ^ T [/ matemáticas] es su SVD,
[matemática] R = UV ^ T [/ matemática] es la matriz de rotación óptima en el sentido de mínimos cuadrados. La traducción correspondiente es
[matemáticas] T = \ mu_a – R \ mu_B [/ matemáticas].
Este enfoque está en el corazón de un método iterativo robusto llamado Iterative Closest Point (ICP), que no asume que se dan las correspondencias de puntos. Utiliza algunas estrategias para inferir correspondencias y resuelve la rotación y la traducción utilizando el método descrito anteriormente.
Para pruebas, consulte el Apéndice C de Una nueva técnica flexible para la calibración de la cámara.
Como se describe en ese documento, SVD también se puede utilizar para determinar los parámetros intrínsecos de una cámara a partir de correspondencias de puntos 2D-3D (a menudo obtenidas mediante el uso de cuadros de ajedrez).
También es muy simple aproximar una matriz 3 × 3 [matemática] Q [/ matemática] con una matriz de rotación [matemática] R [/ matemática]: [matemática] R = UV ^ T [/ matemática], donde [matemática] Q = USV ^ T [/ matemáticas]. En la práctica, si desea asegurarse de que [math] det (R) = +1 [/ math], debe usar [math] R = UMV ^ T [/ math] donde
[matemáticas] M =
\ begin {bmatrix}
1 y 0 y 0 \\
0 y 1 y 0 \\
0 y 0 y det (UV ^ T)
\ end {bmatrix}
[/matemáticas]