Präzisions-Leiterplattenherstellung, Hochfrequenz-Leiterplatten, mehrschichtige Leiterplatten und Leiterplattenbestückung.
PCB-Neuigkeiten

PCB-Neuigkeiten - Anwendung von Kettencodetabelle und Liniensegmenttabelle in PCB

PCB-Neuigkeiten

PCB-Neuigkeiten - Anwendung von Kettencodetabelle und Liniensegmenttabelle in PCB

Anwendung von Kettencodetabelle und Liniensegmenttabelle in PCB

2021-11-03
View:411
Author:Kavie

Anwendung von Kettencodetabelle und Liniensegmenttabelle in der PCB-Lochpositionserkennung Abstract: Dieser Artikel untersucht die Positionierung von Leiterplatten (Leiterplatten) Löchern in der Industrie und erreicht den Zweck des Benchmarkings der PCB-Platinenstanzmaschine. Effektive Vorverarbeitung des vom CCD aufgenommenen Bildes unter Verwendung der Kombination der Kettencodetabelle und der Liniensegmenttabelle, um den Mittelpunkt der Leiterplattenlochposition genau und schnell zu bestimmen. Die Methode in diesem Papier kann das Zentroid genau auf 0,001 Pixelebene detektieren. Und finden Sie den Bereich, Umfang, Form und Mittelpunkt des Lochs heraus. Diese Methode läuft erfolgreich auf der VC++6.0-Plattform, und ihre Programmiergeschwindigkeit ist schnell, und es kann Echtzeit-, genaue, intelligente und Batch-Inspektion erreichen, die die Qualität und Geschwindigkeit der Leiterplatteninspektion erheblich verbessert.

Leiterplatte

Einleitung

Die automatisierte optische Inspektion (AOI, Automated Optical Inspection) ist eine visuelle Inspektionsmethode, die in den letzten Jahren entstanden ist. Es erfasst Bilder über CCD und beurteilt Fehler und Fehlfunktionen durch Computerverarbeitung und Analyse. Die Anwendung von AOI auf der Leiterplattenproduktionslinie hat die Vorteile einer schnellen Erkennungsgeschwindigkeit, kurzen Programmierzeit und intelligenter Erkennung und Steuerung von Bildern in großen Mengen. Mit der Entwicklung der Industrietechnologie werden die Anforderungen an die Öffnungsgröße der Leiterplatte immer präziser, und auch die Anforderungen an die Massenproduktion von Maschinen werden immer höher. Dieser Artikel stammt aus einem Projekt eines Unternehmens, das Lochzählmaschinen herstellt. Die technische Anforderung ist, dass der minimale Radius der Leiterplattenlochposition 0.2mm beträgt, und es gibt bis zu 2000 runde Löcher auf jeder Leiterplatte. Die gesamte Bearbeitungszeit beträgt nicht mehr als 10s. Das Ergebnis wird nach der Verarbeitung erhalten. Die Mitte des Kreises ist auf 0.01 Pixelebene genau, und die Abweichung jedes Kreises vom Zentrum der Vorlage darf 25um nicht überschreiten. Wenn 80% der Mittelabweichung diesen Index übersteigt, gilt er als unqualifiziert, und der Gerätebenchmark muss angepasst werden.

"Rand" bezieht sich auf die Sammlung von Pixeln im Bild, die eine Schrittänderung oder eine dachähnliche Änderung im Pixelgrau aufweisen. Es existiert zwischen Ziel und Hintergrund, Ziel und Ziel, Region und Region, primitiv und primitiv. Er ist sehr nützlich für die Bilderkennung und -analyse. Die Kante kann den Umriss des Zielobjekts umreißen, so dass der Beobachter es auf einen Blick sehen kann, und enthält reichlich Informationen [1]. Um die Lochpositionsinformationen zu erhalten, müssen Sie daher zuerst Kantenerkennung und Konturverfolgung durchführen. Verwenden Sie den freeman-Kettencode, um die Kontur der Kante zu verfolgen, und verwenden Sie die Kettencodetabelle und die Zeilensegmenttabelle, um die Daten zu speichern und zu verarbeiten.

1 Bildaufnahme und Vorverarbeitung

(1) Dieser Artikel verwendet Hintergrundbeleuchtung und hochauflösende Kameras, um kontrastreiche und qualitativ hochwertige Bilder zu erhalten. Die Bildauflösung beträgt 409*096. Die Qualität der Bildquelle ist sehr wichtig und wirkt sich direkt auf die nachfolgende Bildverarbeitung aus.

(2) Verwenden Sie Medianfilterung, um das Bild zu glätten, deren Zweck darin besteht, den Einfluss von Rauschen zu minimieren oder zu beseitigen und die Bildqualität zu verbessern. Mediane Filterung kann die Unschärfe von Bilddetails überwinden, die durch lineare Filter wie Filter mit geringstem Mittelwert und mittlere Filterung unter bestimmten Bedingungen verursacht werden, und ist die effektivste zum Filtern von Impulsstörungen und Bildscanrauschen. Für die Bilder, die in diesem Artikel enthalten sind, sind die Leiterplattenlochdetails fehlerhaft, so dass Medianfilterung angemessener ist. Sein Vorteil ist, dass es Rauschen beseitigen kann, ohne die Ränder des Bildes zu zerstören.

(3) Verwenden Sie OSTU (Maximum Between-Class Variance Method) für die Schwellensegmentierung. Diese Methode ist einfach, stabil und effektiv. Es ist eine Binarisierungsmethode, die automatisch den Schwellenwert auf der Grundlage der Beurteilung der Minimalfunktion und des Prinzips der Quadratmethode auswählt. Die Idee ist, das Bild zu teilen Das Histogramm ist in zwei Gruppen mit einem bestimmten Graupegel unterteilt. Wenn die Varianz der geteilten zwei Gruppen die größte ist, wird der Graupegel auf den besten Schwellenwert [2] gesetzt.

2 Verwenden Sie Kettencodetabelle und Zeilensegmenttabelle [3], um die Datenergebnisse des Bildes zu beschreiben

(1) Verwenden Sie Freeman Kettencode Kontur Tracking Freeman Kettencode [4] ist in acht verbundene und vier verbundene Kettencodes unterteilt. Der Acht-verbundene Kettencode wird durch die Richtung definiert, in der das zentrale Pixel auf seine 8-Nachbarn zeigt, und die Vier-verbundene Kette verwendet das zentrale Pixel. Zeigen Sie auf die Richtung seiner vier Nachbarn, mit einem Wert von 0~3. Dieser Artikel verwendet einen 8-verbundenen Kettencode, wie in Abbildung 2 unten gezeigt, der 8-verbundenen Kettencode dreht sich im Uhrzeigersinn, und der Wert des Kettencodes sinkt um 1, wenn er 45° im Uhrzeigersinn dreht; Wenn der Wert des Kettencodes um 4 steigt, wird die Richtung umgekehrt und 8 addiert. Dann zurück in die ursprüngliche Richtung. Wenn der Kettencodewert 8 überschreitet oder kleiner als 0 ist, verwenden Sie modulo 8 Operation, um 8 zu entfernen oder hinzuzufügen.

(2) Anwendung der Kettencodetabelle

Für die Verfolgung eines einzelnen Lochs in der Leiterplatte verwendet dieser Artikel die Freeman-Kettencodemethode, um den Grenzkettencode des Zielobjekts zu erhalten. Wenn ein bestimmter Punkt nach dem Graupegel des Zielkörpers gesucht wird, ist dieser Punkt der Grenzpunkt des Zielkörpers. Wenn dieser Punkt nicht codiert wurde, dann ist dieser Punkt der Ausgangspunkt einer bestimmten Lochposition. Von diesem Punkt aus wird die Konturverfolgung durch Freeman-Kettencode durchgeführt, und der Kettencodewert jedes Punktes an der Grenze kann nachverfolgt werden, und gemäß Tabelle 1 wird der Abweichungswert der Koordinaten des Mittelpunkts und der benachbarten Punkte angezeigt. Die Koordinaten jedes Grenzpunktes können aus den Koordinaten des Startpunkts gewonnen werden, die als zweidimensionales Array inc[8][2] ausgedrückt werden können.

