| Operatoren |
create_variation_model — Erzeugung eines Variationsmodells zum Bildvergleich.
create_variation_model erzeugt ein Variationsmodell, das zum Bildvergleich verwendet werden kann. Der Handle auf das generierte Variationsmodell wird in ModelID 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_model oder compare_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 Width und Height festgelegt. Der Bildtyp der Trainings- und Vergleichsbilder wird mit Type 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_model) bestimmt werden. Hierauf kann das Bild mit affine_trans_image in eine Standardlage rotiert werden.
Mit dem Parameter Mode kann festgelegt werden, wie das Bild des idealen Objektes und das zugehörige Variationsbild berechnet werden. Für Mode='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_model 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 Mode='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_obj aufgesammelt werden und in einem Aufruf von train_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_shape und gray_dilation_shape) und dann trainiert werden. Eine andere Möglichkeit, ein Variationsmodell aus einem Trainingsbild zu erzeugen, ist, das Modell mit Mode='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_model spezifiziert wird. Da typischerweise die Variation an den Kanten des Objektes groß ist, ist es sinnvoll, das Variationsbild mit Kantenoperatoren wie sobel_amp, edges_image oder gray_range_rect zu erzeugen.
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.
Breite der zu vergleichenden Bilder.
Defaultwert: 640
Wertevorschläge: 160, 192, 320, 384, 640, 768
Höhe der zu vergleichenden Bilder.
Defaultwert: 480
Wertevorschläge: 120, 144, 240, 288, 480, 576
Typ der zu vergleichenden Bilder.
Defaultwert: 'byte'
Wertevorschläge: 'byte', 'int2', 'uint2'
Art der Berechnung des Variationsmodells.
Defaultwert: 'standard'
Wertevorschläge: 'standard', 'robust', 'direct'
ID des Variationsmodells.
Das mit create_variation_model erzeugte Modell benötigt für Mode = 'standard' und Mode = 'robust' für Type = 'byte' 12*Width*Height Bytes Speicher. Für Type = 'uint2' und Type = 'int2' werden 14*Width*Height Bytes benötigt. Für Mode = 'direct' und nachdem die Trainingsdaten mit clear_train_data_variation_model gelöscht worden sind, werden für Type = 'byte' 2*Width*Height Bytes benötigt. Für die anderen Bildtypen werden 4*Width*Height benötigt.
create_variation_model liefert 2 (H_MSG_TRUE) zurück, wenn alle Parameter korrekt sind.
train_variation_model, prepare_direct_variation_model
prepare_variation_model, clear_variation_model, clear_train_data_variation_model, find_shape_model, affine_trans_image
Matching
| Operatoren |