Warum sollten Sie den Datensatz normalisieren, bevor Sie die direkte lineare Transformation anwenden?


9

Die direkte lineare Transformation (kurz DLT) ist eine Methode zur Homographieschätzung. Sie löst das überbestimmte lineare System über SVD , um eine Lösung unter der Bedingung . Tatsächlich findet es die kleinste quadratische Lösung, die \ | Ah - b \ | minimiert .

Ah=b
hh=1Ahb

Ich verstehe die Grundidee dieses Algorithmus, aber es wird empfohlen, den Datensatz zu normalisieren, bevor DLT darauf angewendet wird. Hier finden Sie eine Einführung in die Normalisierung. Es wird gelehrt, dass die Datennormalisierung für DLT wichtig ist. Ohne Normalisierung sind die Ergebnisse von DLT nicht stabil.

Ich wundere mich warum? Nur weil DLT das Lösen des linearen Systems mit SVD beinhaltet und A singulär sein könnte?

Antworten:


12

Die Normalisierung ist im Grunde eine Vorbedingung , um die Bedingungsnummer der Matrix A zu verringern A(je größer die Bedingungsnummer ist, desto näher ist die Matrix an der singulären Matrix).

Die Normalisierungstransformation wird im Fall der Homographieschätzung auch durch eine Matrix dargestellt, und diese ist zufällig als gute Vorkonditionierungsmatrix verwendbar. Der Grund dafür ist ausführlicher und wird kurz im H & Z-Buch (4.4.4, S. 107: Warum ist Normalisierung wichtig? ) Oder ausführlicher im Artikel " Zur Verteidigung des Acht-Punkte-Algorithmus " erläutert .

Einfach ausgedrückt besteht die Matrix aus Produkten von Bildkoordinaten, die unterschiedliche Maßstäbe haben können. Wenn sich die Skala um den Faktor , unterscheiden sich die Produkte um den Faktor .10 10 2A10102

Die Quell- und Zielkoordinatendaten sind normalerweise verrauscht . Ohne Normalisierung könnten die Daten von der Quelle eine um zwei Größenordnungen größere Varianz aufweisen als vom Ziel (oder umgekehrt).

Die Homographieschätzung findet normalerweise Parameter im Sinne der kleinsten Quadrate - daher wird die beste statistische Schätzung nur gefunden, wenn die Varianzen der Parameter gleich sind (oder vorher bekannt sind, aber es ist praktischer, nur die Eingabe zu normalisieren).

Direkte Löser mögen keine schlecht skalierten Probleme, da numerische Instabilitäten auftreten (z. B. führt das Teilen einer sehr großen Zahl durch eine sehr kleine Zahl leicht zu einem numerischen Überlauf).

Iterative Löser kämpfen mit schlecht konditionierten Matrizen, indem sie mehr Iterationen benötigen.

Die Normalisierung ist daher nicht nur für die numerische Stabilität wichtig, sondern auch für eine genauere Schätzung bei Vorhandensein von Rauschen und einer schnelleren Lösung (im Fall eines iterativen Lösers).


Und weiter frage ich mich, warum die vorkonditionierte Matrix weniger singulär ist als zuvor? Durch die Standardisierung wird die Bedingungsnummer der vorkonditionierten Matrix reduziert.
Avocado

1
Weil die Fehler in den Daten die Ergebnisse nicht so stark beeinflussen. Stellen Sie sich vor, Sie schätzen die Position des Zeigers auf der Uhr um zwei Punkte auf dem Zifferblatt. Befindet sich ein Punkt sehr nahe am Zentrum und der andere am Rand, wirken sich Schwankungen in der Position des Punktes in der Nähe des Zentrums erheblich auf das Ergebnis aus, während der Punkt am Rand die Handposition geringfügig beeinflusst. Bei der Normalisierung werden im Grunde beide Punkte an der Grenze platziert, wodurch die Lösung stabiler und weiter von der Mitte des Zifferblatts (dem Singularitätspunkt) entfernt wird.
Libor

2

Der Wikipedia-Artikel besagt:

"Was das Problem der direkten linearen Transformation auszeichnet ... ist die Tatsache, dass sich die linke [X] und rechte [AY] Seite der Definitionsgleichung [X = AY] durch einen unbekannten multiplikativen Faktor unterscheiden können, der von k abhängig ist."

In den obigen X sind A, Y Matrizen.

Um zu vermeiden, dass Sie den Faktor schätzen müssen, normalisieren Sie einfach alle Daten, die Sie haben.


Das klingt nicht richtig ... Wenn wir normalisieren könnten, um den Faktor unwichtig zu machen, könnte das Problem mit der regulären Methode gelöst werden . A=XYT(YYT)1
Michael Litvin

1

Es ist eine Frage der numerischen Genauigkeit. Durch Normalisieren des Datensatzes zentrieren Sie Ihre Daten und geben ihr die Einheitsvarianz. Diese Bedingungen werden dann vom Löser besser behandelt.


Durch die besser vom Solver behandelt , meinst du , wenn ich diese Art von linearem System über löse SVD , soll ich den Datensatz immer normalisieren?
Avocado

Beachten Sie, dass die Normalisierung sogar die SVD-Berechnung beeinflusst (mehr stabil). Sie sollten dann kleinere Verhältnisse zwischen singulären Werten erhalten. Beachten Sie auch, dass der Datensatz normalerweise verrauscht ist und es besser ist, für alle Punkte die gleiche Varianz zu haben, um eine genauere Schätzung zu erhalten.
Libor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.