Archiv verlassen und diese Seite im Standarddesign anzeigen : Optischer Fluss weg schaetzung
Hallo im Rahmen meiner Masterarbeit moechte ich eine ungefaehre Schaetzung des zurueckgelegten weges einer drohne machen.
Zum Aufbau:
Ich habe eine nach unten gerichtete Kamera die den optischen Fluss bestimmt. Ueber ein Gyroskop kann ich die Neigung der Drohne aus dem Optischen Fluss herrausrechnen. Am Ende habe ich aber ein Vektorfeld das aus der Translation parallel zum Boden und der Rotation um die nach unten gerichteten Achse entsteht.
eine reine Rotation und eine reine Translation kann ich bestimmen. Aber wenn sich die Rotation mit der Translaton vermischt verschiebt sich ja auch die rotationsachse aus dem Mittelpunkt.
Meine Frage ist nun was waere ein sinnvoller Ansatz die Rotation und die Translation zu trennen um so den zurueckgelegten weg zu schaetzen.
vielen Dank schonmal
Felix
Die Masterarbeit sollte *deine* Leistung sein. Wie wäre es, wenn du dir Mal selbst Gedanken machst und die mit deinem Betreuer diskutierst?
mfG
Markus
;-)
ich hab mit vielen Anworten gerechnet aber nicht mit so einer. Ohne das jetzt weiter auszufuehren aber Wissen muss ja irgendwo herkommen. Ich moechte nich das hier jemand meine Arbeit schreibt oder so ich war halt ehrlich in dem ich geschrieben habe wofuer ich das verwenden moechte. Ich frag einfach nach aktuellen Algorithmen die heutzutage Anwendung finden. Thema meiner Arbeit ist auch nich die Wegschaetzung ich arbeite an dem Optical Flow Algorithmus und den moechte ich halt ueber die Wegschaetzung verifizieren. Es ist mir doch nicht vorgeschrieben meinen wissenschaftlichen diskurss nur mit meinem Betreuer zu fuehren. Naja ich will mich da jetzt nich reinsteigern. Ich kann gerne jede Antwort die ich verwende aber als quelle angeben wenn das gewuenscht wird.
ich hab mit vielen Anworten gerechnet aber nicht mit so einer.
Vielleicht war deine Frage einfach etwas ungeschickt gestellt. Deine Eigenleistung käme besser zur Geltung wenn du alternative Lösungsansätze vorgestellt und zur Diskussion gestellt hättest.
Davon abgesehen ist mir deine Frage nicht ganz klar geworden. Du hast zwei Meßwerte (Winkel über Gyro und optischer Fluß). Du weißt aus der Geometrie, wie der Winkel den Fluß beeinflußt. Wenn du diesen Einfluß des Winkels vom Fluß subtrahierst sollte der Einfluß der translatorischen Bewegung übrig bleiben (Superposition). Das scheint mir das simple Prinzip zu sein, das mit Leben gefüllt werden will. Falls du meine Daten zwecks Zitierung brauchst, schick mir eine PM. Falls ich etwas Wesentliches übersehen habe, dann stelle es richtig, dann können wir das weiter diskutieren.
Hallo,
danke schonmal für deine Antwort. Ich hatte extra noch nichts zu meinem Lösungsansatz geschrieben da ich die Erfahrung gemacht habe, dass wenn man im ersten Posting zuviel schreibt man die Leser erschlägt mit zuviel Text und es Antwortet keiner auf die Frage.
Zur eigentlich Frage ja das stimmt das ich die Winkel rausrechnen kann über den Gyro. Das erschlägt aber nur 2 der drei Achsen da ich nur die Neigung messen kann was ich dadurch nicht messen kann ist die Rotation um die nach unten gerichtete Achse (definiert als Z-Achse). Also wenn die Drohne ihre Blickrichtung ändert diese Rotation wird dann mit der Translation vermischt.
hier mal mein Ansatz bis jetzt:
U=(cos(a) *x-sin(a) *y)-xi+Tx*f/z
V=(sin(a)*x+cos(a)*y-yi+Ty*f/Z
ggb:
U,V x,y Komponente eines Flow Vektors
xi,yi: Ausgangspunkt des Flow Vektors
f:Fokus
gesucht:
Tx,Ty: Translation
a: Winkel der Rotation um die Z-Achse
Z:Abstand des Aufgenommen Punktes in der Realen Welt zum Fluchtpunkt der Lochkamera
wie der Ansatz funktionieren soll:
Ich gehe von einem Lochkamera Modell der Kamera aus. xi,yi und U,V kann ich aus meinem Bild entnehmen. die Cosinus und sinus habe ich aus der Rotationsmatrix. Die 4 unbekannten kann ich durch ein lineares Gleichungssystem ermitteln das ich von 2 Flow Vektoren erhalte.
ein änlicher Ansatz wird auch hier beschrieben
http://www.inf.u-szeged.hu/~kato/teaching/computervision/07-Motion.pdf
Aber bei diesem wird wenn ich es recht verstehe ab slide 19 davon ausgegangen das zwischen zwei bildern sich der Abstand Z ändert da so zwischen rotation und Translation getrennt werden kann. Soll heissen auf zwei nahe beieinander liegende Punkte wirkt die Rotation gleich die Translation in z aber nicht
so das war mein Ansatz in kürze
@Ranke wenn du mir hilfst nehm ich dich natürlich gerne auf in die Arbeit. Kann dir auch zum beweis die fertige Arbeit schicken ;-)
Gut, die Tatsache dass der Gierwinkel meßtechnisch nicht zur Verfügung steht, war mir noch nicht klar geworden. Wenn ich annehme, dass das Flowvektorfeld für die Auswertung zur Verfügung steht, dann sollte man den Gierwinkel daraus und aus dem Nick- und Rollwinkel rechnen können. Möchte ich jetzt zumindest intuitiv, ohne es hergeleitet zu haben, behaupten.
Zu deinem Ansatz:
die Tatsache, dass der Term f/z vorkommt läßt darauf schließen, dass einige der Werte in der Bildebene, andere in der Gegenstandsebene angegeben sind. Das macht die Sache unpraktisch und unübersichtlich. Ich fände es besser du rechnest in der einen oder anderen Ebene, aber nicht gemischt. Zumindest müsste man wissen welche Terme in welcher Ebene gelten. Weil ich gerade beim kritteln bin: mindestens eine Klammer fehlt, Groß/Kleinschreibung der Symbole in der Formel variiert (z, Z). Nimm einfach Gas raus und eine Stunde mehr zum Antworten, wenn dir etwas daran liegt. Sonst macht es den Eindruck etwas unüberlegt hingeschriebenen und die Antworten werden entsprechend sein. Ebenso bei Fachtermini, eine Lochkamera hat den Vorteil keine Brennweite (Fokus) zu haben, was du vermutlich meinst ist die Bildweite. Fluchtpunkt soll wohl der Ort des abbildenden Lochs sein, z die Gegenstandsweite. Ein kurzer Blick bei wikipedia unter dem Eintrag Lochkamera hätte dir die Fachbegriffe gebracht und auch die dort üblichen Kurzbezeichnungen, man hätte dann vielleicht b statt f gewählt.
Entschuldige bitte dass ich so auf Formalien herumhacke. Bedenke bitte, dass hier höchstwahrscheinlich niemand sitzt, der auswendig alle Lösungen für deine Probleme aus dem Ärmel schüttelt. Um auf Augenhöhe zu diskutieren, müssen sich die Leute in dein Problem hineinarbeiten, genau so wie du das musst. Wenn dir an einer sinnvollen Diskussion gelegen ist dann mache es den Leuten hier so leicht wie möglich. Deine Abschlußarbeit wirst du auch nach diesen Gesichtspunkten abfassen müssen.
Jetzt noch zwei konkrete Rückfragen, damit ich mir ein besseres Bild machen kann:
Ist das Flowvektorfeld im Bildausschnitt in Echtzeit für die Auswertung verfügbar?
Ist z (Flughöhe über Grund) bekannt?
Nimm dir ruhig Zeit mit der Antwort.
Vielen Dank, dass du dir die Fragen angeschaut hast.
Ich antworte schonmal "schnell" auf deine Fragen und poste Morgen eine etwas ausführliche Antwort:
1. z ist nicht bekannt. Ich starte aus 20cm Höhe und gehe erstmal von einem planaren Untergrund aus. der Abstand müßte aber zu schätzen sein. Wie gesagt es geht erstmal um keine 100% genaue Wegschätzung
2. Das Vektorfeld sollte in echtzeit zur Verfüguung stehen. Ich nehme mit 60 fps auf. daran arbeite ich aber gerade noch.
3. mit der Klammer hast du natürlich recht die fehlt dann wird aus
V=(sin(a)*x+cos(a)*y-yi+Ty*f/Z ->(sin(a)*x+cos(a))*y-yi+Ty*f/Z
4. zur Lochkamera gehe ich von diesem Modell aus
http://www.mathematik.uni-marburg.de/~thormae/lectures/graphics1/graphics_6_1_ger_web.html#11
dankeschön
Felix
So ich habe es mal ein bisschen ausführlicher gemacht. Da ich leider parallel an der Echtzeitfähigkeit meines Programmes arbeite konnte nur das was ich bisher hier gepostet habe etwas genauer aufschreiben um meine Frage klarer zu machen. ich habe aber noch keine weiteren Überlegungen dazu anstellen können. Mir sind auch schon ein paar ungereimtheiten an meinem Ansatz aufgefallen.
https://www.dropbox.com/s/qyw739zhsqlseej/%C3%BCberlegung%20zur%20Wegsch%C3%A4tzung.pdf
hier mal der Link hoffe man kann den lesen.
Ich habe mir das pdf angesehen und kann es soweit nachvollziehen. Folgende Anmerkungen dazu:
1. Die Auswirkungen von Gieren und Zoom auf den Flußvektor sind ja von ihrer Lage bezüglich des Koordinatennullpunkts x=0, y=0 abhängig. Deshalb wäre es angenehm, wenn dieser Nullpunkt bekannt ist. Er wird ja durch die Hardware definiert, nämlich durch die Lage des Sensors für die Drehwinkel um die x und y Achse. Das muss dann bei der Hardware wahrscheinlich irgendwann kalibriert werden, wenn das System real gebaut wird. Im Moment können wir den Nullpunkt wahrscheinlich einfach als gegeben annehmen.
2. Die Herleitung für die Koordinatenverschiebung durch Seitwärtsbewegung und Drehung um z kann ich soweit nachvollziehen. Bei der y-Koordinate fehlt noch ein Minuszeichen im ersten Term? Üblicherweise wird bei der Multiplikation einer Konstanten mit einer Winkelfunktion die Konstante zuerst geschrieben, also x * cos(a) statt cos(a) * x. Wäre irgendwie einfacher zu lesen.
3. Der Zoom-Einfluß fehlt noch?
4. Die Wahl der Formelzeichen finde ich nicht sehr leicht nachvollziehbar (das kann auch nur rein subjektiv sein). Rein meßtechnisch entstehen die Flußvektoren vermutlich durch Bildaufnahmen ausgewählter Punkte zu aufeinanderfolgenden Zeitpunkten. Der Fußpunkt eines Flußvektors, aufgenommen zum Zeitpunkt n könnte die Koordinaten x1n und y1n haben, der Kopfpunkt zum Zeitpunkt n+1 dann x1(n+1) und y1(n+1). Fände ich einfacher als die Vermengung verschiedener Klein- und Großbuchstaben. Aber vielleicht steckt ein tieferer Sinn dahinter den ich noch nicht sehe. Insgesamt wäre es in Matritzenschreibweise angenehmer und lesbarer. Für die folgende Umsetzung in Software sowieso.
5. Ich bleibe dabei, eine Lochkamera hat keine Brennweite, auch wenn du im Netz eine Quelle dafür gefunden hast. Will mich aber deswegen nicht streiten anfangen. Wie kommt es denn dazu, dass man hier eine Lochkamera einsetzen will, die hat doch eine mieserable Lichtstärke wenn sie halbwegs scharf abbilden soll?
1. stimmt
2. das minuszeichen seh ich nich wo das noch hin muss
ja das mit der Konstante vor Winkelfunktion stimmt. Das kam jetzt nur daher weil ich Matrix mal Vektor gerechnet hatte.
3. genau das war das was ich damit meinte ich hab noch ein paar ungereimtheiten gefunden. Da überleg ich mir noch was hab aber schon ne Idee.
z.B. http://www.inf.u-szeged.hu/~kato/teaching/computervision/07-Motion.pdf Slide 21
4. Nee der tiefere Sinn war das zeichenprogramm das mir die Beschriftung gemacht hat. ja deine Bezeichnung machen natürlich mehr sinn
5.Ja also die Lochkamera ist keine Lochkamera!!! Sondern eine ganz normale Kamera. Aber ich habe diese Betrachtungsweise (Vereinfachung) in vielen Dokumenten zur visuellen Odometrie gefunden.
Ich fand die Betrachtungsweise der Bildebene auf der Seite der Weltebene irgendwie anschaulicher.
Ich habe jetzt auch meine Kamera soweit Fertig das ich in Echtzeit Bilder machen kann. Könnte mich also voll der Odometrie widmen. Da ich aber erstmal weg fahre kann ich mich wohl erst nach Weihnachten weiter da mit beschäftigen.
schönen Gruß
Felix
das minuszeichen seh ich nich wo das noch hin muss
stimmt, ich seh es auch nicht mehr. Hatte mich wohl vertan.
genau das war das was ich damit meinte ich hab noch ein paar ungereimtheiten gefunden
Auch der Term -xi bei U und -yi bei V ist mir noch nicht klar.
Nee der tiefere Sinn war das zeichenprogramm das mir die Beschriftung gemacht hat.
Oh, waren das noch selige Zeiten, als man - unabhängig von der Diktatur einer Software - Zeichnungen mit Stift auf Papier anfertigte und die Bezeichnungen selbst wählen durfte.
Ja also die Lochkamera ist keine Lochkamera
Dann ist es vielleicht auch besser, nichts von einer Lochkamera zu schreiben. Die Abbildungsgesetze sind bei der Linsenkamera ja im Prinzip ganz gleich, was die hier diskutierten Aspekte anbelangt. Natürlich gibt es bei der festfokussierten Linsenkamera eine begrenzte Tiefenschärfe aber mit ausreichend kleiner Apertur ist das im Rahmen der allfälligen Meßfehler beherrschbar und muß in der Arbeit wohl nicht diskutiert werden. Genausowenig würde man Lichtstreuung und Interferenzeffekte der Lochkamera nicht diskutieren, wenn tatsächlich eine solche eingesetzt wäre. Den Trick, die Bildebene auf die Seite der Weltebene zu spiegeln wird gerne zur Veranschaulichung gemacht.
Nochmals zur Eingangsfrage:
Meine Frage ist nun was waere ein sinnvoller Ansatz die Rotation und die Translation zu trennen um so den zurueckgelegten weg zu schaetzen.
Der Ansatz über das lineare Gleichungssystem ist der naheliegendste, aber scheint mir nicht der einfachste zu sein. Das Gleichungssystem ist, wenn man nach Winkeln als Unbekannte auflöst, nicht mehr linear, ja selbst die Umkehrfunktionen der Winkelfunktionen sind nur abschnittsweise als Funktion definiert. Ich glaube nicht dass man unter diesen Umständen eine geschlossene Lösung findet. Ein numerischer Ansatz ist immer denkbar, allerdings werden das doch einige Gleichungen mit wenigstens 4 Unbekannten, der Rechenaufwand scheint mir nicht klein zu sein. Ich würde, falls es die Qualität der Eingangswerte zulässt, eher einen statistischen Ansatz wählen. Also z.B. die durchschnittliche x-Verschiebung aller betrachteten Flußvektoren rechnen und den Einfluß des Nickwinkels (direkt gemessen) abziehen um die Bewegung in x-Richtung zu schätzen. Das setzt natürlich eine gewisse Qualität der Eingangsdaten voraus.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.