Pourquoi normaliser l'ensemble de données avant d'appliquer la transformation linéaire directe


9

La transformation linéaire directe (DLT pour faire court) est une méthode d'estimation d'homographie, elle résout le système linéaire surdéterminé via SVD

Ah=b
trouver une solution h sous contrainte h=1. En fait, il trouve la solution la moins carrée qui minimise.Ahb

Je comprends l'idée de base de cet algorithme, mais il est recommandé de normaliser l'ensemble de données avant d'y appliquer DLT, et voici une introduction sur la façon de procéder à la normalisation. Il est enseigné que la normalisation des données est importante pour le DLT, sans normalisation, les résultats du DLT ne sont pas stables.

Je me demande pourquoi? Tout simplement parce que DLT implique la résolution du système linéaire en utilisant SVD et pourrait être singulier?A

Réponses:


12

La normalisation est fondamentalement un préconditionnement pour diminuer le nombre de conditions de la matrice (plus le nombre de conditions est grand, plus la matrice est proche de la matrice singulière).A

La transformée de normalisation est également représentée par une matrice dans le cas de l'estimation d'homographie, ce qui peut être utilisé comme une bonne matrice de préconditionneur. La raison en est plus élaborée et est expliquée brièvement dans le livre H&Z (4.4.4, p. 107: Pourquoi la normalisation est-elle essentielle? ) Ou plus en détail dans l'article " En défense de l'algorithme à huit points" ".

En termes simples, la matrice est constituée de produits de coordonnées d'image qui peuvent avoir des échelles différentes. Si l'échelle diffère d'un facteur , les produits diffèrent d'un facteur .A10102

Les données de coordonnées source et cible sont généralement bruyantes . Sans normalisation, les données de la source pourraient avoir une variance de deux ordres de grandeur plus grande que celle de la cible (ou vice versa).

L'estimation d'homographie trouve généralement des paramètres dans le sens des moindres carrés - par conséquent, la meilleure estimation statistique n'est trouvée que si les variances des paramètres sont les mêmes (ou connues à l'avance, mais il est plus pratique de normaliser simplement l'entrée).

Les solveurs directs n'aiment pas les problèmes mal mis à l'échelle car des instabilités numériques apparaissent (par exemple, la division d'un très grand nombre par un très petit nombre conduit facilement à un débordement numérique).

Les solveurs itératifs luttent avec des matrices mal conditionnées en nécessitant plus d'itérations.

La normalisation est donc essentielle non seulement pour la stabilité numérique, mais aussi pour une estimation plus précise en présence de bruit et une solution plus rapide (en cas de solveur itératif).


Et puis je me demande pourquoi la matrice préconditionnée est moins singulière qu'auparavant? En standardisant , le numéro de condition de la matrice préconditionnée diminuera?
avocat

1
Parce que les erreurs dans les données n'affecteront pas beaucoup les résultats. Imaginez l'estimation de la position de la main sur l'horloge par deux points sur le cadran de l'horloge. Si un point est très près du centre et que l'autre est sur la bordure, les fluctuations de la position du point près du centre affectent le résultat de manière significative tandis que le point sur la bordure affecte légèrement la position de la main. La normalisation consiste essentiellement à placer les deux points sur la frontière, ce qui rend la solution plus stable et l'éloigne du centre du cadran d'horloge (le point de singularité).
Libor

2

L'article de Wikipedia déclare:

"Ce qui rend le problème de transformation linéaire directe distinct ... c'est le fait que les côtés gauche [X] et droit [AY] de l'équation de définition [X = AY] peuvent différer d'un facteur multiplicatif inconnu qui dépend de k"

Dans les X, A, Y ci-dessus sont des matrices.

Donc, pour éviter d'avoir à estimer le facteur, il vous suffit de normaliser toutes les données dont vous disposez.


Cela ne semble pas juste ... Si nous pouvions normaliser pour rendre le facteur sans importance, le problème pourrait être résolu en utilisant une méthode régulière de A=XYT(YYT)1.
Michael Litvin du

1

C'est une question de précision numérique. En normalisant l'ensemble de données, vous centrez vos données et leur donnez la variance unitaire. Ces conditions sont alors mieux gérées par le solveur.


Par mieux géré par le solveur , voulez-vous dire que lorsque je résous ce type de système linéaire via SVD , je devrais toujours normaliser l'ensemble de données?
avocat

Notez que la normalisation affecte même le calcul SVD (moe stable). Vous devriez alors obtenir des rapports plus petits entre les valeurs singulières. Notez également que l'ensemble de données est généralement bruyant et qu'il est préférable d'avoir la même variance pour tous les points pour obtenir une estimation plus précise.
Libor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.