基于图象的条形码识别的算法研究及设计
0 引言
本设计的目的是在AOI(Automatic Optical Inspection,自动光学检测)设备提供的PCB板图片中对PCB板的条形码信息进行识别,应用于电子通讯产品的生产线上,进行PCB板的错误检测。AOI通过摄像头自动扫描PCB、采集图像、测试的焊点与数据库中的合格参数进行比较,经过图像处理,检查出PCB上的缺陷,并通过显示器把缺陷显示、标识出来,供维修人员修正。PCB上所贴的条形码记录了该PCB的身份信息,通过识别该条形码字符来认证PCB板。
本文主要解决的问题是条形码的编码规则如何转换为实际获得的像素点的参照标准,如何分割条形码以及如何以后台数据库为基准识别条形码。
1 条形码识别的算法研究及其实现
1.1 条码识别算法步骤
条形码识别算法的过程主要分为以下这三个步骤:
(1) 对于一个条形码图像,要识别的是从静区开始的有效区域,算法中考虑了判别是否到达静区,以此作为条码识别工作的开始标志;
(2) 算法中总体上采用把整个条形码按照39码型的编码规则进行分割,再依次找寻每个条形码字符的逻辑值在数据库中的匹配字符来输出。
1.2 算法分析
在条形码识别的算法分析过程中必须要解决三个比较关键的问题:1)条码的长宽在图像文件中用什么来衡量;2)条码的码字是不是要在识别之前分割出来,如果要分割出来,那么如何分割;3)分割后要怎么把对应的码字进行处理。
在设计之前理解了这三个问题,整个设计就会获得良好的解决。首先明确,所要处理的码型是39码。39码的一个重要的特点就是,具有不可伸缩性,也就是说,一个条码字符就是由占一定长度的,9个元素组成的,其中3个宽元素6个窄元素。39码符号均以*号开始和结尾,即木号是39码的起始,终止字符,并且39码是离散码,符号中两个相邻字符之间用一个位空分开。假设把条形码抽取9个元素,然后跳过1个往下抽取9个,依次类推,把抽取获得的每9个元素组成条形码的每个字符,只要检测到前9条元素(由条和空组成,为了更好说明,文中把条说成黑条,而把空说成白条)是*就开始进行条码字符的识别,如果不是则放弃。
对于扫描得到的条码BMP文件其白条和黑条的宽度及几何长度已经失去意义,必须用另一种方法来表示。此时可以给出问题1)的答案:长宽用像素的个数来表示。对一个BMP文件,其像素的数据包含对应的RGB值,用以表征它的颜色。因此可以通过该像素的RGB值来辨认出是白色还是黑色。在理想的状况下,白颜色的RGB值为(255,255,255)而黑颜色的RGB值为(0,0,0),但是实际条件下,一个条码图像不会达到那样标准的RGB值,也就是有模糊的状况,规定这样一个判决准则:把RGB值大于(125,125,125)的像素认为是白色像素,而把RGB值小于(12 5,125,125)的像素认为是黑色的像素。在程序中采用列表PixelList=[]来存储这些像素。然后基于以上的判决原则,程序实现“扫描”X轴,获得每个像素,如果该当前的像素值符合是黑色的条件,就记录到BlackCount,这时如果下一个的像素值还是黑色的就累加,如果下一个像素值符合是白色的条件,则把存储黑色像素个数的变量BlackCount清空,以方便来记录下一个黑条的像素个数。同样地,对于白色像素也有类似的操作。至此得到了一个列表GeneralList=[],里面存放着扫描X轴每个被认为是黑条或是白条其对应的像素个数。
相关文章
- 2024-07-09多CCD拼接相机中图像传感器不均匀性校正
- 2024-02-26实现同一分析周期内两流路并行分析的技术改造
- 2022-04-27监控摄像机日夜及彩色黑白转换两用简析
- 2023-03-02智能化色谱分析软件的研究与应用探讨
- 2024-07-31铁路客车提速轴承外圈非基准端面挡边平行度测量仪的研制



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。