条形码图像识别技术

 论文:

《一维条形码识别系统的设计与实现》钟书成 成都信息工程学院软件工程系

 

 

 

 

 

1 中值滤波去噪

       中值滤波是一种非线形信号处理方法,在这里由于条码图片是列的形式,所以采用改进的5个点采样窗口,取一列上的5个点。扫描整幅图片,对窗口内的像素点按像素值大小排序,最后取中间值代替窗口内所有像素点的原始像素值。

 2 二值化处理

       这其中有三个步骤,首先,对图片的灰度值进行统计,其次再求阈值,最后根据求得的阈值,将图片转换为像素值只有01的黑白图片,以方便进一步分析。

       阈值的选取,采用的是大律法。其原理为,取某个灰度值,以它为分界将图像分为灰度值大小两类,分别计算这两类中的像素点数及灰度平均值。然后计算它们的类间方差,取方差最大值对应的灰度为阈值。

 

3 边缘检测

       这里的边缘检测,不是检测图片的边缘,而是查找一块比较适合条码识别的区域,并将这块区域的上下边界回传给它的主调函数。

l  采用的方法是依次扫描图片的每一行,求取每一行中的黑点个数

l  统计有黑点的行的数量

l  求出图片中所有的黑点数

l  求出平均每行的黑点数(总黑点数除以有黑点的行数)

l  判断一个行是否适合于识别,判定的规范是:如果一行和它的下一行比较相差的黑点个数在5个以内,而且这一行的黑点个数比每行的平均数的75%多,则认为这一行可以用于识别。

l  找到条形码用于识别的上下边缘,通过以上方法,扫描图片,得到每行是否适合用于识别(用01标记)。寻找最佳的识别范围则是通过扫描图片的每一行,查找一定范围内的可以用于识别的行数大于某个值时,这个范围即可以作为最佳的识别区域。如果没有找到,则认为图片严重受损,不能用于识别。 

 

4 条形码识别

       条形码识别过程包括:垂直投影、计算宽度、码字识别等。

 

 

 

 

l 垂直投影:同水平投影一样,先求每一列的黑点个数(在已经找到的上下边界范围内),总黑点数,统计共有多少有黑点的列,求出每列平均有多少个黑点。判定是否为条的规范是:如果这一列的黑点数大于平均数的75%,则认为这列像素是属于条的范围,同时将这列置1,否则置为0

l  求各个条空的宽度:在垂直投影的基础上根据条空的边沿的变化来求。

l 识别码字,根据编码原理的逆过程。

 

缺点:

在图像处理中大量使用到复杂的循环处理,影响了程序的执行效率。

其次在图像特别模糊或背景色干扰太多的时候,识别效果不好。

未实现倾斜校正,所以系统的通用性不好,当图片的倾斜角度太大的时候,系统无法识别。

 

 

 

 

发布了18 篇原创文章 · 获赞 15 · 访问量 15万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览