Forum: Mikrocontroller und Digitale Elektronik Bauteilerkennung über AVR/SPS mit Webcam


von Andreas Z. (Gast)


Lesenswert?

Hallo zusammen!,

Ich habe folgendes Problem:

Auf einem Förderband/Sortieranlage sollen zwei Bauteile unterschieden 
werden. Quadrat und Kreis. Je nachdem was erfasst wird, werden die Teile 
unterschiedlich einsortiert.

Ich weis es gibt auch einfachere Wege, aber ich will damit auch etwas 
programmieren (C) lernen.

Also ich habe mir da zwei Varianten überlegt:

1. Eine Webcam die ein Bild erfasst und mit den zwei Vergleichsbildern 
abgleicht.

2. Eine Webcam, die ein schwarz/weiß Bild erfasst. Allerdings wird hier 
die Anzahl schwarzer Pixel ermittelt, und mit den zwei Mustern 
verglichen.

Variante zwei erachte ich persönlich für einfacher...was meint ihr?

Optimal wäre eine Anbindung über Ethernet an WinCC. Eine Ausgabe als 
Binäres Signal über den Com-Port reicht auch bzw über andere Binäre 
Ausgänge.

Als Plattform möchte ich einen Rasberry verwenden, oder einen von diesen 
Mini-Computern.

Nun weis ich aber nicht so recht wo ich anfangen soll.

Wäre über ein paar Denkanstöße dankbar. Eine fertige Lösung möchte ich 
nicht einsetzen...ich wills ja auch verstehen.

Keine Sorge, es ist ein privates Projekt. Schönen Abend noch!

von L. P. (lpg)


Lesenswert?


von Andreas Z. (Gast)


Lesenswert?

Ist natürlich perfekt sowas...aber erst ab November lieferbar.

Zum programmieren ist da aber eigendlich auch nichtsmehr...

von Andreas B. (andreasb)


Lesenswert?

Andreas Z. schrieb:
> Ich weis es gibt auch einfachere Wege, aber ich will damit auch etwas
> programmieren (C) lernen.

Wenn du das Rastpberry PI nehmen willst nimm einfacher Python... (oder 
etwas ähnliches, C ist da nicht besonders gut geeignet, ausser du hast 
wirklich Ressourcen Knappheit, klingt aber nicht gerade so...)

>
> Also ich habe mir da zwei Varianten überlegt:
>
> 1. Eine Webcam die ein Bild erfasst und mit den zwei Vergleichsbildern
> abgleicht.

Vergiss es. Was machst du wenn das Rechteck um 45° gedreht ist?
Dann noch verschoben etc.

> 2. Eine Webcam, die ein schwarz/weiß Bild erfasst.

Schon besser, wobei die Webcam warscheinlich eine Farbaufnahme macht, du 
machst dann eine Schwarzweiss Aufnahme draus.

Dazu berechnest du (wenn ich es richtig in Erinnerung habe) ein 
Histogramm und musst irgendwo einen Schnitt machen, wenn die Beleuchtung 
einigermassen passt funktioniert das zuverlässig.

Allerdings wird hier
> die Anzahl schwarzer Pixel ermittelt, und mit den zwei Mustern
> verglichen.

Finde ich nur teilweise gut. Berechne den Umfang und die Fläche.

Der Umfang kann z.B. auch in Anzahl Pixel sein, es muss nicht in mm, cm 
oder ähnliches sein.

Das Verhältnis zwischen Fläche und Umfang ist für Kreis / Rechteck 
eindeutig, die Erkennung über diese Methode funktioniert zuverlässig, 
aber nur solange sich Figuren eindeutig unterscheiden.


Grundsätzlich für so Erkennungen immer S/W Bilder verwenden (alles 
andere machts nur komplizierter). Danach ist der Kreativität freien lauf 
gelassen;-)
Es gibt kein richtig / falsch, nur funktioniert oder funktioniert nicht.


mfg Andreas

von Chris S. (schris)


Lesenswert?

Vergiss Pixy. Nicht daß das was geworben wird nicht funktionieren kann,
sondern die HW hat einfach zuwenig Speicher um selbst was einfach zu
programmieren, wenn es überhaupt damit realisierbar ist.

