Ich verwende python / numpy / scipy, um diesen Algorithmus für die Ausrichtung zweier digitaler Höhenmodelle (DEMs) basierend auf Geländeaspekt und -neigung zu implementieren:
"Ko-Registrierung und Bias-Korrekturen von Satelliten-Höhendatensätzen zur Quantifizierung der Gletscher-Dickenänderung", C. Nuth und A. Kääb, doi: 10.5194 / tc-5-271-2011
Ich habe Dinge ein Framework eingerichtet, aber die Qualität der Anpassung von scipy.optimize.curve_fit ist schlecht.
%Vor%
Hier ist die Eignung für meine Daten, die anfangs aus ~ 2 Millionen Punkten bestehen, aber ich habe zufällig zu Testzwecken / Plotting-Zwecken Proben genommen:
[-14.9639559 216.01093596 -41.96806735]
Da gibt es viele Daten für eine gute Anpassung, aber das Ergebnis von curve_fit ist schlecht. Wenn ich mit synthetischen Daten arbeite, bekomme ich einen schönen Sitz:
ursprüngliche Eingangsparameter [20.0, 130.0, -3.0]
Ergebnis von curve_fit [-19.66719631 -49.6673076 -3.12198723]
Ich bin mir nicht sicher, ob das etwas mit maskierten Arrays zu tun hat, eine Einschränkung von curve_fit oder ob ich einfach etwas Einfaches übersehen habe. Danke für Anregungen.
=========================
Bearbeiten 9/4/13 16:30 PDT
Wie von @Evert und anderen vorgeschlagen, hing das Problem definitiv mit Ausreißern zusammen. Ich war in der Lage, nach dem Entfernen von Ausreißern eine viel bessere Passform zu erhalten. Wenn ich meinen alten Code betrachte, scheint es, dass ich die mediane absolute Abweichung für jeden Aspekt berechnet habe und dann alles außerhalb von 2 * mad vor der Anpassung entfernt habe.
Ich habe bereits im November 2012 ein paar zusätzliche Pläne erstellt:
Aber wenn ich diese wieder ansehe, bin ich fast sicher, dass sie für verschiedene Eingabedaten generiert wurden. Das ist alles, was ich im Moment finden kann, deshalb nehme ich sie hier als Beispiel für einen Fall mit voreingenommenem Sampling auf. Diese Methode für die DEM-Ausrichtung muss in solchen Fällen fehlschlagen - und sie hat nichts mit den Fähigkeiten von scipy zur Kurvenanpassung zu tun.
Ich habe schließlich einen anderen Ansatz für die Ausrichtung entwickelt, der die normalisierte Kreuzkorrelation, Subpixel-Verfeinerung und vertikale Offset-Entfernung für zwei maskierte 2D-numpy-Arrays beinhaltet. Es ist schneller und liefert konsistent bessere Ergebnisse. Obwohl dieser Ansatz von einem Iterative Closest Point (ICP) -Tool (pc_align) abgelöst wurde, das von Oleg Alexandrow als Teil des NASA Ames Stereo-Pipeline .
Vielen Dank für all Ihre Antworten und ich entschuldige mich dafür, dass ich diese Frage aufgegeben habe.