条形码识别算法研究与设计
这些逻辑值都放到列表中,这个时候的列表,也是列表的列表,大列表的元素是单个条码字符的黑条的逻辑值列表,小列表里的元素是01010这样的逻辑值,用来表示宽窄。同样地,对于白条而言,也有类似操作。至此,获得了两个大列表。一个是放黑条逻辑值的列表:BLogicList;一个是放白条逻辑值的列表WLogicList。大列表中的元素是每个码字的逻辑值列表,这样实现了码字的分割工作。
对于第3)个问题:分割之后要对码字如何处理。首先,可以建立一个数据库,将条码规则的信息放入数据库中。然后,只要在条形码识别软件中把数据库和相应的程序相连接,查找匹配值即可。在Access 2000数据库中,黑条逻辑值和白条逻辑值都是以文本的数据类型来存放,但是在列表中各个0101都是整型。因此把列表里面元素进行数据类型转换,列表里的数字转换为字符,成为一个字符串作为列表的元素存储。
1.3 软件调试及其分析
根据算法的实现功能,选择理想的和非理想的(小角度倾斜和轻微模糊的情况)三张条形码进行识别测试。
采用这三张条形码进行测试,步骤如下:
(1) 启动调试软件,出现一个用户界面菜单,供用户载入条码图片。
(2)选择一个条码的BMP文件后将其载入,可以获得:
(3) 开始条码的识别程序,此时可以获得条码识别成功的信息框,理想的条码图片的识别结果为:
倾斜角度小于5°情况下的条形码图片和表面轻微模糊的条形码图片的识别结果如图8所示:
从以上三种情况的条码图片测试可以看出所设计的条形码识别算法达到了预期的功能,实现了设计的目标。
2 结论
本文主要解决的问题是条形码的编码规则如何转换为实际获得的像素点的参照标准,如何分割条形码以及如何以后台数据库为基准识别条形码,这些都已经获得了良好的解决。
条形码的字符分割部分是本设计的难点所在。根据39码的编码规则进行算法设计,突破了该难点。设计对于一定程度的不理想条形码也做了处理。
- 基于图象的条形码识别的算法研究及设计(06-14)
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)