| Operatoren |
gen_structured_light_pattern — Erstellen der Muster-Bilder zur Anzeige bei einem Verfahren mit strukturiertem Licht.
gen_structured_light_pattern( : PatternImages : StructuredLightModel : )
gen_structured_light_pattern erzeugt die Muster-Bilder, die bei einem Verfahren mit strukturiertem Licht angezeigt werden. Verschiedene Parameter wie Breite und Höhe der Bilder, der Typ der Muster und die minimale Streifenbreite müssen zuvor mit dem Operator set_structured_light_model_param für das Modell StructuredLightModel festgelegt werden. Je nach den gesetzten Parametern in StructuredLightModel kann Anzahl und Aussehen der Muster-Bilder variieren.
Generell können die Muster-Bilder in drei Gruppen unterteilt werden:
Normalisierungsbilder
Gray-Code Bilder
Phasenbilder
Normalisierungsbilder:
Zum Dekodieren der Gray-Code Bilder ist es notwendig zu entscheiden, ob ein Kamerapixel eine Region beobachtet, die einen weißen Streifen reflektiert oder einen schwarzen Streifen reflektiert. Um auch bei großer Variation des Reflexionsgrads der Oberfläche robust dekodieren zu können, werden Normalisierungsbilder benutzt um hell und dunkel beleuchtete Regionen besser zu identifizieren. Der einfachste, in den meisten Fällen aber auch ausreichende, Ansatz ist, ein vollständig schwarzes und ein vollständig weißes Bild zu erzeugen. Während des Dekodiervorgangs der aufgenommenen Kamerabilder (siehe decode_structured_light_pattern) werden dann alle Gray-Code Bilder mit dem Mittelwert des dunklen und hellen Bildes verglichen. Ein Kamerapixel wird als hell klassifiziert, wenn sein Grauwert größer oder gleich seinem zuvor berechneten Mittelwert ist. Ein weiterer Ansatz besteht darin, für jedes erzeugte Gray-Code Bild wie im nächsten Absatz beschrieben auch eine invertierte Version des Gray-Code Bilds zu erzeugen. Ein Kamerapixel wird dann als hell klassifiziert, wenn sein Grauwert im ersten Bild größer als sein Grauwert im invertierten Bild ist.
Gray-Code Bilder:
Vor anwendungsnahen Arbeiten wie dem Detektieren von Defekten ist der erste Schritt in jeder Anwendung von strukturiertem Licht, eine Abbildung zwischen den Kamerapixeln und der Pixelebene des Monitors zu finden. Dies wird durch Anzeigen einer Bildfolge erreicht, die die Zeilen und Spalten des Monitors eindeutig kodieren. Wegen einiger Vorteile gegenüber anderen Mustertypen werden typischerweise Gray-Code Bilder zur Kodierung verwendet. Ein Beispiel für eine Abfolge vertikaler und horizontaler Gray-Code Bilder findet sich in der folgenden Abbildung.
Obwohl die Benutzung von Gray-Code Bildern eine einfache und zweckmäßige Herangehensweise darstellt, weist sie gewisse Beschränkungen auf. Ein Nachteil tritt auf, wenn viele Gray-Code Bilder benötigt werden, um eine für die praktische Anwendung nötige räumliche Auflösung zu erreichen. Bei zunehmend feinerer Streifenauflösung wird das korrekte Dekodieren wegen Unschärfeeffekten immer schwieriger. Die dritte Bildgruppe (Phasenbilder) kann erzeugt werden, um diese Beschränkung zu überwinden.
Phasenbilder:
Phasenbilder benutzen gewöhnlich periodische Muster wie Sinus- oder Kosinus-Wellen, um später einen Winkel des Phasendurchlaufs zu rekonstruieren. In Kombination mit den Gray-Code Bildern liefern sie dann die Korrespondenzen zwischen Monitor- und Kamerakoordinaten.
Um eine robuste Dekodierung in Hinblick auf Variation des Reflexionsgrads der Oberfläche und Rauschanfälligkeit zu ermöglichen, werden pro Orientierung (vertikal oder horizontal) vier Phasenbilder erzeugt. Die Bilder sind Kosinus-Wellen mit Phasenverschiebungen von , wobei .
Der Hauptvorteil der Phasenbilder gegenüber den Gray-Code Bildern besteht in subpixelgenauen Korrespondenzen zwischen Monitor- und Kamerakoordinaten. Wegen der Periodizität ist die Kodierung nur eindeutig bis auf ganzzahlige Vielfache der Periodenlänge. Um eine eindeutige Kodierung über das ganze Bild zu erreichen, ist die Kombination mit Gray-Code Bildern notwendig.
Erzeugung der Normalisierungsbilder:
Wie oben beschrieben, bietet HALCON zwei verschiedene Arten von Normalisierungsbildern. Standardmäßig ist 'normalization' auf 'global' gesetzt, was zur Erzeugung eines vollständig schwarzen und eines vollständig weißen Bilds führt. Zum Ändern der Methode so dass jedes Gray-Code Bild einzeln invertiert wird, muss mit set_structured_light_model_param 'normalization' auf 'inverted_pattern' gesetzt werden. Der Hauptvorteil der globalen Normalisierung ist die signifikant kleinere Bildanzahl während noch zufriedenstellende Ergebnisse erreicht werden. Nur für teilspiegelnde Oberflächen könnte die andere Methode robuster sein und sollte gewählt werden, falls die globale Normalisierung zu falschen Dekodier-Ergebnissen führt.
Erzeugung der Gray-Code Bilder:
Größe, Anzahl und Aussehen der Gray-Code Bilder hängt von folgenden Parametern ab (siehe set_structured_light_model_param): 'pattern_width', 'pattern_height', 'min_stripe_width' and 'pattern_orientation'.
Die ersten beiden Parameter legen die Größe der erzeugten Bilder fest und sollten normalerweise auf die Größe des Monitors gesetzt werden, der zum Anzeigen der Muster-Bilder verwendet wird. Der Parameter 'min_stripe_width' legt die feinste Streifenbreite (in Pixel) der erzeugten Muster fest. Außerdem haben alle drei Parameter großen Einfluss auf die Anzahl der erzeugten Bilder.
Sei
Der Parameter 'pattern_orientation' setzt die Orientierung der erzeugten Gray-Code Bilder (und Phasenbilder). Standardmäßig werden Bilder mit vertikalen und Bilder mit horizontalen Streifen erzeugt. Es ist auch möglich, nur Bilder einer Richtung zu erzeugen. Dies wird jedoch nicht empfohlen, da Änderungen der Oberfläche dann nur in einer Richtung detektiert werden können. Nur falls Änderungen der Oberfläche bewusst ignoriert werden sollten oder Defekte nur in einer Richtung zu erwarten sind, sollte dieser Parameter mit set_structured_light_model_param verändert werden.
Erzeugung der Phasenbilder:
Da Phasenbilder geeignet sind, die praktischen Beschränkungen der Gray-Code Bilder zu überwinden, ist ihre Erzeugung empfohlen und geschieht standardmäßig.
Falls die erreichte Genauigkeit der Gray-Code Bilder ausreicht, kann die Erzeugung der Phasenbilder durch set_structured_light_model_param ausgeschaltet werden, wobei 'pattern_type' auf 'gray_code' gesetzt wird.
Die Verwendung dieser Bilder wird in der Einleitung des Kapitels Inspektion / Strukturiertes Licht beschrieben.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Generierte Muster-Bilder.
Handle des Modells für strukturiertes Licht.
* Create the model
create_structured_light_model ('deflectometry', StructuredLightModel)
* Set the size of the monitor
set_structured_light_model_param (StructuredLightModel, \
'pattern_width', 1600)
set_structured_light_model_param (StructuredLightModel, \
'pattern_height', 1200)
* Set the smallest width of the stripes in the pattern
set_structured_light_model_param (StructuredLightModel, \
'min_stripe_width', 8)
* Generate the patterns to project
gen_structured_light_pattern (PatternImages, StructuredLightModel)
* Decode the camera images
decode_structured_light_pattern (CameraImages, StructuredLightModel)
* Clean up
clear_structured_light_model (StructuredLightModel)
Der Operator gen_structured_light_pattern gibt 2 (H_MSG_TRUE) zurück, sofern alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung ausgelöst.
set_structured_light_model_param
decode_structured_light_pattern
create_structured_light_model, get_structured_light_model_param, get_structured_light_object
3D Metrology
| Operatoren |