align_metrology_modelT_align_metrology_modelAlignMetrologyModelAlignMetrologyModel (Operator)

Name

align_metrology_modelT_align_metrology_modelAlignMetrologyModelAlignMetrologyModel — Ausrichtung eines Messmodells.

Signatur

align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )

Herror T_align_metrology_model(const Htuple MetrologyHandle, const Htuple Row, const Htuple Column, const Htuple Angle)

void AlignMetrologyModel(const HTuple& MetrologyHandle, const HTuple& Row, const HTuple& Column, const HTuple& Angle)

void HMetrologyModel::AlignMetrologyModel(const HTuple& Row, const HTuple& Column, const HTuple& Angle) const

void HMetrologyModel::AlignMetrologyModel(double Row, double Column, double Angle) const

static void HOperatorSet.AlignMetrologyModel(HTuple metrologyHandle, HTuple row, HTuple column, HTuple angle)

void HMetrologyModel.AlignMetrologyModel(HTuple row, HTuple column, HTuple angle)

void HMetrologyModel.AlignMetrologyModel(double row, double column, double angle)

Beschreibung

align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModel bewegt und rotiert das Messmodell, gegeben durch MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandle, als Ganzes relativ zum Bildkoordinatensystem, das seinen Ursprung in der linken oberen Ecke hat.

Das Konzept der 2D-Messtechnik ist bei der Einleitung zu Kapitel 2D-Messtechnik beschrieben.

Ein Ausrichten des Messmodells gewährleistet, dass das Messmodell an die Position der zu messenden Objekte im aktuellen Bild angepasst wird. Diese Modellausrichtung wird dann von apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModel benutzt, um eine Messung durchzuführen. Als erstes wird das Messmodell um AngleAngleAngleAngleangle rotiert. Dann wird das Messmodell um RowRowRowRowrow und ColumnColumnColumnColumncolumn verschoben. Die Werte der Modellausrichtung werden durch den nächsten Aufruf von align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModel überschrieben.

Berechnung der Parameter der Modellausrichtung

Die Parameter der Modellausrichtung können auf verschiedene Weise ermittelt werden. Im Folgenden werden drei Möglichkeiten aufgezeigt:

'Mittels Regionenanalyse'"Mittels Regionenanalyse""Mittels Regionenanalyse""Mittels Regionenanalyse""Mittels Regionenanalyse":

Falls das Messmodell über Regionenverarbeitung extrahiert werden kann und die Lage und Orientierung der Region in nachfolgenden Bildern des Objekts nur wenig variiert, kann man die Parameter des Referenzsystems und der Modellausrichtung über Regionenanalyse berechnen. Für das nachfolgende Bild wurde dazu thresholdthresholdThresholdThresholdThreshold und smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2 benutzt.

Die mit thresholdthresholdThresholdThresholdThreshold extrahierte Region ist in rot dargestellt. Das mit smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2 berechnete Rechteck ist in grün gezeigt.
  1. Setzen des Referenzsystems

    In dem Bild, in dem man das Messmodell definiert hat, extrahiert man eine Region, die die Metrology-Messobjekte beinhaltet. Man ermittelt die Lage dieser Region bzgl. des Bildkoordinatensystems und setzt sie mit set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParam als Referenzsystem für das Messmodell. Dadurch kann man beim nachfolgenden Ausrichten des Messmodells die Lage der extrahierten Region direkt verwenden. threshold (Image, Region, 0, 50) smallest_rectangle2 (Region, RowOrig, ColumnOrig, AngleOrig, Length1, \ Length2) set_metrology_model_param (MetrologyHandle, 'reference_system', \ [RowOrig, ColumnOrig, AngleOrig])

  2. Bestimmen der Modellausrichtung

    In einem Bild, in dem das Messmodell in einer anderen Lage vorkommt, ermittelt man die aktuelle Lage der extrahierten Region. Diese Lage benutzt man dann für die Ausrichtung des Messmodells. threshold (CurrentImage, Region, 0, 50) smallest_rectangle2 (Region, RowAlign, ColumnAlign, AngleAlign, Length1, \ Length2) align_metrology_model (MetrologyHandle, RowAlign, ColumnAlign, AngleAlign)

'Mittels eines Formmodells'"Mittels eines Formmodells""Mittels eines Formmodells""Mittels eines Formmodells""Mittels eines Formmodells":

Wenn ein Formmodel genutzt wird, um das Messmodell im aktuellen Bild auszurichten, muss das Referenzsystem, bzgl. dem die Metrology-Messobjekte gegeben sind, mit set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParam so gesetzt werden, dass es mit dem Koordinatensystem des Formmodells übereinstimmt. Nur dann können die Ergebnisse (RowRowRowRowrow, ColumnColumnColumnColumncolumn, AngleAngleAngleAngleangle) von find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModel direkt in align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModel für die Ausrichtung des Messmodells im aktuellen Bild verwendet werden. Die einzelnen Schritte hierfür, werden im Folgenden aufgezeigt.

(1) (2) (3)
(1) Die Konturen des Messmodells (2) Die Konturen des Formmodells (3) Die Konturen des Messmodells nach dem Setzen des Referenzpunktes
  1. Setzen des Referenzsystems

    In dem Bild, in dem das Messmodell definiert wurde, wird die Lage der Ursprungs des Formmodells ermittelt. create_shape_model (Image, 6, 0, rad(360), 'auto', 'auto', \ 'use_polarity', 'auto', 20, ShapeModelID) area_center (Image, Area, RowOrig, ColumnOrig) set_metrology_model_param (MetrologyHandle, 'reference_system', \ [RowOrig,ColumnOrig,0])

  2. Bestimmen der Modellausrichtung

    In einem Bild, in dem das zu messende Objekt in einer anderen Orientierung vorkommt, wird die aktuelle Lage des Formmodells ermittelt und an align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModel übergeben. find_shape_model (CurrentImage, ShapeModelID, 0, rad(360), 0.5, 1, 0, \ 'least_squares', 5, 0.9, RowAlign, ColumnAlign, AngleAlign,\ Score) align_metrology_model (MetrologyHandle, RowAlign, ColumnAlign, AngleAlign)

'Mittels einer starren 2D-Transformation'"Mittels einer starren 2D-Transformation""Mittels einer starren 2D-Transformation""Mittels einer starren 2D-Transformation""Mittels einer starren 2D-Transformation":
Sind bestimmte Modellpunkte (gegeben als [PRowModel], [PColumnModel]) eindeutig identifizierbar, und können diese in weiteren Bildern, in denen die zu messenden Objekte verschoben und rotiert auftreten, wieder eindeutig identifiziert werden, so kann zwischen diesen Punkten eine starre Abbildung berechnet werden. Die Parameter der Abbildung können dann direkt für die Modellausrichtung benutzt werden. In diesem Fall muss der Referenzpunkt des Messmodells nicht verändert werden.
(1) (2)
(1) Die Konturen der Metrology-Messobjekte und vier korrespondierende Punkte im Bild das für die Erstellung des Messmodells benutzt wurde. (2) Die Konturen der Metrology-Messobjekte und die vier korrespondierenden Punkte in einem neuen Bild.
  1. Ermitteln der Punktkkorrespondenzen

  2. Bestimmen der Modellausrichtung

    Die folgende Operatorsequenz berechnet die Parameter der Modellausrichtung (RowRowRowRowrow, ColumnColumnColumnColumncolumn, AngleAngleAngleAngleangle) aus korrespondierenden Punkten im Modellbild und in einem weiteren Bild. vector_to_rigid (PRowModel, PColumnModel, PRowCurrent, PColumnCurrent, HomMat2D) hom_mat2d_to_affine_par (HomMat2D, Sx, Sy, Angle, Theta, Row, Column) align_metrology_model (MetrologyHandle, Row, Column, Angle)

Ausführungsinformationen

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.

Parameter

MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandle (input_control, Zustand wird modifiziert)  metrology_model HMetrologyModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Messmodells..

RowRowRowRowrow (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate der Ausrichtung.

Defaultwert: 0

ColumnColumnColumnColumncolumn (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate der Ausrichtung.

Defaultwert: 0

AngleAngleAngleAngleangle (input_control)  angle.rad HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Rotationswinkel der Ausrichtung.

Defaultwert: 0

Beispiel (HDevelop)

read_image (Image, 'metal-parts/circle_plate_01')
create_metrology_model (MetrologyHandle)
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)  
CircleParam := [354,274,53]
CircleParam := [CircleParam,350,519,53]
add_metrology_object_generic (MetrologyHandle, 'circle', CircleParam, 20,\
                              5, 1, 30, [], [], CircleIndices)
create_shape_model (Image, 6, 0, rad(360), 'auto', 'auto', \
                    'use_polarity', 'auto', 20, ShapeModelID)
* Determine location of shape model origin
area_center (Image, Area, RowOrigin, ColOrigin)
set_metrology_model_param (MetrologyHandle, 'reference_system', \
                           [RowOrigin,ColOrigin,0])
read_image (CurrentImage, 'metal-parts/circle_plate_02')
find_shape_model (CurrentImage, ShapeModelID, 0, rad(360), 0.5, 1, 0, \
                  'least_squares', 5, 0.9, RowAlign, ColAlign, AngleAlign,\
                  Score)
align_metrology_model (MetrologyHandle, RowAlign,ColAlign,AngleAlign)
apply_metrology_model (CurrentImage, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, CircleIndices, 'all', \
                             'result_type', 'all_param', Rectangle)
get_metrology_object_result_contour (Contour, MetrologyHandle, CircleIndices,\
                                     'all', 1.5)

Ergebnis

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

Vorgänger

set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParam, add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGeneric

Nachfolger

apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModel

Siehe auch

get_metrology_object_model_contourget_metrology_object_model_contourGetMetrologyObjectModelContourGetMetrologyObjectModelContourGetMetrologyObjectModelContour

Modul

2D Metrology