设计与开发

条形码 单片机 一种基于机器视觉的手机产品条码检测方案

小编 2024-11-24 设计与开发 23 0

一种基于机器视觉的手机产品条码检测方案

一、项目内容

本方案将搭建一个基于机器视觉的流水线检测手机条码平台,把产品放置于流水线上,高速工业相机对其逐一采集后传送到计算机进行一系列的处理,最终检测出条码是否合格并把不合格的条码分拣出来, 完成自动检测手机条码质量的功能。

检测对象:手机产品条码(包括产品码、 SN码、 IMEI 码)

适用范围:流水线的自动生产线

检测速度: 1 件/两秒( 20 厘米 / 秒)

(手机产品条码)

二、方案设计

2.1 总体结构示意图

(总体结构示意图)

其包括:流水线输送装置、照明装置、高速相机图像采集装置、计算机图像处理部分。

2.2 硬件设计方案

2.2.1 流水线(传输带)输送机械装置设计

本方案中输送对象的质量较小,不需要过多考虑输送带的承载能力问题,也不涉及到产品的装载和拆卸,所以采用普通的带式输送带结构,以步进电机带动传输带同步轮作为滚筒, 并用一块单片机对步进电机进行简单的运动控制进而控制传输带传输开关和速度。 同时,为了在图像采集时能把手机产品条码与背景有鲜明区分,传输带颜色为深黑色。

(带式传输带结构图)

2.2.2 工业相机选取

成像系统的是本方案最重要的一环。本方案中,检测对象为条形码,其形状较大且特征明显, 因此不要求相机需要非常高的分辨率。 但是,本方案是一个实时处理的设计,因此要求图像采集处理的速度要高于检测对象的检测速率,即相机的最大帧率要高; 而成像物体是运动的, 为了避免采集到的图像出现模糊等问题,应采用全局电子快门方式的相机; 除外,还要求该相机支持外触发快门以及能与计算机进行快速数据传输的特点。综上,该工业相机应有以下特点:

(1)最大帧率高

(2)全局电子快门帧曝光方式

(3)支持外触发快门

(4)拥有与计算机进行快速数据传输的接口

综合考虑,本方案选择采用 德国Basler 公司制造的 acA800-200gc/gm 型号工业相机,其参数如下:

(工业相机参数)

改工业相机符合本方案设计要求。

2.2.3 光电传感器的选取

本方案采用传感器触发方式对相机快门进行控制。设计中传输带为黑色,条码背景为白色, 它们的反射能力有很大差距, 因此漫射式光电传感器能很好地利用该点检测产品条码是否进入相机的拍摄范围。 把光电传感器垂直置于传输带上方并紧贴相机,当条码到达传感器下方时,反射光发生变化,触发开关状态,通过开关状态间接控制相机快门,进而达到自动对条码图像的采集的目的。

2.2.4 光源的选择与控制

常用的机器视觉光源有 LED光源、卤素灯(光纤光源)、高频荧光灯。 LED 光源最常用, 其使用寿命长, 且由于 LED光源是采用多颗 LED排列而成, 可以设计成复杂的结构, 实现不同的光源照射角度。 由于本方案中检测的是条码, 为一光滑平面,采用漫反射环形 LED光源对其进行照射, 能很好地把产品条码与传输带黑色背景区分出来。 其中值得注意的是, 光源的高度和角度一定要调整好, 直至相机拍摄出来的图像能把条码与背景完美区分为止,而且还不能有反光。

(漫反射环形照射)

2.3 软件平台环境

本方案检测速度约为两秒1件,因此进行图像处理的计算机采用cpu主频较高( 3GH以上)的一般办公用计算机即可满足要求。采用MATLAB作为主要图像处理软件。

2.3.1 条码图像的预处理

计算机从数据接口中获得的条码图像是高速相机直接拍摄而未经处理的图像,其由于 CMOS特性以及放置等因素可能会出现噪声、倾斜等问题,而且得到的图像为彩色图像, 因此在对条码进行检测前应先对原图像进行预处理。预处理包括:滤波去噪、二值化处理、倾斜纠正三部分。

2.3.2 条码图像的滤波去噪

本方案中采用的 CMOS相机,其集成度高的特点带来了元件干扰噪声。因此有必要对这些图像去除随机噪声的干扰。经实验,本方案中图像的噪声多为椒盐噪声,即噪声点在图像上常常表现为孤立像素点,其像素灰度与它邻近像素灰度有显著的不同,因此具有更高的频谱。针对噪声的类型,我们采用中值滤波,其对于脉冲干扰及椒盐噪声有良好的抑制作用,且能较好保持图像边缘。 从条码图像的特征来看, 其特点在于是由纵向一定宽度黑白条空组成,我们通过建立不同大小的模板,对含有噪声的图像进行滤波处理, 比较它们的滤除噪声干扰的效果。在 MATLAB中可以使用 filter2 函数调用创建好的滤波器,经验证, 3x3 正方形滤波器效果最好,因此本方案采用3x3 中值滤波器。

(带椒盐噪声的图像)

(3x3 中值滤波后的图像)

2.3.3 条码图像的二值化处理

为了便于对图像进行后续处理,需要对图像进行二值化处理。本方案中产品条码为底面为白色的长方形贴纸,背景为黑色的传输带, 直接从相机中获取的图像为彩色图像,把获取的图像进行灰度化处理之后,再经二值化处理后能便于把产品条码的贴纸分割出来。 可利用MATLAB的 rgb2gray函数可以把彩色图像转化为灰度图像后,再利用 im2bw函数可以很方便地对图像进行二值化处理,阈值取 0.67 ,能得到较好的二值化图像。可见,二值化后纸面边缘更加清晰。

(原图像) (二值化后图像)

2.3.4 条码图像的倾斜判断与纠正

由于物体在传送带上的位置并不固定, 所以相机所采集到的条码图像中条码区域可能出现倾斜, 为便于后续的条码定位和分割提取必须要将倾斜的条码图像转正。

观察二值化后的条码图像, 可以发现纸面区域与背景有明显的近似矩形框区分,而倾斜的条码图像的显著特征就是其二值图像中纸面区域以一定角度旋转且其旋转角度不可能太大。所以实现倾斜条码图像的纠正首先要检测出倾斜角度,

再以其角度值对其进行逆旋转得到包含条码的矩形区域呈水平的条码图像。 考虑到图像位置的随机性和计算复杂度问题, 本方案决定采用 Hough变换法来实现倾斜条码图像的倾斜角的检测。 其实现方法是先利用MATLAB的 edge 函数求出二值图像 的边 缘,再 用 其 Hough 变换相 关函数: hough 、 houghpeaks 、 houghlines ,获得到最长边的起始点和终止点,利用斜率公式从而求出该条码图像的倾斜角,最后利用 imrotate 旋转函数纠正图像的倾斜情况。经测试,效果不错。

(原倾斜图像) (倾斜纠正后的图像)

2.4 条码分割

由于同一款手机产品,其条码的贴纸上的条码字符等信息的位置都是固定的,因此把图像中纸面部分分割出来后, 按固定位置的物理分割能很容易把条码部分分割出来。

2.4.1 条码贴纸部分分割

由二值化图像中可见贴纸与背景有明显的特征区分,我们经过b wareaopen函数处理后可把面积小的点吞噬掉,从而获得边缘较为清晰的二值化图像。

(经bwareaopen 函数处理后的图像)

获得此图像后,对图像进行从左到右的逐行检测,得到其像素点第一次由黑到白变化点的坐标,即为该纸面边缘的第一个坐标,记为P1;再用相同的方法分别从右到左、上到下、下到上进行检测,分别把检测到的坐标记为P2、 P3、P4,则该四个坐标确定了纸面的位置。最后调用 imcrop函数,按这四个坐标把摆正后的图像的纸面分割出来。

(分割的条码图像的纸面部分)

2.4.2 条码分割

上文已说明, 同一款手机产品其条码的贴纸上的条码字符等信息的位置都是固定的,因此对应同一款手机计算好其条码在贴纸上的位置,再次调用 imcrop函数,能把贴纸上任意部分分割出来。

(分割出来的条码)

2.5 条码识别与检测

条码图像经过处理后最终得到的是只有黑白条空组成的二值图像, 该点的颜色信息在阔值变换时已经定义 ,用 255 和 0 表示白色和黑色, 则接下來的任务就是对此图像所包含的数字或英文字母信息进行译码, 即条码识读。

2.5.1 条码译码识别方案

条码识别的算法有很多,常用的有:

①宽度测量法:在图像方式的译码过程中, 宽度的测量不再采用传统的脉冲测量法 , 而是通过记录每个条或空的宽度中所含象素的个数来确定实际的条 / 空宽度 , 从而确定整个条码符号所代表的信息。

②平均值法:对条码符号图像中从起始符到终止符整个宽度进行测量 , 然后除以 95 标准宽度 , 求出单位模块所含的像素列宽, 再分别测量各个条空的实际宽度此宽度以单位宽度为单位计算

③相似边距离测量法: 这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值, 而不是由各元素宽度的实际测量值来判别。

前两种方法对条码图像的要求非常高 , 因为它们都是测量各元素符号的实际宽度 , 然后根据查表法得到所代表的码值。如果实际测量值与标准值存在一点偏差, 就不能实现正确译码。 而第三种方法正是有效的解决了这一问题 , 因此本方案采用相似边距离测量的方法来实现译码功能。理论上条形码字符的逻辑值应该由条形码的实际宽度来判断, 而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由元素宽度的实际值来判别。此种方法的优点是: 即使条码质量存在缺欠,使得实际测量值和条码应该具有的理论值有较大的偏差, 仍然可以根据相似边的距离能够正确解释。

(条码字符宽度示意图)

图中 C1,C2,C3,C4表示每个字符中四个相邻条、空的宽度, T 表示一个字符的宽度, T1,T2 表示相似边之间的距离,把其归一化后按表查询即可获得其编码值。

(EAN-13 条码字符与归一化值)

由 MATLAB 实现该方法,关键是要检测出相似边之间的距离。可从左到右对条码进行水平灰度扫描, 以灰度值跳变的点作为条和空的标记坐标,从而计算出由各个条、空的宽度,并通过计算 n=T/7,T=1C+2C+3C+4C 得到单位模块的宽度。各个条空的宽度除以单位模块的宽度就是归一化的条空宽度。 而为了方便译码,我们除去起始符 3 个条空,中间分隔符 5 个条空,终止符3 个条空,对剩下的 48 个条空每 4 个条空为一组进行译码。计算相似边之间的距离t1、 t2 从而得到归一化( T1,T2)。最后查表可得条码字符。再根据译出的左侧6位数据符的奇偶性算出前置符。以下是译码效果:

(条码识别结果)

其他码型( SN 码、IMEI 码)原理相似。

2.5.2 条码字符识别

获得条码识别的数据后,需要与条码下方的字符对照,验证条码的准确性。字符识别的算法有很多, 由于该方案中只需要识别简单的数字和英文字母,因此通过简单的 OCR 算法对其条码下方的数字、英文字母字符进行字符检测,再与

识别的条码字符相比较, 一致则显示该产品条码检测通过,不一致则记录该商品编码。

首先建立一个字符模板数据库,用于字符匹配。该方案中需要识别的字符只有英文和字母,因此数据库不大。

(字符数据库)

然后使用物理定位分割,把条码下方字符分割出来。

(条码下方字符)

接着,对图片进行水平方向的投影,这样有字符的地方的投影值就高,没字的地方投影得到的值就低。

(水平投影值)

接下来,用一根扫描线从下向上扫描。这个扫描线会与图中曲线存在交点,

这些交点会将山头分割成一个又一个区域。该条码字符为 13 位,加上条码突出来的几点一共为 18 个区域,因此,当扫描线将山头分割成 18 个区域时停止。 然后根据这 18 个区域向水平线的投影的坐标就可以将图片中的 13(18)个字符分割出来。

字符分割出来后,最后用 ORC神经网络匹配,把分割出来的字符与字符库里的字符图片进行匹配, 最终把字符识别出来。把识别出来的字符串与条码识别出来的字符串对比,即可检测出该条码是否准确。

三、方案评估

3.1 材料预算

3.2 方案不足

本方案存在尚需改进的地方:

1)对光源的摆置要求较高,依赖光源获取对比鲜明的图像,否则将可能出现条码贴纸与背景分割失败的情况;

2)尽管概率很低,但依然存在某张条码检测失败的情况,此时本方案的做法是对该次检测抛弃;

3)本方案只对条码的编码质量进行了检测,即只对条码所包含的字符是否与该手机产品相关信息的编号字符相对应进行了检测,而没有对出错的进行纠正。

