¿Por qué normalizar el conjunto de datos antes de aplicar la transformación lineal directa?

9

La transformación lineal directa (DLT para abreviar) es un método de estimación de homografía, resuelve el sistema lineal sobredeterminado a través de SVD

Ah=b
para encontrar una solución h bajo restricción h=1. En realidad, encuentra la solución menos cuadrada que minimiza.Ahb

Entiendo la idea básica de este algoritmo, pero se recomienda normalizar el conjunto de datos antes de aplicar DLT, y aquí hay una introducción sobre cómo hacer la normalización. Se dice que la normalización de datos es importante para DLT, sin normalización los resultados de DLT no son estables.

¿Me pregunto porque? ¿Solo porque DLT implica resolver el sistema lineal usando SVD y podría ser singular?A

aguacate
fuente

Respuestas:

12

La normalización es básicamente un preacondicionamiento para disminuir el número de condición de la matriz (cuanto mayor es el número de condición, más cerca está la matriz de la matriz singular).A

La transformación de normalización también está representada por una matriz en el caso de la estimación de homografía, y esto resulta ser utilizable como una buena matriz de preacondicionador. La razón es que es más elaborado y se explica brevemente en el libro de H&Z (4.4.4, p. 107: ¿Por qué es esencial la normalización? ) O con más detalle en el documento " En defensa del algoritmo de ocho puntos ".

En pocas palabras, la matriz consiste en productos de coordenadas de imagen que pueden tener diferentes escalas. Si la escala difiere en un factor de , los productos difieren en un factor de .A10102

Los datos de coordenadas de origen y destino suelen ser ruidosos . Sin normalización, los datos de la fuente pueden tener una variación mayor de dos órdenes de magnitud que la del objetivo (o viceversa).

La estimación de la homografía generalmente encuentra parámetros en un sentido de mínimos cuadrados; por lo tanto, la mejor estimación estadística se encuentra solo si las variaciones de los parámetros son las mismas (o conocidas de antemano, pero es más práctico solo para normalizar la entrada).

A los solucionadores directos no les gustan los problemas mal escalados porque aparecen inestabilidades numéricas (por ejemplo, dividir un número muy grande por un número muy pequeño conduce fácilmente a un desbordamiento numérico).

Los solucionadores iterativos luchan con matrices mal condicionadas al necesitar más iteraciones.

Por lo tanto, la normalización es esencial no solo para la estabilidad numérica, sino también para una estimación más precisa en presencia de ruido y una solución más rápida (en el caso de un solucionador iterativo).

Libor
fuente
Y además, me pregunto por qué la matriz preacondicionada es menos singular que antes. Al estandarizar , ¿se reducirá el número de condición de la matriz preacondicionada?
aguacate
1
Porque los errores en los datos no afectarán tanto los resultados. Imagine estimar la posición de la manecilla en el reloj por dos puntos en la esfera del reloj. Si un punto está muy cerca del centro y el otro está en el borde, las fluctuaciones en la posición del punto cerca del centro afectan el resultado significativamente, mientras que el punto en el borde afecta levemente la posición de la mano. La normalización consiste básicamente en colocar ambos puntos en el borde, lo que hace que la solución sea más estable y la coloca más lejos del centro de la esfera del reloj (el punto de singularidad).
Libor
2

El artículo de Wikipedia dice:

"Lo que distingue el problema de la transformación lineal directa ... es el hecho de que los lados izquierdo [X] y derecho [AY] de la ecuación de definición [X = AY] pueden diferir en un factor multiplicativo desconocido que depende de k"

En el anterior X, A, Y son matrices.

Entonces, para evitar tener que estimar el factor, simplemente normalice todos los datos que tenga.

Tom Kealy
fuente
Esto no suena bien ... Si pudiéramos normalizar para que el factor no sea importante, el problema podría resolverse utilizando el método regular de . A=XYT(YYT)1
Michael Litvin
1

Es una cuestión de precisión numérica. Al normalizar el conjunto de datos, centra sus datos y le da variación de unidad. Estas condiciones son mejor manejadas por el solucionador entonces.

sansuiso
fuente
Por mejor manejado por el solucionador , ¿quiere decir que cuando resuelvo este tipo de sistema lineal a través de SVD , siempre debería normalizar el conjunto de datos?
aguacate
Tenga en cuenta que la normalización afecta incluso el cálculo SVD (moe estable). Entonces debería obtener proporciones más pequeñas entre valores singulares. También tenga en cuenta que el conjunto de datos suele ser ruidoso y es mejor tener la misma variación para todos los puntos para obtener una estimación más precisa.
Libor