| Operatoren |
align_metrology_model — Ausrichtung eines Messmodells.
align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )
align_metrology_model bewegt und rotiert das Messmodell, gegeben durch MetrologyHandle, als Ganzes relativ zum Bildkoordinatensystem, das seinen Ursprung in der linken oberen Ecke hat. 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_model benutzt, um eine Messung durchzuführen. Als erstes wird das Messmodell um Angle rotiert. Dann wird das Messmodell um Row und Column verschoben. Die Werte der Modellausrichtung werden durch den nächsten Aufruf von align_metrology_model überschrieben.
Berechnung der Parameter der Modellausrichtung
Die Parameter der Modellausrichtung können auf verschiedene Weise ermittelt werden. Im Folgenden werden drei Möglichkeiten aufgezeigt:
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 threshold und smallest_rectangle2 benutzt.
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_param 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])
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)
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_param so gesetzt werden, dass es mit dem Koordinatensystem des Formmodells übereinstimmt. Nur dann können die Ergebnisse (Row, Column, Angle) von find_shape_model direkt in align_metrology_model für die Ausrichtung des Messmodells im aktuellen Bild verwendet werden. Die einzelnen Schritte hierfür, werden im Folgenden aufgezeigt.
| (1) | (2) | (3) |
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])
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_model ü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)
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) |
Ermitteln der Punktkkorrespondenzen
Bestimmen der Modellausrichtung
Die folgende Operatorsequenz berechnet die Parameter der Modellausrichtung (Row, Column, Angle) 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)
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des Messmodells..
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)
clear_metrology_model (MetrologyHandle)
clear_shape_model (ShapeModelID)
Sind die Parameterwerte korrekt, dann liefert align_metrology_model den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
set_metrology_model_param, add_metrology_object_generic
get_metrology_object_model_contour
2D Metrology
| Operatoren |