往期精彩回顾

OLEDindustry

↓↓ 可以畅聊到天亮的行业技术群!你要不要来?↓↓

管理员微信:OLEDindustry2

添加管理员微信 > 入群 > 尽情畅聊探讨

走进跃迁 单片机的工作原理与典型应用分析

单片机由运算器、控制器、存储器、输入输出设备构成。那么单片机是如何工作的呢?原理是什么?大家一起来看看

单片机工作原理

单片机的工作原理与计算机CPU的工作原理是一样的,主要是利用片内的半导体存储器存放用户的程序和数据,单片机的核心中央微处理器CPU中有指令寄存器、指令译码器,程序计数器等部件,由程序计数器寻找下一条要执行的指令,找到后,将指令送给指令寄存器,再由指令译码器翻译执行该指令,完成对指令功能的操作。一句话:单片机的工作就是不断地取指令、分析指令、执行指令的循环过程。按预先编写的程序执行,以达到用户期待的结果。

单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。

为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。

程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。

应用领域

1、医用设备领域

单片机在医疗设施及医用设备中的用途亦相当广泛,例如在医用呼吸机、各种分析仪、医疗监护仪、超声诊断设备及病床呼叫系统中都得到了实际应用。

2、商业营销设备

在商业营销系统中单片机已广泛应用于电子秤、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等。

3、办公自动化设备

现在办公自动化设备中大多数嵌入了单片机控制核心。如打印机、复印机、传真机、绘图机、考勤机及电话等。通过单片机控制不但可以完成设备的基本功能,还可以实现与计算机之间的数据通信。

4、智能仪器

内部含有点片剂的仪器系统称为智能仪器,也称为微机化仪器。这类仪器大多采用单片机进行信息处理、控制及通信,与非智能化仪器相比,功能得到了强化,增加了诸如数据存储、故障诊断、联网集控等功能。以单片机作为核心组成智能仪器表已经是自动化仪表发展的一种趋势。

5、家用电器

单片机功能完善、体积小、价格廉、易于嵌入,非常适合于对家用电器的控制。嵌入单片机的家用电器实现了智能化,是传统型家用电器的更新换代,现已广泛应用于洗衣机、空调、电视机、视盘机、微波炉、电冰箱、电饭煲以及各种视听设备等。

6、汽车电子产品

现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器等装置中都离不开单片机。特别是采用现场总线的汽车控制系统中,以单片机担当核心的节点通过协调、高效的数据传送不仅完成了复杂的控制功能,而且简化了系统结构。

7、信息和通信产品

信息和通信产品的自动化和智能化程度很高,其中许多功能的完成都离不开单片机的参与。这里最具代表性和应用最广的产品就是移动通信设备,例如手机内的控制芯片就是属于专用型单片机。另外在计算机外部设备中,如键盘、打印机中也离不开单片机。新型单片机普遍具备通信接口,可以方便地和计算机进行数据通信,为计算机和网络设备之间提供连接服务创造了条件。

8、工业控制

工业自动化控制是最早采用单片机控制的领域之一,在测控系统、过程控制、机电一体化设备中主要利用单片机实现逻辑控制、数据采集、运算处理、数据通信等用途。单独使用单片机可以实现一些小规模的控制功能,作为底层检测、控制单元与上位计算机结合可以组成大规模工业自动化控制系统。特别在机电一体化技术中,单排年级的结构特点使其更容易发挥其集机械、微电子和计算机技术于一体的优势。

综上所述,单片机的工作过程实质上就是执行指令的过程,而执行指令可以分为三部分:取指令,译码分析指令和执行指令。随着时期的发展与高新科技的发展趋势,现阶段该技术性的实践活动运用日趋成熟期,单片机设计被运用于各行各业。

相关问答

单片机 笔形码是什么?

单片机笔形码是一种用于表示数字、字母和符号的编码方式。它由一系列宽度不同的笔画组成,每个笔画代表一个特定的字符。单片机笔形码是一种简洁、高效的编码方...

什么是“共享农业”?

谢谢邀请!我是春光秋月,欢迎大家关注!什么是共享农业?共享农业其实对我们并不陌生。大家都能知道“共享单车”、“共享充电宝”,他们的出现为我们的生产生...

猜你喜欢