HALCON Reference Manual 10.0.2
Table of Contents / Classification / Gaussian Mixture Models ClassesClassesClasses | | | Operators

evaluate_class_gmmT_evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm (Operator)

Name

evaluate_class_gmmT_evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm — Evaluate a feature vector by a Gaussian Mixture Model.

Signature

evaluate_class_gmm( : : GMMHandle, Features : ClassProb, Density, KSigmaProb)

Herror T_evaluate_class_gmm(const Htuple GMMHandle, const Htuple Features, Htuple* ClassProb, Htuple* Density, Htuple* KSigmaProb)

Herror evaluate_class_gmm(const HTuple& GMMHandle, const HTuple& Features, HTuple* ClassProb, HTuple* Density, HTuple* KSigmaProb)

HTuple HClassGmm::EvaluateClassGmm(const HTuple& Features, HTuple* Density, HTuple* KSigmaProb) const

void HOperatorSetX.EvaluateClassGmm(
[in] VARIANT GMMHandle, [in] VARIANT Features, [out] VARIANT* ClassProb, [out] VARIANT* Density, [out] VARIANT* KSigmaProb)

VARIANT HClassGmmX.EvaluateClassGmm(
[in] VARIANT Features, [out] double* Density, [out] double* KSigmaProb)

static void HOperatorSet.EvaluateClassGmm(HTuple GMMHandle, HTuple features, out HTuple classProb, out HTuple density, out HTuple KSigmaProb)

HTuple HClassGmm.EvaluateClassGmm(HTuple features, out double density, out double KSigmaProb)

Description

evaluate_class_gmmevaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm computes three different probability values for a feature vector FeaturesFeaturesFeaturesFeaturesfeatures with the Gaussian Mixture Model (GMM) GMMHandleGMMHandleGMMHandleGMMHandleGMMHandle.

The a-posteriori probablity of class i for the sample FeaturesFeaturesFeaturesFeaturesfeatures is computed as

          n_comp
           ----
           \
p(i|x) =   /      P(j) p(x|j)
           ----
           j=1

and returned for each class in ClassProbClassProbClassProbClassProbclassProb. The formulas for the calculation of the center density function p(x|j) are described with create_class_gmmcreate_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmm.

The probablity density of the feature vector is computed as a sum of the posterior class probabilities

       n_classes
         ----
         \
p(x) =   /      Pr(i) p(i|x)
         ----
         i=1

and is returned in DensityDensityDensityDensitydensity. Here, Pr(i) are the prior classes probabilities as computed by train_class_gmmtrain_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmm. DensityDensityDensityDensitydensity can be used for novelty detection, i.e., to reject feature vectors that do not belong to any of the trained classes. However, since DensityDensityDensityDensitydensity depends on the scaling of the feature vectors and since DensityDensityDensityDensitydensity is a probability density, and consequently does not need to lie between 0 and 1, the novelty detection can typically be performed more easily with KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb (see below).

A k-sigma error ellipsoid is defined as a locus of points for which

( x - m )^T  C^(-1) ( x - m )  = k^2

In the one dimensional case this is the interval [mu-k*sigma, mu+k*sigma]. For any 1D Gaussian distribution, it is true that approximately 65% of the occurrences of the random variable are within this range for k=1, approximately 95% for k=2, approximately 99% for k=3, etc. Hence, the probability that a Gaussian distribution will generate a random variable outside this range is approximately 35%, 5%, and 1%, respectively. This probability is called k-sigma probability and is denoted by P[k]. P[k] can be computed numerically for univariate as well as for multivariate Gaussian distributions, where it should be noted that for the same values of k, P^(N)[k] > P^(N+1)[k] (here N and (N+1) denote dimensions). For Gaussian mixture models the k-sigma probability is computed as:

           n_comp
            ----
            \
P_gmm[x] =  /    P(j)P_j[k_j],
            ----
            j=1

where  k_j^2 = ( x - m_j )^T  C_j^(-1) ( x - m_j )

They then are weighted with the class priors, normalized, and returned for each class in KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb, such that

                  Pr(i)
KSigmaProb[i]  = ------ * P_gmm[x]
                 Pr_max

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb can be used for novelty detection. Typically, feature vectors having values below 0.0001 should be rejected. The parameter RejectionThresholdRejectionThresholdRejectionThresholdRejectionThresholdrejectionThreshold in classify_image_class_gmmclassify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmm is based on the KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb values of the features.

Before calling evaluate_class_gmmevaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm, the GMM must be trained with train_class_gmmtrain_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmm.

The position of the maximum value of ClassProbClassProbClassProbClassProbclassProb is usally interpreted as the class of the feature vector and the corresponding value as the probability of the class. In this case, classify_class_gmmclassify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmm should be used instead of evaluate_class_gmmevaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm, because classify_class_gmmclassify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmm directly returns the class and corresponding probability.

Parallelization

Parameters

GMMHandleGMMHandleGMMHandleGMMHandleGMMHandle (input_control)  class_gmm HClassGmm, HTupleHClassGmm, HTupleHClassGmmX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong)

GMM handle.

FeaturesFeaturesFeaturesFeaturesfeatures (input_control)  real-array HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Feature vector.

ClassProbClassProbClassProbClassProbclassProb (output_control)  real-array HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

A-posteriori probability of the classes.

DensityDensityDensityDensitydensity (output_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Probability density of the feature vector.

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb (output_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Normalized k-sigma-probability for the feature vector.

Result

If the parameters are valid, the operator evaluate_class_gmmevaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm returns the value 2 (H_MSG_TRUE). If necessary an exception is raised.

Possible Predecessors

train_class_gmmtrain_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmm, read_class_gmmread_class_gmmread_class_gmmReadClassGmmReadClassGmm

Alternatives

classify_class_gmmclassify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmm

See also

create_class_gmmcreate_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmm

References

Christopher M. Bishop: “Neural Networks for Pattern Recognition”; Oxford University Press, Oxford; 1995.
Mario A.T. Figueiredo: “Unsupervised Learning of Finite Mixture Models”; IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 24, No. 3; March 2002.

Module

Foundation


Table of Contents / Classification / Gaussian Mixture Models ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH