Bilderkennung für Referentpunkt

Gast #3357820
Lesenswert?

Hallo
Ich arbeite zurzeit an einer einfachen Cnc Platinenbohrmaschine.
Grund der Bastelei ist das Es mir kaum möglich ist das Layout so exakt 
auf die Platine zu bringen bzw. die Platine so exakt zu spannen, dass 
die Cnc alle Löcher trift.

Nun habe ich mir einen eigenen "Gcode" interpretter in Visual Basic 
geschrieben damit bin ich schon mal in der Lage anhand von 3 Punkten auf 
der Platine die Ausrichtung und die exakte Größe zu bestimmen.

Nun würde ich diese drei Punkte gerne mit einer bereits montierten 
Kamera automatisch finden. Problem dabei ich hab keine Ahnung von 
Bilderkennung.
Ich habe versucht anhand von Helligkeitsabweichungen der Rgb Pixel im 
Bild Konturen zu erkennen. Das scheitert aber scheinbar an dem zu 
schwachen unterschied zwischen grün-gelblicher Platine und kupfernen 
Leiderbahnen bzw. das "Rauschen" der Kamera ist zu doll um den 
Unterschied festzustellen.
Dazu kommt das das Bild nicht gleichmäßig ausgeleuchtet ist mittig ist 
es deutlich heller als am Rand.

Was hättet ihr so für ideen zur besseren Bilderkennung?
Gast #3357832
Lesenswert?

Sven schrieb:
> Was hättet ihr so für ideen zur besseren Bilderkennung?

Die Beleuchtung kannst du rausrechnen oder halt verbessern.

Ansonsten würde ich mal Farbfilter ausprobieren, mit einem roten Filter 
müsste z.B. grünes Material ziemlich dunkel und Kupfer hell erscheinen. 
Im Prinzip kannst du das aber auch im RGB-Farbraum berechnen. Die 
Rechenzeit spielt bei dem Problem ja keine Rolle.

Gruss Reinhard
Gast #3357854
Lesenswert?

Also mal ein Bild ohne Kameralicht, bei dem die Erkennung gerade schon 
ganz gut klappt.
Problem ohne Kameralicht bin ich der Sonne ausgeliefert sprich in 10 
Minuten wird es nichtmehr klappen, und wenn es erst mal dunkel wird, 
geht Garnix mehr.
Aber ich glaube ich sollte die Beleuchtung der Kamera verändern.

Das nächste Problem ist wie bekomme ich aus meinen als dunkler wie 
andere erkannten Pixeln jetzt ein ja das ist der Punkt oder das ist er 
eben nicht
bzw. Ich möchte eigentlich nur den Mittelpunkt eines runden Pads 
erkennen.
Angehängte Dateien:
Gast #3357868
Lesenswert?

Sven schrieb:
> Also mal ein Bild ohne Kameralicht, bei dem die Erkennung gerade schon
> ganz gut klappt.

Die Beleuchtung ist das α&ω der Bilderkennung, wenn du dir nicht einen 
Haufen Arbeit auf der Software-Seite einhandeln möchtest.
Durchlichtbeleuchtung und/oder farbiges Licht (z.B. Komplementärfarbe 
bei Drauflicht) können sehr hilfreich sein.
Gast #3357881
Lesenswert?

@Chloro ich glaub es gibt zu allem ein Buch nur habe ich gerade keins. 
Zudem müsste ich verstehen was darin steht. Wird schwirig :)

Okay die Beleuchtung werde ich aufjedenfall umbauen damit ich mit der 
Software weniger Probleme habe.
Mal davon ausgegangen ich erhalte ein brauchbares Bild wie das erste. 
Ich erkenne welche Pixel dunkler sind und somit Kupferfrei. Hat jemand 
einen Tipp wie ich aus einer ansammlung von Pixeln erkenne ob diese im 
Kreis angeordnet sind ?
Gast #3357895
Lesenswert?

