《zw版·Halcon-delphi系列原创教程》 酸奶自动分类脚本(机器学习、人工智能)
《zw版·Halcon-delphi系列原创教程》酸奶自动分类脚本(机器学习、人工智能)
Halcon强大的图像处理能力,令人往往会忽视其内核,是更加彪悍的机器学习、人工智能。
分类,聚类分析,是机器学习、人工智能的核心算法之一,也是个典型的应用。
Halcon内置的聚类分析、机器学习模块,就有:knn邻近算法、向量机SVM、GMM高斯混合模型(Gaussian Mixture Model,或者混合高斯模型,也可以简写为MOG(Mixture of Gaussian)、MLP(多层神经网络)等等。
相关模块,基本上都是汇编级的高度优化,直接调用就可以。
目前国内、海外机器学习、人工智能方面的学者,没有几位重视这块。
国外,可能是版权问题,毕竟,Halcon是售价高达数万欧元(不是人民币)的商业软件,而且主要用于自控、机器视觉等工业领域,而不是大学。
国内,可能是对于Halcon的了解不够,halcon,虽然在自控领域一家独大(70%份额),本身非常低调,很少在行业外宣传自己,也许是国人的逆向工程、D版,把德国人,也吓坏了。
其实,图像处理的核心,图像识别、分类,都离不开机器学习、人工智能
大家看看opencv的发展路线就可以清楚看到,从cv1.0的图像,到cv2.0、2.4的机器学习,以及目前cv3.0的GPU、cuda人工智能模块,AI在其中所占据的份额越来越大。
Halcon因为面向一线生产线,所以很多机器学习、人工智能,都是黑箱式的,无需编程,直接调用,例如内置的ocr模块,可以识别99%的标准工业字符:超市、海关、流水线、零配件
不过,Halcon也提供了大量的机器学习模块,毕竟各种应用场合复杂,许多库,必须进行定制。
Halcon自带demo脚本:matching_multi_channel_yogurl.hdev
是一个简单的机器学习、人工智能分类应用,也是个典型的应用场景
效果还是蛮好的,大家可以看到,图2、图4,图像的角度不同,有旋转,Halcon能够轻轻松松识别。
这个脚本,AI方面不算复杂,建模就是先拍摄几张产品的照片,直接匹配。
通常,Halcon建模,需要进行200次(默认参数)迭代。
选这个脚本,其中一个原因,是因为前几天,有人在论坛询问,如何对企业生产线的产品(零食好像?)进行自动分类。
脚本80多行,很简单。
* This example demonstrates shape based matching
* with multi channel images
*
* Init display
dev_update_off ()
Mode := 'multi channel'
ModelColor := 'green'
CircleColor := 'white'
Names := ['Pear Apple Hazelnut','Cherry Currant','Strawberry']
read_image (Image, 'color/yogurt_model_01')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (, , Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, , 'mono', 'true', 'false')
*
* Part : create shape models
ModelIDs := []
for Index := to by
read_image (Image, 'color/yogurt_model_' + Index$'')
dev_display (Image)
*
* Create ROI automatically
access_channel (Image, Channel1, )
fast_threshold (Channel1, Region, , , )
fill_up (Region, RegionFillUp)
opening_circle (RegionFillUp, RegionOpening, 170.5)
gen_contour_region_xld (RegionOpening, Contours, 'border')
fit_circle_contour_xld (Contours, 'geotukey', -, , , , , Row, Column, Radius, StartPhi, EndPhi, PointOrder)
gen_circle (Circle, Row, Column, Radius / )
reduce_domain (Image, Circle, ImageReduced)
*
* Create model
create_shape_model (ImageReduced, , rad(), rad(), 'auto', 'auto', 'ignore_color_polarity', [,,], , ModelID)
ModelIDs := [ModelIDs,ModelID]
*
* Display model
dev_set_color (CircleColor)
dev_set_draw ('margin')
dev_set_line_width ()
dev_display (Circle)
get_shape_model_contours (Model1Contours, ModelID, )
dev_set_color (ModelColor)
dev_set_line_width ()
dev_display_shape_matching_results (ModelIDs, ModelColor, Row, Column, 0.0, , , ModelID)
disp_message (WindowHandle, 'Create shape model ' + Names[Index - ], 'window', , , 'black', 'true')
disp_message (WindowHandle, 'Press \'Run\' to continue', 'window', , , 'black', 'true')
stop ()
endfor
* Main loop: Find yogurt
for Index := to by
read_image (Image, 'color/yogurt_' + Index$'')
* Preprocessing: Reduce search domain to speed up matching
access_channel (Image, Channel1, )
fast_threshold (Channel1, Region, , , )
fill_up (Region, RegionFillUp)
erosion_rectangle1 (RegionFillUp, RegionErosion, , )
reduce_domain (Image, RegionErosion, ImageReduced)
* Find yogurt
find_shape_models (ImageReduced, ModelIDs, rad(), rad(), 0.80, , 0.5, 'least_squares', , 0.95, Row, Column, Angle, Score, Model)
*
* Display results
dev_display (Image)
gen_circle (Circle, Row, Column, Radius / )
dev_set_color (CircleColor)
dev_set_line_width ()
dev_display (Circle)
get_shape_model_contours (ModelContours, Model, )
dev_set_color (ModelColor)
dev_set_line_width ()
dev_display_shape_matching_results (ModelIDs, ModelColor, Row, Column, Angle, , , Model)
disp_message (WindowHandle, Names[find(ModelIDs,Model)] + ' found', 'window', , , 'black', 'true')
disp_message (WindowHandle, 'Score ' + Score, 'window', , , 'black', 'true')
if (Index < )
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
*
* Cleanup memory
clear_shape_model (ModelIDs[])
clear_shape_model (ModelIDs[])
clear_shape_model (ModelIDs[])
【《zw版·Halcon-delphi系列原创教程》,网址,cnblogs.com/ziwang/】
《zw版·Halcon-delphi系列原创教程》 酸奶自动分类脚本(机器学习、人工智能)的更多相关文章
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- 【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数
[<zw版·Halcon与delphi系列原创教程>Halcon图层与常用绘图函数 Halcon的绘图函数,与传统编程vb.c.delphi语言完全不同, 传统编程语言,甚至cad ...
- 《zw版Halcon与delphi系列原创教程》发布说明
<zw版Halcon与delphi系列原创教程>发布说明 zw转载的<台湾nvp系列halcon-delphi教程>,虽然很多,不过基本上都是从cnc.数控角度的demo.. ...
- 《zw版·delphi与Halcon系列原创教程》THOperatorSetX版hello,zw
<zw版·delphi与Halcon系列原创教程>THOperatorSetX版hello,zw 下面介绍v3版的hello,zw. Halcon两大核心控件,THImagex.THOpe ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表
<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两 ...
- 《zw版·ddelphi与halcon系列原创教程》Halcon的短板与delphi
[<zw版·delphi与Halcon系列原创教程>Halcon的短板与delphi 看过<delphi与Halcon系列>blog的网友都知道,笔者对Halcon一直是非常推 ...
- 《zw版·delphi与halcon系列原创教程》hello,zw
<zw版·delphi与halcon系列原创教程>hello,zw 按惯例,第一个程序是‘hello’ 毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版.Halco ...
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
随机推荐
- ckedit 文本编辑器
Ckeditor是一个功能非常强大的富文本编辑器,博客园有使用此编辑器,其功能完全可以与MS的Word媲美. 用起来也非常方便.下面是本人总结的安装步骤: 第一步,从http://ckeditor.c ...
- Objective-C的新特性
Objective-C的新特性 苹果在今年的 WWDC2012 大会上介绍了大量 Objective-C 的新特性,能够帮助 iOS 程序员更加高效地编写代码.在不久前更新的 Xcode4.4 版本中 ...
- 关于 微软必应词典客户端(pc) 的案例分析
第一部分 调研,评测 ●评测 bug one 在词典界面中搜完单词后,将鼠标移到英文例句上的单词时,会显示对应的中文翻译,而当移到短语时则不对应中文翻译. bug two 用orc强力取词,查询如上图 ...
- Latest node.js & npm installation on Ubuntu 12.04
转自:https://rtcamp.com/tutorials/nodejs/node-js-npm-install-ubuntu/ Compiling is way to go for many b ...
- MRP运算生成采购单时间的逻辑
由MRP运算产生的采购单日期,由生产单指定的安排计划日期.公司设置里的采购提前期和隐藏的供应商供货提前期三个字段共同决定. 可以很容易的在系统中找到,供应商供货提前期,需要在产品视图中将字段selle ...
- Js中找任意对象的原型方法及改造原型
Java中有运行时类型识别,js可以很方便的模仿这个特性,因为所有js对象都有一个属性constructor(构造器),表示这个对象的构造方法,原型与构造方法同名,所以可以通过这儿知道任意对象的原型名 ...
- c#语句 类
知识点: 1.string类 2.Math类 3.DateTime 获取时间 for穷举 1.羽毛球拍15元,球3元,水2元.现有200元,每种至少买一个,共有多少种可能.
- webapp 公共样式
html{ font-size: 62.5%;}@media only screen and (min-width: 481px) { html { font-size:94%!important } ...
- 使用Font Awesome替换你的网站图标
http://fortawesome.github.io/Font-Awesome/whats-new/ 使用Font Awesome替换你的网站图标 ******************IE7BUG ...
- SQL Server 数据库新建用户
1.在[安全性]中的[登录名]右键创建登陆用户 2. 输入相关信息 3. 然后去相应的数据库下[安全性]中右键添加用户 4.选择刚刚创建的用户名 5. 选择[默认架构]为 owner 6. 对[拥有的 ...