条形码识别

条形码识别
条形码识别

HEFEI UNIVERSITY

系别电子信息与电气工程系

专业电气信息类

班级电子(2)班

完成时间 2012-11-04

姓名学号周峰 0905073012

基于MATLAB的一维条码识别

摘要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量

大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的条码的识别尤为重要。

不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,图像的预处理包括图像分割,图像滤波等,良好的图像处理将对后面实现正确译码有重大贡献;第二部分就是对预处理后的条码图像进行译码,我们根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。借助于Matlab软件的功能我们完成这次译码工作。

关键词:图像处理条形码识别 EAN-13 图像滤波 Matlab

一、引言

1.1 条码技术概述

条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。

通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条形码是迄今为止最经济、实用的一种自动识别技术。

1.2Matlab应用图像处理

Matlab图像处理工具是由Math Works公司推出的用于数值计算的有力工具,它具有相当强大的矩阵运算和操作功能,力求人们摆脱繁杂的程序代码。Matlab图像处理工具箱提供了丰富的图像处理函数,灵活运用这些函数可以完成大部分图像处理工作。图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。主要包括下面几方面:

(1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp,tif、tiff、pcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。

(2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。

(3) 图像变换。MATLAB提供了一维和二维离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT),以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。

二、一维条码技术

2.1 一维条码符号的结构

通常任何一个完整的条码是由两侧空白区、起始符、数据字符、校验符、终止符组成,以一维条码而言,其排列方式通常如表2-1所示:

表2-1 条码符号结构

图2-1 条码符号

1、空白区

位于条码两侧无任何符号及资讯的白色区域,主要用来提示扫瞄器准备扫瞄。

2、起始符

指条码符号的第一位字码,用来标识一个条码符号的开始,扫瞄器确认此字码存在后开始处理扫瞄脉冲。

3、数据符

位于起始字符后面的字码,用来标识一个条码符号的具体数值,允许双向扫瞄。

4、校验符

用来判定此次阅读是否有效的字码,通常是一种算术运算的结果,扫瞄器读入条码进行解码时,先对读入各字码进行运算,如运算结果与检查码相同,则判定此次阅读有效。

2.2 EAN码简述

EAN码的全名为欧洲商品条码(European Article Number),源于公元1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。EAN条码系统的管理是由国际商品条码总会(International Article Numbering Association)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。目前已有30多个国家加盟EAN。EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。

2.3 EAN-13码符号的特征

(1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。(2)条空分别由1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“1”表示,浅色模块用“0”表示。

(3)在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共7个模块。(4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始、终止的分界符和平分条码符号的中间分隔符。

(5)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。

2.3.1 EAN-13码字符集

EAN-13条码字符集包括10个数字字符,即0-9。在条码符号中,每个数字字符由七个模块的二进制表示,其表示形式见条码字符集中的A,B,C三个子集。

表2-2 条码字符集

A子集中条码字符所包含的深色模块的个数为奇数,称为奇排列。B、C子集中条码字符所包含的深色模块的个数为偶数,称为偶排列。

2.3.2 EAN-13码符号结构

EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成,如图2-4所示。

图2-4 EAN-13条码符号结构

图2-5 EAN-13条码符号构成示意图

左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为11个模块宽。

起始符:位于条码符号左侧,表示信息开始的特殊符号,由3个模块组成。

左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码(不包含前置码)和厂商代码,共6位数字。条码字符按A子集或B子集的形式构成。左侧数据符由42个模块组成。

中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由5个模块组成。

右侧数据符:中间分隔符右侧的一组选自C子集的条码字符,表示5位商品代码,又35个模块组成。

校验符:最后一个条码字符,选自C子集,由7个模块组成,表示一个校验字符。

终止符:位于条码符号右侧,表示信息结束的特殊符号,由3个模块组成。

右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为7个模块。

三、条码图像的预处理

3.1 灰度处理及二值化

Matlab能够处理的四种类型图像:

1)索引图像

索引图像包括图像矩阵与颜色图数组,其中,颜色图是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵包含一个值,这个值就是颜色图中的索引。颜色图为m*3双精度值矩阵,各行分别指定红绿蓝(RGB)单色值。

2)灰度图像

在MATLAB中,灰度图像是保存在一个矩阵中的,矩阵中的每一个元素代表一个像素点。矩阵可以是双精度类型,其值域为[0,1];也可以为uint8类型,其数据范围为[0,255]。矩阵的每个元素代表不同的亮度或灰度级。

3)二进制图像,

每个点为两离散值中的一个,这两个值代表开或关。二进制图像保存在一个由二维的由0(关)和1(开)组成的矩阵中。从另一个角度讲,二进制图像可以看成为一个仅包括黑与白的灰度图像,也可以看作只有两种颜色的索引图像。

4)RGB图像

与索引图像一样,RGB图像分别用红,绿,蓝三个亮度值为一组,代表每个像素的颜色。与索引图像不同的是,这些亮度值直接存在图像数组中,而不是存放在颜色图中。图像数组为M*N*3,M,N表示图像像素的行列数。

对图像进行灰度处理,为实现数字的阈值变换提供前提条件,要将256色位图转变为灰度图,首先必须计算每种原色对应的灰度值,灰度与RGB颜色的对应关系

Y=0.299R+0.587G+0.114B

将调色板转换成灰度调色板。实现的指令:y=rgb2gray(I)。

为了对图像进行后续处理,需要对图像进行二值化处理,二值化是图像分割技术中的区域分割技术,它是区域分割中最基本也是最常用的手段,使用阈值将背景与图像分割出来,也称阈值分割。

3.2.1灰度图像 3.2.2二值化图像

3.2 图像的滤波

3.2.1图像的平滑滤波

中值滤波器是一种最常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,二者不同是在于中值滤波器的输出像素是由领域像素值是由领域的中间值决定的而不是平均值决定的,中值对极限像素值远不如平均值那么敏感,所以中值滤波器产生的模糊较少,更适合消除孤立噪声点。它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘。加权中值滤波能够改进中值滤波的边缘信号保持效果。但对方向性很强的指纹图像进行滤波处理时 ,有必要引入方向信息,即利用指纹方向图来指导中值滤波的进行。中值滤波器的优点是:它可以克服线性滤波器(如均值滤波)给图像带来的模糊,做到在有效地清除脉冲噪声的同时,又保持良好的边缘特性,从而获得较满意的复原效果。

根据上述条码图像预处理的理论知识编译相关的Matlab程序,得到如图3-3.2所示图像预处理结果。

3-3.2 图像处理的结果

四、条码的译码方法及基本原理

4.1 译码方案的选择

我们所采用的是:相似边距离的测量方法,这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别。

由原理知,要想辨识一个条码,必须先测量条码条、空宽度C1、C2、C3、C4以及一个字符的宽度T。条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用255和0表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由255变到0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度.由前面所述EAN-13条码的组成知:一个由占3个条空的起始符、3个条空的终止符、24个条空的左侧数据符、5个条空的中间分隔符、20个条空的右侧数据符、4个条空的校验符组成。所以,整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为60个;而对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数将肯定大于60或小于60,这时将不记录该扫描行,对此行不处理。这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。