Weiters brauchst du eine Kamera mit CCD Sensor, bzw global shutter.
Ansonsten wird das mit dem Laufband nicht, da du verzerrungen hast.

Früher hat man die Philips SPC900NC/00 gerne dafür benutzt, auch wegen
der geringen Verzerrung und diversen Einstellmöglichkeiten der Firmware.

Derzeit gibt es wenig Alternativen, ich selbst musste 100 Stück 
bestellen,
mit 3 Monaten Wartezeit, dafür aber um ca 7€ das Stück. Und nein, ich 
gebe
die nicht weiter da ich sie selbst für Projekte sowie für das Lager 
brauche.

Vielleicht geht ein CMOS Sensor auch mit genügend Licht, dann könnte es
klappen. Ich würde einfach mal eine günstige Webcam nehmen und 
austesten,
bzw eine die du bereits hast.

Im OpenCV einfach Threshold machen, vielleicht vorher Hintergrund 
wegrechnen und dann Blob erkennen und anhand deren 
Größe/Aussehen/Gewicht kann man die Entscheidung machen. Eventuell kann 
man noch Hough erkennung machen, sollte ersteres nicht genügen. Sift, 
Surf usw sind alle Patentiert und somit nicht frei einsetzbar.
Beim RPI kann man mittels HDMI/Composite das Videobild in Echtzeit 
ansehen, und mittels OpenCV mit 5-11 fps die Berechnung machen, mit
Hough wird es 2-7 fps. Sowie Overlay auf dem Display zeichnen, recht 
nett.

Wenn du Hilfe brauchst, melde dich, ich möchte aber reale Bilder haben,
am besten über Webcam aufgenommen und keinesfalls Jpeg, bmp funktioniert
gut. Dies mit Webcam, ansonten wenn Hochauflösend geht auch Jpeg.
Ev. Dorgem als Programm um die Schnappschüsse zu machen.

von holger (Gast)


Lesenswert?

>Ich weis es gibt auch einfachere Wege, aber ich will damit auch etwas
>programmieren (C) lernen.

Blödsinn, mit solchen feuchten Träumen und gnadenloser
Selbstüberschätzung der eigenen Fähigkeiten kannst du
das gleich wieder vergessen.

von c-hater (Gast)


Lesenswert?

Andreas Z. schrieb:

> Ich habe folgendes Problem:

Deine Probleme möchte ich haben...

> Auf einem Förderband/Sortieranlage sollen zwei Bauteile unterschieden
> werden. Quadrat und Kreis. Je nachdem was erfasst wird, werden die Teile
> unterschiedlich einsortiert.
>
> Ich weis es gibt auch einfachere Wege, aber ich will damit auch etwas
> programmieren (C) lernen.

Zum einen: C ist Dreck. War immer Dreck. Wird immer Dreck bleiben. Und 
letztlich ist die verwendete Sprache zur Lösung des Problems völlig 
irrelevant. Es KANN notfalls sogar C sein. Z.B. wenn es nötig ist, weil 
z.B. der Kameratreiber nur über eine C-Header als Interface verfügt. 
(dann sollte man den Zulieferer wechseln)

> Also ich habe mir da zwei Varianten überlegt:
>
> 1. Eine Webcam die ein Bild erfasst und mit den zwei Vergleichsbildern
> abgleicht.

Schwachsinn. Erstens bewegen sich Bänder normalerweise nicht 
synchronisiert zur Kamera, weswegen ein einfacher Vergleich nicht 
reicht, sondern zuvor erstmal herauszubekommen ist, welcher Teilbereich 
der Aufnahme überhaupt mit dem Master zu vergleichen ist.
Zweitens genügt danach dann der Vergleich mit einem Vergleichsbild. 
Wobei natürlich wegen der Rotationssymmetrie der Kreis das 
Vergleichsbild sein sollte.

> 2. Eine Webcam, die ein schwarz/weiß Bild erfasst. Allerdings wird hier
> die Anzahl schwarzer Pixel ermittelt, und mit den zwei Mustern
> verglichen.

Das könnte durchaus funktionieren, wenn man die "edge conditions" 
ausschließt, also nicht vollständig im Bild erscheinende Objekte. Und 
natürlich muß gewährleistet sein, daß niemals mehr als ein Objekt im 
Bild erscheint.

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.