PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Das Auge



g0nz00
30.08.2007, 21:37
Hallo,

Ich möchte hier eine Idee vorstellen die mich in den letzten Tagen beschäftigt hat und möchte mit euch die machbarkeit diskutieren.

Wenn ich einen Roboter mit 2 Kameras ausstatte dessen abstand a= 20cm ich genaustens bestimme.

Anschließend lagere ich die beiden "Augen" Mechanisch so das sie nach oben, unten, links und rechts schwenken können. Anhand eines Schrittmotors oder anderen Sensoren sollte ich den Winkel des Auges nach oben/unten und links/rechts bestimmen können.

Dann die "Augen" mit einer Optik ausstatte an der ich den Brennpunkt der Linsen Verändern und bestimmen kann.

Wenn ich anhand einer Blende die Lichtintensität verändern kann und eventuell einige Filter wechselbar ( wie bei einem Scanner aus der Disco ) mache.

Dann sollte man doch ein vielseitigen Sensor haben.

Ich dachte das man nun: ( Laborbedingung Mensch vor einem Einfarbigen Tuch )

Anhand der Winkel der Augen, wenn beide versuchen einen Makanten Punkt genau mittig des entsprechenden Bildes positioniere, ließe sich doch die entfernung bestimmen.

Anhand vom Winkel alpha ( Auge links ) und Winkel beta ( Auge rechts ) ließe sich doch eine ungefähre entfernung bestimmen.

Alle Winkel in einem Dreieick ergeben 180° seite a ist bekannt ( Abstand der Augen ) und die Winkel der Augen kann ich an der Mechanik ablesen, nun kann man doch die restlichen beiden Seitenlängen ausrechnen und hat den Abstand zum Objekt.

Wenn ich bei einem Menschen zuerst den übergang vom Fuß zum Boden ausmesse und danach den übergang kopf mit hintergrund dann weiß ich die Strecke zwischen den beiden Punkten = größe der Person.

Nun eine Weitere überlegung:

Wenn ich einen Bestimmten Punkt Versuche anhand der Optik scharf zu stellen dann könnte man doch anhand der Brennweite auch den Abstand bestimmen oder? Wenn ja könnte der Roboter grobe entfernungsdaten erhalten obwohl er 2 unterschiedliche Dinge betrachtet.

Nun dachte ich daran z.B. Die Daten der Kammeras mit einem µC auszuwerten und somit zusatzinformationen zum eigentlichen Bild zu gewinnen.

Wenn etwas schwer zu erkennen ist dachte ich daran die Farbfilter einzusetzen vieleicht wenn die Kamera durch eine Blaue Scheibe guckt erkennt sie die Konturen besser.

Man könnte ja in verschiedenen genauigkeisebenen Arbeiten

Der Roboter schaut durch die gegend und jemand läuft ins bild nun guckt der roboter wer das Sein kann und zoomt auf das Eiförmige etwas im oberen virtel des Objektes. Macht einige Bilder zur auswertung mit dem Rechten Auge oder beiden. Mit dem "unbenutzten" Auge zoomt er das Auge des Objekts oder etwas anderes eindeutiges in seinem Gesicht an und stellt dieses Scharf nun hat er eine grobe entfernung zum Objekt und ein Bild des Gesichtes. Wenn etwas Genauer betrachtet wird benutzt der Roboter beide Augen und erhält 3 messwerte die Brennweiten der Beiden Augen + Die Winkelgeschichte und somit kann er den Abstand sehr genau ermitteln.



so das wars erstmal ;)

g0nz00

M@tes
30.08.2007, 22:22
theroetisch durchaus machbar, praktisch aber viel Aufwand.
allein schon die begrenzte Leistung der uC (habs bisher nur gelesen, nicht ausprobiert) weiter die Software mit Bilderkennung...

Beispiel Panoramafotos:
Erst seit kurzem gibt es halbwegs gescheite Software, die Bilder mit verschiedenen Helligkeiten und Winkeln ziemlich genau aufeinanderlegen können. Das dauert mit schnellen Dekstopcomputer schon bis zu einigen Minuten. Zugegeben, die Bilder sind weit grösser, aber der Aufwand ist nicht weniger gross.

Wäre aber mal ne rechte Herausforderung! Die ich selbst auch irgendwann mal probieren möchte.

recycle
31.08.2007, 03:23
Anhand der Winkel der Augen, wenn beide versuchen einen Makanten Punkt genau mittig des entsprechenden Bildes positioniere, ließe sich doch die entfernung bestimmen.
Anhand vom Winkel alpha ( Auge links ) und Winkel beta ( Auge rechts ) ließe sich doch eine ungefähre entfernung bestimmen.
Alle Winkel in einem Dreieick ergeben 180° seite a ist bekannt ( Abstand der Augen ) und die Winkel der Augen kann ich an der Mechanik ablesen, nun kann man doch die restlichen beiden Seitenlängen ausrechnen und hat den Abstand zum Objekt.

