KlassenKlassenKlassenKlassen | | | | Operatoren

create_metrology_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel (Operator)

Name

create_metrology_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel — Anlegen der Datenstruktur, die für das Messen von geometrischen Formen notwendig ist.

Signatur

create_metrology_model( : : : MetrologyHandle)

Herror create_metrology_model(Hlong* MetrologyHandle)

Herror T_create_metrology_model(Htuple* MetrologyHandle)

Herror create_metrology_model(Hlong* MetrologyHandle)

void HMetrologyModel::CreateMetrologyModel()

void CreateMetrologyModel(HTuple* MetrologyHandle)

void HMetrologyModel::HMetrologyModel()

void HMetrologyModel::CreateMetrologyModel()

void HOperatorSetX.CreateMetrologyModel([out] VARIANT* MetrologyHandle)

void HMetrologyModelX.CreateMetrologyModel()

static void HOperatorSet.CreateMetrologyModel(out HTuple metrologyHandle)

public HMetrologyModel()

void HMetrologyModel.CreateMetrologyModel()

Beschreibung

create_metrology_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel 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 MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandle 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_posmeasure_posMeasurePosmeasure_posMeasurePosMeasurePos oder fuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePos 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.

Ein Messmodel enthält 7 Metrology-Messobjekte, dargestellt als blaue Konturen. Unter Benutzung der Kantenpunkte (Kreuze in Cyan) die innerhalb der Messregionen (graue Rechtecke) gefunden wurden, werden die geometrischen Formen (grüne Konturen) approximiert und ihre Parameter gemessen. Wie man für die Metrology-Messobjekte vom Typ Kreis sieht, können auch mehrere Instanzen eines Metrology-Messobjekts gefunden werden.

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_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel 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_sizeset_metrology_model_image_sizeSetMetrologyModelImageSizeset_metrology_model_image_sizeSetMetrologyModelImageSizeSetMetrologyModelImageSize 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_measureadd_metrology_object_circle_measureAddMetrologyObjectCircleMeasureadd_metrology_object_circle_measureAddMetrologyObjectCircleMeasureAddMetrologyObjectCircleMeasure für Metrology-Messobjekte des Typs Kreis, add_metrology_object_ellipse_measureadd_metrology_object_ellipse_measureAddMetrologyObjectEllipseMeasureadd_metrology_object_ellipse_measureAddMetrologyObjectEllipseMeasureAddMetrologyObjectEllipseMeasure für Metrology-Messobjekte des Typs Ellipse, add_metrology_object_rectangle2_measureadd_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2Measureadd_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2MeasureAddMetrologyObjectRectangle2Measure für Metrology-Messobjekte des Typs Rechteck und add_metrology_object_line_measureadd_metrology_object_line_measureAddMetrologyObjectLineMeasureadd_metrology_object_line_measureAddMetrologyObjectLineMeasureAddMetrologyObjectLineMeasure für Metrology-Messobjekte des Typs Linie definiert. Mit dem Operator add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGeneric 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_contourget_metrology_object_model_contourGetMetrologyObjectModelContourget_metrology_object_model_contourGetMetrologyObjectModelContourGetMetrologyObjectModelContour abgerufen werden. Um die Messregionen visuell zu überprüfen, kann auf die XLD-Konturen ihrer Begrenzung mit dem Operator get_metrology_object_measuresget_metrology_object_measuresGetMetrologyObjectMeasuresget_metrology_object_measuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasures 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_paramset_metrology_model_paramSetMetrologyModelParamset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParam zum Messmodell hinzugefügt. In diesem Fall werden die Ergebnisse der Messungen, die man mit get_metrology_object_resultget_metrology_object_resultGetMetrologyObjectResultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResult abrufen kann, im Weltkoordinatensystem zurückgegeben. Weiterhin kann das Referenzsystem in dem die Metrology-Messobjekte vorliegen mit set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParam 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_paramset_metrology_object_paramSetMetrologyObjectParamset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParam geändert werden. Zusätzlich kann das Messmodell mit copy_metrology_modelcopy_metrology_modelCopyMetrologyModelcopy_metrology_modelCopyMetrologyModelCopyMetrologyModel kopiert werden. Um ein Messmodell in eine Datei zu schreiben ist der Operator write_metrology_modelwrite_metrology_modelWriteMetrologyModelwrite_metrology_modelWriteMetrologyModelWriteMetrologyModel zu verwenden. Das Model kann unter Verwendung des Operators read_metrology_modelread_metrology_modelReadMetrologyModelread_metrology_modelReadMetrologyModelReadMetrologyModel wieder eingelesen werden. Die Indizes der Metrology-Messobjekte können mit get_metrology_object_indicesget_metrology_object_indicesGetMetrologyObjectIndicesget_metrology_object_indicesGetMetrologyObjectIndicesGetMetrologyObjectIndices abgefragt werden.

Ausrichten des Messmodells (Alignment)

align_metrology_modelalign_metrology_modelAlignMetrologyModelalign_metrology_modelAlignMetrologyModelAlignMetrologyModel 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_modelfind_shape_modelFindShapeModelfind_shape_modelFindShapeModelFindShapeModel benutzt werden um die Parameter für die Modellausrichtung zu ermitteln, liefert die Beschreibung von align_metrology_modelalign_metrology_modelAlignMetrologyModelalign_metrology_modelAlignMetrologyModelAlignMetrologyModel 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_modelapply_metrology_modelApplyMetrologyModelapply_metrology_modelApplyMetrologyModelApplyMetrologyModel 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'"num_instances""num_instances""num_instances""num_instances""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_paramset_metrology_object_paramSetMetrologyObjectParamset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParam 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_resultget_metrology_object_resultGetMetrologyObjectResultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResult 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_measuresget_metrology_object_measuresGetMetrologyObjectMeasuresget_metrology_object_measuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasures 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_resultget_metrology_object_resultGetMetrologyObjectResultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResult abgefragt werden. Eine Visualisierung der gemessenen Formen als XLD Konturen erhält man mit get_metrology_object_result_contourget_metrology_object_result_contourGetMetrologyObjectResultContourget_metrology_object_result_contourGetMetrologyObjectResultContourGetMetrologyObjectResultContour.

Freigabe des Speichers

Wenn das Messmodell nicht mehr benötigt wird sollte der Speicherplatz mit clear_metrology_modelclear_metrology_modelClearMetrologyModelclear_metrology_modelClearMetrologyModelClearMetrologyModel freigegeben werden.

Achtung

Es ist zu beachten, dass für eine optimale Laufzeit nach dem Aufruf des Operators create_metrology_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel der Operator set_metrology_model_image_sizeset_metrology_model_image_sizeSetMetrologyModelImageSizeset_metrology_model_image_sizeSetMetrologyModelImageSizeSetMetrologyModelImageSize aufgerufen werden sollte.

Parallelisierung

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.

Parameter

MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandle (output_control)  metrology_model HMetrologyModel, HTupleHTupleHMetrologyModel, HTupleHMetrologyModelX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des Messmodells.

Beispiel (HDevelop)

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)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_metrology_modelcreate_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelCreateMetrologyModel den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

set_metrology_model_image_sizeset_metrology_model_image_sizeSetMetrologyModelImageSizeset_metrology_model_image_sizeSetMetrologyModelImageSizeSetMetrologyModelImageSize

Modul

2D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren