Wenn Sie die Lösung für ein Problem finden möchten, besteht der erste Schritt darin, dieses Problem mathematisch auszudrücken, und Sie können dann vorhandene mathematische Werkzeuge verwenden, um eine Lösung für Ihre Gleichungen zu finden. Interessante Probleme können jedoch gewöhnlich auf viele verschiedene mathematische Arten ausgedrückt werden, von denen jeder zu einer etwas anderen Lösung führen kann. Es braucht dann Arbeit, um die verschiedenen Methoden zu analysieren, um zu verstehen, welche die stabilste/genaueste/effizienteste/etc Lösung bietet.
Im Fall des PnP-Problems wollen wir die Kamera-Pose finden, die Assoziationen zwischen 3D-Punkten und ihrer Projektionen-Bildebene aufweist.
Eine erste Möglichkeit, dieses Problem mathematisch auszudrücken, besteht darin, es als ein lineares Problem der kleinsten Quadrate zu interpretieren. Dieser Ansatz ist als DLT-Ansatz bekannt und er ist interessant, da lineare Kleinste-Quadrate eine Lösung in geschlossener Form haben, die robust unter Verwendung der Singulärwertzerlegung gefunden werden kann. Dieser Ansatz geht jedoch davon aus, dass die Kamerapose P 12 Freiheitsgrade hat, wenn sie wirklich nur 6 hat (3 für die 3D-Rotation plus 3 für die 3D-Translation). Um aus dem Ergebnis dieses Ansatzes eine 6DOF-Kamerapose zu erhalten, ist eine Approximation erforderlich (die nicht durch die lineare Kostenfunktion des DLT abgedeckt ist), was zu einer ungenauen Lösung führt. Eine zweite Möglichkeit, das PnP-Problem mathematisch auszudrücken, besteht darin, den geometrischen Fehler als eine Kostenfunktion zu verwenden und die Kamerapose zu finden, die den geometrischen Fehler minimiert.
Da der geometrische Fehler nichtlinear ist, wird bei diesem Ansatz die Lösung mit iterativen Solvern wie dem Levenberg Marquardt-Algorithmus geschätzt. Solche Algorithmen können die 6 Freiheitsgrade der Kamerapose berücksichtigen, was zu genauen Lösungen führt. Da es sich jedoch um iterative Ansätze handelt, müssen sie mit einer ersten Schätzung der Lösung versehen werden, die in der Praxis häufig mit dem DLT-Ansatz erhalten wird.
Nun, um den Titel Ihrer Frage zu beantworten: sicher, der DLT-Algorithmus gibt die optimale Kamera Extrinsik, aber es ist optimal nur im Sinne der linearen Kostenfunktion durch den DLT-Algorithmus gelöst. Im Laufe der Jahre haben Wissenschaftler komplexere Kostenfunktionen gefunden, die zu genaueren Lösungen führen, die aber auch schwieriger zu lösen sind.
Ich denke, es ist üblich, einen zusätzlichen Schritt irgendeiner Art von nichtlinearer Verfeinerung zu der extrinsischen Schätzung hinzuzufügen, die iterativ durchgeführt wird. Siehe hier: http://www.epixea.com/research/multi-view-coding-thesese9.html – Dan
@Dan thx für Ihren Link, ich weiß, es ist üblich, genau wie der 'CvLevMarq' Solver in opencv tat. Ich meine, DLT scheint eine Art von Closed-Form-Minimierung ** der Kostenfunktion zu sein, warum ist es immer noch unterlegen (lokales Minimum)? – zhangxaochen