论文部分内容阅读
摘要:随着数字信息的发展,现在人们对计算机对图像的识别与处理越来越关注。本文通过分析计算机对EAN_13商品条形码的解析,来阐述计算机对图像分析的一般步骤和一些关键算法。
关键词:EAN_13 图像处理
1 EAN_13条形码概述
EAN_13条形码是一种常用的商品条形码,目前大多数商品上标有的条形码就是此种码制。改条形码是由一系列条、空及字符组成,调和空有序排列,蕴含着数字信息。而特定的数字代表着特定的商品编号。
EAN-13条形码由深色的条和白色的空组成。条码一共有13位,13位的含义分别为前缀、制造厂商代码、商品代码和校验码。其中条码直接表示12个数字,12个数字分为两组,由前面的三个“条”和“空”代表101开始,之后24个“条”和“空”表示6个数字,中间由五个“条”和“空”表示中间分隔符,用“01010”来表示,分隔符后面是后面6个数字,由24个“条”和“空”表示,最后是结束符,由3个“条”和“空”表示。如果用0表示“空”,用1来表示“条”,则开始符、中间分隔符、结束符的“条”和“空”都是单位长度,其余的12个数字,每个数字由4个“条”和“空”组成,这4个“条”和“空”共有7个单位长度,每个条和空的宽度在1~4之间,分为2个条和2个空[1]。在编码的时候,EAN-13商品条码的起始符、终止符均为 “101”,中间分隔符为“01010”。其他的数据字符的编码的二进制表示有三个子集,如表1,而括号中表示1和0的个数:
EAN-13商品条码的第2-7为数字,从遵守A、B子集的排列,第8-13位遵循C子集的第一位条形码隐藏在前6位数字中,取决于前6位数字在AB子集的顺序。而右侧数据符及校验符的编码均用C子集表示,EAN-13商品条码中第13位是校验码2 条形码图像解析探究
了解EAN_13商品条形码的含义,就为条形码的图像解析奠定了基础。计算机解析条形码图像主要是识别出条和空的宽度,然后对其进行译码编码。而对图形的分析,主要是可以分为二值化、滤波、边缘检测、图像分割、图像提取、译码几部分。下面,分别概括各种算法。
2.1 二值化 图片在计算机中存储是按照RGB三元素存储的。由于计算机采集到的图像受包装、光照等各方面影响,所以处理图片的信息非常困难。而且条码的研究,只需要条和空的宽度即可,所以不需要其他的颜色信息,所以讲颜色多彩的图像,进行二值化处理,让计算机存储的数据,只保留纯黑和纯白两种颜色,这就叫做二值化处理。二值化处理的方式是,先计算图像的灰度值Y=0.299R+0.587G
+0.114B。然后去一个中间值X,当改点像素点大于X,则将其像素值设为255,小于改值,则为0。此时,可以设置一个图像的地图数组,将黑色存为1,白色存为0。
2.2 滤波 因为图像受到光照、角度等各方面的影响,所以二值化后的图像存在一定的毛躁点。中值滤波可以有效地去掉毛躁点,让误差缩减到最低。由于条码的特殊性,因为它的图像是竖直方向上一致,所以可以采取取每一列五个点,将五个点排序,来得到中间数值的为改点的取值。本算法可以基于上面的地图数组来计算,会非常方便。
2.3 边缘检测 边缘检测是计算出改点是否为图像的边缘。这个算法为后面的图像分割提取做了准备。按照条码图像的特殊性,我们可以取一个2*5的数组的图像,即5行2列的图像,如果这两列的图像中第一列和下一列至少存在4行元素发生像素改变,则证明改点为边缘点。
2.4 图像提出 因为拍摄到的图像存在着含有其他图像的边缘,或者是条码图像位置不居中等各种情况,要顺利地译出条码就需要将条码图像从原图像中提取出来。对条码图像的提取,主要是上下分割和左右分割。
上下分割比较简单,可以通过边缘检测,从图像的中间位置开始,分别向上和向下扫描,假如检测到图像的边缘小于59,则认为其不是条码图像,记录图像的上端和下端。
左右分割,根据显示中商品的条码位置,经过反复试验,我们可以发现,无论图像中拍摄其他边缘还是没有拍摄,当图像边缘由0变为1时,恰好是条码边缘的开始。以此特征来,我们可以得出条码左右分割的方法:①从图像中部开始,从左向右扫描图像,记录第一个从0到1转变的边缘位置,本步也要通过边缘检测,以免误用于毛躁点。②图像向上和向下扫描,记录上下分割后,图像全部从0到1转变的边缘位置。③计算获得边缘的倾斜多,如果大于10°,则影响图像效果,建议重新采集图像;如果倾斜度小于10°,则图像可用。④对所有边缘进行微调,将偏差过于大的图像边缘进行处理,让其与其他边缘的差别变小。⑤以此方法,查找下一个由条变空的边缘,然后将其位置值与前面的边缘值之差作为第一个宽度值,记录到数组中。⑥排序全部第一宽度值得到的数组,取得其中间值。⑦判断此中间值与排序之中的上下两个值的差别如果大于2,则获取图像失败;如果小于等于1,则图像获取正确,将此中间值保存在最终的宽度数组中,作为第一个宽度以备译码使用。⑧按上述步骤,将全部59个条和空的宽度全部找出。则最后的一点的位置,将是图像的右边缘,而经过查找右边缘的过程,图像的条和空的宽度也记录在了数组中。
3 译码
在条码图像提取出来之后,就可以进行译码了。译码的理论依据就是条形码的含义。因为条形码包含着3+6*7+5+6*7+3=95个单位长度,所以我们可以把上面图像提取的时候计算的全部长度相加,然后计算出单位长度。因为单位每一步都可能存在误差,下面的译码也不能绝对的相等。计算出单位长度之后,主要译码步骤按照下面:①取出前三个宽度,看其长度是在0.6-1.4个单位长度之间,如果正确,则为开始标志,继续译码;若为错误,说明图像采集错误。②循环取六次宽度,每次取出4个宽度。比较宽度与单位宽度的比值取整,得到一个四位的编码,在A子集和B子集中寻找此四位编码对应的数字信息,并同时记录这六个数字信息所在的A子集或者B子集。③越过5个宽度(中间分隔符),取后面6次的连续的4个宽度,在C子集中查找相应的数值信息。④按照前6个数字得到的AB子集的顺序,查找其前置码的数值。⑤验证译码结果,将前12位数字的奇数位相加,偶数位相加乘以3,两个结果之和相加后,个位数减去10得到的模的个位即是校验结果,与第13位进行比较,如果正确,则译码成功。
4 结论
本文主要描述了计算机下处理条形码图像的图像分析算法。算法的创新点主要是图像的左右分割步骤和图像译码过程。对于计算机处理其他的图形奠定了基础。
参考文献:
[1]孙江涛,孙珊珊,赵健飞.基于图像分析的摄像头识别条形码的算法[J].华北科技学院学报,2012(3).
[2]龚亚欢,王超,胡晨.EAN-13码的图像识别系统设计与实现[J].现代电子技术,2009(22):106-109.
[3]康牧.图像处理中几个关键算法的研究[D].西安电子科技大学,2009.
基金项目:中央高校基本科研业务费资助(DX2013B01)。
关键词:EAN_13 图像处理
1 EAN_13条形码概述
EAN_13条形码是一种常用的商品条形码,目前大多数商品上标有的条形码就是此种码制。改条形码是由一系列条、空及字符组成,调和空有序排列,蕴含着数字信息。而特定的数字代表着特定的商品编号。
EAN-13条形码由深色的条和白色的空组成。条码一共有13位,13位的含义分别为前缀、制造厂商代码、商品代码和校验码。其中条码直接表示12个数字,12个数字分为两组,由前面的三个“条”和“空”代表101开始,之后24个“条”和“空”表示6个数字,中间由五个“条”和“空”表示中间分隔符,用“01010”来表示,分隔符后面是后面6个数字,由24个“条”和“空”表示,最后是结束符,由3个“条”和“空”表示。如果用0表示“空”,用1来表示“条”,则开始符、中间分隔符、结束符的“条”和“空”都是单位长度,其余的12个数字,每个数字由4个“条”和“空”组成,这4个“条”和“空”共有7个单位长度,每个条和空的宽度在1~4之间,分为2个条和2个空[1]。在编码的时候,EAN-13商品条码的起始符、终止符均为 “101”,中间分隔符为“01010”。其他的数据字符的编码的二进制表示有三个子集,如表1,而括号中表示1和0的个数:
EAN-13商品条码的第2-7为数字,从遵守A、B子集的排列,第8-13位遵循C子集的第一位条形码隐藏在前6位数字中,取决于前6位数字在AB子集的顺序。而右侧数据符及校验符的编码均用C子集表示,EAN-13商品条码中第13位是校验码2 条形码图像解析探究
了解EAN_13商品条形码的含义,就为条形码的图像解析奠定了基础。计算机解析条形码图像主要是识别出条和空的宽度,然后对其进行译码编码。而对图形的分析,主要是可以分为二值化、滤波、边缘检测、图像分割、图像提取、译码几部分。下面,分别概括各种算法。
2.1 二值化 图片在计算机中存储是按照RGB三元素存储的。由于计算机采集到的图像受包装、光照等各方面影响,所以处理图片的信息非常困难。而且条码的研究,只需要条和空的宽度即可,所以不需要其他的颜色信息,所以讲颜色多彩的图像,进行二值化处理,让计算机存储的数据,只保留纯黑和纯白两种颜色,这就叫做二值化处理。二值化处理的方式是,先计算图像的灰度值Y=0.299R+0.587G
+0.114B。然后去一个中间值X,当改点像素点大于X,则将其像素值设为255,小于改值,则为0。此时,可以设置一个图像的地图数组,将黑色存为1,白色存为0。
2.2 滤波 因为图像受到光照、角度等各方面的影响,所以二值化后的图像存在一定的毛躁点。中值滤波可以有效地去掉毛躁点,让误差缩减到最低。由于条码的特殊性,因为它的图像是竖直方向上一致,所以可以采取取每一列五个点,将五个点排序,来得到中间数值的为改点的取值。本算法可以基于上面的地图数组来计算,会非常方便。
2.3 边缘检测 边缘检测是计算出改点是否为图像的边缘。这个算法为后面的图像分割提取做了准备。按照条码图像的特殊性,我们可以取一个2*5的数组的图像,即5行2列的图像,如果这两列的图像中第一列和下一列至少存在4行元素发生像素改变,则证明改点为边缘点。
2.4 图像提出 因为拍摄到的图像存在着含有其他图像的边缘,或者是条码图像位置不居中等各种情况,要顺利地译出条码就需要将条码图像从原图像中提取出来。对条码图像的提取,主要是上下分割和左右分割。
上下分割比较简单,可以通过边缘检测,从图像的中间位置开始,分别向上和向下扫描,假如检测到图像的边缘小于59,则认为其不是条码图像,记录图像的上端和下端。
左右分割,根据显示中商品的条码位置,经过反复试验,我们可以发现,无论图像中拍摄其他边缘还是没有拍摄,当图像边缘由0变为1时,恰好是条码边缘的开始。以此特征来,我们可以得出条码左右分割的方法:①从图像中部开始,从左向右扫描图像,记录第一个从0到1转变的边缘位置,本步也要通过边缘检测,以免误用于毛躁点。②图像向上和向下扫描,记录上下分割后,图像全部从0到1转变的边缘位置。③计算获得边缘的倾斜多,如果大于10°,则影响图像效果,建议重新采集图像;如果倾斜度小于10°,则图像可用。④对所有边缘进行微调,将偏差过于大的图像边缘进行处理,让其与其他边缘的差别变小。⑤以此方法,查找下一个由条变空的边缘,然后将其位置值与前面的边缘值之差作为第一个宽度值,记录到数组中。⑥排序全部第一宽度值得到的数组,取得其中间值。⑦判断此中间值与排序之中的上下两个值的差别如果大于2,则获取图像失败;如果小于等于1,则图像获取正确,将此中间值保存在最终的宽度数组中,作为第一个宽度以备译码使用。⑧按上述步骤,将全部59个条和空的宽度全部找出。则最后的一点的位置,将是图像的右边缘,而经过查找右边缘的过程,图像的条和空的宽度也记录在了数组中。
3 译码
在条码图像提取出来之后,就可以进行译码了。译码的理论依据就是条形码的含义。因为条形码包含着3+6*7+5+6*7+3=95个单位长度,所以我们可以把上面图像提取的时候计算的全部长度相加,然后计算出单位长度。因为单位每一步都可能存在误差,下面的译码也不能绝对的相等。计算出单位长度之后,主要译码步骤按照下面:①取出前三个宽度,看其长度是在0.6-1.4个单位长度之间,如果正确,则为开始标志,继续译码;若为错误,说明图像采集错误。②循环取六次宽度,每次取出4个宽度。比较宽度与单位宽度的比值取整,得到一个四位的编码,在A子集和B子集中寻找此四位编码对应的数字信息,并同时记录这六个数字信息所在的A子集或者B子集。③越过5个宽度(中间分隔符),取后面6次的连续的4个宽度,在C子集中查找相应的数值信息。④按照前6个数字得到的AB子集的顺序,查找其前置码的数值。⑤验证译码结果,将前12位数字的奇数位相加,偶数位相加乘以3,两个结果之和相加后,个位数减去10得到的模的个位即是校验结果,与第13位进行比较,如果正确,则译码成功。
4 结论
本文主要描述了计算机下处理条形码图像的图像分析算法。算法的创新点主要是图像的左右分割步骤和图像译码过程。对于计算机处理其他的图形奠定了基础。
参考文献:
[1]孙江涛,孙珊珊,赵健飞.基于图像分析的摄像头识别条形码的算法[J].华北科技学院学报,2012(3).
[2]龚亚欢,王超,胡晨.EAN-13码的图像识别系统设计与实现[J].现代电子技术,2009(22):106-109.
[3]康牧.图像处理中几个关键算法的研究[D].西安电子科技大学,2009.
基金项目:中央高校基本科研业务费资助(DX2013B01)。