create_class_lut_gmm
— Erzeugen einer Look-Up-Table anhand eines Gaussian Mixture Models zur
Klassifizierung von Byte-Bildern.
create_class_lut_gmm( : : GMMHandle, GenParamName, GenParamValue : ClassLUTHandle)
create_class_lut_gmm
erzeugt eine Look-Up Table (LUT)
ClassLUTHandle
anhand eines trainierten Gaussian Mixture Models
(GMM) GMMHandle
zur Klassifizierung von mehrkanaligen
Byte-Bildern. Mit diesem GMM-basierten LUT Klassifikator kann der Operator
classify_image_class_gmm
, der für die spätere Klassifikation
benötigt wird, durch den Operator classify_image_class_lut
ersetzt
werden. Die Klassifikation wird dadurch deutlich beschleunigt, weil die
entsprechende Klasse nicht in jedem Bildpunkt extra berechnet werden muss,
da alle möglichen Antworten des GMM in der LUT gespeichert sind. Für die
Erzeugung der LUT sind die im zuvor aufgerufenen Operator
create_class_gmm
definierten Parameter NumDim
,
Preprocessing
und NumComponents
von Bedeutung.
In NumDim
ist festgelegt, wie viele Kanäle die zu klassifizierenden
Bilder haben dürfen. Über das Preprocessing
(siehe
create_class_gmm
) kann diese Anzahl auf NumComponents
transformiert werden. NumComponents
beschreibt schließlich die
Größe des Merkmalsvektors, der vom Klassifikator classify_class_gmm
intern verarbeitet wird. Aufgrund von Performance und Speicherverwaltung ist
die LUT auf maximal 3 Dimensionen beschränkt. Da sie den Operator
classify_class_gmm
ersetzt, muss
NumComponents
<= 3 gelten.
Findet keine Transformation mit Reduktion in den Bildkanälen statt
(NumDim
= NumComponents
) werden beim Erzeugen der LUT
alle möglichen Pixelwerte, die in einem Byte-Bild vorkommen können, mit
classify_class_gmm
klassifiziert und die resultierenden Klassen
in der LUT gespeichert. Findet eine Transformation mit Reduktion der
Bildkanäle statt (NumDim
> NumComponents
) werden die
Vorverarbeitungsparameter des GMM in einer seperaten Struktur der LUT
gespeichert. Beim Erzeugen der LUT werden alle transformierten Pixelwerte
mit classify_class_gmm
klassifiziert und die resultierenden Klassen
in der LUT gespeichert. Aufgrund der diskreten Struktur der LUT kann es
dabei zu einem Genauigkeitsverlust gegenüber der Klassifizierung mit
classify_image_class_gmm
kommen.
Über die Parameter 'bit_depth' und 'class_selection'
kann die Klassifizierungsgenauigkeit, der Speichbedarf und die
Laufzeit zur Erzeugung der LUT angepasst werden.
Die folgenden Parameter des GMM-basierten LUT Klassifikators können mit
GenParamName
und GenParamValue
gesetzt werden:
Anzahl der verwendeten Bits der Bildpixel. 'bit_depth' steuert
den Speicherbedarf der LUT und ist durch die Bittiefe des Bildes beschränkt
('bit_depth' <= 8). Ist die Bittiefe der LUT
kleiner ('bit_depth' < 8), werden die Klassen von
mehreren Pixelkombinationen auf den selben Eintrag der LUT abgebildet,
was die Klassifizierungsgenauigkeit verringern kann. Einer dieser Cluster
enthält
Pixelkombinationen,
wobei NumComponents
die in create_class_gmm
spezifizierte
Dimension der LUT beschreibt. Für 'bit_depth' = 7,
NumComponents
= 3 werden beispielsweise die Klassen
von 8 Pixelkombinationen auf den selben Eintrag der LUT
abgebildet. Die LUT benötigt maximal
Bytes vom Speicher.
Für NumComponents
= 3,
'bit_depth' = 8 und NumClasses
< 16
(angegeben in create_class_gmm
) werden beispielsweise durch eine
interne Speicheroptimierung nur 8 MB Speicher für die LUT benötigt. Gilt
NumClasses
= 1, benötigt die LUT bei voller Bittiefe
nur 2 MB Speicher.
Die Laufzeit der Klassifizierung in classify_image_class_lut
wird minimal, falls die LUT in den Cache passt.
Defaultwert ist 8,
typische Werte sind [6,7,8].
Beschränkungen: 'bit_depth' >= 1,
'bit_depth' <= 8.
Methode zur Klassenauswahl für die LUT. Kann angepasst werden um die
spätere Klassifizierungsgenauigkeit und die Laufzeit zur Erzeugung der LUT
zu steuern. Der Wert für 'class_selection' wird ignoriert, falls
die Bittiefe der LUT maximal ist, also 'bit_depth' = 8
gilt. Ist die Bittiefe der LUT kleiner
('bit_depth' < 8), werden die Klassen von
mehreren Pixelkombinationen auf den selben Eintrag der LUT abgebildet.
Einer dieser Cluster enthält
Pixelkombinationen,
wobei NumComponents
die in create_class_gmm
spezifizierte
Dimension der LUT beschreibt. Gilt
'class_selection' = 'best' , wird die Klasse
gespeichert, die am häufigsten im Cluster vorkommt.
Für 'class_selection' = 'fast' wird nur der Pixel im
Cluster klassifiziert, der den kleinsten Wert (komponentenweise) hat,
was jedoch die Genauigkeit bei der späteren Klassifizierung über die LUT
verringern kann. Allerdings lässt sich dadurch die Laufzeit zur Erzeugung
der LUT reduzieren. Sie verhält sich proportional zum maximal benötigten
Speicherplatz der LUT, der mit
definiert ist.
Defaultwert ist 'fast' ,
mögliche Werte sind ['fast' , 'best' ].
Schwellwert zur Zurückweisung unsicher klassifizierter Punkte des GMM.
Der Parameter stellt einen Schwellwert auf dem von der Klassifikation
zurückgelieferten K-Sigma-Wahrscheinlichkeitsmaß dar
(siehe classify_class_gmm
und evaluate_class_gmm
).
Alle Pixel mit einer Wahrscheinlichkeit unterhalb von
'rejection_threshold' werden keiner Klasse zugeordnet.
Defaultwert ist 0.0001.
Beschränkungen: 'rejection_threshold' >= 0,
'rejection_threshold' <= 1.
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.
GMMHandle
(input_control) class_gmm →
(handle)
Handle des GMM.
GenParamName
(input_control) attribute.name-array →
(string)
Namen der generischen Parameter, die für die Erzeugung des LUT Klassifikators angepasst werden können.
Defaultwert: []
Wertevorschläge: 'bit_depth' , 'class_selection' , 'rejection_threshold'
GenParamValue
(input_control) attribute.value-array →
(string / integer / real)
Werte der generischen Parameter, die für die Erzeugung des LUT Klassifikators angepasst werden können.
Defaultwert: []
Wertevorschläge: 8, 7, 6, 'fast' , 'best'
ClassLUTHandle
(output_control) class_lut →
(handle)
Handle des LUT Klassifikators.
Sind die Parameterwerte korrekt, dann liefert
create_class_lut_gmm
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
train_class_gmm
,
read_class_gmm
create_class_lut_knn
,
create_class_lut_mlp
,
create_class_lut_svm
classify_image_class_lut
,
clear_class_lut
Foundation