前言
一些机器人视觉的小技巧啊
分类是根据特定的特征,比如像素、颜色、形状等特征分成单独的一个类别,每个类别通过前期的训练学习来达到目的,得到一个分类器,当物体经过训练后,分类器通过比较物体的特征来进行识别物体。比如在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. 分类器使用 获取图片-->创建分类器-->训练分类器-->分类数据-->销毁分类器实例 处理步骤 创建分类器 使用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) 螺母 圆分类 多边形分类推荐阅读
(点击标题可跳转阅读)
最详细、最完整的相机标定讲解
深度学习+机器视觉=下一代检测
视觉检测系统最经典的结构你了解吗?
机器视觉技术的十大应用领域
工业相机和普通相机究竟有什么不同?
基于机器视觉和深度学习的智能缺陷检测
波士顿等移动机器人的视觉算法解析
2020年37个人工智能技术发展趋势
机器视觉的光源选型及打光方案分析
光学三维测量技术及应用
国内80%搞机器视觉的工程师,走的路子是错的!
视觉+机器人,如何实现连接器的自动装配?
机器视觉技术发展的五大趋势
搞懂机器视觉基本内容,这份PPT就够了
机器视觉:PC式视觉系统与嵌入式视觉系统区别
基于HALCON的机器视觉开发,C++或C#如何选择?
3D视觉技术在机器人抓取作业中的应用实例
基于机器视觉的粗糙度检测方案
机器视觉常用图像软件对比及分析
工业相机编程流程及SDK接口使用汇总
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。
End