强大的Halcon的分类器有三种MLP、SVM、GMM,在这里为大家详细介绍GMM,原理的东西自己百度吧,这里主要讲GMM库怎么用,希望对大家有用
creat_class_gmm();
含义:创建高斯混合模型;
输入参数:
NumDim:几个特征;
NumClasses:样本分类个数;
NumCenters:类中心的个数;
CovarType:协方差矩阵('Spherical','diag','full')
Preprocessing:预处理是否使用,及特征向量转换类型;
NumComponents:预处理参数,转换特征数;
RandSend:随机种子,初始化GMM;
输出参数:
GMMHandle:高斯混合模型
add_sample_class_gmm()
含义:增加训练样本特征,到GMM训练数据中
输入参数:
GMMHandle:高斯混合模型
Features:训练样本的特征数值
ClassID:训练样本所属的类;
Randomize:高斯噪声标准差;
注:增加Randomize目的主要为了防止在训练的过程整数特征向量中出现类中心数过多的异常现象,对数据做扰动,经验值推荐,halcon推荐1.5-2之间满足大部分情况。
接下来可以训练样本了,如果训练后发现中心很大的误差,可以改变Randseed。
train_class_gmm()
含义:训练高斯混合模型
输入参数:
GMMHandle:高斯混合模型
MixIter: 期望最大值算法中迭代最大数
Threshold:期望误差阈值,超过此值,计算取消。
ClassPriors:类的先验概率类型('training','uniform')'uniform'表示使用相同的权重,1/NumClasses;'training'表示类发生的概率是依据样本中的概率推断。
Regularize:调整值,为了防止计算中出现奇异协方差矩阵。增加到协方差矩阵的对角线上的一个很小的值
输出参数:
Centers:每个类的中心个数
Iter:每个类的迭代次数
classify_class_gmm()
含义:使用训练好的模型对特征进行分类
输入参数:
GMMHandle:高斯混合模型
Features:将要划分所属类的特征值数组
输出参数:
Num:期望最佳个数
ClassID:特征所属类ID
ClassProb:输出特征所属类的概率,越接近1,分类越精确
Density:特征所属所有类的概率总和
KsigmaProb:归一化概率,可以判断新特征不属于现有的类,有点像sigma,远离中心值会很小
evaluate_class_gmm()
含义:预估一个特征
输入参数:
GMMHandle:高斯混合模型
Features:预估的特征
输出参数:
ClassProb:特征对各类的概率
Density:特征所属所有类的概率总和
KsigmaProb:归一化概率,可以判断新特征不属于现有的类,有点像sigma,远离中心值会很小,异常检测:低于0.0001就拒绝。
add_simple_image_class_gmm()
含义:增加训练样本(图片区),放入GMM 进行训练数据
输入参数:
Image:训练的图像(多通道)
ClassRegions:图像中用于训练的类区域
GMMHandle:高斯混合模型
Randomize:高斯噪声标准差
classify_image_class_gmm()
含义:使用GMM分类一个图像
输入参数:
Image:训练的图像(多通道)
GMMHandle:GMM模型
RejectionThreshold:分类拒绝阈值,低于此值时,如果图像所有的像素概率低于此值将不会分类任何类。
输出参数:
ClassRegions:分类的各个区域
read_class_gmm()
含义:文件中读取GMM模型
write_class_gmm()
含义:保存GMM模型
clear_class_gmm()
含义:清除GMM模型,释放内存
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

