Forum: Digitale Signalverarbeitung / DSP / Machine Learning Objekterkennung (Bildverarbeitung)


von MistMistMist (Gast)


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
von DINISO (Gast)


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/Hough-Transformation). 
Vielleicht hilft auch das Paper weiter: 
http://yoda.fim.uni-passau.de/lehrstuehle/donner/lehrveranstaltungen/seminarWS05/nitschke.pdf

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

Grüße

von MistMistMist (Gast)


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.

von DINISO (Gast)


Angehängte Dateien:

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/Motion_estimation). 
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

von JojoS (Gast)


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.

von JojoS (Gast)


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.

von Karl H. (kbuchegg)


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.

von DINISO (Gast)


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

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

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

Mit freundlichen Grüßen,
Valentin Buck

von Karl H. (kbuchegg)


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.

von MistMistMist (Gast)


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.

von Thomas E. (thomase)


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.

von Bildverarbeiter (Gast)


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.

von ... (Gast)


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/

von Mario (Gast)


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.

von denis (Gast)


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?

von Detlef _. (detlef_a)


Lesenswert?

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

Beitrag "Re: Bilderkennung mit DSP"

Cheers
Detlef

von Murks (Gast)


Lesenswert?

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

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.