3 Stimmen

Berechnen von 2D-Winkeln für 3D-Objekte in der Perspektive

Stellen Sie sich ein Foto vor, auf dem die Fassade eines Gebäudes eingezeichnet ist.

Die Fläche des Gebäudes ist ein Rechteck mit 90-Grad-Ecken. Da es sich jedoch um ein Foto handelt, wird die Perspektive mit einbezogen und die parallelen Kanten der Fassade laufen am Horizont zusammen.

Wie berechnet man bei einem solchen Rechteck den Winkel in 2D der Vektoren der Kanten einer Fläche, die im rechten Winkel dazu steht?

Auf dem Bild unten ist das blaue Gesicht auf dem Foto markiert, und ich frage mich, wie ich den 2D-Vektor der roten Linien des anderen Gesichts berechnen kann:

Beispiel http://img689.imageshack.us/img689/2060/leslievillestarbuckscor.jpg

Wenn Sie also das Bild für einen Moment ignorieren und sich auf die Linien konzentrieren, gibt es dann genug Informationen in einem der Gesichtsumrisse - die Innenwinkel und so weiter - um den Weg des Gesichts auf der anderen Seite der Ecke zu kennen? Wie würde die Formel lauten?

example

Wir wissen, dass beide Rechtecke sind - d. h., dass jede Ecke ein rechter Winkel ist - und dass sie im rechten Winkel zueinander stehen. Wie kann man also den Vektor der zweiten Fläche bestimmen, wenn man nur die Position der ersten kennt?

0voto

Jack Punkte 128223

Es ist ganz einfach, Sie sollten die Grundfunktionen 2-Punkt-Perspektive Regeln.

Zunächst einmal benötigen Sie 2 Fluchtpunkte, einen links und einen rechts von Ihrem Objekt. Sie werden beide auf der gleichen Horizontlinie liegen.

Alt-Text http://img62.imageshack.us/img62/9669/perspectiveh.png

Nachdem du den Horizont (der die Sichthöhe bestimmt) und die Fluchtpunkte (die Positionen der Punkte verändern das Sichtfeld) gesetzt hast, kannst du leicht berechnen, wo deine Linien verlaufen (natürlich musst du in der Lage sein, die Linie zu berechnen, die zwei Punkte kreuzt: ich denke, du kannst es)

0voto

mmr Punkte 14571

Ehrlich gesagt, würde ich eine Hough-Transformation auf dem Bild und finden Sie einen Weg, um die roten Linien auf dem Bild zu identifizieren. Um die roten Linien zu finden, würde ich alle Linien in der Transformation suchen, die Ihre blauen Linien berühren. Das Gute an der Transformation ist, dass Sie die Winkelinformationen kostenlos erhalten.

Da Sie wissen, dass Sie Linien betrachten, könnten Sie auch eine Radon-Transformation und suchen Sie nach Spitzen in bestimmten Winkeln; das ist im Grunde dasselbe.

Matlab verfügt über einige nützliche Funktionen für diese Art von Arbeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X