Wenn du die Entfernung über den Winkel der Augen berechnen willst, müssen sich die Augen für grösserer Entfernungen aber sehr genau posionieren lassen. Klingt mir recht aufwendig.
Wenn beide Augen starr und parallel ausgerichtet sind, müsste sich die Entfernung eines markanten Punktes doch auch über den Abstand den er auf den beiden Bildern des rechten und linken Auges hat ausrechnen lassen.
Schwieriger als die Berechnung der Entfernung stelle ich mir allerdings vor, einem Controller oder Computer beizubringen, welcher "markante" Punkt überhaupt von Interesse ist.



Wenn ich bei einem Menschen zuerst den übergang vom Fuß zum Boden ausmesse und danach den übergang kopf mit hintergrund dann weiß ich die Strecke zwischen den beiden Punkten = größe der Person.

Den Teil verstehe ich nicht.
Was willst du für einen Übergang vom Fuss zum Boden messen?
Wenn die Person steht gibts zwischen Füssen und dem Boden nicht viel Abstand zu messen.
Der Abstand zwischen Kopf und irgendeinem Hintergrund, z.B. einer weissen Wand dürfte mit einer Kamera schwierig zu messen sein. Inwiefern geben diese beiden Werte Rückschluss auf die Körpergrösse der Person?



zoomt er das Auge des Objekts oder etwas anderes eindeutiges in seinem Gesicht an und stellt dieses Scharf nun hat er eine grobe entfernung zum Objekt und ein Bild des Gesichtes.

Wie willst du einem Roboter beibringen, was scharf ist?
Normalerweise muss man bei Kameras erst mal die Enfernung des Motivs wissen, bzw. messen, um das Bild scharf stellen zu können.

Ein Teil von dem was du dir vorstellst, lässt sich sicherlich realisieren. Für Bildverarbeitung braucht man aber einiges an Speicher und ne Menge
Da dürfte ein PC eher geeignet sein als ein Microcontroller.

MeckPommER
31.08.2007, 07:23
Das Scharfstellen ist kein Problem, das macht jede Autofocus-Kamera auch. Hierfür werden im Sichtfeldzentrum zwei oder mehrere dicht beieinander liegende Puntke genommen, und die Schärfe solange justiert, bis maximale Helligkeitsunterschiede dieser Punkte festgestellt werden.

Ich plane eine ähnliche Verfahrensweise, jedoch ersteinmal mit einer Fotodiode auf dem einen Sensorkopf und einer starken Lichtquelle auf dem anderen Sensorkopf. Die vom Sensor aufgefangenen Lichtreflexionen in Verbindung mit den Winkeln der Köpfe sollen hierbei zur Entfernungsbestimmung dienen.
Erheblich simpler als dein Vorhaben, aber ein Anfang :)

radbruch
31.08.2007, 07:49
Hallo g0nz00

Das Meiste ist schon richtig, allerdings gibt's dabei auch, wie schon beschrieben, viele Probleme.

Ein weiteres sehe ich hier: Da die Seite des Dreiecks, deren Länge dir bekannt ist, auf dem Roboter selbst ist (zwischen den Kameras), wird sie im Verhältniss zum Abstand des Objekts ziemlich klein sein. Geringste Ungenauigkeit im Abstand oder dem Winkel ergeben große Fehler beim Berechnen der Entfernung. Das Bild wird in den Kameras auf einer Fläche erzeugt, Abstände und Winkel gelten dann nur, wenn der Drehpunkt genau unter dieser Fläche ist und eigentlich nur für ein Objekt, dass genau auf diesem Drehpunkt abgebildet wird.

Übrigens kann man einfache Stereobilder auch mit einer mechanischen Halterung machen mit der eine Kamera auf zwei definierte Positionen geschwenkt/geschoben wird. Das ist zwar extrem langsam, liefert aber für erste Tests kostengünstige Stereobilder.

Gruß

mic

Markus4004
31.08.2007, 15:13
Hallo,
Wenn ich anhand einer Blende die Lichtintensität verändern kann und eventuell einige Filter wechselbar ( wie bei einem Scanner aus der Disco ) mache.


Typischerweise nimmt man dabei aber keine veränderliche Blende, sondern verändert die Belichtungszeit (weniger Mechanik). Automatisch wechselbare Filter stelle ich mir sehr aufwändig vor. Wie groß soll das Ganze denn werden?



Wenn ich einen Bestimmten Punkt Versuche anhand der Optik scharf zu stellen dann könnte man doch anhand der Brennweite auch den Abstand bestimmen oder? Wenn ja könnte der Roboter grobe entfernungsdaten erhalten obwohl er 2 unterschiedliche Dinge betrachtet.


