| Operatoren |
create_metrology_model — Anlegen der Datenstruktur, die für das Messen von geometrischen Formen 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 Hauptachsen 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:
Erstellen der Datenstruktur des Messmodells
Als erstes erstellt man mit create_metrology_model die Datenstruktur für das Messmodel. Diese dient als Container für ein oder mehrere Metrology-Messobjekte. Für eine effiziente Messung sollte dann die Größe des Bildes, auf dem die Messungen durchgeführt werden, mit set_metrology_model_image_size festgelegt werden.
Bereitstellen der genäherten Werte
Anschließend werden die Metrology-Messobjekte zum Messmodell hinzugefügt. Jedes Metrology-Messobjekt besteht aus genäherten Parametern für die Form des zugehörigen Objekts im Bild und aus Parametern, die die Messungen steuern. Die Parameter, die die Messungen steuern enthalten z.B. Parameter, die die halbe Länge der Messregionen und den Abstand zwischen diesen festlegen. Desweiteren können mehrere generische Parameter für jedes Metrology-Messobjekt festgelegt werden. 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 Rechteck und add_metrology_object_line_measure für Metrology-Messobjekte des Typs Linie definiert. Mit dem Operator add_metrology_object_generic können alle geometrischen Typen (Kreis, Ellipse, etc.) der Metrology-Messobjekte definiert werden. Um die definierten Metrology-Messobjekte visuell zu prüfen, können die XLD-Konturen ihrer Begrenzung mit dem Operator get_metrology_object_model_contour abgerufen werden. Um die Messregionen visuell zu überprüfen, kann auf die XLD-Konturen ihrer Begrenzung mit dem Operator get_metrology_object_measures zugegriffen werden.
Ändern der Modellparameter
Wenn eine Kamerakalibrierung vorhanden ist, gelten die Kameraparameter und die Pose des Weltkoordinatensystems für alle Metrology-Messobjekte und werden mithilfe des Operators set_metrology_model_param zum Messmodell hinzugefügt. In diesem Fall werden die Ergebnisse der Messungen, die man mit get_metrology_object_result abrufen kann, im Weltkoordinatensystem zurückgegeben. Weiterhin kann das Referenzsystem in dem die Metrology-Messobjekte vorliegen mit set_metrology_model_param geändert werden.
Ändern der Objektparameter
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. Zusätzlich kann das Messmodell mit copy_metrology_model kopiert 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.
Ausrichten des Messmodells (Alignment)
align_metrology_model verschiebt und rotiert das Messmodell vor einer Messung, so dass es über dem zu messenden Objekt im aktuellen Bild liegt. Diese Modellausrichtung ist temporär und wird durch die nächste ersetzt. Die Parameter der einzelnen Objekte werden nicht verändert. Soll ein Formmodell und find_shape_model benutzt werden um die Parameter für die Modellausrichtung zu ermitteln, liefert die Beschreibung von align_metrology_model weiter Informationen.
Durchführen der Messungen
Wenn alle Metrology-Messobjekte zum Messmodell hinzugefügt sind, alle Parameter endgültig gesetzt sind und eventuell eine Modellausrichtung erfolgt ist, 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 (siehe Bild oben), 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. Die Zeilen- und Spaltenkoordinaten der Kanten, die tatsächlich für die Berechnung der Ergebnisse benutzt wurden, können ebenfalls mit get_metrology_object_result abgefragt werden. Eine Visualisierung der gemessenen Formen als XLD Konturen erhält man mit get_metrology_object_result_contour.
Freigabe des Speichers
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.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
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', \
'all_param', Rectangle)
get_metrology_object_result_contour (Contour, MetrologyHandle, \
Index, 'all', 1.5)
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 |