Zum Inhalt springen

Hinderniserkennung mit Webcam


Empfohlene Beiträge

Hallo alle zusammen,

hier etwas ausgefallenes, wie ich finde. Und zwar:

Ich habe die Aufgabe mit Hilfe einer Webcam (Logitech Quickcam USB) Stream auszulesen. Diese Bilder müssen denn mit Hilfe von irgendwelchen Filtermöglichkeiten auf Objekte/Hindernisse hin untersucht werden.

Hat sowas von euch schon jemand gemacht? Achja das ganze sollte in C++ passieren.

Mir wär schon sehr geholfen wenn jemand weiß wie ich die Bilder auslesen kann, welche über den usb-port kommen. Vielleicht ne nützliche Angabe, es wird hier Win XP verwendet.

Ich hoffe auf eure Kenntnisse. . .

bis denne

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mir wär schon sehr geholfen wenn jemand weiß wie ich die Bilder auslesen kann, welche über den usb-port kommen.

Grundsätzlich geht das, indem du dir für dein Gerät einen Treiber schreibst, der passende Schnittstellen bereitstellt.

Als Ausgangspunkt sollte das helfen: USB Central

Edit, Nachtrag:

DDK (Microsoft)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube nicht, das dass so eifnach wird, wie willst Du denn anhand eines 2D-Bildes die Entscheidung treffen Hindernis, kein Hindernis? Ein einfacher Schwarz/Weiß Vergleich dürfte dabei wohl ausfallen, insbesondere im Hinblick auf verschiedene Gegenstände oder Lichtverhältnsse.

Spontan würde mir dazu nur einfallen ein Neuronales Netz zu basteln und entsprechend zu trainieren, oder eine 2te Webcam dazuzusetzen (Bzw. die eine immer hinundherschwenken) um ein 3D Bild zu errechnen, welches die notwendigen Tiefeninformationen enthält.

MfG

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin!

Also um die Kamera auszulesen, könntest Du Dich mal über WIA(Windows Image Acquisition) schlau machen:

Windows Image Acquisition - Wikipedia

Coding4Funs Wundersames Magazin - SIEH! MICH! AN!

Alternativ könntest Du auch die Logitech-API verwenden. Keine Ahnung wo die zu finden ist...

Die Hinderniserkennung ist ein ganz anderes Thema...

Alleine bestimmte Objekte in einem Bild zu erkennen ist schon kniffelig (Stichwort Segmentierung).

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey danke für das viele interesse an dem thema :)

ich hab noch nicht geschafft alle links weiter durch zuarbeiten aber erst mal vielen dank

in hinblick auf den bildinhalt hab ich vergessen zu sagen, dass es sich um ein bild handelt, welches durch ein nachtsichtgerät gefilmt wird

hab da schon alles zusammengebaut und so weiter! also darum gehts hier weiter nicht, wichtig ist dass es sich um ein grünstufen bild handelt

vielleicht schränkt das weit genug ein: es soll auf ein boot montiert werden, um auch bei nacht fahren zu können (probleme werden dann sicherlich noch die reflexionen auf dem wasser machen

ich hab mal nen bild (mit logitech software) aufgenommen

habt ihr dazu vielleicht noch weitere ideen?

vielleicht kennt jemand ein programm mit dem man verschiedene fitleroperatoren (sobel oder la-place, usw.) mal auf ein solches bild anwenden kann, um zu sehen ob da was brauchbares bei raus kommt

bis denne...

post-43398-14430447686519_thumb.jpg

post-43398-14430447686839_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

um zu sehen ob da was brauchbares bei raus kommt

Für erste Versuche eignet sich eine Bildverarbeitung mit dem meist vorhandenen Custom-Filter.

Zur Abstandserkennung: Aus einem Bild kannst Du Abstände nicht zuverlässig ermitteln, also ob z.B. ein kleines Objekt nah oder ein großes Objekt weit entfernt ist.

Praktikabler als per Kamera wäre eine Abstandsmessung mittels Ultraschall im Nahbereich oder für etwas größere Entfernungen mit Radar. Also so, wie es auch in Autos umgesetzt wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

die konkreten abstände sind mir eigentlich nicht so wichtig?!

die wären doch nur für ein autonomes fahren interessant?!

unabhängig von der größe des objektes müsste man doch erkennen können ob das objekt zwischen unterer bildkante (quasi das boot) in der breite des bootes (wohl über ne konfig?!) und horizont (könnte man ja auch über ne konfig einstellen?) beginnt.

nur denn ist es ja als mögliches hindernis wirklich interessant oder seh ich das falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Hallo,

"Bilderkennung" ist ein sehr komplexes Thema. So ganz grob: Wenn Du eine stationäre Cam hast, dann nimmst Du Dir das Bild ohne Objekt auf und bringst es in einen Definierten Farbraum (z.B. Graustufen). Nun nimmst Du die aktuellen Bilder mit dem Cam auf und filterst sie über Hoch-Tief-Pass entsprechend, so dass Du Vordergrund-Hintergrund-Informationen erhälst. Dein gesuchtes Objekt sollte nun als "Vordergrund" zu finden sein. Natürlich zu erkennen, was auf dem Bild ist, wird dann noch schwieriger. Vor allem solltest Du auch bedenken, dass Bilder immer etwas verrauscht sind, so dass Du sie vorfiltern musst. Falls Du eine bewegliche Cam hast, dann kannst Du diese Technik nicht so anwenden, da sich ja auch Dein Hintergrundbild ständig verändert. Du könntest hier z.B. auf Kanten- und Flächenerkennung zurückgreifen, oder auf Bewegungsänderungen relativ zu Deiner Fahrtrichtung. Das ganze benötigt aber auch eine recht hohe Rechenleistung, bei entsprechender Auflösung.

Der Tipp mit einem neuronalen Netz ist durchaus gut, wenn es sich um definierte Muster handelt, die Du "lernen" musst, z.B. bei mir waren es die Ziffern 0 bis 9 aus Handschriften zu erkennen. Wichtig hierbei aber ist die Vorverarbeitung, einfach ein Bild in ein Netz schieben und hoffen, dass es etwas tut, geht nicht. Also wirklich überlegen welche Informationen benötigst Du zur Erkennung, diese Daten normalisieren und dann wenn Du sie klassifizieren musst in eine SVM (2-Klassen) oder VQ (mehrere Klassen) [LVQ, RLVQ, GRLVQ] zu stecken.

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also wenn ich das richtig verstehe möchtest du über eine USB-Webcam ein Boot nachts (voll)automatisch fahren, lassen. Ist das richtig?

Hierfür gibt es schon interresante Produkte. Dort ist auch die Hardware wesentlich näher an den Anforderungen gestaltet.

Siehe hier. Auch bietet die SDK die Möglichkeit bestimmte Bereiche ständig zu überwachen.

@ Algorithmik

Eine verhältnissmäßig leichte aber nicht unbedingt empfehlenswerte (da langsam und auch nicht wirklich elegant) Möglichkeit wäre die Bildpunkte über eine Blob-Analyse zu zählen. Dabei könnten Spiegelungen des Wassers über entsprechende Filter und Mindestgrößen kompensiert werden. Wird ein Blob mit einer bestimmten Größe gefunden, wird das entsprechende Bild mit dem nachfolgendem Bild verglichen. Ist der Schwerpunkt des Blob im Folgebild nach links verschoben und der Blob größer, kommt dir das Objekt entgegen und du musst nach rechts ausweichen.

Nur so als Idee, wenn es denn bei einer BV-Lösung bleiben soll.

Wesentlich empfehlenswerter wäre eine messende Sensorik. Egal ob

- Radartechnik (würde ich nicht unbedingt einsetzen wollen, da besonders kleine symmetrische Objekte Schwierigkeiten machen) oder

- Ultraschall (hier könnte es Schwierigkeiten bei Tieren geben, da das Fell Ultraschall absorbiert. Auch ist die Entfernung zu gering), bzw.

- Lasermesstechnik (Ein entsprechendes Lasermessgerät mit Überwachungs & Schutzfeld sollte es da tun)

Die Systeme sind wesentlich besser dafür geeignet und preislich nicht wesentlich teuer, wenn man den hohen Programmieraufwand beachtet der auf dich mit einem BV-System zu kommt.

MVG

need-some-blood

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Also deine Idee mit der Bildverarbeitung ist schon interessant aber nicht gerade einfach!

Das bedeutet, wenn du jetzt schon Probleme hast, wie du das Bild per USB auf den Rechner bekommst, was soll erst noch passieren wenn du die bilder analysieren willst.

Gut genug mit Kritik.

Als Hilfe sollte dir die freie Grafikbibliothek OpenCV von Intel helfen.

Bild nehmen(cvLoadImage)->Graustufen(cvCvtColor)->Treshold bilden->CvCanny->Hough Transformation(cvHoughLines2)->usw.

wenn du dir jetzt noch sagst - "ok - da bleib ich dran" - dann zieh es durch :-)

Ich persönlich bin grade dabei ein Bild einzuscannen und zu überprüfn, ob es gerade liegt, dann den Barcode ausliest und die Informationen aus dem Barcode herauszufiltern.

PS Frage an alle: kennt jemand eine Barcode-Erkennungs-API mit freier Lizenz? Wäre sehr dankbar.

Tschau

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Hallo,

deine Frage ist zwar schon ne weile her aber:

was webcams anbelangt hab ich mit der DirectX SDK ganz gute erfahrungen gesammelt. Das war allerdings zu DirectX 7 Zeiten, da gab es auch gute Beispiele etc, z.b. wie man an die einzelnen Frames (bilder) von der webcam rannkommt.

Wie es momentan mit der SDK 9 und webcams aussieht weiß ich nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...