透明玻璃珠进行自动快速计数
如何对毫不起眼的透明小玻璃珠进行自动计数,或许有人说使用机器视觉大师对这些
价值不大的小东西自动计数没有实际意义,有辱大师名号。是的,确实没有什么意义,除非
读者身边有价值比较大的产品如珠宝,珍珠,精密小零件等,这些产品在交易的时候不是论斤
卖的,而是论颗或粒卖的,不过,这些产品太小了,如果数量多的话,人工用肉眼来数,还真是
费神费眼。笔者本人没有什么贵重珠宝,所以使用透明小玻璃珠来说明如何使用模板识别算子
进行类似产品自动计数,希望对读者能起到抛砖引玉的作用。
下图是用圆形无底物品围在工作台上做测试的玻璃珠图。
从上图可以看出,玻璃珠是圆形的,翡翠绿,很像珠宝,紧挨在一起,乍看之下,
很多读者可能会不由自主地想到使用BLOB算子进行计数。然而,由于玻璃珠相互紧靠
在一起,使用BLOB算子在分离的时候,不是那么可靠,容易少计。笔者使用模板识别
算子可靠地对这些产品进行计数。下面将详细介绍具体的实现过程。
为了节省篇幅,笔者对机器视觉大师的一些基本操作不再介绍,直接进入相关的操作环节。
添加模板识别算子
假设机器视觉大师已经切换到”实时测量”模式。下面是建立模板识别算子进行玻璃珠计数
的操作过程。
- 点击菜单”控件” ->”定位类”->”模板查找”添加到视场,将算子拖动到适当位置。
- 双击该算子,进行参数设置和模板学习。显示参数设置窗口。

选择模板区形状为圆形,并且选择对称方式调整大小。关闭后,重新调整模板和搜索区
大小。如下图:

注意:将搜索区覆盖所有玻璃珠出现的区域。看到模板区没有,比实际玻璃珠图像要小。

- 在”识别”页,选择”绝对差”识别方法,最小分数设置为0.93以上。初始分数设置0.6左右。
最多实例数设置了100(假设,视场里面最多不超过100颗玻璃珠)。这些参数请根据实际视场
的图像进行合适设置。

编写脚本
点击菜单”模式”->”编辑脚本”, 弹出”编辑脚本”对话框。选择测量类型为“产品点数”。

上面的语句解释如下:
将视场sight1的模板识别算子pfind1的计数结果赋值给count变量。
虽然笔者在脚本里面仅使用了一个变量,实际上产品计数类任务支持3个系统变量:
count,want和diff,具体说明如下:
变量名
|
说明
|
类型
|
count
|
实际的计数
|
整数
|
want
|
目标数
|
整数
|
diff
|
差额
|
整数
|
检测运行
点击菜单”相机”->”测量运行”,进入检测状态。倒入任意数量的玻璃珠,然后点击”下一个”
按钮完成一次自动测量。

实际应用建议
本文描述的视场相机使用了130万分辨率彩色相机,背光,由于分辨率不是很高,所以视场
范围不是很大。相机分辨率高,计数的视场范围应该越大。需要强调的是,不同的产品进行
计数的时候,识别参数一定要根据具体的图像进行设置,否则可能引起计数结果错误
|