| Operatoren |
create_sample_identifier — Anlegen eines neuen Sample-Identifikators.
create_sample_identifier( : : ParamName, ParamValue : SampleIdentifier)
Der Operator create_sample_identifier legt einen neuen Sample-Identifikator an. Alternativ dazu kann ein bereits verfügbarer Sample-Identifikator mit dem Operator read_sample_identifier von Datei eingelesen werden. Das Konzept der samplebasierten Identifikation ist weiter unten beschrieben.
Wenn Farbinformation für die Identifikation verwendet werden soll, ist es notwendig, dies explizit anzugeben. Dies erfolgt durch das Setzen des generischen Parameters 'add_color_info' auf 'true'.
Mit den generischen Parametern kann das Verhalten des Sample-Identifikators beeinflusst werden. Typischerweise muss hierbei aber nur der Parameter 'add_color_info' berücksichtigt werden. Die generischen Parameter und ihre Werte können in ParamName und ParamValue übergeben werden. Die folgenden generischen Parameter können gesetzt werden:
Dieser Parameter legt fest, ob Farbinformation für die Identifikation verwendet wird. Ist 'add_color_info' auf 'true' gesetzt, so wird Farbinformation verwendet. In diesem Fall müssen alle Bilder, die für die Vorbereitung und das Training des Sample-Identifikators verwendet werden, RGB-Farbbilder sein. Ist 'add_color_info' auf 'false' gesetzt, wird keine Farbinformation verwendet. Farbinformation sollte verwendet werden, wenn die zu unterscheidenden Objekte unterschiedliche Farben haben und die Beleuchtung einigermaßen gut kontrolliert werden kann. In diesem Fall wird die Identifikation durch die Verwendung von Farbinformation robuster.
Werteliste: 'true', 'false'
Defaultwert: 'false'
Dieser Parameter legt fest, ob Texturinformation für die Identifikation verwendet wird. Ist 'add_texture_info' auf 'true' gesetzt, so wird Texturinformation verwendet. Ist 'add_texture_info' auf 'false' gesetzt, wird keine Texturinformation verwendet. Normalerweise sollte 'add_texture_info' auf 'true' gesetzt sein, da die samplebasierte Identifikation nur mit texturierten Objekten funktioniert. Es ist zu beachten, dass mindestens einer der beiden generischen Parameter 'add_color_info' und 'add_texture_info' auf 'true' gesetzt sein muss.
Werteliste: 'true', 'false'
Defaultwert: 'true'
Um die Identifikation zu beschleunigen werden die Bilder intern auf eine vorgegebene Größe oder mit einem bestimmten Faktor skaliert. Ist 'image_resize_method' auf 'none' gesetzt, so wird diese Skalierung nicht durchgeführt. Für den Parameter 'scale_factor' kann ein konstanter Skalierungsfaktor angegeben werden und für 'subsampling_step' eine konstante Schrittweite für die Unterabtastung (der inverse Skalierungsfaktor). Für 'image_area' kann eine feste Größe für das interne, skalierte Bild angegeben werden. Die entsprechenden Werte können mit 'image_resize_value' gesetzt werden (siehe unten).
Um den Identifikationsprozess zu beschleunigen, sollte ein Wert gewählt werden, der zu einem kleineren internen Bild führt, also ein kleinerer Skalierungsfaktor oder eine kleinere Bildgröße bzw. eine größere Schrittweite für die Unterabtastung. Wenn die zu unterscheidenden Objekte hochfrequente Textur aufweisen, wird die Identifikation möglicherweise bessere Ergebnisse liefern, wenn eine größere interne Bildgröße verwendet wird, da ansonsten die Textur bei der Verkleinerung des Bildes verloren gehen kann.
Werteliste: 'none', 'scale_factor', 'subsampling_step', 'image_area'
Defaultwert: 'image_area'
Mit diesem Parameter wird die Skalierungsmethode (siehe 'image_resize_method') parametrisiert. Wenn für 'image_resize_method' der Wert 'scale_factor' gesetzt ist, wird mit 'image_resize_value' der Skalierungsfaktor festgelegt. Wenn für 'image_resize_method' der Wert 'subsampling_step' gesetzt ist, wird mit 'image_resize_value' die Schrittweite für die Unterabtastung, also der inverse Skalierungsfaktor, festgelegt. Wenn für 'image_resize_method' der Wert 'image_area' gesetzt ist, wird mit 'image_resize_value' die Größe des internen, skalierten Bildes festgelegt. Diese Größe wird in Megapixeln, d.h., in Millionen Pixel angegeben.
Wertevorschläge: 0.25, 0.5, 1.0, 2, 3, 4
Defaultwert: Der Defaultwert hängt von der mit 'image_resize_method' gewählten Methode ab. Er beträgt
0.5 für 'scale_factor',
2.0 für 'subsampling_step' und
0.5 für 'image_area'.
Mit der samplebasierten Identifikation können eintrainierte Objekte anhand von charakteristischen Merkmalen wie Textur oder Farbe identifiziert werden. Dies ermöglicht es, Objekte zu identifizieren, die nicht mit einem Barcode oder einem Datacode markiert sind. Mit der samplebasierten Identifikation können sehr viele Objekte voneinander unterschieden werden. Die Identifikation ist robust gegenüber Rotation, Skalierung und Beleuchtungsänderungen sowie gegenüber Verdeckungen, Störungen und moderaten perspektivischen Verzerrungen. Darüber hinaus ist die Identifikation robust gegenüber moderaten Deformationen des Objekts und sie erlaubt in gewissen Grenzen auch die Identifikation von Schüttgut. Andererseits bedeutet dies, dass Objekte nicht unterschieden werden können, die sich sehr ähnlich sind oder sich nur in einem der Punkte unterscheiden, gegenüber denen die samplebasierte Identifikation robust ist. Zu beachten ist, dass die samplebasierte Identifikation nur mit texturierten Objekten funktioniert.
Mit der samplebasierten Identifikation kann immer nur ein Objekt pro Bild identifiziert werden. Das bedeutet, dass jedes Suchbild, oder genauer gesagt die Domain jedes Suchbildes nur ein Objekt enthalten darf.
Im Folgenden werden die einzelnen Schritte, die zur Benutzung der samplebasierten Identifikation benötigt werden, kurz beschrieben.
Zuerst muss ein Sample-Identifikator bereitgestellt werden. Dies erfolgt durch das Anlegen und Vorbereiten mit den Operatoren create_sample_identifier, add_sample_identifier_preparation_data und prepare_sample_identifier. Der Schritt der Vorbereitung ist notwendig, um die internen Datenstrukturen des Sample-Identifikators an die Art der Objekte anzupassen, die unterschieden werden sollen. Alternativ dazu kann ein bereits verfügbarer Sample-Identifikator mit dem Operator read_sample_identifier von Datei eingelesen werden. Einen vorbereiteten Sample-Identifikator kann man sich in gewisser Weise wie eine Lagerhalle vorstellen, die für die Lagerung einer bestimmten Art von Produkten ausgelegt ist.
Im Anschluss an die Vorbereitung muss der Sample-Identifikator mit Samples der zu unterscheidenden Objekte trainiert werden. Dies erfolgt mit den Operatoren add_sample_identifier_training_data und train_sample_identifier. Es ist jederzeit möglich, den Sample-Identifikator nachzutrainieren. Hierfür können Samples aus dem Sample-Identifikator mit dem Operator remove_sample_identifier_training_data gelöscht werden und es können neue Samples mit dem Operator add_sample_identifier_training_data hinzugefügt werden. Sofern sich die Art der zu unterscheidenden Objekte nicht zu stark ändert, ist es nicht notwendig, die Vorbereitung des Sample-Identifikator erneut durchzuführen. Das Training entspricht - um im obigen Bild zu bleiben - dem Auffüllen der Lagerhalle.
Nun kann der trainierte Sample-Identifikator mit dem Operator apply_sample_identifier verwendet werden um Objekte zu identifizieren.
Zusätzlich zu den oben genannten Operatoren können folgende weitere Operatoren zur Administration des Sample-Identifikator verwendet werden. Mit remove_sample_identifier_preparation_data und remove_sample_identifier_training_data können die Daten, die zur Vorbereitung bzw. zum Training des Sample-Identifikator hinzugefügt wurden, wieder gelöscht werden. Sie werden dann bei einer weiteren Vorbereitung bzw. einem weiteren Training nicht mehr verwendet. Die Operatoren set_sample_identifier_object_info und get_sample_identifier_object_info können dazu verwendet werden, die einzelnen Objekte mit einem Namen oder einer anderen Beschreibung zu kennzeichnen. Darüber hinaus können mit dem Operator get_sample_identifier_object_info weitere Informationen über die Anzahl der Objekte, die für die Vorbereitung bzw. das Training zur Verfügung stehen abgefragt werden. Mit den Operatoren set_sample_identifier_param und get_sample_identifier_param können Steuerparameter gesetzt und abgefragt werden.
Im Folgenden werden die wichtigsten Begriffe, die im Umfeld der samplebasierten Identifikation verwendet werden, beschrieben:
Ein Objekt, das mit der samplebasierten Identifikation identifiziert werden soll.
Der Index eines Objekts. Der Index ist eine eindeutige Kennzeichnung des Objekts, der im SampleIdentifier im Zuge des Hinzufügens von Daten für die Vorbereitung bzw. das Training gesetzt wird. Der Objektindex ist auch das wesentliche Ergebnis des Operators apply_sample_identifier. Mit dem Operator set_sample_identifier_object_info kann für jedes Objekt auch ein beschreibender Name gesetzt werden, der die Interpretation der Ergebnisse erleichtert.
Ein Sample oder eine Ansicht eines Objekts. Manchmal wird hierfür auch der Begriff „Samplebild´´ verwendet.
Dieser Begriff wird als Synonym für Objektsample verwendet, insbesondere dann, wenn der Schwerpunkt auf dem Bild liegt.
Der Index eines Objektsamples. Dieser Index wird für jedes Objekt getrennt vergeben. Er startet für jedes Objekt bei 0. Daher ist der Objektsampleindex nur zusammen mit dem entsprechenden Objektindex eindeutig.
Die Anpassung der internen Datenstruktur des Sample-Identifikators an die Merkmale eines Satzes von Objektsamples. Diese Satz sollte die bei der Anwendung der Identifikation zu erwartenden Objektsamples beispielhaft abdecken.
Ein Objekt, das dem Sample-Identifikator mit dem Operator add_sample_identifier_preparation_data hinzugefügt wurde.
Ein Objektsample eines Vorbereitungsobjekts. Die Vorbereitung des Sample-Identifikators wird typischerweise mit mehreren Samples für die Vorbereitung pro Vorbereitungsobjekt durchgeführt.
Die Menge aller Samples für die Vorbereitung.
Das Training des Sample-Identifikators. Bei diesem Schritt lernt der Sample-Identifikator die vorgegebenen Objekte zu unterscheiden.
Ein Objekt, das dem Sample-Identifikator mit dem Operator add_sample_identifier_training_data hinzugefügt wurde oder das aus der Wiederverwendung der Vorbereitungsdaten entstanden ist. Im Gegensatz zu Vorbereitungsobjekten müssen alle Trainingsobjekte mit einem eindeutigen Objektindex gekennzeichnet sein.
Ein Objektsample eines Trainingsobjekts. Das Training des Sample-Identifikators wird typischerweise mit mehreren Samples für das Training pro Trainingsobjekt durchgeführt.
Die Menge aller Samples für das Training.
Ein Bild, das ein Objekt enthält, welches mit dem Sample-Identifikator identifiziert werden soll.
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.
Parametername.
Defaultwert: []
Werteliste: 'add_color_info', 'add_texture_info', 'image_resize_method', 'image_resize_value'
Parameterwert.
Defaultwert: []
Werteliste: 0.25, 0.5, 0.75, 1.0, 2, 3, 4, 'false', 'image_area', 'none', 'scale_factor', 'subsampling_step', 'true'
Handle des Sample-Identifikators.
Sind die Parameterwerte korrekt, dann liefert create_sample_identifier den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
add_sample_identifier_preparation_data, set_sample_identifier_param
prepare_sample_identifier, add_sample_identifier_training_data, train_sample_identifier, apply_sample_identifier, get_sample_identifier_param, get_sample_identifier_object_info, remove_sample_identifier_preparation_data, remove_sample_identifier_training_data, write_sample_identifier, serialize_sample_identifier, deserialize_sample_identifier, clear_sample_identifier, set_sample_identifier_object_info
Matching
| Operatoren |