基于机器视觉的手机产品条码检测方案一、项目内容本方案将搭建一个基于机器视觉的流水线检测手机条码平台,把产品放置于流水线上,高速工业相机对其逐一采集后传送到计算机进行一系列的处理,最终检测出条码是否合格并把不合格的条码分拣出来,完成自动检测手机条码质量的功能。检测对象:手机产品条码(包括产品码、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条码贴纸部分分割由二值化图像中可见贴纸与背景有明显的特征区分,我们经过bwareaopen()函数处理后可把面积小的点吞噬掉,从而获得边缘较为清晰的二值化图像。(经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材料预算名称型号或规格数量单价(元)总价步进电机控制器上海奕标DKC-1B步进电机控制器16565步进电机雷赛科技两相57混合式步进电机57HS22-A2155310可编程单片机STM32F103RCT6系统板13535传输带新空间橡胶同步带(黑色)11010传输带同步带轮新空间同步带轮21020工业相机Sunway500ACMOS工业相机113981398光电传感器Autonics漫反射型光电传感器BJ300-DDT1108108光源上海日明漫反射机器视觉环形LED光源1350350相机机架深圳市新次元科技机器视觉实验支架1100100处理计算机组装办公用台式电脑(8G,i3-4170处理器3.4GH主频)128002800合计5196元3.2方案不足本方案存在尚需改进的地方:1)对光源的摆置要求较高,依赖光源获取对比鲜明的图像,否则将可能出现条码贴纸与背景分割失败的情况;2)尽管概率很低,但依然存在某张条码检测失败的情况,此时本方案的做法是对该次检测抛弃;3)本方案只对条码的编码质量进行了检测,即只对条码所包