Perspektivische Verzerrung < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Hallo,
ich habe ein durchaus angewandtes mathematisches Problem im Bereich Eigenschaften der perspektivischen Verzerrung. Ich habe eine Bilderkennungssoftware geschrieben, die einen kreisförmigen Marker erkennt (http://dl.dropbox.com/u/1969191/texture.png). Ausgehen von einem Kamerabild kann ich die Position und Rotation des Markers sowohl auf der projezierten 2D-Bildebene als auch in 3D-"echte Welt Koordinaten" bestimmen. Letzteres allerdings fatalerweise ohne Vorzeichen ^^
Ein Kreis sieht nunmal von links und rechts betrachtet gleich perspektivisch verzerrt aus, man erhält auf der 2D-Bildebene die gleiche Ellipse. Das Problem war mir bekannt und ich dachte ich könnte es durch das Hinzufügen eines Orientierungspunktes lösen (den brauche ich ohnehin um überhaupt Rotationen rausrechnen zu können).
So sieht der Spaß aus:
http://dl.dropbox.com/u/1969191/x0_y0_z0.png
Die Z-Rotation (Tiefenachse) bekomme ich mit Vorzeichen, das ist kein Problem. Für die Erkennung gehe ich aber davon aus, dass die Z-Rotation 0 ist.
Mein Ansatz, für Y(vertikale Achse) und X(horizontal)- Rotationen die Vorzeichen zu bekommen sieht vor, dass ich mir die perspektivische Seitenverkürzung zu nutzen mache:
Der Orientierungspunkt hat eine genau festgelegte Position. Nun schaue ich mir beim Tracking an, ob die Position des Orientierungspunktes in eine bestimmte Richtung relativ verschoben zu seiner eigentlichen Position ist. Je nach dem wohin er optisch gesehen verschoben ist, dichte ich der jeweiligen Rotation ein Vorzeichen an:
Ist z.B. der Orientierungspunkt weiter links als er eigentlich sein sollte, schaue ich mir den Kreis von rechts an, die Y-Rotation ist positiv. Ist er weiter oben, schaut die Kamera von unten drauf usw.
Die Bilder bringen vll. etwas mehr Klarheit:
http://dl.dropbox.com/u/1969191/x0_y60_z0.png
http://dl.dropbox.com/u/1969191/x0_y-60_z0.png
http://dl.dropbox.com/u/1969191/x30_y0_z0.png
Das funktioniert sogar richtig gut für einzelne Messungen. Für Z-Rotation = 0 erkennt die Software sogar für kleine Winkel das Vorzeichen richtig (sieht man mit dem bloßen Auge kaum noch).
Wo ist nun das Problem?
Hier:
https://dl.dropbox.com/u/1969191/x30_y-50_z0.png
Kombiniert man X- und Y-Rotation verzerrt eine Rotation die andere. Sie wird quasi überdeckt. Hier in dem Bild sind X = 30°, Y = -50°
Der Orientierungspunkt befindet sich weiter rechts als er sollte, also schau ich von Links drauf, die Y-Rotation ist negativ. Hat die Software auch erkannt. Aber (das is undeutlich zu sehen) vertikal ist der Orientierungspunkt unterhalb seiner eigentlichen Position, d.h. die Software erkennt die X-Rotation als negativ, als ob man von oben schauen würde, das ist offensichtlich falsch...
Meine Notlösung ist über mehrere Frames und mit Hilfe von Bewegung die Vorzeichen richtig zu erkennen, das mach ich aber nur ungern.
Hat jemand vll. einen Vorschlag wie ich mit den gegebenen Mitteln die Rotationsvorzeichen aus einem einzigen Frame errechnen kann? Gibt es eine Lösung für das Problem, dass sich die Rotationen in der Verzerrung überlagern und die stärkste gewinnt? Ist es vll. garnicht möglich mit diesem Marker die Rotation zweifelsfrei zu bestimmen?
Ich hoffe jmd. hat nen Tipp
Danke fürs Lesen und Überlegen und Grüße ;)
ps: crosspost http://www.onlinemathe.de/forum/perspektivischer-Transformation-des-Kreises
http://www.matheboard.de/thread.php?threadid=426112
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:06 Mo 30.08.2010 | Autor: | Marc |
Hallo beetleskin,
eine Frage vorweg: Was sind denn die Messpunkte deiner Software? Den Markierungspunkt scheint sie ja nur als einen einzigen Punkt wahrzunehmen. Wie wird aber der große Kreis "gemessen"/erkannt? Wird der grosse Kreis immer in deinem Modell als mathematische Ellipse erkannt (so, als ob es sich um eine Parallelprojektion handeln würde)?
Wenn es so ist, dass sich in zwei verschiedenen Lagen die (in die Ebene projizierten) Messpunkte überlagern, dann gibt es natürlich keine Chance, aus dem Standbild die Lage zu berechnen (außer mehr Messpunkte herzunehmen).
Viele Grüße,
Marc
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:49 Mo 30.08.2010 | Autor: | beetleskin |
Hi Marc,
für die Erkennung berechne ich aus den Konturpunkten eine passende ellipse (iterativ über die Methode der kleinsten Quadrate). Ich habe aber keine Korrelation aus virtuellen Punkten auf dem Rand der Ellipse und realen Punkten. Die einzigen realen Punktkorrelationen sind halt Mittelpunkt und Orientierungspunkt (bzw. Mittelpunkt davon). Außerdem hab ich noch kleine Achse, große Achse und Rotation dern Ellipse als Ausgangsdaten. Daraus errechnet habe ich Z-Translation (Tiefenachse) sowie Y- und X-Position im Raum.
Mhh, was du mit Überlagern meinst versteh ich grad nich so richtig...
Grüße
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:06 Mo 30.08.2010 | Autor: | Sigma |
Hallo beetleskin,
eine wirklich schöne Idee. Ich denke im letzten Fall liegt es daran, das du diesen Kreisförmigen Marker annähernd an seiner Symmetrie Achse kippts. Sollange du nur in eine x oder y Richtung veränderst hilft dir der zweite Kreis gut um die Drehung zu erkennen. Aber wenn du den Kreis um seine Symmetrieachse drehst. Hast du das selbe Problem wie am Anfang mit nur einem Kreis. Es wird dir nichts anderes übrig bleiben als ein dritter Orientierungspunkt. Oder ein anderes Objekt als Orientierungspunkt, welcher keine Symetrieachs zulässt.
Probleme könnte es aber noch geben, da du die Entfernung zur Kamera nicht berücksichtigst.
mfg sigma10
|
|
|
|
|
Hey, danke für die Antowort.
Es gibt also keine Mglichkeit für die gegebene "Hardware" die Vorzeichen zu bestimmen?
Also die Entfernung zur Kamera hab ich, die ist kein Problem... lässt sich damit noch was machen?
Grüße
|
|
|
|
|
Hallo beetleskin,
es geht zwar schon, aber es wird schwierig, wenn die Referenzfigur ein Kreis ist.
Deine Anfrage trägt den Titel "perspektivische Verzerrung", aber genau die nutzt Du noch nicht. Im Moment nimmst Du die Schräglage des Kreises ja als Ellipse an, die Du dann bestimmst. Da ist tatsächlich nicht herauszufinden, in welche Richtung gekippt wird, oder eben nur mit bestimmten Zusatzinformationen.
Bei einer echten Perspektive wird ein schräggestellter Kreis allerdings nicht als Ellipse wiedergegeben und aus der Abweichung der Abbildung von einer Ellipse könntest Du tatsächlich bestimmen, in welche Richtung er gekippt ist. Die Abweichung ist allerdings in der Praxis und den meisten Fällen so gering, dass ich bezweifle, ob Bildauflösung und Rechengenauigkeit hier wirklich hilfreich wären.
Wahrscheinlich wäre es einfacher, ein Quadrat als "Marker" zu verwenden, weil bei ihm nur dann zwei der Seiten parallel bleiben, wenn es um eine seiner beiden Mittelgeraden (also die Strecken durch den Mittelpunkt, die parallel zu den Seiten sind) gekippt wird. Andernfalls liefert Dir die Verzerrung der Abbildung die genaue Information darüber, um welche Achse das Quadrat gedreht wurde und wie weit. Das ist umso leichter zu bestimmen, je größer das Quadrat, je geringer die Entfernung und je kleiner die Brennweite des Objektivs ist.
Den großen Kreis als Rahmenreferenz kannst Du dafür ja beibehalten.
Viel Erfolg mit Deiner Software - das sieht auch so schon sehr vielversprechend aus!
Grüße
reverend
|
|
|
|
|
> Hallo beetleskin,
>
> es geht zwar schon, aber es wird schwierig, wenn die
> Referenzfigur ein Kreis ist.
>
> Deine Anfrage trägt den Titel "perspektivische
> Verzerrung", aber genau die nutzt Du noch nicht. Im Moment
> nimmst Du die Schräglage des Kreises ja als Ellipse an,
> die Du dann bestimmst. Da ist tatsächlich nicht
> herauszufinden, in welche Richtung gekippt wird, oder eben
> nur mit bestimmten Zusatzinformationen.
>
> Bei einer echten Perspektive wird ein schräggestellter
> Kreis allerdings nicht als Ellipse wiedergegeben und aus
> der Abweichung der Abbildung von einer Ellipse könntest Du
> tatsächlich bestimmen, in welche Richtung er gekippt ist.
> Die Abweichung ist allerdings in der Praxis und den meisten
> Fällen so gering, dass ich bezweifle, ob Bildauflösung
> und Rechengenauigkeit hier wirklich hilfreich wären.
>
> Wahrscheinlich wäre es einfacher, ein Quadrat als "Marker"
> zu verwenden, weil bei ihm nur dann zwei der Seiten
> parallel bleiben, wenn es um eine seiner beiden
> Mittelgeraden (also die Strecken durch den Mittelpunkt, die
> parallel zu den Seiten sind) gekippt wird. Andernfalls
> liefert Dir die Verzerrung der Abbildung die genaue
> Information darüber, um welche Achse das Quadrat gedreht
> wurde und wie weit. Das ist umso leichter zu bestimmen, je
> größer das Quadrat, je geringer die Entfernung und je
> kleiner die Brennweite des Objektivs ist.
>
> Den großen Kreis als Rahmenreferenz kannst Du dafür ja
> beibehalten.
>
> Viel Erfolg mit Deiner Software - das sieht auch so schon
> sehr vielversprechend aus!
>
> Grüße
> reverend
>
Hallo reverend,
wird ein Kreis einer beliebigen zentralperspektivischen Abbildung
auf eine Ebene unterworfen, ist die Bildkurve stets wieder ein
Kegelschnitt. Ist die Bildkurve geschlossen, so handelt es sich
um eine Ellipse (oder sogar wieder um einen Kreis).
Wenn das Projektionszentrum und die Bildkurve bekannt sind,
lässt sich daraus allein i.A. die Urbildkurve nicht eindeutig
bestimmen. Für eine eindeutige Identifikation bringt es nichts,
einen weiteren Punkt in der Ebene des Kreises abzubilden -
es muss ein Pukt sein, der außerhalb der Kreisebene liegt.
LG Al-Chw.
|
|
|
|
|
Ok, es geht also definitiv nicht. Gut zu wissen, dann probier ich nicht weiter rum. Aber was bringt mir der Punkt außerhalb für einen Vorteil gegenüber dem Punkt innerhalb?
@reverend. Ich hab mehrere Objekte für die Positionierung in der Software drin, auch ein Quadrat ;)
|
|
|
|
|
Hallo nochmal,
> Ok, es geht also definitiv nicht. Gut zu wissen, dann
> probier ich nicht weiter rum. Aber was bringt mir der Punkt
> außerhalb für einen Vorteil gegenüber dem Punkt
> innerhalb?
Außerhalb heißt hier außerhalb der Ebene, also darüber oder darunter. Nimm mal Deinen Kreis und stell Dir vor, Du würdest einen weiteren Punkt senkrecht über dem Mittelpunkt definieren, muss gar nicht weit weg sein (sagen wir: 1cm). Wenn Du jetzt das ganze Gebilde kippst, bewegt sich der Bildpunkt des neuen Punktes erst einmal in der Ellipse, bei weiterem Kippen sogar darüber hinaus. Daraus kannst Du die Information bekommen, in welche Richtung gekippt worden ist.
Allerdings ist das für deine Referenzgrafik wahrscheinlich nicht praktikabel, denke ich.
> @reverend. Ich hab mehrere Objekte für die Positionierung
> in der Software drin, auch ein Quadrat ;)
Na dann schau Dir mal die Bilder in verschiedener Richtung gekippter Quadrate in der Zentralperspektive (also nicht in der Parallelprojektion) an.
Grüße
reverend
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:29 Di 31.08.2010 | Autor: | beetleskin |
Ah jetzt versteh ich was du meinst, allerdings müssen meine Trackingobjekte koplanar sein...
Aber danke an alle für die wertvollen Überlegungen!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:25 Mo 30.08.2010 | Autor: | reverend |
Hallo Al,
da ist eine fotografische und zeichnerische Einsicht mit mir durchgegangen. Mathematisch hast Du völlig Recht, und das ist beim vorliegenden Softwareproblem ja erst einmal die entscheidende Frage.
Die "Verzerrungen", die z.B. starke Weitwinkel hervorbringen und die z.T. auch in der Malerei (meist viel milder) eingesetzt werden, um die Perspektive zu verdeutlichen, sind mit den Mitteln der Projektion (Zentralperspektive) nicht zu erklären. Da habe ich also zwei Dinge vermischt.
Danke für den Hinweis.
Und überhaupt sollte ich wohl beim Telefonieren nicht mehr schreiben, auch nicht im Büro... Da ist mir heute schon ein Klops unterlaufen, sogar ein größerer.
Grüße
reverend
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:53 Di 31.08.2010 | Autor: | reverend |
Hallo beetleskin,
ich nehme an, Du kennst die Forenregeln hier.
Die gleiche Anfrage hast Du auchhier gestellt, wenn auch wenige Minuten später.
Wir erwarten, dass Du dann Deine Anfrage im Matheraum entsprechend editierst. Wie das geht, weißt Du offenbar, denn Du hast ja Deine erste Fassung noch einmal editiert.
Die Regel soll nicht andere Foren benachteiligen, sondern vor allem ersparen, dass sich jemand doppelte Arbeit macht. Bitte halte Dich daran.
Gruß
reverend
|
|
|
|