| Operatoren |
train_texture_inspection_model — Trainieren eines Texturinspektionsmodells.
train_texture_inspection_model( : : TextureInspectionModel : )
train_texture_inspection_model trainiert ein Texturinspektionsmodell mit allen Trainingsbildern, die dem Modell mit add_texture_inspection_model_image zugefügt wurden.
Der komplette Texturinspektionsprozess arbeitet mit Bildpyramiden. Die Tiefe der Pyramide wird durch den Parameter 'num_levels' (oder falls explizite Skalen gesetzt sind, von 'levels') bestimmt. Im ersten Trainingsschritt werden für jede Pyramidenstufe Texturmerkmale extrahiert und zum Set der Trainingsdaten zugefügt. Für jede Pyramidenstufe wird mit allen Trainingsdaten der jeweiligen Pyramidenstufe ein auf Gaussian Mixture Models (GMM) basierender Klassifikator bestimmt. In einem dritten Schritt werden die Trainingsdaten dann genutzt, um die Fehlerschwelle für jede Bildpyramidenstufe zu ermitteln. Im Folgenden werden die drei Schritte des Trainings im Detail beschrieben:
Die Merkmalsextraktion extrahiert für jedes Pixel in den Trainingsbildern ein Texturmerkmal. Die Texturmerkmale werden entsprechend der Einstellungen der 'patch_*' Parameter berechnet, welche mit set_texture_inspection_model_param geändert werden können. Jedes Texturmerkmal wird dann zu den Trainingsdaten des GMMs zugefügt.
Während des Trainings des GMMs werden aus den Trainingsdaten die optimalen 'gmm_*' Parameter abgeleitet. Die Dimensionen der einzelnen Texturmerkmale werden durch die gewählte Größe der Patches bestimmt (siehe set_texture_inspection_model_param). Für große Patchgrößen kann es extrem schwierig sein, eine gute Approximation an die optimalen GMM Parameter zu bekommen. Außerdem erhöhen sich die Laufzeit und der benötigte Speicher signifikant. Daher wird empfohlen, die Patchgröße nur mit großer Vorsicht zu ändern. Weitere Informationen zu GMM Klassifikatoren sind bei der Beschreibung des Operators create_class_gmm zu finden.
Die Berechnung der Fehlerschwelle (Novelty Threshold) ist nötig, um zwischen fehlerhafter und fehlerfreier Textur unterscheiden zu können. Zunächst wird mit den in Schritt 2 bestimmten GMMs der Neuheitswert (Novelty Score) für jedes im Training genutzte Texturmerkmal berechnet. Dann werden basierend auf den sich ergebenden Neuheitswerten die Fehlerschwellen für jede Bildpyramidenstufe bestimmt. Die automatische Bestimmung der Fehlerschwellen kann durch den Parameter 'sensitivity' beeinflusst werden, der mit set_texture_inspection_model_param gesetzt werden kann.
Nachdem das Training des Modells erfolgreich durchgeführt wurde, können Bilder mit apply_texture_inspection_model klassifiziert werden. Hier wird für jedes Pixel ein Neuheitswert festgesetzt und mit der Fehlerschwelle abgeglichen, die im dritten Schritt des Trainings bestimmt wurde. Für optimale Ergebnisse können die Fehlerschwellen der einzelnen Bildpyramidenstufen mit set_texture_inspection_model_param angepasst werden.
Im Allgemeinen hat das Verändern aller Parameter, bis auf 'gen_result_handle' und 'sensitivity', zur Folge, dass das Texturinspektionsmodell neu trainiert werden muss. Je nachdem an welcher Stelle im Algorithmus ein neu eingestellter Parameter eingreift, wird intern entweder das gesamte Training oder nur der benötigte Teil davon ausgeführt. Aus diesem Grund kann es zu deutlichen Geschwindigkeitsunterschieden bei den Aufrufen von train_texture_inspection_model kommen. Welche Teile des Trainings beim Umsetzen eines bestimmten Parameters betroffen sind, wird in set_texture_inspection_model_param beschrieben.
Das Konzept der Texturinspektion ist bei der Einleitung zum Kapitel Inspektion / Texturinspektion beschrieben.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des Texturinspektionsmodells.
* Create texture inspection model
create_texture_inspection_model ('basic', TextureInspectionModel)
* Make this short example fast:
set_texture_inspection_model_param (TextureInspectionModel, \
'gmm_em_max_iter', 1)
* Read and add training images
read_image (TrainImage, 'carpet/carpet_01')
add_texture_inspection_model_image (TrainImage, TextureInspectionModel, \
Indices)
* Train the model
train_texture_inspection_model (TextureInspectionModel)
* Read and apply a test image
read_image (TestImage, 'carpet/carpet_02')
apply_texture_inspection_model (TestImage, DefectCandidates, \
TextureInspectionModel, \
TextureInspectionResultID)
* Clean up
clear_texture_inspection_model (TextureInspectionModel)
Der Operator train_texture_inspection_model gibt 2 (H_MSG_TRUE) zurück, sofern alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung ausgelöst.
add_texture_inspection_model_image, set_texture_inspection_model_param
apply_texture_inspection_model, clear_texture_inspection_model, remove_texture_inspection_model_image, write_texture_inspection_model, serialize_texture_inspection_model
X. Xianghua, M. Mirmehdi: „TEXEMS: Texture Exemplars for Defect Detection
on Random Textured Surfaces“; IEEE Transactions on Pattern Analysis and
Machine Intelligence, Vol. 29, No. 8; August 2007.
T. Boettger, M. Ulrich: „Real-time Texture Detection on Textured
Surfaces with Compressed Sensing“; Pattern Recognition and Image
Analysis, Vol. 26, No. 1, pp. 88-94; January 2016.
Matching
| Operatoren |