halcon实例实战第二版_【科普】机器视觉,分类器识别,图像处理,halcon分类器...

07d287c38fb5af3d6afde5cd3272f6c6.png

前言

一些机器人视觉的小技巧啊

分类是根据特定的特征,比如像素、颜色、形状等特征分成单独的一个类别,每个类别通过前期的训练学习来达到目的,得到一个分类器,当物体经过训练后,分类器通过比较物体的特征来进行识别物体。比如在OCR中,单独的把字符分割出来后,通过把字符训练得到一个分类器对象,字符经过训练后,使用这个分类器对象来进行识别。 在halcon中提供了不同的分类器,分类器有网络神经分类器(MLP),支持向量机(SVM),高斯混合模型(GMM),K-邻近分类器(K-NN),box classifier分类器 MLP(Multi-Layer Perceptron): 网络神经分类器有好的识别类以及比较快速的分类,但是,训练的时候稍微比SVM慢,如果是对于运行时间要求高,训练是离线的,那么MLP就是一个好的选择 SVM(Support Vector Machinves): SVM算法识别能力稍微弱于MLP,训练时间比MLP快,可以增量训练,只需要要在前期的训练样本中增加新的样本即可、 GMM(Gaussian Mixture Models): GMM分类器是有一系列特征参数控制,最好的支持特征参数是15个左右,识别的效果不如MLP和SVM。 KNN(K-Nearest Neighbor):有比价直观的参数,只需要较少的数据即可训练,训练速度也比较快。 缺点是识别相对较慢,识别结果没有SVM和MLP好。 在实际使用中,我倾向于使用MLP分类器,在halcon中使用create_class_mlp来进行创建分类器,其他的create_class_svm,create_class_gmm,create_class_knn 其他的,比如我们在使用OCR训练的时候,也是用了halcon的分器,create_ocr_class_mlp,create_ocr_class_svm,create_ocr_class_knn. 分类器使用 获取图片-->创建分类器-->训练分类器-->分类数据-->销毁分类器实例 4268603dec9b4d40a8137c786888965a.png 处理步骤 创建分类器 使用create_class_*系列算子进行创建分类器。 训练分类器 训练一个分类器分为2步,第一步添加对应的样本数据到分类器中,如果使用特征进行训练,对应使用的算子是add_sample_class_*系列算子,如果使用的是像素分类,比如颜色纹理等,使用的系列算子是add_samples_image_class_*。 第二部就是对分类器进行训练,使用的系列算子是train_class_* 分类器使用 如果是通过特征进行训练的分类器,在使用的时候使用classify_class_*系列算子进行识别当前特征所属类别。 如果是像素分类,比如根据颜色把图像分为不同的区域,使用,classify_image_class_*系列算子来进行。 销毁分类器 使用clear_class_*系列算子销毁对应的分类器。 *创建分类器 create_ocr_class_mlp (110, 110, 'constant', 'moments_central', ['circle','hexagon','polygon'], 10, 'normalization', 10, 42, OCRHandle) *训练分类器 FileNames := ['nuts_01','nuts_02','nuts_03','washers_01','washers_02','washers_03','retainers_01','retainers_02','retainers_03'] ClassNamesImage := ['hexagon','hexagon','hexagon','circle','circle','circle','polygon','polygon','polygon'] for J := 0 to |FileNames| - 1 by 1  read_image (Image, 'rings/' + FileNames[J])  dev_display (Image)  dev_set_colored (6)  segment (Image, Objects)  dev_display (Objects)  dev_set_color ('black')  count_obj (Objects, NumberObjects)  for k := 1 to NumberObjects by 1  select_obj (Objects, ObjectSelected, k)  *   * Write the samples to a train file  if (J == 0 and k == 1)  write_ocr_trainf (ObjectSelected, Image, ClassNamesImage[J], 'train_metal_parts_ocr.trf')  else  append_ocr_trainf (ObjectSelected, Image, ClassNamesImage[J], 'train_metal_parts_ocr.trf')  endif  endfor  stop () endfor *训练分类器 trainf_ocr_class_mlp (OCRHandle, 'train_metal_parts_ocr.trf', 200, 1, 0.01, Error1, ErrorLog1) *使用分类器 do_ocr_single_class_mlp (ObjectSelected, Image, OCRHandle, 1, Class, Confidence) 1952ec14136affc376ef73323f61853e.png 螺母 47afe54d2185ea65986669a748ce2179.png 圆分类 16ce793dc6568a799f296995f731bd1f.png 多边形分类

推荐阅读

(点击标题可跳转阅读)

最详细、最完整的相机标定讲解

深度学习+机器视觉=下一代检测

视觉检测系统最经典的结构你了解吗?

机器视觉技术的十大应用领域

工业相机和普通相机究竟有什么不同?

基于机器视觉和深度学习的智能缺陷检测

波士顿等移动机器人的视觉算法解析

2020年37个人工智能技术发展趋势

机器视觉的光源选型及打光方案分析

光学三维测量技术及应用

国内80%搞机器视觉的工程师,走的路子是错的!

视觉+机器人,如何实现连接器的自动装配?

机器视觉技术发展的五大趋势

搞懂机器视觉基本内容,这份PPT就够了

机器视觉:PC式视觉系统与嵌入式视觉系统区别  

基于HALCON的机器视觉开发,C++或C#如何选择? 

3D视觉技术在机器人抓取作业中的应用实例

基于机器视觉的粗糙度检测方案

机器视觉常用图像软件对比及分析

工业相机编程流程及SDK接口使用汇总

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

c3f58366e5c982dbf50ac63b74a8e94f.gif End c3f58366e5c982dbf50ac63b74a8e94f.gif

5d807807ebfde96f1dd246ad0c38b24c.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值