4.2 条码字符的判别

如图4-4所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中C1、C2、C3、C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。

图4-4 EAN-13条码宽度的定义

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

n=T/7

T=C1+C2+C3+C4

由于条码条、空宽度C1、C2、C3、C4已知,设条码条、空分别占单位模块的个数为mi,则:mi=ci/n(其中i取1、2、3、4)。因此,由mi可知道条码的编码。例如:

4.3 EAN-13的译码原理分析

要辨别一个条码,必须知道条码的码,空间隔C1,C2,C3,C4和一个字符的宽度T.图像经过分割,灰度,二值化处理后得到就是关于条码的二值图像,把图像看作一个二维矩阵,矩阵中的点就是0和255表示白与黑。我们进行列扫描,对于每一列如果有大于大于二分之一行是0的话,判定这一列是0。最后我们得到的是一个一维矩阵,从而由这个一维矩阵,来做字符识别。我们检测这个一维矩阵,若遇到矩阵由0变到255,或是由255变到0,的话,记录下坐标值。然后由坐标值相减得到条空的宽度。由前面的EAN-13条码组成可知:一个条码由3个条空起始符,3个条空终止符,24个条空左侧数据区,5个条空的中间分隔符,20个右侧数据符,4个条空的校验码,所以扫描的坐标应该为60个,整个条空总数为59。字符判别流程图:扫描识别的流程图如下:

经处理后的二值化图像

扫描一列,是否有大于1/2行是0

N Y

这列为1 这列为0

得到一个一维矩阵

扫描突变点坐标,并记录

坐标相减,得到条空宽度C1……C59

结束

图5-1 条码扫描的流程图

4.4 译码的结果分析

根据上述译码理论,采用相似边距离测量方法对预处理后的条码图像(二值图像)进行译码,得到如下所示译码结果:

分析:通过多次对不同EAN-13条码的识读,证明该条码检测系统速度快、效率高、而误码率却很低,即使在图像预处理上达不到理想的效果,条码仍能正确识读。这是因为我们选择了相似边距离测量的方法。可见,影响条码识别效果的不仅仅是条码图像预处理效果,译码方法更是不可忽视的重要原因。相似边距离测量方法有着其它译码方法无可比拟的优势,它不是根据条码条空宽度的实际值来判别,而是通过所谓的相似边距离来判别。因此,即使条码质量存在欠缺,仍然能够根据相似边距离正确解释条码,有着很强的对实际情况的适应性。

六、结论

在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在Matlab软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低,大大提高了条码的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。

本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量来判别。对条码图像的要求相对其它方法而言较低,具有较高的识别率,因而能够很好的满足实际需要。同时用软件实现条码的识别比硬件具有更好的抗噪声性能,且速度快,效率高。

尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条码识别的重要基础。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行特殊的图像处理过程才能达到译码的目的。如果条码被污染了我们要进行修复,条码发生几何畸变我们要进行图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性,对一定质量范围内的条码图像都能进行有效的处理。其次,对软件程序的精简也是我所追求的,希望通过最精练的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句,使语句简明易懂,也能提高程序整体的执行速度,提高条码识别效率。

附录:源程序

close all

I = imread('019.bmp');

J= rgb2gray(I);

figure(1)

imshow(J);

title('灰度化图像');

[e1,e2]=size(J);

Im=imcrop(J,[e2/2-200,e1/2-200,400,400]) figure(2)

subplot(1,2,1),imshow(Im)

title('中心区域');

subplot(1,2,2),imhist(Im)

title('中心区域直方图');

[xa,ya]=size(Im);

b=double(Im);

zd=double(max(Im))

zx=double(min(Im))

T=double((zd+zx))/2;

count=double(0);

while 1

count=count+1;

S0=0.0; n0=0.0;

S1=0.0; n1=0.0;

for i=1:xa

for j=1:ya

if double(Im(i,j))>=T

S1=S1+double(Im(i,j));

n1=n1+1;

else

S0=S0+double(Im(i,j));

n0=n0+1;

end

end

end

T0=S0/n0;

T1=S1/n1;

if abs(T-((T0+T1)/2))<0.1

break;

else

T=(T0+T1)/2;

end

end

count

T

