Perché normalizzare il set di dati prima di applicare la Trasformazione lineare diretta


9

La trasformazione lineare diretta (in breve DLT) è un metodo di stima dell'omografia, risolve il sistema lineare sovradeterminato tramite SVD

UNh=B
per trovare una soluzione h sotto vincolo h=1. In realtà trova la soluzione meno quadrata che minimizza.UNh-B

Comprendo l'idea di base di questo algoritmo, ma si consiglia di normalizzare il set di dati prima di applicare DLT su di esso, ed ecco un'introduzione su come eseguire la normalizzazione. Viene insegnato che la normalizzazione dei dati è importante per la DLT, senza la normalizzazione i risultati della DLT non sono stabili.

Mi chiedo perché? Solo perché DLT comporta la risoluzione del sistema lineare usando SVD e UN potrebbe essere singolare?

Risposte:


12

La normalizzazione è fondamentalmente un prerequisito per ridurre il numero della condizione della matrice UN (maggiore è il numero della condizione, più la matrice è vicina alla matrice singolare).

La trasformazione normalizzante è anche rappresentata da una matrice nel caso della stima dell'omografia, e ciò sembra essere utilizzabile come una buona matrice di precondizionamento. Il motivo per cui è più elaborato è spiegato brevemente nel libro di H&Z (4.4.4, p. 107: Perché è essenziale la normalizzazione? ) O più dettagliatamente nel documento " In difesa dell'algoritmo a otto punti ".

In parole povere, la matrice costituita da prodotti di coordinate di immagine che possono avere una scala diversa. Se la scala differisce di un fattore , i prodotti differiscono di un fattore .UN10102

I dati delle coordinate di origine e di destinazione sono generalmente rumorosi . Senza la normalizzazione, i dati dalla sorgente potrebbero avere una variazione maggiore di due ordini di grandezza rispetto al target (o viceversa).

La stima dell'omografia di solito trova i parametri in un senso dei minimi quadrati - quindi la migliore stima statistica si trova solo se le varianze dei parametri sono uguali (o conosciute in anticipo, ma è più pratico solo per normalizzare l'input).

Ai solutori diretti non piacciono i problemi scarsamente dimensionati perché compaiono instabilità numeriche (ad esempio la divisione di un numero molto grande per un numero molto piccolo porta facilmente a un overflow numerico).

I risolutori iterativi lottano con matrici mal condizionate necessitando di più iterazioni.

Quindi la normalizzazione è essenziale non solo per la stabilità numerica, ma anche per una stima più accurata in presenza di rumore e soluzione più rapida (in caso di risolutore iterativo).


E inoltre mi chiedo perché la matrice precondizionata sia meno singolare di prima? Dalla standardizzazione , il numero di condizionamento della matrice Precondizionato ridurrà?
avocado,

1
Perché gli errori nei dati non influenzeranno molto i risultati. Immagina di stimare la posizione della lancetta sull'orologio di due punti sul quadrante. Se un punto è molto vicino al centro e l'altro è sul bordo, le fluttuazioni nella posizione del punto vicino al centro influiscono in modo significativo sul risultato, mentre il punto sul bordo influenza leggermente la posizione della mano. La normalizzazione sta fondamentalmente mettendo entrambi i punti sul bordo, il che rende la soluzione più stabile e la allontana dal centro del quadrante (il punto di singolarità).
Libor,

2

L'articolo di Wikipedia afferma:

"Ciò che distingue il problema della trasformazione lineare diretta ... è il fatto che i lati sinistro [X] e destro [AY] dell'equazione di definizione [X = AY] possono differire di un fattore moltiplicativo sconosciuto che dipende da k"

Nelle precedenti X, A, Y sono matrici.

Quindi, per evitare di dover stimare il fattore, devi semplicemente normalizzare tutti i dati che hai.


Questo non suona bene ... Se potessimo normalizzare per rendere il fattore irrilevante, il problema potrebbe essere risolto usando il metodo regolare di UN=XYT(YYT)-1.
Michael Litvin,

1

È una questione di precisione numerica. Normalizzando il set di dati, si centrano i dati e si fornisce la varianza dell'unità. Queste condizioni sono quindi meglio gestite dal solbver.


Se gestito meglio dal solutore , intendi quando risolvo questo tipo di sistema lineare tramite SVD , dovrei sempre normalizzare il set di dati?
avocado,

Si noti che la normalizzazione influisce anche sul calcolo SVD (moe stable). Dovresti quindi ottenere rapporti più piccoli tra valori singolari. Inoltre, il set di dati è generalmente rumoroso ed è meglio avere la stessa varianza per tutti i punti per ottenere una stima più accurata.
Libor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.