条形码识别图像处理报告.docx

上传人:b****4 文档编号:836639 上传时间:2022-10-13 格式:DOCX 页数:23 大小:548.99KB
下载 相关 举报
条形码识别图像处理报告.docx_第1页
第1页 / 共23页
条形码识别图像处理报告.docx_第2页
第2页 / 共23页
条形码识别图像处理报告.docx_第3页
第3页 / 共23页
条形码识别图像处理报告.docx_第4页
第4页 / 共23页
条形码识别图像处理报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

条形码识别图像处理报告.docx

《条形码识别图像处理报告.docx》由会员分享,可在线阅读,更多相关《条形码识别图像处理报告.docx(23页珍藏版)》请在冰豆网上搜索。

条形码识别图像处理报告.docx

条形码识别图像处理报告

数字图像处理课程设计报告

目:

基于数字图像处理的条形码识别

 

学生姓名:

 

学号:

20110810010209

 

指导教师:

范自柱

 

、设计任务及要求

、设计原理及设计方案

2.1、条码译码原理

2.2条码译码方案…

三、设计步骤与结果

3.1设计步骤.…

3.2结果分析.…

四、课程设计总结

五、心得体会

六、参考文献

附录一、源程序

10

10

11

15

15

16

17

 

、设计任务及要求

本课程设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具

平台MATLAB实现。

其中图像处理部分是条码识别重要的前期工作,利用

MATLAB强大的图象处理工具箱实现图像的读入、加噪仿真、滤波、二值化处

理等工作,最终得到高质量的二值化图像。

条码识别就是在二值图像的基础上实现,二值图像的质量直接关系到条码能否正确识读。

二、设计原理及设计方案

2.1、条码译码原理:

如图1-1所示是EAN-13条码的一个字符。

条、空宽度的定义如下:

图中G、

C2、C3、C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。

下一宇符

当前宇符

T—

一匚1—C2一C3十C4-

fit

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

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

n=T/7

T=C1+C2+C3+C4

由于条码条、空宽度G、C2、C3、C4已知,设条码条、空分别占单位模块的个数为mi,则:

mi=Ci/n(其中i取1、2、3、4)

因此,由mi可知道条码的编码。

例如:

(1)若=2、m2=2>m3=2>m4=1;

条码的排列为条-空-条-空,则可知条码编码为1100110,是右侧偶性字符1;

 

(^2)^若m1=1、m?

=2、m3=1、口4=3;

条码的排列为空-条-空-条,则可知条码编码为0110111,是右侧奇性字符&

2.2条码译码方案:

方案一:

宽度测量法

在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而是通

过记录每个条或空的宽度中所含象素的个数来确定实际的条/空宽度,

从而确定

整个条码符号所代表的信息。

方案二:

平均值法

对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以

95(标准

宽度),求出单位模块所含的像素列宽,再分别测量各个条空的实际宽度

(此宽度

以单位宽度为单位计算)。

方案三:

相似边距离的测量方法

这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来

判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别。

前两种方案对条码图像的要求非常高,因为它们都是测量各元素符号的实际

宽度,然后根据查表法得到所代表的码值。

如果实际测量值与标准值存在一点偏

差,就不能实现正确译码。

而第三种方案正是有效的解决了这一问题,因此本文

采用相似边距离测量的方法来实现译码功能。

下面就简要说明一下这一方法。

由原理知,要想辨识一个条码,必须先测量条码条、空宽度G、C2、C3、

C4以及一个字符的宽度T。

条码图像经过预处理后得到的是二值图像,该点的

颜色信息在阈值变换时已经定义,用255和0表示白和黑色。

我们从条码的左边

开始取点,若遇到点的灰度值由255变到0即由点的颜色由白色变为黑色,则表

示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测

到空,记录下该点的坐标值。

这样经过扫描后得到各个颜色变化点的坐标,然后

将相邻两点的横坐标相减得到各个条、空的宽度.由前面所述EAN-13条码的组

成知:

一个由占3个条空的起始符、3个条空的终止符、4个条空的左侧数据符、

5个条空的中间分隔符、20个条空的右侧数据符、4个条空的校验符组成。

所以,

 

整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应

记录的坐标数为60个。

而对于有几何畸变的条码图像,例如条码污染、条码断

裂、条码瑕疵等,该扫描行的坐标数将肯定大于60或小于60,这时将不记录该

扫描行,对此行不处理。

这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。

(1)条码宽度的计算:

设条码字符颜色由黑变为白或由白变为黑(由“0变为“1或由“1变为“0)

的各点坐标为X1、X2、、X60。

则一行扫描的条空宽度(像素)分别为:

由上述图像条码译码理论可总结出条码条空宽度计算步骤,如图1-2所示:

经处理后的二值團像

 

图1-2条码条空宽度计算

在MATLAB中采用读取像素的方法实现。

经过二值化后得到一个二值化图

象矩阵bw。

简单起见,可以读取矩阵bw的中间一行,得到一个向量A。

为了

提高可靠性,我们也可逐行扫描。

[h,l]=size(bw);%得到二值图像bw的大小

(2)条码字符的判别一相似边距法:

理论上条形码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离

方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的

t3,t4,t5,t6,t7(归一化值)为条形码相似边距离。

本文采用归一化理论,

用一种相似边距离归一化的方法对字符进行判别。

该方法即使条码印刷质量有偏

差,仍能正确对条码进行识读。

首先见图1-4各种宽度的定义:

G,C2,C3,C4表示每个字符中四个相邻

条、空的宽度,T表示一个字符的宽度,t1,t2为相似边之间的距离,则用下列值Ti(i=1,2)来定义T1与T2的归一化值。

测量7个宽度值T,

关系。

t1,t2,t3,t4,t5,t6;然后将测量值t1,t2,t3,

EAN-13码字符编码与归一化值(「,T2)的对应关系见表1-2。

表1-1EAN-13条码字符与归一化值

归一化值

2

.3

4

5

2

06

EO

041

3

E9

02

08

El

E7

05

4

09

E2

E3

01

07

E5

5

E6

00

E4

03

 

7奇字符編码

归1化値

左偶字符编码

归1化值

右偶字符编码

归1化值

0001101

53

0100111

23

1110010

53

0011001

44

0110011

34

1100110

44

0010011

33

0011011

43

1101100

33

0111101

55

0100001

25

1000010

55

0111100

24

0011101

54

1011100

24

0110001

35

0111001

45

1001110

35

0101111

22

0000101

52

1010000

22

0111011

44

0010001

34

1000100

44

0110111

33

0001001

13

1001000

33

0001011

42

0010111

32

1110100

42

表1-2EAN-13字符编码与归一化值

2

3

5

6

7

8

9

字符11

0

可以看到条形码编码和归一化值在多数情况下呈现一一对应的关系,

只要确

定了归一化值就能确定字符值,但是有四种情况例外,在表1-2中知,符和右侧偶字符1,7归一化值均为44,左侧奇字符和右侧偶字符2,

左侧奇字

8归一化

值均为33,左侧偶字符1,7归一化值均为34,左侧偶字符2,8归一化值均为

43。

这两种情况可以在判别字符时根据G,C2,C3,C4进一步判别,根据它们

条空宽度特点进行判别。

有1728字符标准条空宽度值的特点知:

对于左侧奇字

符、右侧偶字符1和7可通过C3与C4作比较,C3>C4者为字符1,反之为7;对

于左侧奇字符、右侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符8,

反之为2;对于左侧偶字符1和7可通过C1与C2作比较,C1>C2者为字符7,反

之为1;对于左侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符2,反之

由上述条码字符识别理论可总结出相似边距离测量法的一般步骤。

由条码宽度的

计算我们得到了各个条、空的宽度(像素),并通过计算n=T/7,

T=C1+C2+C3+C4得到单位模块的宽度(像素)。

各个条空的宽度除以单位模块

的宽度就是归一化的条空宽度。

而为了方便译码,我们除去起始符3个条空,中

 

间分隔符5个条空,终止符3个条空,对剩下的48个条空每4个条空为一组进行译码。

计算相似边之间的距离t1、t2从而得到归一化(T1,T2)。

最后查表可

得条码字符。

为检验译码的正确性利用校验位对码字进行校验。

流程图如图1-5

和1728判别子程序流程如图1-6。

计算此字符的长度T

I计算此字符的石、巧I

计算归一化值

I

图1-5字符判别流程图

找到归一化值所对应的氣空宽度值

三、设计步骤与结果

3.1设计步骤

对于一个条码图像我们先要对其进行一定的处理才能达到正确译码的目的。

而要对其进行处理,首先是要将其读入。

由于有噪声的存在,必须对其进行滤波。

也可以人为地加入一定类型的噪声仿真,然后用合适的滤波方法进行滤波,这样有助于理解各种滤波方法所针对的噪声类型。

最后就是要二值化,得到二值图像。

条码图像预处理流程图如图1-7所示。

图1-7条码图像预处理流程图

⑴MATLAB中利用函数imread来实现图像文件的读取操作。

图1-8是首次需要处理的条码图片。

一般情况下,通过imread函数读取的大多数图像都是8位的。

当把这些图

像加载到内存中时,MATLAB就将其存储在类uint8中。

此外,MATLAB还支持16位的PNG和TIFF图像。

当用户读取这类图像时,MATLAB就将其存储在类uint16中。

而对于索引图像来说,即使图像矩阵的本身为uint8或uint16,imread函数仍将颜色映射表读取并存储在一个双精度浮点类型的矩阵中。

例如:

匸imread('008.bmp');

该语句可将条码图像读入内存,并以矩阵形式存储。

⑵MATLAB的图像处理工具箱提供imnoise函数,可以用该函数给图像添加不同种类的噪声。

该函数的调用格式如下:

J=imnoise(l,‘type',parameters)

表1-3列出了imnoise函数能够产生的五种噪声及其对应参数。

表1-3imnoise函数支持的噪声种类及参数说明

type

parameters

说明

gaussian

叫V

均值为皿,方差为的高斯噪芦

localvar

V

均值为6方差为¥的高斯白噪声

possion

泊松噪声

saltipepper

椒盐噪声

speckle

V

均值为6方差为V的均匀分布随机噪声

例如:

J=imnoise(l,'salt&pepper',0.01);

该语句实现在条码图像I中加入椒盐噪声。

⑶条码图像被采集进入计算机,由于设备、以及传输过程中的各种因素的影响,一些噪声将会对图像的质量产生影响。

任何一幅未经处理的原始图象,都存在一定程度的噪声干扰。

不同的噪声干扰,处理方法不同。

影响条码图像质量

最典型的噪声是椒盐噪声。

椒盐噪声的特点是此干扰在图像中是以孤立点的形式

存在的。

针对噪声的类型,采用中值滤波。

中值滤

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1