create_variation_modelT_create_variation_modelCreateVariationModelCreateVariationModelcreate_variation_model (Operator)

Name

create_variation_modelT_create_variation_modelCreateVariationModelCreateVariationModelcreate_variation_model — Erzeugung eines Variationsmodells zum Bildvergleich.

Signatur

create_variation_model( : : Width, Height, Type, Mode : ModelID)

Herror T_create_variation_model(const Htuple Width, const Htuple Height, const Htuple Type, const Htuple Mode, Htuple* ModelID)

void CreateVariationModel(const HTuple& Width, const HTuple& Height, const HTuple& Type, const HTuple& Mode, HTuple* ModelID)

void HVariationModel::HVariationModel(Hlong Width, Hlong Height, const HString& Type, const HString& Mode)

void HVariationModel::HVariationModel(Hlong Width, Hlong Height, const char* Type, const char* Mode)

void HVariationModel::HVariationModel(Hlong Width, Hlong Height, const wchar_t* Type, const wchar_t* Mode)   (Nur Windows)

void HVariationModel::CreateVariationModel(Hlong Width, Hlong Height, const HString& Type, const HString& Mode)

void HVariationModel::CreateVariationModel(Hlong Width, Hlong Height, const char* Type, const char* Mode)

void HVariationModel::CreateVariationModel(Hlong Width, Hlong Height, const wchar_t* Type, const wchar_t* Mode)   (Nur Windows)

static void HOperatorSet.CreateVariationModel(HTuple width, HTuple height, HTuple type, HTuple mode, out HTuple modelID)

public HVariationModel(int width, int height, string type, string mode)

void HVariationModel.CreateVariationModel(int width, int height, string type, string mode)

def create_variation_model(width: int, height: int, type: str, mode: str) -> HHandle

Beschreibung

create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModelcreate_variation_model erzeugt ein Variationsmodell, das zum Bildvergleich verwendet werden kann. Der Handle auf das generierte Variationsmodell wird in ModelIDModelIDModelIDModelIDmodelIDmodel_id zurückgeliefert.

Das Variationsmodell wird typischerweise verwendet, um korrekt gefertigte Objekte („gute Objekte“) von falsch gefertigten Objekten („schlechte Objekte“) zu unterscheiden. Vorausgesetzt wird hierbei, dass sich die Unterscheidung allein aufgrund der Grauwerte des Objektes treffen lässt.

Das Variationsmodell besteht aus einem idealen Bild des Objektes, mit dem das Bild eines Objektes später mit compare_variation_modelcompare_variation_modelCompareVariationModelCompareVariationModelCompareVariationModelcompare_variation_model oder compare_ext_variation_modelcompare_ext_variation_modelCompareExtVariationModelCompareExtVariationModelCompareExtVariationModelcompare_ext_variation_model verglichen werden soll, und einem Bild, das angibt, wie sehr das Objekt an seinen verschiedenen Punkten im Grauwert variieren kann. Die Größe der Bilder, mit denen das Variationsmodell trainiert wird und die später zum Vergleich verwendet werden, wird mit WidthWidthWidthWidthwidthwidth und HeightHeightHeightHeightheightheight festgelegt. Der Bildtyp der Trainings- und Vergleichsbilder wird mit TypeTypeTypeTypetypetype angegeben.

Das Variationsmodell wird aus mehreren Bildern guter Objekte trainiert. Daher ist es unerlässlich, dass die Trainingsbilder die Objekte in derselben Lage zeigen. Falls dies nicht garantiert werden kann, kann die Lage des Objektes z.B. mittels Matching (siehe find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModelfind_shape_model) bestimmt werden. Hierauf kann das Bild mit affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImageaffine_trans_image in eine Standardlage rotiert werden.

Mit dem Parameter ModeModeModeModemodemode kann festgelegt werden, wie das Bild des idealen Objektes und das zugehörige Variationsbild berechnet werden. Für ModeModeModeModemodemode='standard'"standard""standard""standard""standard""standard" wird das ideale Bild des Objektes aus dem Mittelwert aller Trainingsbilder an den jeweiligen Bildpunkten berechnet. Das zugehörige Variationsbild wird aus der Standardabweichung der Trainingsbilder an den jeweiligen Bildpunkten berechnet. Dieser Modus hat den Vorteil, dass das Modell iterativ trainiert werden kann, d.h. sobald ein Bild eines guten Objektes vorliegt, kann es mit train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModeltrain_variation_model trainiert werden. Der Nachteil dieses Modus ist, dass sehr genau darauf geachtet werden muss, dass ausschließlich Bilder guter Objekte trainiert werden, da der Mittelwert und die Standardabweichung nicht robust gegenüber Ausreißern sind, d.h. wenn ein Bild eines schlechten Objektes aus Versehen mittrainiert wird, kann die Genauigkeit des idealen Objektbildes und des Variationsbildes beeinträchtigt werden.

Falls nicht verhindert werden kann, dass das Variationsmodell mit Bildern von Objekten trainiert wird, die Fehler enthalten, kann ModeModeModeModemodemode='robust'"robust""robust""robust""robust""robust" verwendet werden. In diesem Modus wird das ideale Bild des Objektes aus dem Median aller Trainingsbilder an den jeweiligen Bildpunkten berechnet. Das zugehörige Variationsbild wird aus dem Median der absoluten Abweichungen der Trainingsbilder vom Median an den jeweiligen Bildpunkten berechnet und geeignet skaliert. Dieser Modus hat den Vorteil, dass das berechnete Variationsmodell robust gegenüber Ausreißern ist. Es hat den Nachteil, dass es nicht iterativ trainiert werden kann, d.h. alle Trainingsbilder müssen mit concat_objconcat_objConcatObjConcatObjConcatObjconcat_obj aufgesammelt werden und in einem Aufruf von train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModeltrain_variation_model trainiert werden.

In manchen Fällen ist es nicht möglich, mehrere Trainingsbilder aufzunehmen. In diesem Fall kann durch Trainieren des einzigen Trainingsbildes kein sinnvolles Variationsbild erzeugt werden. Um dies zu umgehen, können synthetische Variationen des Trainingsbildes erzeugt werden, z.B. durch Verschieben des Trainingsbildes um Pixel in Zeilen- und Spaltenrichtung oder durch Grauwertmorphologie (z.B. mit gray_erosion_shapegray_erosion_shapeGrayErosionShapeGrayErosionShapeGrayErosionShapegray_erosion_shape und gray_dilation_shapegray_dilation_shapeGrayDilationShapeGrayDilationShapeGrayDilationShapegray_dilation_shape) und dann trainiert werden. Eine andere Möglichkeit, ein Variationsmodell aus einem Trainingsbild zu erzeugen, ist, das Modell mit ModeModeModeModemodemode='direct'"direct""direct""direct""direct""direct" zu erzeugen. In diesem Fall kann das Variationsmodell nur dadurch trainiert werden, dass das ideale Bild des Objektes und das Variationsbild direkt mit prepare_direct_variation_modelprepare_direct_variation_modelPrepareDirectVariationModelPrepareDirectVariationModelPrepareDirectVariationModelprepare_direct_variation_model spezifiziert wird. Da typischerweise die Variation an den Kanten des Objektes groß ist, ist es sinnvoll, das Variationsbild mit Kantenoperatoren wie sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp, edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image oder gray_range_rectgray_range_rectGrayRangeRectGrayRangeRectGrayRangeRectgray_range_rect zu erzeugen.

Ausführungsinformationen

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

WidthWidthWidthWidthwidthwidth (input_control)  extent.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der zu vergleichenden Bilder.

Defaultwert: 640

Wertevorschläge: 160, 192, 320, 384, 640, 768

HeightHeightHeightHeightheightheight (input_control)  extent.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe der zu vergleichenden Bilder.

Defaultwert: 480

Wertevorschläge: 120, 144, 240, 288, 480, 576

TypeTypeTypeTypetypetype (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Typ der zu vergleichenden Bilder.

Defaultwert: 'byte' "byte" "byte" "byte" "byte" "byte"

Wertevorschläge: 'byte'"byte""byte""byte""byte""byte", 'int2'"int2""int2""int2""int2""int2", 'uint2'"uint2""uint2""uint2""uint2""uint2"

ModeModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Art der Berechnung des Variationsmodells.

Defaultwert: 'standard' "standard" "standard" "standard" "standard" "standard"

Wertevorschläge: 'standard'"standard""standard""standard""standard""standard", 'robust'"robust""robust""robust""robust""robust", 'direct'"direct""direct""direct""direct""direct"

ModelIDModelIDModelIDModelIDmodelIDmodel_id (output_control)  variation_model HVariationModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

ID des Variationsmodells.

Komplexität

Das mit create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModelcreate_variation_model erzeugte Modell benötigt für ModeModeModeModemodemode = 'standard'"standard""standard""standard""standard""standard" und ModeModeModeModemodemode = 'robust'"robust""robust""robust""robust""robust" für TypeTypeTypeTypetypetype = 'byte'"byte""byte""byte""byte""byte" 12*WidthWidthWidthWidthwidthwidth*HeightHeightHeightHeightheightheight Bytes Speicher. Für TypeTypeTypeTypetypetype = 'uint2'"uint2""uint2""uint2""uint2""uint2" und TypeTypeTypeTypetypetype = 'int2'"int2""int2""int2""int2""int2" werden 14*WidthWidthWidthWidthwidthwidth*HeightHeightHeightHeightheightheight Bytes benötigt. Für ModeModeModeModemodemode = 'direct'"direct""direct""direct""direct""direct" und nachdem die Trainingsdaten mit clear_train_data_variation_modelclear_train_data_variation_modelClearTrainDataVariationModelClearTrainDataVariationModelClearTrainDataVariationModelclear_train_data_variation_model gelöscht worden sind, werden für TypeTypeTypeTypetypetype = 'byte'"byte""byte""byte""byte""byte" 2*WidthWidthWidthWidthwidthwidth*HeightHeightHeightHeightheightheight Bytes benötigt. Für die anderen Bildtypen werden 4*WidthWidthWidthWidthwidthwidth*HeightHeightHeightHeightheightheight benötigt.

Ergebnis

create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModelcreate_variation_model liefert TRUE zurück, wenn alle Parameter korrekt sind.

Nachfolger

train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModeltrain_variation_model, prepare_direct_variation_modelprepare_direct_variation_modelPrepareDirectVariationModelPrepareDirectVariationModelPrepareDirectVariationModelprepare_direct_variation_model

Siehe auch

prepare_variation_modelprepare_variation_modelPrepareVariationModelPrepareVariationModelPrepareVariationModelprepare_variation_model, clear_variation_modelclear_variation_modelClearVariationModelClearVariationModelClearVariationModelclear_variation_model, clear_train_data_variation_modelclear_train_data_variation_modelClearTrainDataVariationModelClearTrainDataVariationModelClearTrainDataVariationModelclear_train_data_variation_model, find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModelfind_shape_model, affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImageaffine_trans_image

Modul

Matching