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?
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
Diskussionen zu konkreten Bilderkennungsproblemen sind ohne reale Bilder fast immer wenig zielführend. Wenn du uns ein paar Bilder zeigst kann man dir besser helfen. Gruß, Dirk
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.
Und einmal mit den eingebauten Led licht der Kamera. Ich denke das ist Unbrauchbar.
Es gibt da so Buecher : Ich und Bildverarbeitung, oder aehnlich.
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.
@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 ?
Wie erkennt man einen kreis? In dem man das Bild mit einem Kreis faltet, dann hat man auch gleich die Position. Das braucht fuer eine vernuenftige Geschwindigkeit einiges an Dampf.
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.
In dem man das Bild mit einem Kreis faltet Was kann ich mir darunter vorstellen? Rechenleistung naja ich sag mal so ich hab ja zeit :)
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.
Klaartext ich Zeichne mir ein Abbild meines Kreises und schiebe diesen zeile für zeile über mein bild und gucke wo er passt? Klingt zumindest logisch :)
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.
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
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
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.
Das Stichwort ist Hough-Transfornmation: http://de.wikipedia.org/wiki/Hough-Transformation Kann sogar ein Wald- und Wiesencontroller in akzeptabler Zeit abarbeiten. Einfach hier im Forum nach Beiträgen suchen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.