Samplebasiert
Liste der Operatoren ↓
Dieses Kapitel beschreibt Operatoren für die samplebasierte Identifikation.
Konzept der samplebasierten Identifikation
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. Verglichen mit den
Klassifikationsverfahren aus Kapitel Klassifikation, ist die
Vorbereitung und das Training für die samplebasierte Identifikation sehr
komfortabel, da hier kein komplexes Parametertuning nötig ist. 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.
- Anlegen und Vorbereiten eines Sample-Identifikators:
-
Zuerst muss ein Sample-Identifikator bereitgestellt werden. Dies erfolgt
durch das Anlegen und Vorbereiten mit den Operatoren
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, der mit write_sample_identifierwrite_sample_identifierWriteSampleIdentifierwrite_sample_identifierWriteSampleIdentifierWriteSampleIdentifier in eine Datei
geschrieben wurde, mit dem Operator read_sample_identifierread_sample_identifierReadSampleIdentifierread_sample_identifierReadSampleIdentifierReadSampleIdentifier 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.
- Trainieren des Sample-Identifikators:
-
Im Anschluss an die Vorbereitung muss der Sample-Identifikator mit Samples
der zu unterscheidenden Objekte trainiert werden. Dies erfolgt mit den
Operatoren
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_dataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingData gelöscht werden und es können
neue Samples mit dem Operator add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingData
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.
- Anwenden des Sample-Identifikators zum Identifizieren von Objekten:
-
Nun kann der trainierte Sample-Identifikator verwendet werden um Objekte zu
identifizieren. Das Identifizieren erfolgt mit dem Operator
- Freigeben des Handles für den Sample-Identifikator:
-
Wird der Sample-Identifikator nicht mehr gebraucht, erfolgt die Freigabe
seines Handles mit
Weitere Operatoren zur Administration und Kontrolle des Sample-Identifikators
Zusätzlich zu den oben genannten Operatoren können folgende weitere
Operatoren zur Administration des Sample-Identifikator verwendet werden. Mit
remove_sample_identifier_preparation_dataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationData und
remove_sample_identifier_training_dataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingData 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_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfo und
get_sample_identifier_object_infoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfo 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_infoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfo 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_paramset_sample_identifier_paramSetSampleIdentifierParamset_sample_identifier_paramSetSampleIdentifierParamSetSampleIdentifierParam und get_sample_identifier_paramget_sample_identifier_paramGetSampleIdentifierParamget_sample_identifier_paramGetSampleIdentifierParamGetSampleIdentifierParam
können Steuerparameter gesetzt und abgefragt werden.
Glossar
Im Folgenden werden die wichtigsten Begriffe, die im Umfeld der
samplebasierten Identifikation verwendet werden, beschrieben:
- Objekt
-
Ein Objekt, das mit der samplebasierten Identifikation
identifiziert werden soll.
- Objektindex
-
Der Index eines Objekts. Der Index ist eine eindeutige
Kennzeichnung des Objekts, der im SampleIdentifierSampleIdentifierSampleIdentifierSampleIdentifierSampleIdentifiersampleIdentifier 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_identifierapply_sample_identifierApplySampleIdentifierapply_sample_identifierApplySampleIdentifierApplySampleIdentifier. Mit dem Operator
set_sample_identifier_object_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfo kann für jedes Objekt auch ein
beschreibender Name gesetzt werden, der die Interpretation der Ergebnisse
erleichtert.
- Objektsample
-
Ein Sample oder eine Ansicht eines Objekts. Manchmal
wird hierfür auch der Begriff „Samplebild´´ verwendet.
- Samplebild
-
Dieser Begriff wird als Synonym für Objektsample
verwendet, insbesondere dann, wenn der Schwerpunkt auf dem Bild liegt.
- Objektsampleindex
-
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.
- Vorbereitung
-
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.
- Vorbereitungsobjekt
-
Ein Objekt, das dem Sample-Identifikator mit dem
Operator add_sample_identifier_preparation_dataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationData hinzugefügt wurde.
- Sample für die Vorbereitung
-
Ein Objektsample eines
Vorbereitungsobjekts. Die Vorbereitung des Sample-Identifikators wird
typischerweise mit mehreren Samples für die Vorbereitung pro
Vorbereitungsobjekt durchgeführt.
- Vorbereitungsdaten
-
Die Menge aller Samples für die Vorbereitung.
- Training
-
Das Training des Sample-Identifikators. Bei diesem Schritt
lernt der Sample-Identifikator die vorgegebenen Objekte zu unterscheiden.
- Trainingsobjekt
-
Ein Objekt, das dem Sample-Identifikator mit dem
Operator add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingData 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.
- Sample für das Training
-
Ein Objektsample eines Trainingsobjekts. Das
Training des Sample-Identifikators wird typischerweise mit mehreren Samples
für das Training pro Trainingsobjekt durchgeführt.
- Trainingsdaten
-
Die Menge aller Samples für das Training.
- Suchbild
-
Ein Bild, das ein Objekt enthält, welches mit dem
Sample-Identifikator identifiziert werden soll.
Liste der Operatoren
- add_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_data
- Hinzufügen von Samples für die Vorbereitung eines Sample-Identifikators.
- add_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataadd_sample_identifier_training_data
- Hinzufügen von Samples für das Training eines Sample-Identifikators.
- apply_sample_identifierApplySampleIdentifierApplySampleIdentifierapply_sample_identifierApplySampleIdentifierapply_sample_identifier
- Identifizieren von Objekten mit einem Sample-Identifikator.
- clear_sample_identifierClearSampleIdentifierClearSampleIdentifierclear_sample_identifierClearSampleIdentifierclear_sample_identifier
- Freigeben des Speichers eines Sample-Identifikators.
- create_sample_identifierCreateSampleIdentifierCreateSampleIdentifiercreate_sample_identifierCreateSampleIdentifiercreate_sample_identifier
- Anlegen eines neuen Sample-Identifikators.
- deserialize_sample_identifierDeserializeSampleIdentifierDeserializeSampleIdentifierdeserialize_sample_identifierDeserializeSampleIdentifierdeserialize_sample_identifier
- Deserialisieren eines Sample-Identifikators.
- get_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoget_sample_identifier_object_info
- Abfragen von Informationen über einen Sample-Identifikator.
- get_sample_identifier_paramGetSampleIdentifierParamGetSampleIdentifierParamget_sample_identifier_paramGetSampleIdentifierParamget_sample_identifier_param
- Abfragen bestimmter Parameter eines Sample-Identifikators.
- prepare_sample_identifierPrepareSampleIdentifierPrepareSampleIdentifierprepare_sample_identifierPrepareSampleIdentifierprepare_sample_identifier
- Anpassen der internen Datenstruktur eines Sample-Identifikators an die Art
der zu unterscheidenden Objekte.
- read_sample_identifierReadSampleIdentifierReadSampleIdentifierread_sample_identifierReadSampleIdentifierread_sample_identifier
- Einlesen eines Sample-Identifikators von Datei.
- remove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_data
- Löschen von Vorbereitungsdaten eines Sample-Identifikators.
- remove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_data
- Löschen von Trainingsdaten eines Sample-Identifikators.
- serialize_sample_identifierSerializeSampleIdentifierSerializeSampleIdentifierserialize_sample_identifierSerializeSampleIdentifierserialize_sample_identifier
- Serialisieren eines Sample-Identifikators.
- set_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoset_sample_identifier_object_info
- Setzen eines Namens oder einer Beschreibung für ein Objekt eines
Sample-Identifikators.
- set_sample_identifier_paramSetSampleIdentifierParamSetSampleIdentifierParamset_sample_identifier_paramSetSampleIdentifierParamset_sample_identifier_param
- Setzen bestimmter Parameter eines Sample-Identifikators.
- train_sample_identifierTrainSampleIdentifierTrainSampleIdentifiertrain_sample_identifierTrainSampleIdentifiertrain_sample_identifier
- Trainieren eines Sample-Identifikators.
- write_sample_identifierWriteSampleIdentifierWriteSampleIdentifierwrite_sample_identifierWriteSampleIdentifierwrite_sample_identifier
- Schreiben eines Sample-Identifikators in eine Datei.