Halcon视觉检测——使用分类器分类

分类器简介

机器学习在Helcon中的一个重要应用就是用于图像分类任务。Halcon中常用的分类器有GMM(高斯混合模型)、Neural Nets(神经网络)、SVM(支持向量机)等。一般应付常见的分类问题,这些就足够了。

使用方法

一般使用过程:

  1. 创建分类器(create_class_…)
  2. 获取各个类别的特征向量
  3. 将各个类别训练样本的特征向量添加到分类器中(add_sample_class_…)
  4. 训练(train_class_…)
  5. 获取待分类图像的特征向量
  6. 通过分类器计算特征向量的类(classify_class_…)
  7. 清除分类器(clear_class_…)

当然,若希望在训练结束后保存训练模型,然后每次使用时通过读取训练模型来实现分类的话,则需要添加模型的保存(write_class_…)与读取(read_class_)。

应用示例

分类对象0为:
这里写图片描述
分类对象1为:
这里写图片描述

以MLP分类器为例:
图像和代码

read_image(Image1, 'Big/大帽正常2017-2-16_16_5_520.bmp')
Classes := ['Big','Small']
*获取特征向量
gen_features (Image1, FeatureVector0)
*创建一个多层感知器
create_class_mlp (|FeatureVector0|, 15, |Classes|, 'softmax', 'normalization', 10, 42, Handle)