Der spezifische Kodierungsprozess ist: Setzen Sie den Graupegel des Zielobjekts als G1 und den Hintergrundgrauepegel als G2. Suchen Sie das Bild der gesamten Leiterplatte. Wenn ein bestimmter Punkt A auf den Grauwert G1 trifft, wird er als Grenzpunkt betrachtet. Ab A wird die Grenze der Lochposition im Uhrzeigersinn durchsucht und der Anfangswert als Kettencodewert gleich 4 Suche nach dem nächsten Punkt in der Richtung definiert. Wenn der Grauwert des nächsten Punktes gleich G1 ist, ist es der nächste Grenzpunkt. Andernfalls wird die Suchrichtung 45° im Uhrzeigersinn gedreht, und der Kettencodewert ist 3, um weiter nach dem Punkt zu suchen, so dass der erste Punkt immer A Punkt B gefunden wird, der den Grauwert gleich G1 erfüllt. Legen Sie dann B als neuen Grenzpunkt fest und setzen Sie das Tracking-End-Flag auf 0. Wenn in den benachbarten Punkten kein Grenzpunkt gefunden wird, setzen Sie das Tracking-End-Flag auf 1, um anzuzeigen, dass es sich um einen isolierten Punkt handelt.

Punkt B wird als neuer Grenzpunkt genommen. Nehmen Sie den Wert des Kettencodes als Richtung des Startkettencodes. Wiederholen Sie die obige Verfolgung im Uhrzeigersinn, bis der letzte Grenzpunkt Punkt A ist. Die Einzelloch-Bitmap wird verfolgt, und markieren Sie diesen Bereich mit Farbfüllung, was bedeutet, dass er durchsucht wurde, und der verfolgte Kettencodewert in der Kettencodetabelle gespeichert wird. In dieser Arbeit wird die Kettencodetabelle in einem eindimensionalen ganzzahligen Array-Code[ ] gespeichert, der Speicherinhalt mit den Subskripten 0 und 1 sind die Koordinaten X und Y des Ausgangsgrenzpunkts bzw. die gesamte Kettencodenummer ist in der Einheit mit Subskript 2 gespeichert. Die Zahl N, ausgehend von der Einheit mit dem Subskript 3, speichert den Kettencodewert des ersten Grenzpunkts, Der Kettencodewert des zweiten Grenzpunktes... bis zum Kettencodewert des letzten Nten Grenzpunktes.

3-Zeilensegmenttabelle

(1) Definition der Liniensegmenttabelle

Da die Kettencodetabelle nur die Grenze des Zielkörpers darstellen kann, aber nicht die Innen- und Außenseite der Grenze, kann die Kettencodetabelle nicht die internen Pixel des Zielkörpers darstellen, sondern in der Tat erhält sie neben dem Erhalt der Grenzpunkte und des Umfangs eines Bildes auch weitere Parameter, wie die Lochzentrendaten und den Bereich, der in diesem Artikel erhalten wird. Um die Verarbeitung und Berechnung der internen Pixel zu realisieren, wird eine weitere Struktur benötigt – die Liniensegmenttabelle.

Der Bereich kann auch als aus horizontalen Liniensegmenten zusammengesetzt betrachtet werden. Jedes Liniensegment kann durch seine beiden Endpunkte dargestellt werden. Die Endpunkttabelle, die alle horizontalen Liniensegmente im Bereich entsprechend dem Scan reibungslos anordnet, wird Liniensegmenttabelle genannt. Jeder Punkt der Liniensegmenttabelle besteht aus zwei Teilen. Der gerade Punkt repräsentiert die Koordinaten des linken Endpunkts und der ungerade Punkt die Koordinaten des rechten Endpunkts. Wenn eine Struktur DOT definiert ist, um die Liniensegmenttabelle darzustellen, verwenden Sie einen eindimensionalen Array-Punkt[ ], lassen Sie i das Liniensegment darstellen Das linke Ende dieses Liniensegments kann als Punkt[2*i] ausgedrückt werden, und der rechte Endpunkt ist Punkt[2*i+1].

(2) Anwendung der Liniensegmenttabelle

Die Liniensegmenttabelle erhält jedes Liniensegment und den Endpunktwert des Liniensegments, so dass die internen Pixel des Bereichs leicht durch Berechnungen erhalten werden können, und andere wichtige Parameter des Bildes können erhalten werden, wie die in diesem Artikel erforderlichen Parameter: die Fläche des Berechnungsbereichs, der Schwerpunkt; Füllen Sie schnell einen bestimmten Bereich aus (um wiederholte Suchen zu vermeiden und die Effizienz zu verbessern); Der Formparameter der Fläche, die Formel wird ausgedrückt als: F bis L*L/4 πS