Da aber oft ein sehr großer Bereich scharf ist, wird das nur eine sehr grobe Entfernungsbestimmung. Wäre es da nicht einfacher, die beiden Kameras parallel auszurichten und mit einem fixen Fokus zu betreiben? Damit kannst Du von allen Objekten gleichzeitig die Entfernung bestimmen.



Wenn etwas schwer zu erkennen ist dachte ich daran die Farbfilter einzusetzen vieleicht wenn die Kamera durch eine Blaue Scheibe guckt erkennt sie die Konturen besser.


Und woher weißt Du, bei welchem Filter die Kamera am besten sieht? Einfach alle ausprobieren? Außerdem kann man das bei einer Farbkamera ja auch per Software machen. Einfach den blauen Kanal nehmen.


Als nächstes solltest Du wohl mal Deine Anforderungen genauer spezifizieren:
Welche Genauigkeit willst Du bei der Entfernung und Position erreichen (1cm oder eher 1m?)? Welche Genauigkeit braucht dann die Mechanik und welche Auflösung die Kamera?

Wie schnell soll das Ganze reagieren? Es bringt ja nichts, wenn Du die Enfternung zu einem Menschen bestimmt hast, der schon lange woanders ist. Welche Datenmengen musst Du dazu verarbeiten können?

Markus

g0nz00
31.08.2007, 15:57
hallo,

Wenn wir jemanden angucken können wir auch nicht auf den cm genau sagen wie weit eine Person oder ein gegenstand weg ist. Durch anstrengen der augen und etwas zeit können wir es genauer schätzen. aber für viele altägliche sachen ist es nur wichtig ob es 1 , 2 oder 3 m sind.

und wenn es um dinge geht wie einen Arm zu positionieren dann befindet sich das objekt unter 1m entfernt was wiederum die genauigkeit erhöht weil die Winkel der Augen größer werden.

Oder wenn wir über die Straße gehen gucken wir auch nur ob das Auto weit genug weg ist wenn ich sagen kann >30m dann renn ich los ^^ ( natürlich nicht an einer schnellstraße )

@recycle

Wenn ich den Roboter jemanden angucken lasse dann gibt es in meinem Beispiel ja den Schuh und der ist bei Laborbedingungen ja andersfarbig als der boden daher gibt es dort einen spontanen übergang zu einer anderen Farbe und am oberen ende des objektes gibt es wieder so einen Übergang.

Wenn ich nun Zeilenweise von unten nach oben scanne dann erhalte ich einen Farbwechsel von boden auf schuh und ab dem ende das kopfes erhalte ich wieder eine Zeile die dann nur noch Einfarbig ist. den zurückgelegten winkel von oben nach unten gibt mir dann die größe des objektes.

Ich habe hier im Forum etwas gelesen wo jemand konturen sucht. anhand von spontanen Farbwechseln und anhand dieser Werte ( vergleich in einer Matrix ) konnte er kreise, Kegel usw. erkennen lassen.

g0nz00

M@tes
31.08.2007, 20:48
Betonung auf Laborbedingungen ;-(

g0nz00
01.09.2007, 12:56
Naja irgendwie muß man ja anfangen wenn einen soetwas interessiert ;)

Werde mir mal 2 Kameras organisieren und eine kleine Kopf und augenmechanik aufbauen dann kann man Spielen. ^^

recycle
01.09.2007, 13:10
Wenn wir jemanden angucken können wir auch nicht auf den cm genau sagen wie weit eine Person oder ein gegenstand weg ist. Durch anstrengen der augen und etwas zeit können wir es genauer schätzen. aber für viele altägliche sachen ist es nur wichtig ob es 1 , 2 oder 3 m sind.

Was das Einschätzen von Entfernungen angeht, sind die menschlichen Fähigkeiten besonders bei grösseren Entfernungen sehr eingeschränkt.
Ich kann mich noch erinnern, dass wir früher in bei Grundausbildung bei der Bundeswehr mal Entfernungen von grösseren Gegenständen (Häusern, Fahrzeugen, Personen) schätzen sollten. Da waren Fehlschätzungen von 100% und mehr eher die Regel als die Ausnahme.



und wenn es um dinge geht wie einen Arm zu positionieren dann befindet sich das objekt unter 1m entfernt was wiederum die genauigkeit erhöht weil die Winkel der Augen größer werden.

Dabei nutzt unser Gehirn aber noch weitere Informationen die uns aufgrund unserer Intelligenz oder unseres Wissens und nicht unserer Sensorik zur Verfügung stehen.
Wenn wir jemandem die Hand geben wissen wir z.B. automatisch, dass wir die Entfernung zur Hand und nicht zu den Augen des Gegenübers abschätzen müssen.
Wenn wir etwas auf den Tisch stellen, wissen wir, dass es auf die Entfernung der vordere Tischkante ankommt auch wenn die hintere Tischkante optisch eventuell einen viel markanteren Kontrast zur Wand darstellt.
Beim Einschätzen grösserer Entfernungen nutzen wir auch meist die uns bekannte Grösse eines Objekts, D.h. wir messen nicht mit den Augen die Entfernung, sondern wissen wir gross ein Objekt ist und schätzen dessen Entfernung anhand der Grösse in der wir es sehen.
D.h. wir Menschen kombinieren unsere Sensorik mit eine riesigen Datenbank voller Infos und kommen oft nur duch die Kombination auf brauchbare Ergebnisse.



Oder wenn wir über die Straße gehen gucken wir auch nur ob das Auto weit genug weg ist wenn ich sagen kann >30m dann renn ich los ^^ ( natürlich nicht an einer schnellstraße )

Auch hier greifen wir auf weitere Informationen zu, nämlich die Geschwindigkeit des Objektes.
Wir warten ja nicht auf ein parkendes Auto, wissen dass Fahräder meist langsamer sind als Motorräder und Autos. Wir schätzen ab, wie schnell das Fahrzeug fährt, ob es beschleunigt, konstant fährt oder abbremst...
Dabei nutzen wir die optische Grössenänderung, wahrscheinlich unser Gehör und auf jedenfall auch wieder unsere grosse Datenbank mit Erfahrungswerten.
Natürlich lässt sich die Geschwindigkeit auch aus der Entfernungsänderung errechnen, aber dafür muss die Berechnung der Entfernung schnell genug gehen.



@recycle

Wenn ich den Roboter jemanden angucken lasse dann gibt es in meinem Beispiel ja den Schuh und der ist bei Laborbedingungen ja andersfarbig als der boden daher gibt es dort einen spontanen übergang zu einer anderen Farbe und am oberen ende des objektes gibt es wieder so einen Übergang.

OK, dann habe ich jetzt kapiert, was du mit "Übergang" meintest.

Was Forschung und Experimentieren betrifft, ist das was du da planst sicher interessant und wird in der Zukunft wahrscheinlich auch an Bedeutung gewinnen.
Da du dafür eine Menge Rechenleistung, Speicher usw. brauchst, würde ich es aber wie gesagt erst mal auf dem PC angehen.

Für einen Roboter ist es glaube ich momentan noch nichts, da es da heute sicher noch Sinn macht sparsam mit den Resourcen umzugehen. Im Nahbereich lassen sich Entfernungen mit den "üblichen" IR- und US-Sensoren einfacher, genauer und mit wesentlich weniger Rechenleistung ermitteln.
Auf grössere Entfernungen wird die Messung über Bildauswertung vermutlich so ungenau, dass sie für einen Roboter nicht mehr nutzbar sind.
Vieles von dem, wo wir Menschen noch mit sehr ungenauen "Messwerten" arbeiten können weil wir diese über Erfahrungswerte usw. für uns brauchbar machen, dürfte für einen Roboter zur Erfüllung seiner Aufgaben entweder nicht ausreichen oder sowieso gar nicht interessant sein. (wir Menschen sammeln ja auch eine Unmenge Informationen, die wir eigentlich gar nicht brauchen und irgendwann wieder löschen)


Irgendwann wird die Entfernungsmessung über Kameras aber bestimmt mal eine grössere Rolle bekommen.
Wenn ein Roboter sowieso mit Bildverarbeitung arbeitet und Rechenleistung keine Rolle mehr spielt, liegt es ja nahe die Entfernung mindestens ergänzend zu anderen Sensoren auch über die Kameras auszuwerten.

vklaffehn
01.09.2007, 13:34
Moin!
Ich bin der Meinung, das gerade die hier angesprochenen Dinge ziemlich durch die Erfahrung des Menschen, der guckt, ermittelt werden, so kann ich z.B. durchaus ungefährdet über Straßen gehen, obwohl ich nur mit einem Auge sehe, allerdings habe ich gerade im Nahbereich manchmal Schwierigkeiten. z.B. einen Stft aufzuheben, wenn ich unkonzentriert bin, außerdem falle ich leicht auf optische Täuschungen herein, wenn da z.B. gerade mit den Größenverhältnissen gespielt wird. Da ich aber im Prinzip auch mit nur einem Auge meine Umwelt halbwegs räumlich wahrnehmen kann, geht das bestimmt z.B. auch mit nur einer Kamera, die sich bewegt und aus den unterschiedlich verschobenen Kanten/Punkten die 3d-Information gewinnt.
Nur mal so am Rande erwähnt :-)
MfG
Volker