Dreidimensionale Bildinterpretation/Trigonometrie
Hallo
Bin hier schon seit einiger Zeit als Leser unterwegs, habe allerdings jetzt auch mal eine Frage :)
Ich bastele momentan an einem kleinen Programm, das aus 2D-Bildern 3D-Informationen gewinnen soll. Dazu habe ich mir einen Zwei-Kamera-Aufbau zusammengeschraubt, mit einem festen Abstand c der Kameras sowie beide montiert in einem 90°-Winkel zu c (Montageschiene).
Da Trigonometrie bei mir in der Schule erst nächstes Jahr kommt, frage ich einfach mal:
1. Wäre es vorteilhafter, die Kameras in einem stumpfen Winkel (bspw. 100°) zu montieren?
2. Das Korrespondenzproblem habe ich bereits mit für mich zufriedenstellender Genauigkeit gelöst, d.h. ich finde die zwei Bildpunkte (-pixel) in den 2 Bildern, die zusammengehören. Gegeben sind also auch deren xy-Koordinaten in den zwei Einzelbildern. (Wobei die y-Koordinate eigentlich gleich sein sollte, oder liege ich da falsch?)
Aber wie kann ich daraus nun die die Entfernung zu c bzw. die Höhe h_c berechnen?
Sebastian
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn ich das richtig verstanden habe, dann sollte das so aussehen, wie im Anhang, richtig?
Um die Entfernung von Punkt P zu c (also h) zu bekommen musst du aber a oder b wissen. Dann gilt, wenn du a kennst: sin (beta) = h/a. Wenn du b kennst: sin (beta) = h/b.
Liste der Anhänge anzeigen (Anzahl: 1)
So, habe aus deiner Anleitung mal was zusammenskizziert, PicNic :)
Mir ist allerdings unklar, wie du das meinst:
"jetzt bildet P
in der verlängerung von a eine Abbildung auf der Bildebene mit abstand x1 von der augenachse (das sind dann Pixel als abstand von der Mitte)
in der verlängerung von b eine Abbildung auf der Bildebene mit abstand x2 von der augenachse "
Du hast P als Benennung zweimal verwendet, einmal für [P1P2] und einmal für den Punkt P auf der Objektebene.
Ist das png ungefähr so, wie du es dir gedacht hast?
Sebastian
BTW: Wäre eine Berechnung mittels Trigonometrie nicht etwas einfacher? (und schneller)
Liste der Anhänge anzeigen (Anzahl: 1)
So sieht das schon nützlicher aus :)
Was mir allerdings nicht klar ist: Was meinst du mit "x1 x2 sind Pixelanzahlen"? Wie soll ich x1 und x2 herausbekommen?
Bild hier
Liste der Anhänge anzeigen (Anzahl: 1)
Einfach ist die Bestimmung der gleichen Pixel nicht. Ich habe das in ASM gelöst, ersteinmal natürlich durch Farbwertvergleich, dann durch Vergleiche der umgebenden Pixel und 2D-Objekterkennung, also Umrisse um erkennbare Objekte gezeichnet, das kann man gut verwenden, wenn man viele homogene Flächen im Bild hat, Tisch, Wand z.B. Funktioniert ganz gut :)
Ich habe mir testweise 2 hochauflösende Bilder mit meiner DigiCam gemacht. Der Augenabstand beträgt exakt 150mm, die Höhe etwa 800mm. Rechne ich zurück, kommt allerdings eine unmöglich hohe Brennweite heraus. (die Cam hat 6-18mm Brennweite [nicht umgerechnet auf Kleinbildformat, realer Wert]). Irgendwas mache ich noch falsch.
Wäre in der Zeichnung 0,5x1 die Strecke [M2 P2], also => x=4?
Liste der Anhänge anzeigen (Anzahl: 2)
Morgen !
Habe mich erwürgt mit Powerpoint, Die Attachments leider in falscher Reihenfolge, sei's drum.
Test1a.gif:
Zentralprojektion von oben, ist, glaub' ich, klar.
Die "Bildebene" ist nun ZWISCHEN Augen und Object.
Test1b.gif:
die Verbindung P <> linkes auge parallel verschoben. dadurch zwei ähnliche Dreiecke
Und nun gilt:
--> a / (h + z ) = (x1 + x2 ) / z
--> ( a * z ) / (x1 + x2 ) = h + z
--> h = z + ( a * z ) / (x1 + x2 )
(das mit den x-Vorzeichen ist nun wieder umgekehrt, aber ich denk, die Zeichnungen sind verständlich