Der Zweck dieses Projekts ist es, die Mitte des runden Lochs zu erfassen, so dass es besonders wichtig für die Formdetektion des Bereichs ist. In der obigen Formel ist L der Umfang und S die Fläche. Der Formparameter F, der durch dieses Verhältnis erhalten wird, ist der Formparameter des Kreises. 1. Je größer der Unterschied von 1, desto größer der Unterschied von der Form des Kreises. Um die Anzahl der Löcher im Leiterplattenloch und in der Mitte des Kreises zu zählen, kann dieser Formparameter für die Beurteilung verwendet werden. Das runde Loch wird verarbeitet, ansonsten wird es direkt mit einer nicht runden Lochfarbe gefüllt und wird nicht im Ergebnis aufgezeichnet.

(3) Umwandlung der Kettencodetabelle in Zeilensegmenttabelle [5]

Verwenden Sie die Zeilensegmenttabelle, um anzugeben, dass andere wichtige Parameter des Bildes erhalten werden können, und die Konvertierung von der Kettencodetabelle in die Zeilensegmenttabelle kann gemäß Tabelle 2 erfolgen.

Die einzelnen Schritte sind wie folgt:

Nach der Umwandlung der Tabelle erhält der Kettencode drei Typen [6]: Mittelpunkt, Typnummer 0; linker Endpunkt, Typnummer 1; rechter Endpunkt, Typ Nummer 2; Singularpunkt, Typnummer 3. Entsprechend den Daten in der Kettencodetabelle können der eingehende Kettencodewert und der ausgehende Kettencodewert bekannt sein, und der Typ dieses Punktes kann für die Richtung der beiden bestimmt werden. In der Programmgestaltung kann der Punkttyp nach Tabelle 3 beurteilt werden. Wenn es sich um den linken und rechten Endpunkt handelt, werden die Koordinaten in einem temporären Array gespeichert. Der Singularpunkt kann als Zufall der gleichen linken und rechten Punkte betrachtet werden, das heißt, er sollte zweimal gespeichert werden, in der Mitte keine Punkte hinterlegen. Die Endpunkte in der Liniensegmenttabelle werden nach der Größe der Y-Koordinate sortiert und in derselben Zeile nach der Größe der X-Koordinate sortiert.

4 Versuchsergebnisse

Dieses Experiment macht einen Screenshot des PCB-Bildes dieses Projekts, um das gefüllte Bild zu verarbeiten, zu screenshot und zu verarbeiten.

Verwenden Sie den Algorithmus und das Programm in diesem Artikel, um die Screenshots zu verarbeiten, und verwenden Sie die Kettencodetabelle und die Zeilensegmenttabelle, um die Daten zu speichern, und Sie können einige Parameterinformationen der Leiterplattenlochposition erhalten.

5 Schlussfolgerung

In diesem Papier wird die Hintergrundbeleuchtungsquelle verwendet, um hochwertige PCB-Bilder zu erhalten, und die OSTU-Schwellensegmentierungsmethode wird verwendet, um das Binärbild des Quellbildes stabil und einfach zu erhalten, Konturverfolgung zu scannen und durchzuführen und das Prinzip der Verfolgung des nächsten Punktes nach rechts zu verwenden. Es ist besser vorbereitet und zeitsparend. Die Kettencodetabelle und die Liniensegmenttabelle speichern Daten und Datenverarbeitung, und es ist sehr bequem und genau, den Umfang, den Bereich und das Lochzentroid der Leiterplatte zu erhalten und das Positionierungsproblem erfolgreich zu lösen, wenn die Leiterplatte gestanzt wird. Dieses Experiment wurde auf der Visual C++ Softwareplattform durchgeführt und verifiziert. Es kann 216 kreisförmige Löcher in 31 uns erkennen und verarbeiten und die Geschwindigkeit und Genauigkeit erhalten, die für dieses Projekt erforderlich sind. Die Ergebnisse belegen, dass diese Methode machbar ist.