*训练分类0
list_files ('Big', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles|-1 by 1
    read_image (Image, ImageFiles[Index])
    threshold (Image, region1, 1, 255)
    reduce_domain(Image, region1, ImageReduced1)
    crop_domain(ImageReduced1, ImagePart1)
    gen_features (ImagePart1, FeatureVector)
    *把一个训练样本添加到一个多层感知器的训练数据中
    add_sample_class_mlp (Handle, FeatureVector, 0)

endfor

*训练分类1
list_files ('Small', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
           read_image (Image, ImageFiles[Index])
           * 
           threshold(Image, Region, 1, 255)
           reduce_domain(Image, Region, ImageReduced)
           crop_domain(ImageReduced, ImagePart)
           gen_features (ImagePart, FeatureVector1)
           *把一个训练样本添加到一个多层感知器的训练数据中
           add_sample_class_mlp (Handle, FeatureVector1, 1)
endfor
*训练一个多层感知器
train_class_mlp (Handle, 200, 1, 0.0001, Error, ErrorLog)

*测试分类效果
confidence:=[]
list_files ('test', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
           read_image (Image, ImageFiles[Index])
           *
           threshold(Image, Region1, 1, 255)
           reduce_domain(Image, Region1, ImageReduced2)
           crop_domain(ImageReduced2, ImagePart2)
           gen_features (ImagePart2, FeatureVector2)
           *通过多层感知器计算一个特征向量的类
           classify_class_mlp (Handle, FeatureVector2, 2, FoundClassIDs, Confidence)
           confidence:=[confidence,Confidence]
           if (FoundClassIDs[0]==0)
               dev_display(Image)
               disp_message (3600, ImageFiles[Index], 'window', 0, 0, 'black', 'true')
               disp_message (3600, 'Result=大帽', 'window', 20, 0, 'black', 'true')
                  stop()    
           else
               dev_display(Image)
               disp_message (3600, ImageFiles[Index], 'window', 0, 0, 'black', 'true')
               disp_message (3600, 'Result=小帽', 'window', 20, 0, 'black', 'true')
                  stop()   
           endif
endfor
stop()
*清除多层感知器
clear_class_mlp (Handle)

其中函数gen_features(Image,FeatureVector)为:
即将图像的水平与竖直方向的灰度投影作为图像的特征向量。

FeatureVector := []
gray_projections(Image, Image, 'simple', HorProjection, VertProjection)
FeatureVector := [HorProjection,VertProjection]
return ()

分类效果如图:

这里写图片描述

常用特征
  • area_center_gray(Regions, Image: Area, Row, Column)计算一个灰度值图像的区域面积和重心。
  • cooc_feature_image计算共生矩阵并导出其灰度值特征。
  • cooc_feature_matrix从一个共生矩阵计算灰度值特征。
  • elliptic_axis_gray(Regions, Image,Ra, Rb, Phi)在一个灰度值图像中计算一个区域的方位和主轴。
  • entropy_gray(Regions, Image,Entropy, Anisotropy)确定一个图像的熵和各向异性。
  • fit_surface_first_order通过一个一阶表面(平面)计算灰度值力矩和近似值。
  • fuzzy_entropy确定区域的模糊熵。
  • fuzzy_perimeter计算一个区域的模糊周长。
  • gen_cooc_matrix (Regions, Image : Matrix : LdGray, Direction : ) 计算图像中区域的共生矩阵。
  • gray_histo计算灰度值分布。
  • gray_histo_abs(Regions, Image : Quantization:AbsoluteHisto)计算灰度值分布。
  • gray_projections计算水平和垂直灰度值投影。
  • histo_2dim计算两通道灰度值图像的直方图。
  • intensity(Image, Image, Mean, Deviation)计算灰度值的平均值和偏差。
  • min_max_gray计算区域内的最大和最小灰度值。
  • moments_gray_plane用平面计算灰度值矩和近似值。
  • plane_deviation计算灰度值与近似图像平面的偏差。
  • select_gray选择基于灰度值特征的区域。
  • shape_histo_all用极限值确定特征的一个直方图。
  • shape_histo_point(Region, Image: Feature, Row, Column : AbsoluteHisto, RelativeHisto)用极限值确定特征的一个直方图。
  • connect_and_holes(Regions : NumConnected, NumHoles)连接组件和孔的数量。
  • gray_features()计算一组区域的灰度值特征。
  • 11
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Halcon是一款功能强大的视觉软件,其中的视觉分类器是其重要的功能之一。视觉分类器是一种可以将不同类型的对象进行分类和识别的技术。 Halcon的视觉分类器具有以下特点: 1. 特征提取:Halcon可以自动从图像中提取出特征,这些特征可以用来区分不同的对象。特征提取是分类器的第一步,它将图像中的各种属性转化为可用于分类的数字特征。 2. 分类训练:Halcon可以使用已经标记好的样本数据进行分类训练,通过学习样本数据的特征和标签,分类器可以建立一个分类模型。这个模型可以用来对新的图像进行分类。 3. 分类器类型多样:Halcon提供了多种分类器类型,包括k最近邻分类器、支持向量机、决策树等。用户可以根据不同的需求选择合适的分类器类型。 4. 高效准确:Halcon的视觉分类器具有快速高效和准确的特点。它可以在短时间内对大量的图像数据进行分类和识别,达到较高的准确率。 5. 应用广泛:视觉分类器在各个领域都有广泛的应用,如工业自动化、医疗影像、安防监控等。Halcon的视觉分类器可以应用于各种不同的领域和场景。 总之,Halcon的视觉分类器是一种强大而灵活的工具,可以帮助用户实现对图像中不同对象进行自动分类和识别的功能。无论是进行产品质检,还是进行图像分析,Halcon视觉分类器都是一个可靠的选择。 ### 回答2: Halcon是一种强大的机器视觉软件,它提供了丰富的功能和工具,用于开发和实现视觉分类器。 视觉分类器是一种机器学习算法,用于自动识别和分类图像中的对象或特征。Halcon提供了多种视觉分类器的实现方法,包括基于统计学的方法、基于特征的方法和深度学习方法。 在Halcon中,我们可以通过学习和训练来创建视觉分类器。首先,我们需要准备一组标注好的图像样本,其中包含我们要识别和分类的对象或特征。然后,我们可以使用Halcon提供的分类器训练工具,对这些样本进行训练和学习。通过不断调整参数和优化算法,我们可以提高分类器的准确性和鲁棒性。 训练完成后,我们可以将分类器应用于新的图像数据中。Halcon提供了图像读取和处理的功能,可以将图像送入分类器进行分类分类器会根据之前学习到的知识,自动识别并分类图像中的对象或特征。分类结果可以用于目标定位、质量控制、工业检测等应用领域。 总之,Halcon视觉分类器是一种强大的机器视觉工具,可用于图像识别和分类。通过学习和训练,我们可以创建准确和可靠的分类器,以实现自动化和智能化的图像处理和分析。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值