create_variation_modelT_create_variation_modelCreateVariationModelCreateVariationModel (Operator)

Name

create_variation_modelT_create_variation_modelCreateVariationModelCreateVariationModel — 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)

Beschreibung

create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModel erzeugt ein Variationsmodell, das zum Bildvergleich verwendet werden kann. Der Handle auf das generierte Variationsmodell wird in ModelIDModelIDModelIDModelIDmodelID 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äßt.

Das Variationsmodell besteht aus einem idealen Bild des Objektes, mit dem das Bild eines Objektes später mit compare_variation_modelcompare_variation_modelCompareVariationModelCompareVariationModelCompareVariationModel oder compare_ext_variation_modelcompare_ext_variation_modelCompareExtVariationModelCompareExtVariationModelCompareExtVariationModel 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 WidthWidthWidthWidthwidth und HeightHeightHeightHeightheight festgelegt. Der Bildtyp der Trainings- und Vergleichsbilder wird mit TypeTypeTypeTypetype angegeben.

Das Variationsmodell wird aus mehrern Bildern guter Objekte trainiert. Daher ist es unerläßlich, daß 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_modelFindShapeModelFindShapeModelFindShapeModel) bestimmt werden. Hierauf kann das Bild mit affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage in eine Standardlage rotiert werden.

Mit dem Parameter ModeModeModeModemode kann festgelegt werden, wie das Bild des idealen Objektes und das zugehörige Variationsbild berechnet werden. Für ModeModeModeModemode='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, daß das Modell iterativ trainiert werden kann, d.h. sobald ein Bild eines guten Objektes vorliegt, kann es mit train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModel trainiert werden. Der Nachteil dieses Modus ist, daß sehr genau darauf geachtet werden muß, 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 ModeModeModeModemode='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_objConcatObjConcatObjConcatObj aufgesammelt werden und in einem Aufruf von train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModel 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_shapeGrayErosionShapeGrayErosionShapeGrayErosionShape und gray_dilation_shapegray_dilation_shapeGrayDilationShapeGrayDilationShapeGrayDilationShape) und dann trainiert werden. Eine andere Möglichkeit, ein Variationsmodell aus einem Trainingsbild zu erzeugen, ist, das Modell mit ModeModeModeModemode='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_modelPrepareDirectVariationModelPrepareDirectVariationModelPrepareDirectVariationModel spezifiziert wird. Da typischerweise die Variation an den Kanten des Objektes groß ist, ist es sinnvoll, das Variationsbild mit Kantenoperatoren wie sobel_ampsobel_ampSobelAmpSobelAmpSobelAmp, edges_imageedges_imageEdgesImageEdgesImageEdgesImage oder gray_range_rectgray_range_rectGrayRangeRectGrayRangeRectGrayRangeRect 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

WidthWidthWidthWidthwidth (input_control)  extent.x HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der zu vergleichenden Bilder.

Defaultwert: 640

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

HeightHeightHeightHeightheight (input_control)  extent.y HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe der zu vergleichenden Bilder.

Defaultwert: 480

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

TypeTypeTypeTypetype (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Typ der zu vergleichenden Bilder.

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

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

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art der Berechnung des Variationsmodells.

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

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

ModelIDModelIDModelIDModelIDmodelID (output_control)  variation_model HVariationModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

ID des Variationsmodells.

Komplexität

Das mit create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModel erzeugte Modell benötigt für ModeModeModeModemode = 'standard'"standard""standard""standard""standard" und ModeModeModeModemode = 'robust'"robust""robust""robust""robust" für TypeTypeTypeTypetype = 'byte'"byte""byte""byte""byte" 12*WidthWidthWidthWidthwidth*HeightHeightHeightHeightheight Bytes Speicher. Für TypeTypeTypeTypetype = 'uint2'"uint2""uint2""uint2""uint2" und TypeTypeTypeTypetype = 'int2'"int2""int2""int2""int2" werden 14*WidthWidthWidthWidthwidth*HeightHeightHeightHeightheight Bytes benötigt. Für ModeModeModeModemode = 'direct'"direct""direct""direct""direct" und nachdem die Trainingsdaten mit clear_train_data_variation_modelclear_train_data_variation_modelClearTrainDataVariationModelClearTrainDataVariationModelClearTrainDataVariationModel gelöscht worden sind, werden für TypeTypeTypeTypetype = 'byte'"byte""byte""byte""byte" 2*WidthWidthWidthWidthwidth*HeightHeightHeightHeightheight Bytes benötigt. Für die anderen Bildtypen werden 4*WidthWidthWidthWidthwidth*HeightHeightHeightHeightheight benötigt.

Ergebnis

create_variation_modelcreate_variation_modelCreateVariationModelCreateVariationModelCreateVariationModel liefert 2 (H_MSG_TRUE) zurück, wenn alle Parameter korrekt sind.

Nachfolger

train_variation_modeltrain_variation_modelTrainVariationModelTrainVariationModelTrainVariationModel, prepare_direct_variation_modelprepare_direct_variation_modelPrepareDirectVariationModelPrepareDirectVariationModelPrepareDirectVariationModel

Siehe auch

prepare_variation_modelprepare_variation_modelPrepareVariationModelPrepareVariationModelPrepareVariationModel, clear_variation_modelclear_variation_modelClearVariationModelClearVariationModelClearVariationModel, clear_train_data_variation_modelclear_train_data_variation_modelClearTrainDataVariationModelClearTrainDataVariationModelClearTrainDataVariationModel, find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModel, affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage

Modul

Matching