K=find(J

J(K)=0;

K=find(J>=T);

J(K)=255;

figure(3)

imshow(J)

title(' 图像二值化');

B=medfilt2(J,[5,1]);

figure(4)

imshow(B)

title('中值滤波后图像');

[y0,x0]=size(B);

BW = edge(B,'log');

figure(5);imshow(BW);title('边缘检测图像')

%function code = barcode(pic) %条形码识别

check_left = [13,25,19,61,35,49,47,59,55,11;... %左边数据编码,奇39,51,27,33,29,57, 5,17, 9,23]; %左边数据编码,偶check_right = [114,102,108,66,92,78,80,68,72,116]; %右边数据编码first_num = [31,20,18,17,12,6,3,10,9,5]; %第一位数据编码

bar = imread('019.bmp'); %读输入条形码图片

bar_Gray = rgb2gray(bar); %将RGB图片转换灰度图

[a_hist x] = imhist(bar_Gray);

hist_max = [];

if a_hist(1)>a_hist(2)

hist_max = [hist_max 1];

end

x = max(x);

for i=2:x

if a_hist(i)>a_hist(i-1) && a_hist(i)>a_hist(i+1)

hist_max = [hist_max i];

end

end

if a_hist(x)

hist_max = [hist_max x+1];

end

[m,n] = size(hist_max);

k = 0;

max_1 = 0;

max_2 = 0;

for i=1:n

if k

k = a_hist(hist_max(i));

max_1 = hist_max(i);

end

end

temp = a_hist(max_1);

a_hist(max_1) = 0;

k = 0;

for i=1:n

if k

k = a_hist(hist_max(i));

max_2 = hist_max(i);

end

end

a_hist(max_1) = temp;

if max_1>max_2

k = max_1;

max_1 = max_2;

max_2 = k;

end

T = max_1;

k = a_hist(max_1);

for i=max_1:max_2

if k>a_hist(i)

k = a_hist(i);

T = i;

end

end

[m,n] = size(bar_Gray); %求灰度图的大小

for i=1:m %对图像进行二值化处理

for j=1:n

if bar_Gray(i,j)>T %选择适当的阈值进行二值化处理

bar_10(i,j) = 1;

else

bar_10(i,j) = 0;

end

end

end

%imshow(bar_10);

l = 0; %检测59根条形码

for i=1:m

k = 1;

l = l+1;

for j=1:n-1

if bar_10(i,j)~=bar_10(i,j+1) %比较同一行相邻两点的颜色是否一致%bar_x(l,k) = i;

bar_y(l,k) = j; %记录转折点的纵坐标

k = k+1; %准备记录下一个数据点

end

if k>61 %点数大于60,该行应该删掉

l = l-1;

break

end

end

if k<61 %点数小于60,该行应该删掉

l = l-1;

end

end

[m,n] = size(bar_y);

if m<=1 %查看条形码是否有效

code = '0';

fprintf(1,'GameOver!\n');

return

end

for i=1:m %计算每根条形码的宽度

for j=1:n-1

bar_num(i,j) = bar_y(i,j+1) - bar_y(i,j);

if bar_num(i,j)<0

bar_num(i,j) = 0;

end

end

end

bar_sum = sum(bar_num)/m; %求每根条形码宽度的平均值k = 0;

for i=1:59 %计算59根条形码的总宽度

k = k + bar_sum(i);

end

k = k/95; %计算单位条形码的宽度

for i=1:59 %计算每根条形码所占位数

bar_int(i) = round(bar_sum(i)/k);

end

k = 1;

for i=1:59 %将条形码转换成二进制数

if rem(i,2)

for j=1:bar_int(i) %黑色条用1表示

bar_01(k) = 1;

k = k+1;

end

else

for j=1:bar_int(i) %白色条用0表示

bar_01(k) = 0;

k = k+1;

end

end

end

if ((bar_01(1)&&~bar_01(2)&&bar_01(3))... %判断起始符是否正确

&&(~bar_01(46)&&bar_01(47)&&~bar_01(48)&&bar_01(49)&&~bar_01(50))... %判断中间分隔符是否正确

&&(bar_01(95)&&~bar_01(94)&&bar_01(93))) %判断终止符是否正确l = 1;

for i=1:6 %将左侧42位二进制数转换为十进制数

bar_left(l) = 0;

for k=1:7

bar_left(l) = bar_left(l)+bar_01(7*(i-1)+k+3)*(2^(7-k));

end

l = l+1;

end

l = 1;

for i=1:6 %将右侧42位二进制数转换为十进制数

bar_right(l) = 0;

for k=1:7

bar_right(l) = bar_right(l)+bar_01(7*(i+6)+k+1)*(2^(7-k));

k = k-1;

end

l = l+1;

end

end

num_bar = '';

num_first = 0;

first = 2;

for i=1:6 %从左边数据编码表中查出条形码编码数字

for j=0:1

for k=0:9

if bar_left(i)==check_left(j+1,k+1)

num_bar = strcat(num_bar , num2str(k));

switch first %记录左边数据的奇偶顺序

case 2

first = j;

break;

case 1

num_first = num_first + j*(2^(6-i));

break;

case 0

num_first = num_first + ~j*(2^(6-i));

break;

otherwise

break;

end

end

end

end

end

for i=1:6 %从右边数据编码表中查出条形码编码数字for j=0:9

if bar_right(i)==check_right(j+1)

num_bar = strcat(num_bar , num2str(j));

end

end

end

for i=0:9 %从第一位数据编码表中查出第一位数字if num_first==first_num(i+1)

num_bar = strcat(num2str(i) , num_bar);

break;

end

end

if numel(num_bar)~=13

fprintf(1,'Please Turn It Around!\n');

return

end

check_code = 0;

for i=1:12 %计算校验码

if rem(i,2)

check_code = check_code + str2num(num_bar(i));

else

check_code = check_code + str2num(num_bar(i))*3;

end

end

check_code = rem(check_code,10);

if check_code>0

check_code = 10 - check_code;

end

if check_code==str2num(num_bar(13)) %判断校验码是否正确code = num_bar

else

fprintf(1,'Please Turn It Around!\n');

return

end

关于条码原理及类型

关于条码原理及类型 一、一维码和二维码的原理 1.一维码原理 1)由条和空组成,利用条与空对光的反射率的不同的原理来识读 2)携带的信息量很有限,一般只能携带数字、符号、字母 2.二维码原理 1)由某种特定的几何图形按一定规律在平面上分布的黑白相间的图形 2)识别原理是图像扫描,所以二维码是不需要打印出来就可以直接读取 3)二维码携带的信息量很大,除数字、符号、字母还可携带汉字信息 二、一维和二维扫描头的区别 1.二维是基于图像扫描,所以二维扫描头是带拍照功能 2.二维扫描头也可以扫描一维条码 3.二维扫描头的识别速度现在跟一维的差距越来越小,体验上可以忽略 三、常见条码类型 1.常见一维码制 EAN-13、Code 128、Code 39、Interleaved 2 of 5、UPC-A、UPC-E、EAN-8、Code 93、Code 11、Codabar、Discrete 2 of 5、Chinese 2 of 5、MSI、RSSI等 2.常见二维码制 QRCode、PDF417、DataMatrix、Aztec Code、MaxiCode、MicroPDF417、OCR-A、OCR-B、MiroQRTCIF Linked Code 39(TLC 39)、Inverse 2D、汉信码、龙贝码 四、常见问题条码及应对方案

现象一、:以上三类条码会出现无法扫描的情况 解决方法:东集手持终端扫描景深,当条码读取不灵敏的时候,先确认是否在LED光源下读取,或者移到的别到环境再读取。若仍无法读取,将手持终端的安全级别调为1,关闭双线冗余设置。(不同型号的手持终端规格参数及数据采集功能选件各不相同,实际情况以https://www.360docs.net/doc/0f7012361.html,公布为准!) 现象二:条码校验位出错,由于有些软件不是特别规范,制作出来的条码,在对应的校验位上出错,而如果扫描头需要校验的话会导致无法读取 解决方法: 1.按照规范重新生成条码 2.关闭扫描头校验功能,但会有一定的误码率 3.提醒客户条码不规范 现象三:条码内容读出来少一位或者多一位 解决方法: 1.先打开条码类型显示,确认条码类型 2.进入相应的条码类型,开启和关闭校验码

条形码识别

HEFEI UNIVERSITY 系别电子信息与电气工程系 专业电气信息类 班级电子(2)班 完成时间 2012-11-04 姓名学号周峰 0905073012

基于MATLAB的一维条码识别 摘要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量 大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的条码的识别尤为重要。 不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,图像的预处理包括图像分割,图像滤波等,良好的图像处理将对后面实现正确译码有重大贡献;第二部分就是对预处理后的条码图像进行译码,我们根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。借助于Matlab软件的功能我们完成这次译码工作。 关键词:图像处理条形码识别 EAN-13 图像滤波 Matlab

一、引言 1.1 条码技术概述 条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。 通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条形码是迄今为止最经济、实用的一种自动识别技术。 1.2Matlab应用图像处理 Matlab图像处理工具是由Math Works公司推出的用于数值计算的有力工具,它具有相当强大的矩阵运算和操作功能,力求人们摆脱繁杂的程序代码。Matlab图像处理工具箱提供了丰富的图像处理函数,灵活运用这些函数可以完成大部分图像处理工作。图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。主要包括下面几方面: (1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp,tif、tiff、pcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。 (2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。 (3) 图像变换。MATLAB提供了一维和二维离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT),以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。 二、一维条码技术 2.1 一维条码符号的结构 通常任何一个完整的条码是由两侧空白区、起始符、数据字符、校验符、终止符组成,以一维条码而言,其排列方式通常如表2-1所示: 表2-1 条码符号结构

条形码特点分类及扫描原理

条形码特点分类及扫描原理 条码技术最早产生在风声鹤唳的二十年代,诞生于Westinghouse的实验室里。那时候对电子技术应用方面的每一个设想都使人感到非常新奇。他的想法是在信封上做条码标记,条码中的信息是收信人的地址,就象今天的邮政编码。为此Kermode发明了最早的条码标识,设计方案非常的简单,即一个“条”表示数字“1”,二个“条”表示数字“2”,以次类推。然后,他又发明了由基本的元件组成的条码识读设备:一个扫描器(能够发射光并接收反射光);一个测定反射信号条和空的方法,即边缘定位线圈;和使用测定结果的方法,即译码器。 20世纪80年代中期,我国一些高等院校、科研部门及一些出口企业把条码技术的研究和推广应用逐步提到议事日程。一些行业,如图书馆、邮电、物资管理部门和外贸部门也已开始使用条码技术。1991年,4月9日,中国物品编码中心正式加入了国际物品编码协会,国际物品编码协会分配给中国的前缀码为“690、691、692”。许多企业获得了条码标记的使用权,使中国的大量商品打入了国际市场,给企业带来了可观的经济效益。 条码技术广泛应用于商业、邮政、图书管理、仓储、工业生产过程控制、交通等领域,它是在计算机应用中产生并发展起来的,具有输入快、准确度高、成本低、可靠性强等优点。条码技术是实现POS系统、EDI、电子商务、供应链管理的技术基础,是物流管理现代化的重要技术手段。条码技术包括条码的编码技术、条码标识符号的设计、快速识别技术和计算机管理技术,它是实现计算机管理和电子数据交换不可少的前端采集技术。 条形码的分类 条码按照不同的分类方法、不同的编码规则可以分成许多种,现在已知的世界上正在使用的条码有250多种。条码的分类主要依据条码的编码结构和条码的性质来决定。例如,按条码的长度来分,可分为定长和非定长条码;按排列方式分,可分为连续型和非连续型条码;从校验方式分,又可分为自校验和非自校验型条码等。 条码可分为一维条码和二维条码。一维条码是通常我们所说的传统条码。一维条码按照应用可分为商品条码和物流条码。商品条码包括EAN条码和UPC条码,物流条码包括128条码、ITF条码、39条码、库德巴条码等。二维条码根据构成原理、结构形状的差异,可分为两大类型:一类是行排式二维条码(2D stacked bar code);另一类是矩阵式二维条码(2D matrix bar code)。 条形码技术的特点 条码技术是电子与信息科学领域的高新技术,所涉及到的技术领域较广,是多项技术结合的产物,经过多年的长期研究和实践应用,现已发展成为较成熟地实用技术。 在信息输入技术中,采用的自动识别技术种类很多,条码作为一种图形识别技术与其它技术相比有如下特点: (1)简单。条码符号制作容易,扫描操作简单易行。 (2)信息采集速度快。普通计算机键盘录入速度是200字符/分钟,而利用条码扫描的录入信息的速度是键盘录入的20倍。 (3)采集信息量大。利用条码扫描,依次可以采集几十位字符的信息,而且可以通过选择不同码制的条码增加字符密度,使采集的信息量成倍增加。 (4)可靠性强。键盘录入数据,误码率为三百分之一,利用光学字符识别技术,误码率约为万分之一。而采用条码扫描录入方式,误码率仅为百万分之一,首读率可达98%以上。 (5)灵活、使用。条码符号作为一种识别手段可以单独使用,也可以和有关设备组成识

看条形码识别红酒产地

看条形码识别红酒产地 很多消费者来信说这个进口红酒太乱了,洋文不懂,跟本搞不懂那里产,几十个国生产葡萄酒,还有些国内灌装的如何分辨?红酒信息网简单说一些通过条码看产地的办法。 商品条形码是指由一组规则排列的条、空及其对应字符组成的标识,用以表示一定的商品信息的符号。 目前世界上常用的码制有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。 EAN-13通用商品条形码一般由前缀部分、制造厂商代码、商品代码和校验码组成。商品条形码中的前缀码是用来标识国家或地区的代码,赋码权在国际物品编码协会,如300-379代表法国,930-939代表澳大利亚,00-09代表美国,800-839代表意大利,840-849代表西班牙、400-440代表德国由表中可知,如果是法国正宗的原瓶红酒,其条码应该是300——379开头,中国的条码是690-695开头,如果条码是690-695开头又称为进口酒的,不管是那国的,一定是国内灌装的啦(进口国外原酒或部分原酒勾兑)。 以下为国际条形码前缀对照表: 前缀码编码组织所在国家( 或地区)/ 应用领 域 前缀码 编码组织所在国家( 或地区)/ 应用领 域 000~019 030~039 060~139 美国627 科威特 020~029 040~049 200~299 店内码628 沙特阿拉伯050~059 优惠券629 阿拉伯联合酋长国300~379 法国640~649 芬兰 380 保加利亚690~695 中国 383 斯洛文尼亚700~709 挪威 385 克罗地亚729 以色列 387 波黑730~739 瑞典 400~440 德国740 危地马拉 450~459 490~499 日本741 萨尔瓦多 460~469 俄罗斯742 洪都拉斯 470 吉尔吉斯斯坦743 尼加拉瓜 471 中国台湾744 哥斯达黎加 474 爱沙尼亚745 巴拿马 475 拉脱维亚746 多米尼加 476 阿塞拜疆750 墨西哥 477 立陶宛754~755 加拿大 478 乌兹别克斯坦759 委内瑞拉 479 斯里兰卡760~769 瑞士 480 菲律宾770 哥伦比亚 481 白俄罗斯773 乌拉圭 482 乌克兰775 秘鲁

条形码自动识别技术

条形码自动识别技术 条形码自动识别技术2010-04-09 15:03条码本身不是一套系统,而是一 种十分有效的识别工具它提供准确及时的信息来支持成熟的管理系统。条码使 用能够逐渐地提高准确性和效率,节省开支并改进业务操作。 条码是由不同宽度的浅色和深色的部分(通常是条形)组成的图形,这些部 分代表数字、字母或标点符号。将由条与空代表的信息编码的方法被称作符号法。符号法有许多种。下面列举的是一些最常使用的符号法。 通用产品码(UPC码)和它在世界范围的相似物国际物品码(EAN码)在零售业被非常广泛地使用,它们正在工业和贸易领域中被广泛地接受。UPC/EAN码是 一种全数字的符号法(它只能表示数字)。 在工业、药物和政府应用中最浒的是39码,糨是一种字母与数字混合符号法,它具有自我检验功能,能够提供不同的长度和较高的信息安全性。它被一 些工斑马打印机业贸易组织所接受,包括汽车工业活动组织(AIAG)、保健工业 贸易通讯委员会(HIBCC)和美国国防部(DOD)。工业应用包括追踪生产过程、仓 库库存,还有识别影印领土这样的特别应用。作为一种字母与数字混合符号法,39码除有数字外,还能够支持大写字母并有一些标点符号。 与39码相比,128码是一种更便捷的符号法,糨能够代表整个ASCII字母 系列。它提供一种特殊的"双重密度"的全数字模式并有高信息安全性能。128 码正在逐渐代替39码。HIBCC和统一编码委员会(UCC)已接受一种特殊版本的128码(UCC/EAN-128)用来进行送货箱的标记。在ANSI的送货箱标记标准中也 承认UCC/EAN-128码。在需要将序号、批量号和其它有关信息输入到产品标签 上的应用中使用UCC/EAN-128码的趋势有进一步的发展。 两维码符号法正在跟进 两维码符号法是条码发展的下一步骤。它们比传统的条形码的密度高得多,所以能提供较高的信息完整程度。因为它们能够将更多的信息放入更小的面积内,所以它们为许多不同的应用所接受。

条形码的识别图像处理报告解析

华侨大学厦门工学院图像通信课程设计报告 题目:基于数字图像处理的条形码识别专业、班级: 学生姓名: 学号: 指导教师: 分数:

目录 一、设计任务及要求 (3) 二、设计原理及设计方案 (3) 2.1、条码译码原理 (3) 2.2条码译码方案 (4) 三、设计步骤与结果 (10) 3.1设计步骤 (10) 3.2结果分析 (11) 四、课程设计总结 (15) 五、心得体会 (15) 六、参考文献 (16) 附录一、源程序 (17) 附录二、成绩评定表 (25)

一、设计任务及要求 本课程设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB 实现。其中图像处理部分是条码识别重要的前期工作,利用MATLAB 强大的图象处理工具箱实现图像的读入、加噪仿真、滤波、二值化处理等工作,最终得到高质量的二值化图像。条码识别就是在二值图像的基础上实现,二值图像的质量直接关系到条码能否正确识读。 二、设计原理及设计方案 2.1、条码译码原理: 如图1-1所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中1C 、 2C 、3C 、4C 表示每个字符中四个相邻条、空的宽度,T 表示一个字符的宽度。 图1-1 EAN-13条码宽度的定义 设一个字符中单位模块的宽度为n ,则单位模块的宽度: n=T /7 T=1C +2C +3C +4C 由于条码条、空宽度1C 、2C 、3C 、4C 已知,设条码条、空分别占单位模块的个数为i m ,则: i m =i C /n(其中i 取1、2、3、4) 因此,由mi 可知道条码的编码。例如: (1)若1m =2、2m =2、3m =2、4m =1; 条码的排列为条-空-条-空,则可知条码编码为1100110,是右侧偶性字符1;

了解条码的基本原理

了解条码的基本原理 对一个专业人员来说,放弃因太肤浅而没有任何用的条码教育也许是一件容易的事。我能够同意“一知半解是危险的事”的说法。然而,对任何一门科学来说,学生总是要从某一点开始学起:这个道理在任何地方都是正确的。现在,许多有关根本不同内容的课程,如生产工程和零售市场,都包括了条码的内容。使用条码技术进行有效的信息收集支持着工商业的许多方面的工作。 许多年以前,我带领一组学生到一个有名的自选超级市场去参观那里的装有条码扫描设备的电子售货系统,了解这个系统可以完成多少工作。这次参观并没有达到显示这个电子售货系统的成功之处的目的。每件事都出差错。该市场采用的是EAN13码,这是经常出现的问题。它使用的是质量很差的计算机打印机,条码印在很小的标签上,由没有使用条码经验的人员贴在商品上。许多标签不是被贴在弯曲的表面,就是被贴在没有支撑面的包装上。如盆装植物。更糟糕的是,他们使用的是接触式的笔式扫描器。当条码不能破扫描识读时(这种情况经常出现),收款员就要将那十三个号码用键盘输入。非常不幸一个好的主意没有得到好的结果。总结起来有以下几个问题:使用的条码标签的种类不对,标签的粘贴不对,扫描器的种类不对,为这种应用选择的条码种类不对。令人欣慰的是现在这种糟糕的情况不常发生,但是正确地教授条码的生产和使用的基础原理却更为重要。越来越多的大公司将条码数据收集技术作为电子贸易体制这个金字塔的基础。进一步讲,由于条码系统的价格的下降,也将条码扫描技术带进许多小型企业的领域。 出现在计算机方面的问题也同样逐渐出现在条码系统中。随着硬件和软件的价格的下降以及市场的扩展,没有技术背景的使用者们自行组装自己的条码系统的可能性提高了。例如,固定式的激光扫描器的价格在十年中下降了近十倍,大多数条码软件随扫描器一起出售。这种自己动手的机会的增加本身带有制造不幸事件的因素,除非使用条码进行信息收集的基本原理为使用者所理解并运用于特定的环境中。 条码的基本原理是什么?确定对这个条码系统的信息收集的要求是什么,以及确定相对一般规律而言的例外情况。确定哪种条码适用于这种信息收集环境。了解给要被扫描的物品贴上标签的问题和机会。了解对要求记录的物品进行扫描时的问题和机会。在发问之前,搞清你可以从一个专业公司那里得到什么样的建议。记住,如果你不能对物品进行扫描,你的投资就是浪费。

《条形码自动识别原理及设计手册》(51单片机硬件设计+C语言程序)

《条形码自动识别原理及设计手册》基于51单片机的扫描器设计+ 电路图+ C语言程序 本手册主要内容是讲述一维条形码的识别原理,重点讲述扫描器的硬件设计原理及软件程序。通过本手册的学习,主要让读者掌握如何设计出一个条形码扫描器,并能采集、识别、在PC上显示条码。本手册适合从事相关毕业设计研究的本科生或者适合大学本科课程设计。 目录 前言I 第1章绪论 1 1.1 条形码产生的背景及现实意义 1 1.2 条形码技术的产生和发展 2 1.2.1 条形码的历史 2 1.2.2 条码技术的发展现状4 1.3 中国条形码自动化技术的应用现状和发展趋势 5 1.4 条形码技术的研究对象 7 第2章条形码的编码原理9 2.1 条形码的基本概念及其符号结构 9 2.2 条形码的编码方法 12 2.3 几种常见的码制13 第3章光电转换器设计21 3.1 识读原理 21 3.2 光电转换器及其基本原理22 3.3 光电扫描器的结构 25 第4章条形码译码器硬件设计28 4.1 译码器28 4.2 数据输入接口电路及脉宽测量方法31 4.3 条形码译码器与计算机的串行口连接 35 第5章条形码译码器软件设计39 5.1 单片机寄存器的预编译处理 39 5.2 PC通信时特殊寄存器的设置41 5.3 程序设计流程图43 第6章硬件电路图和程序46 6.1 扫描器制作步骤46 6.2 扫描器硬件电路图 47 6.3 扫描器C语言译码识别程序48 附录57 成品的图片:57 本书详细内容的网址链接:https://www.360docs.net/doc/0f7012361.html,/item.htm?id=150********

手工制作的成品图

条码识别技术

1、什么是自动识别技术 自动识别技术就是应用一定的识别装置,通过被识别物品和识别装置之间的接近活动,自动地获取被识别物品的相关信息,并提供给后台的计算机处理系统来完成相关后续处理的一种技术。 自动识别技术将计算机、光、电、通信和网络技术融为一体,与互联网、移动通信等技术相结合,实现了全球范围内物品的跟踪与信息的共享,从而给物体赋予智能,实现人与物体以及物体与物体之间的沟通和对话。 举例说明。商场的条形码扫描系统就是一种典型的自动识别技术。售货员通过扫描仪扫描商品的条码,获取商品的名称、价格,输入数量,后台POS 系统即可计算出该批商品的价格,从而完成顾客的结算。当然,顾客也可以采用银行卡支付的形式进行支付,银行卡支付过程本身也是自动识别技术的一种应用形式。 按照应用领域和具体特征的分类标准,自动识别技术可以分为如下七种。 1.条码识别技术 2.生物识别技术 3.图像识别技术 4.磁卡识别技术 5.IC卡识别技术 6.射频识别技术(RFID) 7.光学字符识别技术(OCR) 2、举例说明你所见到的条码识别技术是如何组成以及如何识别的 一维条码是由平行排列的宽窄不同的线条和间隔组成的二进制编码。比如:。这些线条和间隔根据预定的模式进行排列并且表达相应记号系统的数据项。宽窄不同的线条和间隔的排列次序可以解释成数字或者字母。可以通过光学扫描对一维条码进行阅读,即根据黑色线条和白色间隔对激光的不同反射来识别。 二维条码技术是在一维条码无法满足实际应用需求的前提下产生的。比如:。 由于受信息容量的限制,一维条码通常对物品的标示,而不是对物品的描述。 二维条码能够在横向和纵向两个方向同时表达信息,因此能在很小的面积内表达大量的信息。 (1)物流条码在物流各环节中的应用 物流条码在包装环节的应用

条形码识别技术

1.条码技术概述 条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。 条码技术具有以下几个方面的优点: 1、可靠准确。有资料可查键盘输入平均每300个字符一个错误,而条码输入平均每15000个字符一个错误。如果加上校验位出错率是千万分之一。 2、数据输入速度快。与键盘输入相比较,用条形码扫描读入电脑的速度大约是键盘输入的100倍,并且能够实现“即时数据输入”,一个每分钟打90个字的打字员1.6秒可输入12个字符或字符串,而使用条码,做同样的工作只需0.3秒,速度提高了5倍。 3、经济便宜。与其它自动化识别技术相比较,推广应用条码技术,所需费用较低。 4、灵活、实用。条码符号作为一种识别手段可以单独使用,也可以和有关设备组成识别系统实现自动化识别,还可和其他控制设备联系起来实现整个系统的自动化管理。同时,在没有自动识别设备时,也可实现手工键盘输入。 5、自由度大。识别装置与条码标签相对位置的自由度要比OCR大得多。条码通常只在一维方向上表达信息,而同一条码上所表示的信息完全相同并且连续,这样即使是标签有部分缺欠,仍可以从正常部分输入正确的信息。 6、设备简单。条码符号识别设备的结构简单,操作容易,无需专门训练。 7、易于制作,可印刷,称作为“可印刷的计算机语言”。条码标签易于制作,对印刷技术设备和材料无特殊要求。 正因为条码具有上述迅速,准确,廉价,使用方便,适应性强等优点,克服了其他输入方法的不足,所以他在各个行业中的发展可谓突飞猛进,最初应用

相似边距离条形码识别技术

一维条形码生成与识别技术 一、引言 条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术。条形码是由宽度不同、反射率不同的条(黑色)和空(白色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。 二、EAN-13条形码简介 一维条码主要有EAN和UPC两种,其中EAN码是我国主要采取的编码标准。EAN是欧洲物品条码(European Article Number Bar Code)的英文缩写,是以消费资料为使用 对象的国际统一商品代码。只要用条形码阅读器扫描该条码,便可以了解该商品的名称、型号、规格、生产厂商、所属国家或地区等丰富信息。 EAN通用商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块 的宽度为0.33毫米。在条码符号中,表示数字的每个条码字符均由两个条和两个空组成,它是多值符号码的一种,即在一个字符中有多种宽度的条和空参与编码。条和空分别由1~4个同一宽度的深、浅颜色的模块组成,一个模块的条表示二进制的“1”,一个模块的空表示二进制的“0”,每个条码字符共有7个模块。即一个条码字符条空宽度之和为单位元素的7倍,每个字符含条或空个数各为2,相邻元素如果相同,则从外观上合并为一个条或空,并规定每个字符在外观上包含的条和空的个数必须各为2个,所以EAN码是一种(7,2)码。 EAN条码字符包括0~9共10个数字字符,但对应的每个数字字符有三种编码形式, 左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。这样十个数字将有30种编码,数据字符的编码图案也有三十种,至于从这30个数据字符中选哪十个字符要视具体情况而定。在这里所谓的奇或偶是指所含二进制“1”的个数为偶数或奇数[2]。

基于摄像头的条码识别技术的研究及实现

摘要 随着时代的发展,21世纪已经成为信息时代,科学技术得到了空前的进步。由于大量的生产生活的需要,自动识别技术应运而生,从个个方面影响了人们的生活生产方式,对人们带来了极大便利。二维码技术由于信息容量大、操作方面、保密性高等优点而逐渐被各行各业广泛使用。在此背景之下,本文将对摄像头的条码识别技术进行深入研究。 本文主要分为三个部分来对条码识别进行讨论。第一部分,介绍了本课题的研究背景,以及国内外关于条码研究的进展。第二部分,介绍了条码技术相关知识。具体包括一维条码介绍、二维条码介绍以及二维条码的编码规范。第三部分,详细介绍了二维条形码的识别装置设计。分别从二维码识读原理、CMOS图像传感器的介绍入手,然后就基于OV7640的二维码识别装置做了详细介绍。 关键词摄像头识别条码识别 CMOS图像传感器 Research and realization of barcode

recognition technology based on camera ABSTRACT With the development of The Times, the 21st century has become an information age, and science and technology have made unprecedented progress. Due to the large quantity of production and daily life needs, automatic identification technology emerges at the right moment, which has brought great convenience to people from all aspects of impact and people's life and production mode. The 2d barcode technology is widely used in all walks of life due to its advantages such as large information capacity, operation aspect, high privacy and so on. In this context, this paper will carry out in-depth research on the camera bar code identification technology. This paper is divided into three parts to discuss bar code identification. The first part introduces the research background of this subject and the progress of barcode research at home and abroad. The second part introduces the knowledge of barcode technology. It includes one-dimensional barcode introduction, 2d barcode introduction and 2d barcode coding specification. The third part introduces the design of the identification device of 2d barcode. This paper starts with the introduction of two-dimensional code reading principle and CMOS image sensor, and then makes a detailed introduction based on the two-dimensional code recognition device of OV7640. Key words:Camera identification;Bar code identification;CMOS image sensor

解读几种条码扫描器的工作原理

工业固定式条码扫描识读 ——摘选自邦越条码知识 在制造业生产线上自动控制或跟踪在制品,或者在传送带上自动分拣物品,都需要准确可靠而无人值守的条码识别手段。固定式条码扫描器可以有各种不同的外型尺寸、扫描形式、识读分辨率、扫描距离、扫描区域、识读景深、安装方式和接口方式,也可以组成条码扫描网络,成组工作,再配合传感器和多种高级智能分析技术,能够完成各种环境下任何复杂的条码自动识别工作,并将数据或信号传送到计算机或PLC。具体的解决方案基于具体的应用环境和要求以及约束条件。 柜台式条码扫描识读 在零售连锁店、便利店、书店或药店,收银员通常要将商品拿到柜台上来进行条码扫描。台式条码扫描器结构紧凑,通常安放在收银柜台上,与POS系统连接。它通过较大的扫描窗形成多条交叉的网状扫描线,从而实现全方向条码扫描。操作者不需要仔细地调整条码的方向,也能够快速方便地识读商品条码,加快结帐过程。 手持式条码扫描识读 手持式条码扫描器是最常用和最灵活的条码扫描识别设备,一般有激光式,线阵CCD式和矩阵CCD式。它们适合于扫描体积和形状不一的物品,操作者可在固定站点处工作,也可接至手持数据终端或车载数据终端移动工作。需要识读的条码码制(一维或二维,堆叠式

或矩阵式),扫描距离,识读景深,识读分辨率,工业级别,接口方式,外形结构,应用场合以及反馈信息的方式等因素,是选择手持式条码扫描器时必须要考虑的。 无线移动条码扫描识读 一般来说,手持式条码扫描器需要通过电缆连接到PC、POS或其它固定终端上才能工作。在多数情况下,这种工作模式是可以接受的。但是,在有些情况下,操作人员需要在较大的范围内进行条码扫描工作,通讯电缆则成为极大的限制条件。无线条码扫描器使用大容量可充电电池,以无线通讯方式代替电缆连接,摆脱了与固定计算机之间的距离限制,并方便移动工作。无线条码扫描器除了可以进行点到点通讯,即一个无线条码扫描器通过一个无线通讯基座与计算机通讯,还可实现多点到一点通讯,即多个条码扫描器通过一个无线通讯基座与计算机通讯,将多个条码扫描器以无线方式集中连接到计算机的同一个通讯接口。 二维条码的重要特点是编码密度很高,特别适合小尺寸产品的自动控制和跟踪管理,如印刷电路板和电子元器件制造过程。固定式二维条码识读器采用矩阵式CCD 图象技术,将照明、图形获取、图象处理、解码和通讯等模块集成在一起,能够快速方便地以全方向方式识别一维条码、堆叠式二维条码(如PDF417)和矩阵式二维条码(如Datamatrix和QR码)。由于结构非常紧凑并且具有全方向识别的特点,固定式二维条码识读器很容易结合到自动生产线当中或自动设备中。

条形码识别系统

一、条形码识别原理 条形码的识别原理由于不同颜色的物体,其反射的可见光的波长不同,白色物体能反射各种波长的可见光,黑色物体则吸收各种波长的可见光,所以当条形码扫描器光源发出的光经光阑及凸透镜1后,照射到黑白相间的条形码上时,反射光经凸透镜2聚焦后,照射到光电转换器上,于是光电转换器接收到与白条和黑条相应的强弱不同的反射光信号,并转换成相应的电信号输出到放大整形电路.白条、黑条的宽度不同,相应的电信号持续时间长短也不同.但是,由光电转换器输出的与条形码的条和空相应的电信号一般仅10mV左右,不能直接使用,因而先要将光电转换器输出的电信号送放大器放大.放大后的电信号仍然是一个模拟电信号,为了避免由条形码中的疵点和污点导致错误信号,在放大电路后需加一整形电路,把模拟信号转换成数字电信号,以便计算机系统能准确判读.整形电路的脉冲数字信号经译码器译成数字、字符信息.它通过识别起始、终止字符来判别出条形码符号的码制及扫描方向;通过测量脉冲数字电信号0、1的数目来判别出条和空的数目.通过测量0、1信号持续的时间来判别条和空的宽度.这样便得到了被辩读的条形码符号的条和空的数目及相应的宽度和所用码制,根据码制所对应的编码规则,便可将条形符号换成相应的数字、字符信息,通过接口电路送给计算机系统进行数据处理与管理,便完成了条形码辨读的全过程. 图解条形码无线扫描器设计原理 摘要:本文介绍了一种工程实用条码扫描器硬件系统设计。该扫描器能快速扫描一维或二维条码,同时还具有本地显示、存储信息、对外进行无线通讯等功能。 关键词:条形码;无线传输;mPSD3254BV单片机 在当今工业社会向信息社会,工业经济向知识经济发展过程中,自动识别技术正发挥着越来越重要的作用。在需要物品识别,数据扫描,信息登陆的业务领域,使用自动识别技术,可提高对物品及相关信息进行管理的效率和可靠性。条码数据扫描器正是为此设计的。 本无线扫描器以单片机mPSD3254BV 为核心,通过扫描子系统可以扫描一维或二维条型码,键盘和显示系统方便用户进行人机交流,无线传送模块可以将现场采集到的数据发送到其它设备,同时本扫描器也能存储上万条数据信息,整个系统采用锂电池供电,可以连续工作40小时,当采集数据异常状态时,系统会自动蜂鸣,振动提醒用户。系统结构如图1如示。

条码基本原理

条码基本原理 对一个专业人员来说,放弃因太肤浅而没有任何用的条码教育也许是一件容易的事。我能够同意“一知半解是危险的事”的说法。然而,对任何一门科学来说,学生总是要从某一点开始学起:这个道理在任何地方都是正确的。现在,许多有关根本不同内容的课程,如生产工程和零售市场,都包括了条码的内容。使用条码技术进行有效的信息收集支持着工商业的许多方面的工作。 许多年以前,我带领一组学生到一个有名的自选超级市场去参观那里的装有条码扫描设备的电子售货系统,了解这个系统可以完成多少工作。 这次参观并没有达到显示这个电子售货系统的成功之处的目的。每件事都出差错。该市场采用的是EAN13码,这是经常出现的问题。它使用的是质量很差 的计算机打印机,条码印在很小的标签上,由没有使用条码经验的人员贴在商品上。许多标签不是被贴在弯曲的表面,就是被贴在没有支撑面的包装上。如盆装植物。更糟糕的是,他们使用的是接触式的笔式扫描器。当条码不能破扫描识读 时(这种情况经常出现),收款员就要将那十三个号码用键盘输入。 非常不幸一个好的主意没有得到好的结果。总结起来有以下几个问题: 1、使用的条码标签的种类不对, 2、标签的粘贴不对, 3、扫描器的种类不对, 4、为这种应用选择的条码种类不对。 令人欣慰的是现在这种糟糕的情况不常发生,但是正确地教授条码的生产和使用的基础原理却更为重要。越来越多的大公司将条码数据收集技术作为电子贸易体制这个金字塔的基础。进一步讲,由于条码系统的价格的下降,也将条码扫描技术带进许多小型企业的领域。 出现在计算机方面的问题也同样逐渐出现在条码系统中。随着硬件和软件的价格的下降以及市场的扩展,没有技术背景的使用者们自行组装自己的条码系统的可能性提高了。例如,固定式的激光扫描器的价格在十年中下降了近十倍,大多数条码软件随扫描器一起出售。 这种自己动手的机会的增加本身带有制造不幸事件的因素,除非使用条码进行信息收集的基本原理为使用者所理解并运用于特定的环境中。

条码与自动识别技术

自动识别技术是信息数据自动识读、自动输入计算机的重要方法和手段,它是以计算机技术和通信技术的发展为基础的综合性科学技术。自动识别技术近几十年在全球范围内得到了迅猛发展,初步形成了一个包括条码技术、磁条(卡)技术、光学字符识别、系统集成化、射频技术、声音识别及视觉识别等集计算机、光、机电、通信技术为一体的高新技术学科。 当今信息社会离不开计算机,正是自动识别技术的崛起,提供了快速、准确地进行数据采集输入的有效手段,解决了由于计算机数据输入速度慢、错误率高等造成的“瓶颈”难题,因而自动识别技术作为一种革命性的高新技术,正迅速为人们所接受。 一、条码技术 说起自动识别技术就必然要提到条码,因为它在当今自动识别技术中占有重要的地位。自动识别技术的形成过程是与条码的发明、使用和发展分不开的。 条码是由一组规则排列的条和空、相应的数字组成,这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,也称码制,适用于不同的应用场合。 目前使用频率最高的几种码制是EAN、UPC、39码,交插25码和EAN128码,其中UPC条码主要用于北美地区,EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识。EAN128条码是由国际物品编码协会(EAN lnternational)和美国统一代码委员会(UCC)联合开发、共同采用的一种特定的条码符号。它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应特殊需要的应用方面,如库德巴码用于血库、图书馆、包裹等的跟踪管理、25码用于包装、运输和国际航空系统为机票进行顺序编号,还有类似39码的93码,它密度更高些,可代替39码。 上述这些条码都是一维条码。由于条码应用领域的不断拓展,对一定面积上的条码信息密度和信息量提出了更高的要求。为了更好地满足这种需求,一种新的条码编码形式——二维条码便应运而生了。从结构上讲,二维条码分为两类,其中一类是由矩阵代码和点代码组成,其数据是以二维空间的形态编码的,另一类是包含重叠的或多行条码符号,其数据以成串的数据行显示。重叠的符号标记法有CODE 49、CODE l6K和PDF417。 PDF是便携式数据文件(Portable data fI7e)的缩写,417则与多宽度代码有关,用来对字符编码。PDF417是由SymboI Technologies Inc,设计和推出的。重叠代码中包含了行与行尾标识符以及扫描软件,就可以从标签的不同部分获得数据,只要所有的行都被扫到就可以组合成一个完整的数据输入,所以这种码的数据可靠性很好,对PDF417而言,标签上污损或毁掉的部分高达50%时,仍可以读取全部数据内容。 矩阵代码如:Maxicode,Data Matrix,Code One,V ericode和DotCode A, 矩阵代码标签可以做得很小,甚至可以作成硅晶片的标签,因此适用于小物件。光学字符识别OCR 光学字符识别OCR已有三十多年历史,近几年又出现了图象字符识别ICR(Image Character Recognition)和智能字符识别ICR(Intelligent Charater Recognition),实际上这三种自动识别技术的基本原理大致相同。 OCR的三个重要的应用领域:办公室自动化中的文本输入;邮件自动处理;与自动获取文本过程相关的其它要求。这些领域包括:零售价格识读,定单数据输入、单证、支票和文件识读,微电路及小件产品上状态特特征识读等。由于在识别手迹特征方面的进展,目前探索在手迹分析及鉴定签名方面的应用。 三、磁条(卡)技术 磁条技术应用了物理学和磁力学的基本原理。对自动识别制造商来说,磁条就是一层薄薄的由定向排列的铁性氧化粒子组成的材料(也称为涂料),用树脂粘合在一起并粘在诸如纸或塑料这样的非磁性基片上。

条形码分类及特点

条形码 百科名片 条形码 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到了广泛的应用。 目录[隐藏] 一、条形码的历史 二、条形码的识别原理 三、条形码的优越性 四、条形码的扫描 五、条形码技术的优点 六、条形码的编码规则 七、条形码的码制区别 八、条形码的制作 一、条形码的历史 二、条形码的识别原理 三、条形码的优越性 四、条形码的扫描 五、条形码技术的优点 六、条形码的编码规则 七、条形码的码制区别 八、条形码的制作 ?九、商品条码: ?十、印刷制作条形码的要求 ?十一、二维条码运作模式 一、条形码的历史

条形码技术最早产生在风声鹤唳的二十世纪二十年代,诞生于威斯汀豪斯(Wes tinghouse)的实验室里。一位名叫约翰·科芒德(John Kermode) 条形码 性格古怪的发明家“异想天开”地想对邮政单据实现自动分检,那时候对电子技术应用方面的每一个设想都使人感到非常新奇。 他的想法是在信封上做条码标记,条码中的信息是收信人的地址,就象今天的邮政编码。为此科芒德发明了最早的条码标识,设计方案非常的简单(注:这种方法称为模块比较法),即一个“条”表示数字“1”,二个“条”表示数字“2”,以次类推。然后,他又发明了由基本的元件组成的条码识读设备:一个扫描器(能够发射光并接收反射光);一个测定反射信号条和空的方法,即边缘定位线圈;和使用测定结果的方法,即译码器。 科芒德的扫描器利用当时新发明的光电池来收集反射光。“空”反射回来的是强信号,“条”反射回来的是弱信号。与当今高速度的电子元器件应用不同的是,科芒德利用磁性线圈来测定“条”和“空”。就象一个小孩将电线与电池连接再绕在一颗钉子上来夹纸。科芒德用一个带铁芯的线圈在接收到“空”的信号的时候吸引一个开关,在接收到“条”的信号的时候,释放开关并接通电路。因此,最早的条码阅读器噪音很大。开关由一系列的继电器控制,“开”和“关”由打印在信封上“条”的数量决定。通过这种方法,条码符号直接对信件进行分检。 此后不久,科芒德的合作者道格拉斯·杨(Douglas Young),在科芒德码的基础上作了些改进。 科芒德码所包含的信息量相当的低,并且很难编出十个以上的不同代码。而杨码使用更少的条,但是利用条之间空的尺寸变化,就象今天的UPC条码符号使用四个不同的条空尺寸。新的条码符号可在同样大小的空间对一百个不同的地区进行编码,而科芒德码只能对十个不同的地区进行编码。 直到1949年的专利文献中才第一次有了诺姆·伍德兰(Norm Woodland)和伯纳德·西尔沃(Bernard Silver)发明的全方位条形码符号的记载,在这之前的专利文献中始终没有条形码技术的记录,也没有投入实际应用的先例。诺姆·伍德兰和伯纳德·西尔沃的想法是利用科芒德和杨的垂直的“条”和“空”,并使之弯曲成环状,非常象射箭的靶子。这样扫描器通过扫描图形的中心,能够对条形码符号解码,不管条形码符号方向的朝向。

相关文档
最新文档