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
Die Zeichnung habe ich in Flash 5 gemacht..... Aber jedes andere Zeichenprogramm tuts wahrscheinlich auch.Ja, genau so sieht es aus. Darf ich fragen, mit welcher Software du die Konstruktion erstellt hast? (Habe GeoGebra, aber das ist etwas umständlich)
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
Schönes Bild, wenn man am rechten Rand noch ein paar weiße Pixel wegläßt und horizontal unter 800 bleibt, dann passt es ins Seitenformat.
Manfred
Super ! Genauso.
müßte man noch sagen K1 <---> K2 ist die "Augendistanz", sagen wir "A"
und der Abstand Bildebene <-->Augenebene ist die Brennweite, sagen wir "Z" (= Abstand Linse<>Bild)
Pixel: Das ist so gemeint: Wenn ich zwei Bilder habe, eines bei x1, eines bei x2 (auf der Bildebene) bekomme ich (im Komputer) den Wert von x1/2 jeweils als pixeldistanz zur Bildmitte. Auf einen Foto kann man x1/2 natürlich auch in millimetern messen.
Ich hab nochmal nachgedacht und die beste Vorstellung kriegst du folgendermaßen:
Wenn du zu der Geraden b im Punkt K2 eine parallele zeichnest, bekommst du bei K2 das gleiche dreieck wie bei K1 , x1
Und nun gilt:
Bei bekannten x1/2 , "Z" und "A" kann man also "h", den objektabstand, direkt ausrechnen.(x1 + x2) verhält sich zu "Z" , wie "A" zu "h"
Um "Z" und die dimension von x1/2 zu bestimmen, ist es am einfachsten, einmal ein Objekt mit BEKANNTEM "h" aufzunehmen und so die Werte rückzurechnen.
Anschaulich überprüfen läßt sich das, wenn du "P" einmal links und einmal rechts genau in die Augenlinie stellst , Dann ist einmal x1 = 0, dann x2 = 0.
Es ist auch erkennbar, daß "h" nicht null und auch nicht unendlich werden darf
Natürlich geht es auch mit Winkelfunktionen und normalen Dreiecksätzen. aber der Computer braucht länger, das dann zu rechnen (Ich hab' das damals für realtime gebraucht, da kriegst du 15 Bilder in der Sekunde, das dampft dann ganz schön)
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Die Strahlensatzfigur ist mir jetzt klar. Danke für die gute Erläuterung
Wie bist du da eigentlich drauf gekommen?
Also wäre 0,5x1 = Strecke von Bildmitte zu gefundenem Punkt (Pixel) in Bild 1 der K1, und dementsprechend 0,5x2 = Strecke von Bildmitte zu korrespondierendem Pixel in Bild 2 der K2?[...] bekomme ich (im Komputer) den Wert von x1/2 jeweils als pixeldistanz [millimeter] zur Bildmitte.
15 Bilder/s ist wirklich ordentlich, hast du das Ganze in ASM implementiert?
Manf, bei mir passt es ins Seitenlayout. Das Dumme an meinem Konstruktionsprogramm ist, dass sich die Größe der Beschriftung nicht verändern lässt. Verkleinere ich es also zu stark, kann man zwar die Konstruktion noch gut erkennen, aber nichts mehr lesen. :/
Edit: habe den Rand abgeschnitten. Besser so?
Bei einem Capture-device (WebCam) krieg ich die Bilder als BMP Zeile für Zeile, Pixel für Pixel, Asche zu Asche.
Da fahr ich nun (pixelweise) durch und krieg logo x-Werte . zB
320 x 240 Bild
0 <= x < 320 mitte bei 160, klaro
Da kein Schwein die Brennweite der Webcam kennt, mußte ich natürlich wie beschrieben erstmal rückrechnen.
Noch eine Erklärung: Ich hab keine Stereocam, also hab ich mit Spiegeln zwei Bilder in eine Kamera nebeneinander reingestopft. Im dem einen Bild arbeite ich dann mit zwei pointern fürs linke und rechte Bild
Das geht auch in C++ ganz flutschi. Das wirkliche Problem ist es, gleiche Punkte in den zwei Bildern erstmal zu bestimmen. (Man kriegt ja drei Farben je Punkt, mit Helligkeit ist es da nicht so einfach)
UND die Bilder rauschen ganzschön, wenn sie live sind. bei Standbildern ist das etws leichter.
Sonst alles paletti ?
Ah ja, unterm H.. ausgeloggt. Der Gast war ich, für sowas steh' ich 'grade.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Vielen Dank, ich kaufe mir auch bald mal einen größeren Bildschirm.Edit: habe den Rand abgeschnitten. Besser so?
Manfred
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?
Ich hab leider "Brennweite" gesagt, dabei ist der Ausdruck eigentlich falsch. Gemeint ist der abstand Bild / Linse
Das (reale) Bild entsteht ja "hinter" dem Brennpunkt. Mein Optik-Unterricht ist schon ein paar Wochen her, da müßt ich echt nachschauen, gibt's einfache Formeln.
Ich hab es damals sinnlos gefunden, mit Millimetern Brennweite auf Meter Entfernung umzurechnen, und daher die gemessene Entfernung Bildmitte / Object einfach als Zahl genommen. Wenn ich ein Lineal von einem Meter im Abstand zwei Meter aufgenommen haben, waren das ganz einfach irgendwelche bestimmten Millimeter am Schirm oder Pixel oder sonstwas.
Und wenn ich einen senkrechten Stab in einem Meter entfernung aufgenommen habe, dann hat der ganz einfach eine bestimmte differenz x1/x2 ergeben.
Dadurch haben mich die genauen Eigenschaften der Kamera eigentlich garnicht wirklich interessiert, da es ja nur um die DIFFERENZ x1 / X2 und den Augenabstand geht.
Ist mir klar, jeder wirklich Optiker bringt mich wahrscheinlich sofort um.
Aufpassen auf die Vorzeichen von X1 u. X2 , nur wenn das Object zwischen den Augen ist, isses so, wie gezeichnet.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen