Hallo liebe Forumsgemeinde,
in naher Zeit fange ich meine Diplomarbeit an und möchte nun schonmal
etwas Brainstorming bezüglich ihrer Realisierung betreiben. Es handelt
sich um die Objekterkennung von vorbeifahrenden Gegenständen in einer
Produktionsanlage eines "grossen Automobilherstellers" :-). Das Objekt
ist in seiner Form bekannt und somit einfach im Bild zu ermitteln. Die
eigentliche Aufgabe die auf mich zukommt ist die Berechnung seiner
Geschwindigkeit. Jedes Objekt besitzt eine eigene sich ändernde
Geschwindigkeit. Aus welchen Gründen auch immer soll über einen
gegebenen Bereich ein v(t) Profil des Objektes ermittelt werden. Bis
hierhin alles noch OK meinerseits. Leider stehen Kamera und
Objetlaufbahn in keinem rechten Winkel zueinander sondern das Objekt
bewegt sich auf Teils abgerundeten Bahnen an der Kamera vorbei: Was
soviel heisst, dass es es auf die Kamera zukommen und sich auch wieder
von ihr wegbewegen kann. Sprich die ganze Sache müsste irgendwie in 3D
bewätigt werden, was mich momentan etwas ratlos darstellen lässt. Freue
mich über konstruktive Diskussion, Ideen etc.
Viele Grüsse,
Maddin
>Sprich die ganze Sache müsste irgendwie in 3D bewätigt werden
wieso? Du kannst doch jedem Punkt auf dem aufgenommenen Bild ein (oder
mehrere) Wert zuweisen. Stichpunkt: Vektorfeld oder Kennfeld. Der Rest
ist Definitionssache, sprich: du kannst dir x-beliebige
Geschwindigkeitsprofile anlegen, je nach tatsächlichen Gegebenheiten.
Dann kannst du dir 3D sparen, und kommst mit wesentlich weniger Aufwand
Geräten Kosten aus.
Die Geschichte soll möglichst unabhängig von Inputs wie Abständen bzw.
Radien ablaufen, da es an verschiedenen Stellen möglichst flexibel
einsetzbar sein soll. Auch sollen keine zwei Kameras eingesetzt werden,
was wohl für ein 3d Gerät spricht. Was von mir erwartet wird ist eine
Machbarkeitsstudie sowie ein Konzept für eine spätere Implementierung.
Jedoch würde ich gernee genau das selbst in die Hand nehmen. Know-how im
Bereich Elektroniks, MCUs, DSPs und FPGAs ist vorhanden. Jedoch fehlt
mir die richtige Idee wie ich an die Sache rangehen könnte!
Also ich kann mir vorstellen das es über ein "Raster" mit festgelegtem
Gitterabstand möglich sein müsste die Geschwindigkeit des Körpers zu
berechnen... Ober über die Eckpunkte eines Immaginären Rechtecks und der
Änderung des Schwerpunktes des Körpers zu den Eckpunkten
Hallo Maddin,
Autofokus
zur Entfernungsbestimmung kannst Du (neben Möglichkeiten wie Lasersensor
und Ultraschall) einen Autofokusalgorithmus verwenden. Voraussetzung
hierfür ist, daß Du eine Optik hast, deren Brennweite Du verstellen
kannst.
Im Prinzip geht es darum, die Brennweite der Optik so einzustellen, daß
die hohen Ortsfrequenzen des Bildes maximiert werden; dann ist das Bild
"scharf".
Kreuzkorrelation
Das Maximum der Kreuzkorrelationsfunktion zweier Bildmuster zeigt Dir
dessen Entfernung (und damit die Geschwindigkeit) an. Evtl. mußt Du die
Schiefprojektion mit berücksichtigen.
Optischer Fluß
Schau Dir auch mal den Begriff des optischen Flusses an. Ich kenne den
Hintergrund nicht ganz genau. Der optische Fluß wird u. a. bei der
Navigation von autonomen mobilen Systemen (Robotern) verwendet.
Gruß,
Michael
Hallo Madin,
du sagst, daß die Form bekannt ist. Die Kamera steht fest.
Daher weist du doch, das die Form auf z.B. 100 Pixel in Y abgebildet
wird
wenn sie in 5 Metern direkt vor der Kamera steht. Bei nur 4 Meter
sind es dann vielleicht 120 Pixel, d.h. ein linearer Zusammenhang!
Diese Abbildung ist auch auf einem Kreisbogen von 4 bzw. 5 Metern
gegeben (Pixel in x auswerten).
Alles läuft also auf eine Berechnung des Winkels und des Radiuses raus.
Damit kann dann die Position bzgl. der Kamera angegeben werden.
Das Bewegungsprofil ist dann die Positionsangabe in einem festen
Zeitraster.
Die Aufgabe selber ist also eigentlich recht einfach.
Schwerpunkt dürfte die Auswahl der Komponenten (Kamera, Optik ) und das
Beschreiben der Messgrenzen (max. Winkel, Genauigkeit etc.) sein.
Viel Erfolg
hansl
Vielen Dank für eure Antworten und Vorschläge. Nochmal etwas zu den
Anforderungen: Die Sache sollte wenn überhaupt möglich völligst ohne
Inputs wie die Angabe von Entfernung bzw. Radius. Die Kamera sollte man
einfach nur aufstellen und alle für die Auswertungen nötigen Parameter
über Sekundärmessungen ermitteln.
Wie Michael schon schrieb kann dies z.B über Ultraschallmessungen
realisiert werden. Jedoch müssten in diesem Fall alle Punkte der vom
Objekt zurückgelegten Strecke ausgemessen werden !?! oder täusche ich
mich da ?
Wie ich schon oben erwähnte muss ich damit rechnen, dass sich das Objekt
auf
einer Art Kurvenform an mir vorbeiläuft.
Unter anderem führte Michael die Entfernungsmessung via
Autofokusalgorithmen auf. Ich hatte hierzu schon mal kräftig gegoggelt,
aber wirklich was brauchbares leider nicht gefunden. Wenn hierzu nochmal
jemand etwas schreiben könnte wäre dies klasse.
@Hans die Form ist zwar bekannt, jedoch wie man mir sagte muss ich damit
rechnen, dass diese relative kmplex ist. Was mir in Bezug auf deinen
Vorschlag noch nicht ganz klar ist, wie es sich für Fälle verhält, wenn
das Objekt in Kamerarichtung aus dem Bild läuft ?
Ich frage mich, ob es so etwas nicht vielliecht schon als Komplettlösung
exisitiert (habe noch nichts in der Art: Berührungslose Ermittlung von
Geschwindigkeit + Bewegungsrichtung eines Objektes gefunden)
Gruss, de Maddin
Hallo Maddin,
die Formerkennung kann auch über ein Teach-in geschehen. Wichtig ist nur
die Erkennung an sich, damit der Pixelabbildung eine Entfernung
zugeordnet weren kann.
Naturlich müssen die verfolgten Objekte im Bildbereich bleiben.
Wenn du eine ewas höherwertige Komplettlösung brauchst schau dir
das alte (wohl abgelaufene) Siemens-Patent an:
http://www.wipo.int/pctdb/en/wo.jsp?IA=DE1991000775&WO=1992008204&DISPLAY=STATUS
Viel Vergnügen beim lese ;)
gruß hans
Maddin wrote:
> Vielen Dank für eure Antworten und Vorschläge. Nochmal etwas zu den> Anforderungen: Die Sache sollte wenn überhaupt möglich völligst ohne> Inputs wie die Angabe von Entfernung bzw. Radius. Die Kamera sollte man> einfach nur aufstellen und alle für die Auswertungen nötigen Parameter> über Sekundärmessungen ermitteln.
dann sind das schon mal zwei Aufgaben
> Wie Michael schon schrieb kann dies z.B über Ultraschallmessungen> realisiert werden. Jedoch müssten in diesem Fall alle Punkte der vom> Objekt zurückgelegten Strecke ausgemessen werden !?! oder täusche ich> mich da ?>> Wie ich schon oben erwähnte muss ich damit rechnen, dass sich das Objekt> auf> einer Art Kurvenform an mir vorbeiläuft.>> Unter anderem führte Michael die Entfernungsmessung via> Autofokusalgorithmen auf. Ich hatte hierzu schon mal kräftig gegoggelt,> aber wirklich was brauchbares leider nicht gefunden. Wenn hierzu nochmal> jemand etwas schreiben könnte wäre dies klasse.
mit Hilfe der FFT kann man feststellen welche Frequenzen sich im Bild
befinden (wenn man das Bild als Funktion versteht)
je schärfer ein Bild ist desto mehr hohe Frequenzen befinden sich in
einen Bild, du stellst also den Motor an der Fokusvorrichtung auf
beliebigen wert ein, errechnest das Spektrum, verstellst den Motor,
errechnest das Spektrum,
Wenn dein Spektrum bei den hohen Frequenzen maximal ist, ist dein
Autofokus richtig eingestellt, von dieser Einstellung kannst du auf die
Entfernung von der Kamera schließen.
du musst aber den Hintergrund weg lassen, am einfachsten wird das mit
einem Bewegungs-Filter gehen
> @Hans die Form ist zwar bekannt, jedoch wie man mir sagte muss ich damit> rechnen, dass diese relative komplex ist. Was mir in Bezug auf deinen> Vorschlag noch nicht ganz klar ist, wie es sich für Fälle verhält, wenn> das Objekt in Kamerarichtung aus dem Bild läuft ?> Ich frage mich, ob es so etwas nicht vielliecht schon als Komplettlösung> exisitiert (habe noch nichts in der Art: Berührungslose Ermittlung von> Geschwindigkeit + Bewegungsrichtung eines Objektes gefunden)
Vieles lässt sich aus Uni Scripten herausholen, einfach nach Objekt
Erkennung, Maschinelles Sehen suchen
Schaue dir auch mal bei
http://de.wikipedia.org/wiki/Kategorie:Bildverarbeitung an, jeder
Artikel enthält neue Links usw.
Wenn du erstmal die Begriffe kennst findet man noch mehr schätze.
http://en.wikipedia.org/wiki/Pattern_recognition
pattern recognition
computer vision
Also Tools zum spielen empfehle ich octave (bzw. Matlab) und ImageJ, IDL
soll auch gut geeignet sein.
Hallo Maddin,
> Unter anderem führte Michael die Entfernungsmessung via> Autofokusalgorithmen auf. Ich hatte hierzu schon mal kräftig gegoggelt,> aber wirklich was brauchbares leider nicht gefunden. Wenn hierzu nochmal> jemand etwas schreiben könnte wäre dies klasse.
Gegeben ist eine Optik mit verstellbarem Objektiv.
Um die Entfernung des Objektes herauszubekommen, variierst Du die
Brennweite f des Objektives und bildest nach jeder Änderung die
zweidimensionale FFT des Bildausschnittes, dessen Entfernung Du
bestimmen willst.
Das Objektiv fokussiert genau dann auf den Bildausschnitt, wenn die
hohen Frequenzen der FFT maximale Werte annehmen.
Aus der Brennweite f des Objektivs bei maximaler Bildschärfe (=maximalen
Anteilen der hohen Frequenzen) kannst Du die Entfernung des Objektes
ausrechnen.
Der Hintergrund des Algorithmus ist, daß Du hohe Frequenzanteile
brauchst, wenn Du schnelle Änderungen des Signals darstellen willst.
Heuristisch wird das klar, wenn Du Dir die Ableitung
(Änderungsgeschwindigkeit) einer Spektralkomponente anschaust:
d/dt [sin(wt)] = w cos(wt) <= w
Je höher die Frequenz ist, umso schneller kann potentiell die
Signaländerung sein, die die jeweilige Spektrallinie beschreibt.
(Genauer wird das formuliert im "Satz von Bernstein").
Ich seh gerade, der Gerard hat ja schon alles erklärt. Naja - zweimal
kann ja nicht schaden :-)
> Ich frage mich, ob es so etwas nicht vielliecht schon als Komplettlösung> exisitiert (habe noch nichts in der Art: Berührungslose Ermittlung von> Geschwindigkeit + Bewegungsrichtung eines Objektes gefunden)
Sicher gibt es auch noch andere Möglichkeiten; ob es für Dein Problem
eine kauffertige Lösung gibt, weiß ich nicht.
Der Ultraschall beispielsweise hat den Nachteil, daß er an glatten
schallharten Flächen (Metallflächen) zur Seite hin reflektiert - dann
kommt nichts zurück. Ultraschall ist auch eher eine punktweise Messung.
Laserabstandssensoren haben den Nachteil, daß Du über die Fläche rastern
mußt. Sie funktionieren auf fast allen Flächen, außer glatten
Metalloberflächen.
Darfst Du das Objekt mit einem Sensor belegen?
Gruß,
Michael
Viel interessanter ist die Frage nach der zu erwartenden Größe der
Objekte und dem zu erwartenden Abstand. Für die Auswahl einer geeigneten
Technik macht es schon einen Unterschied, ob man ein
Geschwindigkeitsprofil von Planeten, eines Autos oder eines
handtellergroßen Bauteils auf einem Fließband bestimmen will.
Hallo Maddin,
eigentlich wollte ich Deine Diplomarbeit nicht lösen, - übrigens kommst
du eigentlich aus Franken: Maddin klingt irgendwie fränkisch?
Wenn du die Geschwindigkeit analysieren willst und die Strecke nicht
mathematisch beschreiben kannst (siehe Bild), dann bleibt nur eins:
Du bestimmst die Länge der Strecke über eine Referenz mit konstanter
Geschindigkeit.
Daraus ermittelst du wann eine Kante von einem Pixel auf das Nächste
wechselt. Diese Zeiten repäsentieren die einzelnen Fahrabschnitte.
Wenn du nun bei dem ermittelten Objekt eine Kante festlegst, so kannst
du das auf die konstanten Zeiten (Strecken=Pixel) übertragen.
Gruß
AD