CMos-Kameras synchronisieren?

Hallo,

muss das Bild eigentlich in Farbe sein? Wenn nein, denk mal über Folgendes nach: nimm 2 Objektive mit je einem Rot- und Blaufilter, überlagere die beiden Bilder mit halbdurchlässigen Spiegeln auf einem Kamerachip. Durch die enge räumliche Verschränkung der R-, G- und B-Pixel einer Farbkamera dürften die zeitlichen Differenzen der Teilbilder minimal sein ... ?

Frank

P.S. wenn du gar 3 Objektive (R-G-B) in einer Dreiecksanordnung nimmst, wird der Sensor sogar vollständig 3D-tauglich, nicht bloß horizontal.

Reply to
Frank Esselbach
Loading thread data ...

Warum gleich ein paar Bilder hinterher? Egal. Hier eine kleine Auflistung:

Ich kenne beispielsweise eine Schiel-Methode nahezu ohne Hilfsmittel, bzw. mit einem Stück Pappe in der Mitte, um die Bilder für die Augen zu trennen. Das ist schon bei Standbildern sehr gewöhnundsbedürftig und macht eher erst einmal schwindelig.

Dann kenne ich die Filterung mittels Rot-Grün-Farbbrillen. Funktioniert, sieht aber affig aus und ermöglicht nur rot-grün eingefärbte Schwarz-Weiß-Bilder. Dann gab es andere Farbbrillen, die Farbsehen ermöglichen und 3D nur während starker Bewegungen und Kameraschwenks möglich machen. Das gibt einen eher schwachen 3D-Effekt, nötigt den Kameramann zur Dauerzappelei und benötigt AFAIR ebenfalls keine Eingewöhnungszeit. Eine Totgeburt, IMHO, auch wenn es eine Weile lang an den Konsumenten gebracht und im TV getestet wurde. Für nicht bewegte Bilder natürlich absolut unbrauchbar und damit genauso für technische Anwendungen. Diese Methode war reine Spielerei.

Meine bisher beste Lösung für zuhause: Shutterbrille mit 2 LCD-Gläsern, die sich verdunkeln können am Computer: Hier wird immer abwechselnd ein Bild auf das linke Auge gebracht, dann wird das linke Auge verdunkelt, der LCD-Shutter für das rechte Auge geöffnet, ein anderes Bild auf das rechte Auge gebracht usw. Der Nachteil hier: Der Monitor muß schnell sein und eine hohe Bildwiederholfrequenz haben, denn er sendet im Wechsel zwei unterschiedliche Bilder. Außerdem kommt es zu Geisterbildern, deren Stärke davon abhängt, wie gut und schnell der LCD-Shutter abdunkelt (und wie schnell der Monitor das Bild wechseln kann). Daß jedes Auge abwechselnd sieht, stört nicht und merkt man auch gar nicht. Was man jedoch merkt, ist ein stärkeres Flimmern dadurch, daß jedes Auge nur die halbe Bildwiederholfrequenz sieht. Das heißt, ein

100Hz-Monitor wird zu einem 50Hz-Monitor. Nötig (bei der kommerziellen Lösung) ist ein IR-Sender, um den Shutter mit dem Monitorbild zu synchronisieren, damit der Shutter das jeweils richtige Bild auf das jeweils richtige Auge bringt und eine Grafikkarte, die den Sender unterstützt, sowie die Brille selbst. Kabellösungen statt IR gab es auch. Die 3D-Effekte unterscheiden sich nicht vom natürlichen Sehen, einzig das Ignorieren der Geisterbilder braucht evtl. etwas Eingewöhnungszeit. Diese können am Anfang, oder bei kontrastreichen Bildern das 3D-Sehen stören. Daß die Bilder zeitlich versetzt und nicht gleichzeitig ins Auge gelangen, stört das Gehirn abgesehen vom Flimmern wenig. Schließlich ist das ganze System träge und merkt sich die Bilder ein paar ms lang. Insbesondere das Sehzentrum reagiert nur träge auf Helligkeitsänderungen. Wichtig bei der Shuttermethode: Der richtige Abstand zum Monitor. Sonst passen die Unterschiede der Stereobilder nicht zur Bildgröße. Im Treiber gibt es Einstellungen hierzu, sofern der Computer die Bilder selbst berechnet.

Eine wohl noch bessere Lösung: Eine Brille mit 2 eingebauten LCD-Monitoren. Einen für das rechte Auge, einen für das Linke. Nachteil: Groß, schwer, teuer. Man sieht bei den meisten "Brillen" die Umgebung nicht.

Das letzte, das mir gerade einfällt: LCD-Monitore, die je nach Blickwinkel zwei verschiedene Bilder darstellen. Der Proband muß seinen Kopf dann ganz exakt an eine ganz bestimmte Stelle positionieren, oder ein Gerät muß in Echtzeit feststellen, wo der Kopf des Probanden sich gerade befindet. Diese Variante habe ich im RL noch gar nicht gesehen.

Gruß Lars

Reply to
Lars Mueller

Ojeh. Dann gebe ich Dir lieber noch ein paar Hinweise:

