| Operatoren |
create_metrology_model — Anlegen der Datenstruktur, die für das Messen von geometrischen Forme notwendig ist.
create_metrology_model( : : : MetrologyHandle)
create_metrology_model legt ein Messmodell an, d.h., die Datenstruktur, die notwendig ist, um Objekte einer bestimmten geometrischen Form (Metrology-Messobjekte) mittels 2D-Messtechnik zu messen, und gibt dessen Handle MetrologyHandle zurück.
Grundprinzip der 2D-Messtechnik
Im Allgemeinen müssen für die 2D-Messtechnik genäherte Werte für die Positionen, Orientierungen und geometrischen Formen des Objekts vorhanden sein, um Messungen durchführen zu können. Innerhalb des Bildes, welches die Objekte zeigt, werden die Grenzen dieser genäherten Objekte genutzt, um die tatsächlichen Kanten der Objekte zu lokalisieren und um die Parameter der geometrischen Formen anzupassen, damit diese optimal zu den Bilddaten passen. Die Ergebnisse der Messungen sind die optimierten Parameter. Das Messmodell wird genutzt, um alle notwendigen Informationen wie die Startparameter für die Positionen und die geometrischen Formen der Metrology-Messobjekte, die Parameter zur Steuerung der Messungen und die Ergebnisse der Messungen zu speichern. Die geometrischen Formen, die mittels der 2D-Messtechnik gemessen werden können, umfassen Kreise, Ellipsen, Rechtecke und Linien.
Die Kanten des Objekts im Bild werden in den sogenannten Messregionen gesucht. Diese sind rechteckige Regionen, deren Hauptachse senkrecht zum Rand der genäherten Objekte liegen. Ihre Mittelpunkte finden sich auf dem Rand. Parameter, die die Größe und Verteilung der Messregionen beeinflussen, werden zusammen mit den genäherten Formparametern für jedes Objekt festgelegt. Die Messrichtung der Kantendetektion innerhalb jeder Messregion des Objekts verläuft von innen nach außen für Objekte vom Typ Kreis, Ellipse und Rechteck sowie von links nach rechts für Objekte vom Typ Linie (gesehen vom Startpunkt zum Endpunkt der Linie). Intern werden die Kanten mit den Operatoren measure_pos oder fuzzy_measure_pos gefunden. Letztere nutzt Fuzzy-Methoden und wird nur genutzt, wenn mindestens eine Fuzzy-Funktion gesetzt ist bevor die Kanten gemessen werden. Die Anpassung der geometrischen Form an die gefundenen Kantenpositionen wird mittels eines RANSAC-Algorithmus vorgenommen.
Im Folgenden werden die einzelnen Schritte, die für derartige Messungen notwendig sind, beschrieben:
Bereitstellen der genäherten Werte
Für eine effiziente Messung sollte nach dem Erstellen des Messmodells mit create_metrology_model die Größe des Bildes, auf dem die Messungen durchgeführt werden sollen, mit set_metrology_model_image_size festgelegt werden. Anschließend werden die Metrology-Messobjekt zum Messmodell hinzugefügt. Jedes Metrology-Messobjekt des besteht aus genäherten Parametern für die Form des zugehörigen Objekts im Bild und aus Parametern, die die Messungen steuern. Die Metrology-Messobjekte werden mit den Operatoren add_metrology_object_circle_measure für Metrology-Messobjekte des Typs Kreis, add_metrology_object_ellipse_measure für Metrology-Messobjekte des Typs Ellipse, add_metrology_object_rectangle2_measure für Metrology-Messobjekte des Typs Recheck und add_metrology_object_line_measure für Metrology-Messobjekte des Typs Linie festgelegt. Die Parameter, die die Messungen steuern enthalten z.B. Parameter, die die halbe Länge der Messregionen und den Abstand zwischen diesen festlegen. Um die Messregionen visuell zu überprüfen, kann auf die XLD-Konturen ihrer Begrenzung mit dem Operator get_metrology_object_measures zugegriffen werden. Desweiteren können mehrere generische Parameter für jedes Metrology-Messobjekt festgelegt werden.
Ändern der Parameter
Viele Parameter können beim Hinzufügen der Metrology-Messobjekte gesetzt werden. Einige davon können anschließend noch mithilfe des Operators set_metrology_object_param geändert werden. Wenn zum Beispiel eine Kamerakalibrierung vorhanden ist, können die Kameraparameter und die Pose des Weltkoordinatensystems (WCS) mithilfe des Operators set_metrology_object_param zu den Metrology-Messobjekten hinzugefügt werden. In diesem Fall werden die Ergebnisse der Messungen im Weltkoordinatensystem zurückgegeben. Zusätzlich kann das Messmodell oder die Metrology-Messobjekte mit copy_metrology_model oder copy_metrology_object kopiert werden. Für ein Alignment können die Metrology-Messobjekte unter Verwendung von transform_metrology_object transformiert werden. Um ein Messmodell in eine Datei zu schreiben ist der Operator write_metrology_model zu verwenden. Das Model kann unter Verwendung des Operators read_metrology_model wieder eingelesen werden. Die Indizes der Metrology-Messobjekte können mit get_metrology_object_indices abgefragt werden.
Durchführen der Messungen
Wenn alle Metrology-Messobjekte zum Messmodell hinzugefügt und alle Parameter endgültig gesetzt sind, werden die Messungen im Bild mit dem Operator apply_metrology_model durchgeführt. Der Operator findet die Kanten innerhalb der Messregionen und passt die festgelegten geometrischen Formen an die Kantenpositionen unter Verwendung eines RANSAC-Algorithmus an. Wenn mehr als eine Instanz der zurückgegebenen Objektform benötigt wird, muss der generische Parameter 'num_instances' auf die Anzahl benötigter Instanzen gesetzt werden. Der Parameter kann beim Setzen der einzelnen Metrology-Messobjekte oder später mit dem Operator set_metrology_object_param gesetzt werden.
Zugriff auf die Ergebnisse
Nach der Messung kann auf die Ergebnisse zugegriffen werden. Die angepassten geometrischen Formen der Objekte werden mit dem Operator get_metrology_object_result abgefragt. Zu beachten ist, dass, falls mehr als eine Instanz eines Objekts zurückgegeben wird, die Reihenfolge der zurückgegebenen Instanzen zufällig ist, d.h. sie ist kein Maß für die Qualität der Anpassung. Auf die Zeilen- und Spaltenkoordinaten der gefundenen Kanten kann mit dem Operator get_metrology_object_measures zugegriffen werden. Wenn das Messmodell nicht mehr benötigt wird sollte der Speicherplatz mit clear_metrology_model freigegeben werden.
Es ist zu beachten, dass für eine optimale Laufzeit nach dem Aufruf des Operators create_metrology_model der Operator set_metrology_model_image_size aufgerufen werden sollte.
Ein Messmodell 'MetrologyHandle' kann nur von einem Thread aus verwendet werden. Verschiedene Messmodelle können dagegen in unterschiedlichen Threads genutzt werden.
Handle des Messmodells.
read_image (Image, 'fabrik')
create_metrology_model (MetrologyHandle)
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
add_metrology_object_rectangle2_measure (MetrologyHandle, 270, 230, 0, 30, \
25, 10, 2, 1, 30, [], [], Index)
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, Index, 'all', 'result_type', \
'param', Rectangle)
gen_rectangle2_contour_xld (ContRect, Rectangle[0], Rectangle[1], \
Rectangle[2], Rectangle[3], Rectangle[4])
clear_metrology_model (MetrologyHandle)
Sind die Parameterwerte korrekt, dann liefert create_metrology_model den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
set_metrology_model_image_size
2D Metrology
| Operatoren |