机器视觉实施 标签条码识别

  • Post author:
  • Post category:其他


最近又完成了一个机器识别调试项目,是关于标签条码识别的,看着简单,实则很多细节问题,解决这些问题事后复盘分析,希望能够分享一点经验给大家。


一:客户需求

1:标签读码(分别读取一维码和二维码)

2:贴标位置检测:必须在规定的框内,如下图红色指示框所示

3:标签损坏(比较严重的),边角破损,表面污染


二:设计方案

一开始想着项目太简单了,上面用一个光源照射一下,标签很白,上面读码so easy。结果真正到装机调试后发现问题了。

1:用了一个150mm的白色环形光源,光照向下,问题来了,电阻圆盘是360度随机过来的,并且圆盘表面不平,是会上翘的,所以当转到特定角度时候,直接反光,条码无法分辨

开始解决问题:

(1):尝试用相机倾斜:当出现反光的那个角度,如果相机倾斜这看是完全能消除反光,多次尝试,这个方案无法实现,360随机角度,相机倾斜没法保证360度无死角

(2):调整光源上下高度:调低光源工作距离,发现效果越差,光源距离产品越近,反光越厉害,所以只能越高越好,但是当初设计支架时候光源只能和镜头下表明平齐,所以光源也无法调整到合适位置,但是调整过程中发现了突破口

使用光源只能照射局部,到时光照区域不均匀,但是如果模拟自然光环境呢?应该可以解决问题

(3):开始动手,先把环形光源关闭,然后再相机直接旁边安装LED照明灯管,如下图

安装后,光照问题解决,料盘过来,真正实现360度无死角,保证光照均匀,图像质量有保证了


总结一下:像类似这种应用,大视野,保证光照均匀,还是需要模拟自然光照环境,所以得采用类似灯箱方式,漫反射光照模式,当被检测物体,有形变,厚度不一,大小不一等各种变数时候,则会非常有用

2:灯光问题解决了,准备快马加鞭,三下五除二完成剩下的调试工作了(事实证明还是想简单了)

3:IO接线,这个对于经常实施的人来说就是真的比较简单了,焊线,连接到PLC X和 Y点上

触发,OK/NG  定义信号完成,这部分很顺利,按照标准化流程来


三:软件调试:

1:调整工作距离,调整镜头焦距,光圈,这些一气呵成,很快就搭建OK

2:安装软件,开始做设置,准备表演,很快也搞定了

3:机器开自动模式,软件开自动模式,开搞,跑了一会儿,发现很多条码读不出来,一维码居多,不慌,可能没调好,软件有保存NG图片,很快将图片导出来,查找原因

接下来问题来了:发现一维码线条很细,放大后看上去有点模糊,最细只有差不多1~2个像素。

(1):调整一维码参数



因为这个条码识别很早以前就写好的模块,参数只有这几个,尝试了最小尺寸设定1,最大尺寸调大,有些条码可以读取了,但是大部分还不行

(2):网上查找了一些设定参数,也都去测试了,但是效果还是不理想

(3):既然是条码分辨率低,那是否可以软件上提升呢?想到一个算子,将图片扩大了一倍,测试,改善很多

(4):最后在调整下快门,让图片更亮有点,稳定了,条码暗了识别率低,跑了一会,这个一维码的问题读取稳定了,看来是解决问题了

4:条码问题解决了,后面测标签歪斜就简单多了,只要计算中心圆孔到标签两个角的距离就可以测量歪斜


总结一下:条码识别评估时候还是要考虑下线宽,点阵大小等因素,防止分辨率不够条码读取不出来,或者读取不稳定,还有光照环境也非常重要

5:客户那边跑了一个礼拜,发现不是很稳,有些条码(都是一维码)还是读取失败,再次总结复盘,推算还是分辨率的问题,难道需要更换相机,考虑成本,还是软件上想办法

(1):网上搜索资料,发现有一点可以改善,就是平常我们使用手机扫描,发现扫描不上时候,会改变亮度,继续扫,直到扫描成功,这个思路成功启发了我,软件上可以做个改变图像亮度然后扫描

(2):我设定读取3次,使用3个不同的亮度等级,效果非常好,又成功解决这个难题



软件截图


四:项目总结:



做好一个项目不容易,看起来挺简单的一个读码应用,里面还是有一些knowhow的,还是要特别注意对细节的把控



版权声明:本文为yuhouxiyang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。