Der Ansatz, die Zeilen aus einem CCD/CMOS Sensor direkt in einen Stereo-Matcher zu füttern wird iA grob schiefgehen. Du wirst zwar durchaus "irgendein" Ergebnis bekommen, jedoch wird die Qualität sehr schlecht sein (verglichen damit, was eigentlich möglich ist und was man erwarten würde).

Die meisten Stereo-Matcher reagieren sehr empfindlich auf Fehler in den Eingangsdaten, sobald die Bilder auch nur um wenige Pixel verschoben sind, bricht die Performance drastisch ein. Stereo-Matcher, die direkt im Bildbereich arbeiten, reagieren ausserdem recht empfindlich auf Helligkeitsunterschiede in beiden Bildern. Du musst also auch noch die Helligkeit beider Kameras gegeneinander anpassen. Alternativ kann man einen Stereo-Matcher nehmen, der im Frequenzbereich arbeitet (zB einfach einen Edge-Detector über die Daten laufen lassen), diese Algorithmen haben dann aber wieder ganz andere Probleme...

Nun die wichtigsten Grundlagen zu Stereo-Vision:

- Das Matching beider Stereo-Bilder findet entlang sogenannter Epipolen statt, nicht entlang der Pixel im Kamera-Bild. Google dazu einfach mal nach Epipolargeometrie.

- Bei realen Linsensystemen hast Du immer irgendwelche radialen und/oder tangentialen Verzerrungen. Das führt dazu, daß die Epipole dann im Kamerabild keine Geraden mehr sind, sondern gekrümmt sind (Extrembeispiel: Fischaugen-Objektiv). Gute Optiken weisen rund um das optische Zentrum (rund um die Bildmitte) kaum Verzerrungen auf. Somit hast Du eine gewisse Chance, auch ohne Linsenentzerrung wenigstens in der Bildmitte ein halbwegs brauchbares Ergebnis zu bekommen. Bei einer Billigkamera (zB USB Webcam für EUR 19.99) würde ich mich darauf allerdings nicht verlassen.

- Durch Fertigungstoleranzen etc. wird das optische Zentrum zweier Kameras selten an der selben (Pixel-) Position sein. Achja: die Brennweite von 2 Objektiven stimmt übrigens auch nur recht selten exakt überein.

- Ebenfalls durch Fertigungstoleranzen, aber auch durch Toleranzen bei der Montage beider Kameras ist es kaum möglich die beiden CCDs/CMOS Sensoren so anzuordnen, daß sie in der selben Ebene liegen und dann auch noch die Sensor-Zeilen auf jeweils einer Geraden.

Um all diese Punkte in den Griff zu bekommen, macht man eine Kamera Kalibrierung. Dabei werden sowohl die intrinsischen Parameter der beiden Kameras errechnet (also Linsenverzerrungen, Brennweite, Position des optischen Zentrums) als auch die extrinsischen Parameter (Position beider Kameras gegeneinander, ergibt eine Rotationsmatrix und einen Translationsvektor).

Wirf mal einen Blick auf die Matlab Camera Calibration Toolbox, dort gibt's auch Links zu weiterführenden Informationen:

formatting link

Einen Überblick über aktuelle Stereo-Matcher Algorithmen findest Du auf

formatting link
unter "Results" gibt's Links auf die Papers.

Für eigene Experimente am PC kannst Du auch einen Blick auf die OpenCV werfen, dort ist (IIRC) der Birchfield Algorithmus implementiert.

so long,

Hias

Reply to
Matthias Reichl

Hallo,

Henning Paul schrieb:

Ja, und?

Ein halber Takt ist für den Anwendungsfall nun wirklich egal. So genau wird es sowieso nicht.

Marcel

Reply to
Marcel Müller

Je nach Anwendung ist die räumliche Aufteilung der R/G/B Pixel durchaus ein Problem (vor allem bei Kanten mit starkem Kontrast). Siehe zB auch den Aufwand, den Digitalkameras treiben um aus den Rohdaten das R/G/B Pattern halbwegs brauchbar rauszurechnen.

Für 3D braucht man nur 2 Kameras. Damit bekommst Du für (fast) jeden X/Y Pixel eine Z Koordinate.

Mehr als 2 Kameras kann man zB dann verwenden, wenn es Probleme mit Verdeckungen o.ä. gibt. Dafür handelt man sich dann aber wieder ganz neue Probleme ein, nämlich beim Zusammenführen der einzelnen (paarweise generierten) 3D Daten.

so long,

Hias

Reply to
Matthias Reichl

Danke für die vielen guten erschlagenden Infos :-)

Ich hatte daran gedacht,vertikale Kanten (also scharfe Kontrastübergänge) miteinander zu vergleichen. Oder wenn alles versagt, wie die billigen 3D-Scanner vielleicht ein Lichtraster projezieren. (Anmerkung : Ich will keine Objekte digitalisieren, es geht hier eher um eine Umwelterkennung für einen Roboter ;-) )

Aber bevor ich da auch nur in die Nähe eines Lötkolbens komme wird das natürlich erstmal virtuell am PC evaluiert...

Reply to
Andreas Koch

Stimmt, die Idee ist gut. FBas zu decodieren wird der uC zwar nicht hinkriegen, aber mit einem RGB-Decoderchip könnte es gehen. Allerdings fürchte ich dann wird der optomechanische Aufbau etwas komplex...

Reply to
Andreas Koch

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.