3.2.3 译码过程——平均值法

条形码图像经过预处理后得到了二值化的图像,它是进行条形码识读的基础。但由于印刷质量、污垢等各种因素的影响,未经处理的条形码图像将存在一定程度的噪声干扰,故在识别时应考虑这些噪声的因素。

所谓平均值法,就是对条形码符号图像中从起始符号到终止符整个宽度进行测量,然后除以95(标准宽度),求出单位模块所含的像素列宽,即单位宽度,再分别测量各个条空的实际宽度(此宽度以单位宽度计算)。最后根据宽度识别出一维条形码图像中所包含的信息。

EAN-13是一种(7,2)码,即每个字符的总宽度为7个模块宽,交替由两个条和两个空组成,而每个条、空的宽度不超过4个模块。

设一个有序数组 A=(a1,a2,a3,a4)表示一个条形码字符,由EAN-13编码规则知,它满足如下性质:

性质1:ai为整数,且1≤ai≤4,i=1,2,3,4。

性质2:

图3-3所示为EAN-13条形码的一个字符,图中条、空宽度定义如下:C1C2C3C4表示每个字符中4个相邻条、空的宽度,T是一个字符的宽度。

图3-3 EAN-13条形码宽度的定义

设一个字符中单位模块的宽度为n,则单位模块宽度为

n=T 7

T =C 1+C2+C3+C4

由于条形码条、空宽度C1C2C3C4已知,设条形码条、空分别占单位模块的个数为mi,则

m i =Ci n i=1,2,3,4

因此,由mi可知条形码的编码。例如:若m1=1,m2 =3,m3=1,m4 =2且条形码的排列为条—空—条—空,则可知条形码编码为1000100,是右侧偶字符7。若m1=3,m2 =1,m3=1,m4 =2且条形码的排列为空—条—空—条,则可知条形码编码为0001011,是左侧偶字符9。