Forum: PC-Programmierung Bildverarbeitung mit WebCam


von WebCamUser (Gast)


Lesenswert?

Guten Morgen,

mit einer WebCam soll der Abstand zu einer blinkenden LED gemessen 
werden.
Wie ist die genau Vorgehensweise, damit der Abstand detektiert werden 
kann?
(Daten WebCam: Logitech c920, HD, AutoFocus, Brennweite 3,67mm, 
Diagonales Sichtfeld 78°)

von Bernd S. (bernds1)


Lesenswert?

Wenn's keine Stereo-Webcam ist, würde ich sagen, gar nicht.
Woher soll die Webcam die Entfernung haben? Sie "sieht" die LED als 
Punkt. Wenn sich deren Abstand ändert, aber die X- und Y-Position auf 
dem Sensor nicht, dann merkt die Kamera nix davon.

Eine Lösung wäre meiner Meinung nach nur eine Stereo-Kamera (3D) oder 
eine zweite Kamera (was dann auf das Gleiche rauskommt) und dann mit den 
beiden Bildern eine Triangulation machen...

Nur so ein Gedanke: Halt dir mal ein Auge zu und versuche dann mal den 
Abstand zu einem Gegenstand so abzuschätzen, daß du ihn auf Anhieb 
antippen kannst. Mit zwei Augen kein Problem, aber mit einem...

von WebCamUser (Gast)


Lesenswert?

GHi Bernd S.,

vielen Dank für deinen Beitrag. Mit einer zweiten LED könnte man aber 
den Abstand detektieren oder?

von Petra (Gast)


Lesenswert?

WebCamUser schrieb:
> Mit einer zweiten LED könnte man aber
> den Abstand detektieren oder?

Genau! Man braucht exakt 2 Lichtquellen um mit nur einem Auge räumlich 
sehen zu können. Halleluja!

von Bernd S. (bernds1)


Lesenswert?

Wenn man den Abstand zwischen den beiden LED's kennt, könnte man eine 
Triangulation machen. Den Pixelabstand der Kamera müßte man dann in 
einen Winkel umrechnen und kann dann beispielsweise sagen: "Die beiden 
LED's sind 12° auseinander." Wenn man den Abbildungsmaßstab der Kamera 
bzw. deren Objektiv kennt (das Objektiv dürfte auch keinerlei 
Verzerrungen haben), kann man aus dem bekannten Abstand zwischen den 
LED's und dem Winkel (in dem Beispiel 12°) dann die Entfernung zu den 
LED's berechnen.
Stichworte: Trigonometrie, Dreiecksberechnung

von Bernd S. (bernds1)


Lesenswert?

Petra schrieb:
> WebCamUser schrieb:
>> Mit einer zweiten LED könnte man aber
>> den Abstand detektieren oder?
>
> Genau! Man braucht exakt 2 Lichtquellen um mit nur einem Auge räumlich
> sehen zu können. Halleluja!

Mit zwei beliebigen LED's, die man irgendwo sieht, geht das natürlich 
nicht. Da hast du schon Recht. Aber wenn man den Abstand zwischen den 
LED's kennt und die beiden auch die gleiche Entfernung zur Kamera haben 
(das ist wichtig!), dann sollte es schon gehen.

von JK (Gast)


Lesenswert?

Bernd S. schrieb:
>
> Nur so ein Gedanke: Halt dir mal ein Auge zu und versuche dann mal den
> Abstand zu einem Gegenstand so abzuschätzen, daß du ihn auf Anhieb
> antippen kannst. Mit zwei Augen kein Problem, aber mit einem...

Der Autofocus einer Kamera 'sieht' nicht stereoskopisch, kann aber 
trotzdem (indirekt) die Entfernung zum Objekt erkennen und präzise den 
Focus einstellen.

Rein theoretisch könnte man also die aktuelle Position des Autofocus 
auslesen und somit die Entfernung ermitteln.

von WebCamUser (Gast)


Lesenswert?

Hallo Bernd,

den Pixelabstand von beiden Leuchtquellen kann ich bereits mit der 
WebCam ermitteln. Was hat es nun mit der Triangulation auf sich ?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Unter der Voraussetzung, dass die Verbindungslinie zwischen den beiden 
LEDs parallel zur Bildebene der Kamera liegt, kannst du aus dem Abstand 
zwischen den LEDs, dem Abstand der Bilder der LEDs auf dem Sensorchip 
und der Brennweite der Kamera mittels Strahlensatz den Abstand der LEDs 
von der Kamera berechnen. Ist das Kameraobjektiv nicht verzeichnungsfrei 
(wovon bei einer Webcam auszugehen ist), musst du je nach 
Genauigkeitsanforderungen zusätzlich noch die Verzerrungen bestimmen und 
herausrechnen.

von Walter T. (nicolas)


Lesenswert?

Mit vier LEDs in Tetraederform könntest Du den Mittelpunkt auch dann 
errechnen, wenn die Ebene frei ist. Eindeutig allerdings nur, wenn die 
LEDs unterschiedliche Farben haben.

von Bernd S. (bernds1)


Lesenswert?

WebCamUser schrieb:
> Hallo Bernd,
>
> den Pixelabstand von beiden Leuchtquellen kann ich bereits mit der
> WebCam ermitteln. Was hat es nun mit der Triangulation auf sich ?

Wie Yalu schon sagt, schau mal nach "Strahlensatz", damit kannst du die 
Entfernung berechnen.
Wenn du den Abstand der LED's kennst und auch den Abstand der 
Kamerapixel, kannst du die beiden ins Verhältnis setzen. Und das so 
gewonnene Verhältnis benutzt du auf die Brennweite und kriegst damit die 
Entfernung zu den LED's.

von StinkyWinky (Gast)


Lesenswert?

>Man braucht exakt 2 Lichtquellen um mit nur einem Auge räumlich
>sehen zu können. Halleluja!

Wobei es auch eine Quelle und ein Spiegel sein könnte.

von Frank (Gast)


Lesenswert?

Lass' die Kamera schräg auf die Szene schauen, dann bewegt sich das Bild 
der LED horizontal oder vertikal im Bild - daraus kann man die 
Entfernung ableiten. Wenn du die Kamera mit dem Blinken der LED 
synchronisieren kannst, dann mach' je eine Aufnahme mit eingeschalteter 
LED und eine mit ausgeschalteter LED. Durch einfaches pixelweises 
Subtrahieren der beiden Bilder hast du den Lichtpunkt perfekt isoliert 
...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.