Sven schrieb:
> Hat jemand einen Tipp wie ich aus einer ansammlung von Pixeln erkenne
> ob diese im Kreis angeordnet sind ?
Einfacher wird es, wenn du dir das Kamerabild selber anguckst, der 
Software per Mauszeiger o.ä. zeigst, wo die Referenzpunkte ungefähr sind 
und du per Software (Segmentierung über die Helligkeit, Auswertung 
Abstand zu den Lochrändern), nur die genaue Position bestimmst.
Gast #3357905
Lesenswert?

Im Wesentlichen ist Faltung : Man zieht das zu erkennende Muster ueber 
das Bild multipliziert und integriert. Jeder Punkt erhaelt den Wert des 
integrales. Dort wo das Muster passt bekommt man ein Maximum. 
Idealerweise einen Dirac.
Gast #3357916
Lesenswert?

Sven schrieb:
> bzw. Ich möchte eigentlich nur den Mittelpunkt eines runden Pads
> erkennen.

Bastel dir lieber Passermarken ins Layout (nicht ins Leiterbahn 
Geflächt, sondern z.B. Montagebohrungen). Das sind gerade Linien und 
wesentlich einfach zu detektieren.
Dann solltest du mal an der LED-Helogkeit drehen.
#3357917
Lesenswert?

Sven schrieb:
> Hat jemand
> einen Tipp wie ich aus einer ansammlung von Pixeln erkenne ob diese im
> Kreis angeordnet sind ?

Eine mögliche Methode (Chloro hat ja schon eine weitere erwähnt):
- Zuerst musst du entscheiden welche Pixel zusammengehören. Dazu kannst 
du connected component labeling 
https://en.wikipedia.org/wiki/Connected-component_labeling benutzen
- Danach hast du ein Set von "Ansammlungen von Pixeln". Eine einfache 
Methode um einen gefüllten Kreis zu erkennen ist dann die Anzahl der 
Randpixel zu zählen, zu quadrieren und durch die Anzahl aller Pixel zu 
teilen. (Ein perfekter Kreis minimiert diese Formel).

Wie Wolfgang würde auch ich dir empfehlen eher eine lokale Hilfe als 
eine globale Suche zu implementieren.

Gruß,
Dirk
Gast #3357931
Lesenswert?

Sven schrieb:
> Ich möchte eigentlich nur den Mittelpunkt eines runden Pads
> erkennen.

Den kannst Du nicht erkennen, den gibt es ja als Objekt nicht.

Die Erkennung des Kreises um das Pad herum wird durch die Leiterbahnen 
erschwert, die zum Pad gehen.

Viel einfacher waere es, wenn Du schon einen Mittelpunkt eingeaetzt 
haettest, z.B. 0,3mm.

wendelsberg
Gast #3357953
Lesenswert?

Vielen dank erstmal für die vielen Ideen :)
Ich werd michmal daran versuchen.
Ach so und ne ich möchte nicht nach einem Pad im Layout suchen wie die 
bilder zeigen, sondern schon nach runden Pads ohne Leiterbahn dafür vllt 
mit einem Punkt in der mitte. Mal sehen was ich später am besten 
erkennen kann.
Gast #3358365
Lesenswert?

Ich habe mich dazu Endschloßen den Bildbereich zu verkleinern, um die 
Suche etwas schneller laufen zu lassen. Anstelle eines Abbildes des 
gesuchten Kreises verwende ich gerade nur 10 punkte welche jeweils im 
passenden Muster 1(Grün) oder 0(Nicht Grün) sein sollten.
Damit ist es mir jetzt möglich den Kreis zu suchen, während die Platine 
an der Kamera vorbeifährt.
Nochmals Besten dank für eure Inspiration.

Die Genauigkeit liegt übrigens gerade mit meinem Testloch bei +-1 Pixel 
also ungefähr 0,3mm damit könnte ich schon leben. Ich werde jetzt mal 
eine Platine mit Testlöcher machen und dann mal sehen, wie das so 
klappt.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren