Reale Größen aus Bild rekonstruieren?

Hallo!

Ich kämpfe jetzt schon 2 Tage an einem Problem, bei dem ich nicht genau weiß, wie ich es beschreiben soll. Ich probiers mal:

Ich habe einen Raum, eine Kammera und eine Bodenmarkierung von 2 an der kurzen Seite genau aneinander stossenden Rechtecken von 50x30cm (zusammen also B=100cm, L=30cm mit Mittelachse). Die Kammera (auf einem Stativ, Position im Raum unbekannt) ist von oben nach unten blickend so ausgerichtet, das die Kante zwischen den beiden Rechtecken (Mittelachse) senkrecht genau mittig durch das entstehende Bild läuft. Und die Rechtecke sind in der unteren Hälfte des Bildes zu sehen und bilden dort ein Trapez. Die einzigen weiteren Daten, sind die Daten, die ich aus dem Bild auslesen kann (Pixelpositionen der Rechtecksecken). Ich kann nun also am Bild messen, wie viele Pixel die 50cm Breite B in der Nähe und in der Ferne sind und auch wieviele Pixel die optisch verzerte Tiefe L von 30cm sind.

Nun meine Frage: Wenn ich die im Bild „untere“ Mitte der Markierung (nahes Ende der Mittelachse) als Ursprung im Raum nehme (x=0, y=0, z=0), wie kann ich nun aus den oben genannten Daten eine beliebige Position auf dem Bild berechnen (z.B. Raum(x=10, y=10, z=10) => Bild(x=?, y=?) Die optische Verzerrung muß stimmen)?

Ich hab ein paar Zeichnungen angefertigt, da ich den Rechenweg dokumentieren muß, weiß aber leider nicht, wo ich die hochladen kann, um das Problem hier nochmal graphisch zu zeigen.

Sollte es keine Lösung geben, muß ich mir einen anderen Weg überlegen, wie ich ein Referenzvolumen in das Bild bekomme. Von da habe ich eine Berechnung. Aber der andere Weg wäre wesentlich eleganter :smile:

Beste Grüße
Andaron

Unter

http://img199.imageshack.us/img199/7731/referenzvolu…

ist ein Bild mit 4 Zeichnungen. Die oberen beiden zeigen nochmal die Aufgabenstellung. Die unteren beiden sind Denkstützen (gewesen).

LG Andaorn

Hallo Andaron,

so ist das Problem nicht lösbar, denn dir fehlt die Tiefeninformation - ein Punkt im Raum kann eben nahe oder weiter weg von der Kamera sein, das kannst du nur mit Einsatz von 2 Kameras feststellen. Alles andere ist nur eine Schätzung.

Gruss Reinhard

Das habe ich befürchtet - nur im Moment versuche ich, diese Erkenntnis noch zu verdrängen…

Meine letzte Hoffnung ist, das man die Tiefeninformation aus dem Verhältnis der realen Länge L und der Bildlänge l sowie der Ländendifferenzen b1 und b2, die in der realen Länge beide gleich lang sind. (Siehe Anhang: http://img199.imageshack.us/img199/7731/referenzvolu… )

LG Andaron

Meine letzte Hoffnung ist, das man die Tiefeninformation aus
dem Verhältnis der realen Länge L und der Bildlänge l sowie
der Ländendifferenzen b1 und b2, die in der realen Länge beide
gleich lang sind. …

Hallo,

du weisst nur das Verhältnis für eine bestimmte Tiefe, aber wenn du z.B. einen zusätzlichen Würfel aufnimmst, kannst du nicht feststellen, ob sich seine Kante über der vorderen oder der hinteren Messlinie oder überhaupt woanders befindet. Wird die hintere Messlinie verdeckt, ist die Objekttiefe zwar offensichtlich kleiner als der Abstand der hinteren Linie, aber mehr weisst du auch nicht - eben keine Z-Information oder nur ein Maximum dafür. Daraus kannst du auch höchstens ein Maximum für die Würfelgrösse berechnen. Sind deine Masslinien voll sichtbar, geht auch das nicht. Es könnte ein würfelförmiger Mond sein…

Übrigens arbeiten Systeme für Tennis oder Fussball mit mindestens 10 Kameras.

Gruss Reinhard

Deine Antwort läßt Hoffnung übrig :smile:

Ich möchte nur zwei Linien in das Bild projezieren - nichts messen. Die absolute Position der Kammera ist gegebenenfalls irrelevant.

Die Markierung am Boden sind zwei Kraftmessplatten, die zum Zeitpunkt der „Bildkallibrierung“ als einziges im Bild sichtbar sind. Danach wird die Kammera nicht mehr verändert und alles was sich im Bild abspielt ist für die Rechnung irrelevant. Die beiden zu berechnenden Linien stellen Kraftvektoren dar, die die gemessenen Kräfte (Messplatten) im Bild sichtbar machen. Nur brauche ich eine optisch korrekte Darstellung, um den Linienverlauf mit der Szene auf dem Bild vergleichen zu können.

Meine ursprüngliche Idee war, beim kallibrieren einen Würfel in das Bild zu stellen. Damit hätte ich ein z-Korrelat. Aber die andere Lösung ist eleganter und sicherer, da solche Gegenstände in einem „offenen“ Laborbetrieb manchmal Füße kriegen. Und das kallibrieren ist ebenfalls deutlich leichter.

LG Andaron

Hallo,

viel beitragen kann ich nicht. Wenn man was sucht, findet man nie das Richtige, hier ein Skript, s. S. 10 die Kollinearitätsgleichungen
http://www.home.hs-karlsruhe.de/~vovo0011/Web/Skript…

Aus zwei Gleichungen mit zwei Pixelkoordinaten kann man keine drei Raumkoordinaten erhalten.

Der Gedanke mit den Linien erinnert mich an das „Doppelverhältnis“.
Aber ist das nicht nur eine andere Form der Kollinearität ?

Hab’ zwar mal Photogrammetrie gemacht, aber das ist lange her …

Grüße Roland

Vielen Dank für den Hinweis!
Ich werde das Skript mal durcharbeiten, vieleicht finde ich darüber eine Lösung.

LG Andaron

Hallo,

also ganz verstanden habe ich Dein Vorhaben nicht.
Deine Vektoren werden im ‚Raum‘ definiert und sollen ins Foto gerechnet werden ?

Deine Platten definieren doch eine Ebene. Dann wären wir bei der Entzerrung. Photogrammeter würden stur die Transformationsparameter - die r ii- zwischen Ebene und Bild rechnen. Z wäre eben Null. Die Passpunkte - die Plattenecken- liegen aber auf zwei Geraden … ob das geht oder zu Problemen führt ? Ginge es problemlos, wäre die Übetragung der Vektoren vom Raum ins Bild möglich.

Eventuell …

Grüße Roland

Hallo

also ganz verstanden habe ich Dein Vorhaben nicht.
Deine Vektoren werden im ‚Raum‘ definiert und sollen ins Foto
gerechnet werden ?

Genau richtig. Die Vektoren werden aus der Belastung der Messplatten am Boden (im Bild deutlich erkennbar) errechnet und sollen dann in das aufgenommene Bild hineinprojeziert (gerechnet) werden. Das ganze ist für eine Bewegungsanalyse während des Überschreitens der Messplatten durch eine Person. Die Vektoren sollen zeigen, wo und wie über den Fuß die Krafteinwirkung auf den Boden verläuft.

Deine Platten definieren doch eine Ebene.

Korrekt. x und y sind im Raum und im Bild dadurch eindeutig identifiziert. z=0 (H=0) liegt genau auf dieser Ebene.

Dann wären wir bei der Entzerrung. Photogrammeter würden
stur die Transformationsparameter - die r ii- zwischen
Ebene und Bild rechnen.

Sorry, den Satz verstehe ich nicht - dafür reichen meine Mathe-Fähigkeiten nicht aus. Auch in die Formeln aus dem von Dir vorgeschlagenen Skript müsste ich etwas mehr Zeit stecken als ich im Moment zur verfügung habe (dieser Teil des Projektes muß in 14 Tagen fertig sein - neben anderen Aufgaben).

Z wäre eben Null. Die Passpunkte - die Plattenecken-
liegen aber auf zwei Geraden … ob das geht oder zu Problemen
führt ? Ginge es problemlos, wäre die Übetragung der Vektoren
vom Raum ins Bild möglich.

Auch hier fehlt mir die Fachsprache: Was sind Passpunkte? Und: ja, die Plattenecken liegen (je 3 Stück) genau auf der x- bzw. y-Achse.

Momentan wäre es für mich am einfachsten, wenn ich aus den im Anhang gezeigten Längen l, b1 und b2 und den dazu bekannten „Real-Längen“ L (=>l) und B/2 (=>b1 & =>b2) ein Referenzvolumen (ein Würfel z.B. mit Kantenlänge L, der mit einer Ecke auf x=0, y=0, z=0 liegt) im Bild berechnen könnte. Will meinen, ich brauche nur die Pixelkoordinaten. Von da aus habe ich die Formeln bereits entwickelt.

LG Andaron

Sorry,

ich könnte Dich bloß in die Projektive Transformation reinreiten.
Diese kann man sich scheinbar (ich hab’s nicht probiert) frei runterladen

http://derletztekick.com/software/KoordTrans3D__Java

Meine mich inzwischen zu erinnern, dass diese mit vier Passpunkten gelöst werden kann. Passpunkte heißen so, weil da Bild- und Objektkoordinaten passen sollen … das trifft bei Deinen Plattenecken zu.

Eine einfachere Lösungen fällt mir leider nicht ein.

Grüße Roland