apply_metrology_model
— Messen und Anpassen der geometrischen Formen aller Metrology-Messobjekte
eines Messmodells.
apply_metrology_model(Image : : MetrologyHandle : )
apply_metrology_model
lokalisiert die Kanten der
Metrology-Messobjekte im Bild Image
und passt die dazugehörigen
geometrischen Formen an die gefundenen Kantenpositionen an.
Das Konzept der 2D-Messtechnik ist bei der Einleitung zu Kapitel 2D-Messtechnik beschrieben.
Das Messmodell ist im Handle MetrologyHandle
definiert und
beinhaltet genäherte Werte für die geometrischen Formen. Die Messungen
werden folgendermaßen durchgeführt:
Ermittlung der Kantenpositionen
Innerhalb der Messregionen der Metrology-Messobjekte werden die
Positionen der Kanten ermittelt. Die Lage der Kanten wird intern mit
dem Operator measure_pos
oder fuzzy_measure_pos
berechnet. Letzterer wird genutzt, wenn mindestens eine
Fuzzy-Funktion für das Metrology-Messobjekt gesetzt ist.
Anpassen der geometrischen Formen an die Kantenpositionen
Die geometrischen Formen der Metrology-Messobjekte werden so
angepasst, dass sie optimal zu den resultierenden Kantenpositionen
passen. Dabei wird ein RANSAC-Verfahren dazu verwendet die
Mindestanzahl von Startkantenpositionen auszuwählen, die notwendig ist,
um eine Instanz einer bestimmten geometrischen Form zu erstellen.
Zum Beispiel werden bei einem Metrology-Messobjekt vom Typ Kreis drei
Kantenpositionen ausgewählt. Anschließend werden Kantenpositionen
festgelegt, die sich in der Nähe der geometrischen Form der zugehörigen
Instanz befinden und, falls die Anzahl der geeigneten Kantenpositionen
ausreichend ist (siehe den generischen Parameter 'min_score'
des Operators set_metrology_object_param
), werden diese für die
endgültige Anpassung der geometrischen Form verwendet. Falls die Anzahl
der geeigneten Kantenpositionen nicht ausreichend ist, werden andere
Startkantenpositionen getestet solange bis eine geeignete
Auswahl von Kantenpositionen gefunden wird. An die Kantenpositionen,
die für das endgültige Anpassen ausgewählt wurden, wird die geometrische
Form angepasst und die Parameter werden im Messmodel abgespeichert. Es
ist zu beachten, dass mehr als eine Instanz für jedes Metrology-Messobjekt
zurückgegeben wird, wenn der generische Parameter
'num_instances' auf einen Wert größer als 1 gesetzt
wird. Dieser und weitere Parameter können beim Hinzufügen des
Metrology-Messobjekts zum Messmodell oder seperat mit dem Operator
set_metrology_object_param
gesetzt werden.
Zu beachten ist, dass für jede Instanz des Metrology-Messobjekts verschiedene Kantenpositionen genutzt werden, d.h., dass für die Berechnung der zweiten Instanz keine Kantenpositionen verwendet werden, die bereits für das Fitting der ersten Instanz verwendet wurden. Der Algorithmus bricht ab, wenn 'num_instances' Instanzen gefunden wurden oder wenn die verbleibende Anzahl an geeigneten Startkantenpositionen zu gering für eine weitere Anpassung einer geometrischen Form sind.
Zugriff auf die Ergebnisse
Auf die Ergebnisse der Messungen aus dem Messmodell kann mithilfe
von get_metrology_object_result
zugegriffen werden. Zu beachten
ist, dass, wenn mehr als eine Instanz eines Objekts
zurückggegeben wird, die Reihenfolge der zurückgegeben Instanzen
zufällig ist, d.h. die Reihenfolge stellt kein Maß für die Qualität
der Anpassung dar. Zu beachten ist weiterhin, dass, wenn die Parameter
'camera_param' und 'plane_pose' mittels
set_metrology_model_param
für das Messmodell gesetzt sind,
Weltkoordinaten für das Anpassen genutzt werden.
Andernfalls werden Bildkoordinaten verwendet. Die XLD Konturen können
mit get_metrology_object_result_contour
abgefragt werden.
Es ist zu beachten, dass alle Messregionen aller Metrology-Messobjekte
des Messmodells neu berechnet werden müssen, falls die Bildbreite oder
die Bildhöhe des Eingabebildes Image
nicht gleich der
Breite oder Höhe ist, die im Metrology-Messobjekt gespeichert ist (kann
z.B. im Operator set_metrology_model_image_size
gesetzt werden).
Dies führt zu längeren Laufzeiten des Operators.
Es ist zu beachten, dass apply_metrology_model
den
Definitionsbereich von Image
aus Geschwindigkeitsgründen
ignoriert (siehe auch measure_pos
).
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
Image
(input_object) singlechannelimage →
object (byte / uint2 / real)
Eingabebild.
MetrologyHandle
(input_control, Zustand wird modifiziert) metrology_model →
(handle)
Handle des Messmodells.
Sind die Parameterwerte korrekt, dann liefert
apply_metrology_model
den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
add_metrology_object_generic
,
add_metrology_object_circle_measure
,
add_metrology_object_ellipse_measure
,
add_metrology_object_line_measure
,
add_metrology_object_rectangle2_measure
,
align_metrology_model
,
set_metrology_model_param
,
set_metrology_object_param
get_metrology_object_result
,
get_metrology_object_result_contour
,
get_metrology_object_measures
set_metrology_object_fuzzy_param
,
read_metrology_model
,
write_metrology_model
2D Metrology