www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Objekterkennung (Bildverarbeitung)


Autor: MistMistMist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bearbeite zu Hause zur Zeit ein Projekt mit dem Thema 
Bildverarbeitung. Mein Ziel ist es mit einer Kamera, ein Objekt (in 
meinem Fall ein Ball) mit einem Roboter zu verfolgen. Ich bin jetzt so 
weit, dass mir die Kamera ein Schwarz-Weiß Bild liefert, wo der Ball gut 
zu erkennen ist.

So jetzt zu meinem Problem: Wie bekomm ich die Koordinaten vom 
Mittelpunkt meines Balls? Irgendwie lässt da meine Kreativität nach.

Ich benutze C# mit Aforge als zusätzlicher Bildverarbeitungsbibliothek.
Leider habe ich auch keine Bildverarbeitungsvorlesung genossen.
Im Internet finde ich auch nichts, was mein Problem beheben würde.

Mit freundlichen Grüßen

: Verschoben durch Admin
Autor: DINISO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reicht da keine einfache Mittelwertbildung? Such doch das Bild nach dem 
minimalen und maximalen Koordinaten in x- und y-Richtung ab, 
anschließend den Mittelwert bilden:

Ansonsten wirst Du mit schlimmeren drauf schießen müssen, wie den 
Hough-Algo 
(https://secure.wikimedia.org/wikipedia/de/wiki/Hou...). 
Vielleicht hilft auch das Paper weiter: 
http://yoda.fim.uni-passau.de/lehrstuehle/donner/l...

Ohne Garantie, ich hab auch keine Vorlesung in Sachen Bild-Algorithmen 
besucht.

Grüße

Autor: MistMistMist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Schnelle Antwort.
Die Mittelwertbildung geht nicht so einfach, da der Ball ja nicht 
unbedingt in der Bildmitte sein soll. Außerdem hab ich nicht nur den 
Ball, sondern auch andere Objekte im Bild enthalten. Was mir jetzt fehlt 
ist ein Algorithmus mit dem ich die Ballmitte finde und diese Ballmittel 
will ich dann verfolgen.

Aber das Paper schaut interessant aus. Vielen Dank schonmal.

Autor: DINISO (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da hab ich mich wohl etwas missverständlich ausgedrückt. So sorry.

Was ich meinte (siehe Bild im Anhang) war eigentlich folgendes: Suche 
für die Figur den minimale und maximale X/Y-Position durch eine 
Iteration über das gesamte Bild. Zugegeben, meine Formel war falsch, 
wenn die absolute Position im Bild gefragt ist, dann muss noch der 
Minimalwert aufaddiert werden.

Das Prinzip zerschlägt sich aber, wenn noch andere Objekte im Bild sind, 
welche dann bei der Iteration fälschlicherweise für einen Kreis gehalten 
werden.

Ich kenne die Funktionen dieser C#-Bibliothek nicht, vielleicht ist da 
etwas zur Objekt- und Lageerkennung enthalten.

Wenn du mehrere Bilder zur Verfügung hast, kann man eventuell noch mit 
Bewegungserkennung ("motion estimation") etwas tricksen 
(https://secure.wikimedia.org/wikipedia/en/wiki/Mot...). 
Damit könnte man versuchen herauszufinden, welcher Teil im Bild sich 
wohin bewegt hat. Allerdings setzt das wieder voraus, dass die Kamera 
still steht.

Schlussendlich bleibt wohl nur noch die Möglichkeit, sich in 
Maschinelles Sehen ("Computer Vision") einzuarbeiten.

Eine andere Möglichkeit kenne ich leider auch nicht.
Grüße

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die OpenCV Lib enthält Routinen um Objekte im Bild zu finden, z.B. 
'FindContours'. Vorher das Bild binarisieren (über Schwellwert in 
Schwarz/Weiss umwandeln). Mit weiteren Routinen aus der Lib kann dann 
auch der Schwerpunkt von Objekten gefunden werden.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und direkt auf der AForge Homepage aforgenet.com wird man auf einen 
Artikel zur Formenerkennung hingewiesen: 
http://www.aforgenet.com/articles/shape_checker/
Die Funktion FindeDenBall(Bild) sollte damit kein Problem sein.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DINISO schrieb:

> Was ich meinte (siehe Bild im Anhang) war eigentlich folgendes: Suche
> für die Figur

und hier liegt dein Denkfehler.
Du hast die Figur noch gar nicht.
Du hast nur einen Haufen Pixel

Wenns nur 1 Objekt wäre und man das am Bild so herausarbeiten könnte, 
dass der Ball weiß und alles andere schwarz ist (oder umgekehrt), dann 
könnte man einfach in jeder Zeile/Spalte die Anzahl weißer/schwarzer 
Pixel zählen. Diese 'Kennzahlen' verändern sich 'beim Ball' signifikant.

Autor: DINISO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Wenns nur 1 Objekt wäre und man das am Bild so herausarbeiten könnte,
> dass der Ball weiß und alles andere schwarz ist (oder umgekehrt), dann
> könnte man einfach in jeder Zeile/Spalte die Anzahl weißer/schwarzer
> Pixel zählen. Diese 'Kennzahlen' verändern sich 'beim Ball' signifikant.

Hä?

Das hat der Thread-Ersteller doch geschrieben, dass er das hat:
> Ich bin jetzt so weit, dass mir die Kamera ein Schwarz-Weiß Bild liefert,
> wo der Ball gut zu erkennen ist.

Oder ist jetzt mein Hirn eingefroren?
Grüße

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck dir doch mal Touchless an!
Die machen sogar Echtzeit (naja, fast) Bilderkennung!

Mit freundlichen Grüßen,
Valentin Buck

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DINISO schrieb:

> Oder ist jetzt mein Hirn eingefroren?

Die Frage ist, wass er mit einem schwarz&weiß Bild meint.
* es gibt nur schwarz und weiß
* es gibt auch Grauwerte

Ausserdem hat er späte relativiert, dass auf dem Bild nicht nur der Ball 
zu sehen ist.

Autor: MistMistMist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann sein dass ich mich unglücklich ausgedrückt habe. Ich hab mir aus 
einem Webcam Bild ein Graustufenbild und durch Threshold und 
Kantenfiltern ein Schwarz-Weiß Bild erstellt ( keine Graustufen :)). 
Wenn ich jetzt z.B einen Raum betrachte, hab ich nicht nur meinen Ball 
sondern auch andere Objekte (Tische, Lampe, Schrank usw). Aus diesen 
verschiedenen Umrissen in meinem Bild will ich den Ball erkennen. Das 
war bzw ist ein Problem.

Danke für den Tipp zu Touchless und den Artikel auf Aforge, den hab ich 
tatsächlich übersehen.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch`doch mal einen anderen Ansatz:

Was geben denn die drei Farbbilder her?

Wenn du einen Ball in einer Farbe nimmst, die in der gesamten Umgebung 
nicht nochmal vorkommt, z.B. knallneonpink, suchst du über die 3 
Farbbilder nach genau dieser Kombination.

Wenn du den Ball gefunden hast, kann der Roboter ihn durch den Raum 
kicken und mit Differenzbildern verfolgen. Der Roboter muß natürlich in 
diesem Moment stehen bleiben. Also kicken - gucken - hinterherlaufen. 
Und wenn der Ball still liegenbleibt, beginnt das Ganze wieder von 
vorne.

Das schafft auch ein alter P4 in Echtzeit.

mfg.

Autor: Bildverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Robo kann sich auch bewegen, wenn er sich anderweitig noch 
orientiert und die Winkeländerung zum Ball verfolgt. Umgekehrt verfolgen 
so die Raketen ihre Zielobjekte.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest Dich auch mal bei den Teams vom Robocup umsehen. Einige 
veröffentlichen auch ihre Software, z.B.:
http://robocup.informatik.uni-stuttgart.de/rfc/www/

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
willkommen in der Welt der Bildverarbeitung und dem dem Unterschied des 
maschinellen und menschlichen Sehens.

openCV bietet sich für deine Zwecke an. Es gibt auch viele Beispiele 
dazu, siehe hier: 
http://opencv.willowgarage.com/documentation/cpp/index.html

Die Schwierigkeit besteht nicht darin, die Objekte zu finden (das 
erledigt ein Algorithmus für dich, z.B. FindContour), sondern in der 
Bewertung/Klassifizierung der Objekte. Ein Ball hat bestimmte 
Eigenschaften, z.B. eine bestimmte Fläche, oder die Breite und Höhe sind 
gleich usw.

Du mußt dir eine geeignete Merkmalsmatrix ausdenken.

Autor: denis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo leider ist der autor des threads als gast hier drin, also ohne 
e-mail-adresse.
ich habe ein ähnliches problem und mich würde brennend interessieren, ob 
er zu einer lösung gekommen ist?

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist nicht die Antwort auf die Frage aber Kreiserkennung geht wunderbar 
mit Hough.

Beitrag "Re: Bilderkennung mit DSP"

Cheers
Detlef

Autor: Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei gutem Kontrast reicht es bestimmt, das Bild als Binär-Bild 
umzuwandeln (Schwellwert) und dann den Flächenschwerpunkt zu berechnen.

Beitrag #3956116 wurde vom Autor gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.