APP下载

彩色三维PDF417条码的设计

2011-07-05黄乃映詹宜巨

自动化与信息工程 2011年3期
关键词:条码算子灰度

黄乃映 詹宜巨

(1.中山大学信息科学与技术学院 2.中山大学工学院)

1 引言

最初出现的一维条码由于承载信息能力有限,人们又设计出二维条码,它使用的是二维坐标系,空间上的点可以通过(X,Y)来表示,即条码在横向X轴和纵向Y轴都含有信息。但是随着条码应用范围的进一步扩大,其承载信息的能力已经不能满足人们的要求,于是人们又提出三维条码的理念,用彩色代替原始二维条码中的黑白色,这样由颜色衍生出来的Z轴也包含大量的信息,使用的是三维坐标系,空间上的点可以通过(X,Y,Z)来表示[1]。

在所有类型的二维条码中,PDF417条码的应用范围最广并具有很高的认可度。它属于堆叠式二维条码,由3到90行的截短一维条码堆叠而成。PDF417条码的密度会随着行数的增加而增加,对于低密度PDF417条码和高密度PDF417条码的识别方法是不一样的,因为当PDF417条码的密度较低时,光学系统点扩展函数的影响可以忽略;反之,当PDF417条码密度较高时则不能[2,3]。由于现在人们要求PDF417条码能够承载更多的信息,因此PDF417条码的密度越来越高,这给条码的识别带来很大的难度。由于三维条码使用的是三维空间,即使条码密度较低,其容纳信息的能力也非常强。因此本文结合三维条码理论,设计彩色三维PDF417条码,并重点研究三维PDF417条码的识别。

2 彩色三维PDF417条码的设计

三维PDF417条码的设计主要涉及编码方式和颜色的选取,下面对这两部分做具体的介绍。

2.1 编码方式的选取

条码的编码方法分为两种:模块组配法和宽度调节法,两种方法的编码容量都会随着模块宽度的增大而增大。但是实验表明[4,5]:当模块宽度小于等于7时,宽度调节法的编码容量更大;当模块宽度大于7时,模块组配法的编码容量更大。随着条码应用范围的不断扩大,人们要求不断增加条码的编码容量,所以模块宽度常常大于 7,而这时模块组配法的编码容量更大,因此本文选择模块组配法编码方式。

2.2 颜色的选取

按照三维条码理论,颜色的选取主要有两种方法:第一种方法是根据同类颜色、不同灰度值进行选择,即将黑色分成不同的等级,如深黑、浅黑、较深黑等等颜色,这种方法不仅对识别设备要求很高,更重要的是条码的抗干扰性能大大降低,倘若条码在流通的过程中受到污损、褪色等情况,就不能正确识别条码,所以此方法具有很强的局限性;第二种方法是根据颜色的不同进行选择,这样可以很好地克服第一种方法的缺点[4,5]。因此本文选取彩色来代替二维条码中条的颜色,空的颜色仍然采用白色。设计的条码如图1所示。

图1 彩色三维PDF417条码

2.3 比较

下面对三维PDF417条码和二维PDF417条码进行比较,以编码容量作为对比的标准。

设一个三维PDF417条码字符的模块数为n,条和空的对数为k,则所能表示的码字数为:

(1)式中p表示条的颜色种数,q表示空的颜色种数[4,5]。

设一个二维PDF417条码字符的模块数为n,条和空的对数为k,则所能表示的码字数为[4,5]:

由(1)式除以(2)式得:

假设p=6,q=2,可得:

3 三维PDF417条码的识别

对于三维PDF417条码的识别,本文采取两种识别方法:第一种方法是把三维PDF417条码转化为二维 PDF417条码进行识别;第二种方法是对三维PDF417条码直接进行识别。其识别过程如图2 和图3 所示,两种方法的主要区别在于第二种方法没有图像预处理环节。

图2 第一种识别方法

图3 第二种识别方法

3.1 图像预处理

图像预处理是第一种识别方法必不可少的一个环节,其主要包括以下三个环节:彩色条码灰度化、图像二值化、去噪,其具体的流程如图4所示。

3.1.1 彩色图像灰度变换

图4 图像预处理流程

彩色图像灰度变换常用三种方法:加权法、平均法、最大值法。

① 加权法:有实验证明:人眼对不同颜色的敏感程度是不同的,对绿色最强,对蓝色最弱,在RGB空间中,对R、G、B以不同的权值进行加权平均,如式(5)所示:

(5)式中 f (i,j)为灰度值输出。

② 平均法:在RGB空间中,对R、G、B三分量的亮度求均值,如式(6)所示:

(6)式中 f (i ,j)为灰度值输出。

③ 最大值法:在RGB空间中,对R、G、B三分量的亮度求最大值,其式(7)所示:

(7)式中 f( i,j)为灰度值输出。

以上三种方法处理结果如图5、图6、图7所示。

最大值法处理效果如图 7所示,当以 R、G、B三分量亮度最大值作为灰度值输出,使得输出的灰度图像偏亮,这不利于灰度图像二值化;均值法处理图像效果如图6所示,当以R、G、B三分量的亮度均值作为灰度值输出,使得输出的灰度图像整体亮度比较均匀,可以满足图像二值化的要求,但是如图5所示的加权法处理效果更好,图像与背景之间非常明显,更加有利于图像二值化,因此本文选取加权法进行彩色图像灰度化。

3.1.2 灰度图像二值化

图5 加权法

图6 均值法

图7 最大值法

灰度图像二值化常采用阈值化处理,即选择一个合适的阈值,将灰度图像转换成二值图像,阈值选取的好坏,对图像和背景的分离具有重要的影响。现在普遍采用直方图技术来选取阈值,对于灰度 PDF417条码图像来说,在二值化的时候,可以将条码中的条作为特征物图像,空作为背景物图像;或者将条码中的空作为特征物图像,将条作为背景物图像[6]。

如图8所示的二维PDF417条码直方图,可以发现有两个峰值较大,则将两个较大波峰的中间位置定义为阈值,即谷底的最小值[6]。灰度图像二值化后,所得结果如图9所示,这里阈值取为0.82。

3.1.3 去噪

图8 条码直方图

图9 二值图像

现在普遍采用滤波器来消除噪声,滤波器种类比较多,如空域低通滤波器,频域低通滤波等等,如图10和图11所示。

图10 3×3模板均值滤波

图11 5×5模板均值滤波

从图10和图11可以发现,滤波后条码图像显得比较模糊,这不利于条码边缘检测,如果想保证边缘检测的正确性,必须保证图像与背景之间的清晰。所以本文没有采用滤波平滑的方法来消除噪声,而采用受控形态学中膨胀和腐蚀算法[7]。

受控形态学的原理比较简单,主要是通过指定一个约束量S来控制腐蚀和膨胀运算的程度,因为在一般膨胀和腐蚀算法中,并没有具体指出膨胀和腐蚀的程度,这样很难保证膨胀和腐蚀运算的效果,其处理结果如图12和图13所示。由于受控形态学中的受控腐蚀和受控膨胀对于噪声的敏感度比较低,因此本文采用受控腐蚀和受控膨胀来对噪声进行平滑处理,其处理结果如图14和图15所示。

通过比较图9和图15,可以发现条码图像边缘的模糊程度小了很多。通过比较图10、图11、图12、图13、图15可以发现,经滤波器处理后的图像,不仅背景灰暗,且边缘不清楚,这对于之后边缘检测会产生很大的负面影响。经一般腐蚀和膨胀处理后,图像产生很大失真,显然不适合噪声的消除。但是经过先受控腐蚀再受控膨胀处理后,不仅背景清晰,最重要的是图像失真程度非常小。因此本文采用先受控腐蚀后受控膨胀来消除噪声。

图12 一般膨胀变化

图13 一般腐蚀变化

图14 先受控腐蚀变化

图15 再受控膨胀变化

3.2 颜色空间的选择

彩色图像边缘检测都需要基于一定的颜色空间,如 RGB、HSV颜色空间。一般情况下,数字图像是以RGB形式存在。但是实际情况下,人们为了需要,通常把 RGB空间转化为其他形式的空间,但是在转化的时候,容易受到噪声的影响[8]。例如将RGB空间转化为HSV空间,再还原为RGB空间,结果如图17所示。

图16 HSV空间

图17 还原RGB空间

通过比较图1和图17,可以发现,如果对颜色空间进行转换,会造成彩色图像中某些信息丢失,而且转换后的图像对噪声十分敏感,因此本文仍然选用RGB颜色空间。

3.3 旋转条码

商场购物或者验证发票时,经常出现条码偏移和倾斜的现象,为了对条码精确识别,则必须在识别之前,将条码旋转到水平状态。本文采用Hough算法[9]旋转条码。

旋转条码的时候,由于受到噪声、污损等外界因素的影响,彩色条码图像中条的颜色区域会出现少量麻点,因此必须对受到干扰的区域进行插值。现在出现的插值方法主要有:最邻近插值、双线性插值、三次卷积插值、Hermite插值等,本文采用先三次卷积插值再Hermite插值。

图18 最邻近插值

图19 双线性插值

图21 再Hermite插值

旋转后,最邻近插值法效果最差,旋转得到的条码图像边缘非常粗糙,如图18所示;双线性插值旋转效果次之,如图19所示;三次卷积旋转效果最好,如图20所示;同时由于双线性插值具有低通性质,因此在高频的时候,条码图像会产生失真,会使图像边界更加粗糙;三次卷积法可以有效克服最邻近插值和双线性插值的缺点。但是在PDF417条码层与层交界处,旋转效果仍然不是很好,因此本文利用两点三次Hermite插值对每层交界处进行平滑,如图21所示。旋平后的二维条码和三维条码如图2 2和图2 3所示。

图22 二维条码旋转

图23 三维条码旋转

3.4 分割单行条码[6,11]

由于PDF417条码是由多行一维条码叠加而成,因此在识别的时候必须分割出每行条码。利用 Sobel水平边缘检测算子 f (x,y)来提取PDF417条码水平边缘,再进行水平投影,如图24所示。

图24 水平投影后所得图像[7]

由图2 4可知:图像的峰点对应于条码的行边界,这样行边界的计算就转化为峰点数量的计算。

下面利用统计方法来计算条码的行边界。

将条码旋转到水平状态后,可以通过条码的上下边界方程,来计算PDF417条码图像的高度 H'。则行高如式(10)所示:

接下来就可以根据行高来分割单行条码。条码图像分割结果如图2 5所示。

图25 分割出的单行条码

3.5 边缘检测

3.5.1 二维PDF417条码的边缘检测

条码边缘检测就是采用某种算法,将条码图像中的条和空之间的分界线提取出来,常用的边缘检测算法有 Roberts、Sobel、Log、Prewitt、Canny 等[11~14]。

Log算子边缘检测效果如图2 9所示,条码二值图像的边缘大部分都没有检测出来,明显不符合要求;Sobel和Prewitt算子边缘检测效果如图2 6和图2 8所示,其检测效果比Log算子稍好,但是仍然有部分边缘没有检测出来;Roberts算子边缘检测效果如图 27所示,从效果图可以发现,在检测的时候,产生了大量的伪边缘;Canny算子边缘检测效果如图3 0所示,检测效果不仅边缘清晰,伪边缘很少,甚至没有,故选取Canny算子进行边缘检测。

图26 Sobel算子检测

图27 Roberts算子检测

图28 Prewitt算子检测

图29 Log算子检测

图30 Canny算子检测

3.5.2 三维PDF417条码的边缘检测

除了将彩色条码图像转化为灰度二值图像外,还可以直接从彩色条码图像入手。在对一般的彩色图像进行边缘检测的时候,如果出现部分边缘丢失,不会对结果产生很大的影响,但是彩色三维PDF417条码图像则不同,因为条码图像中的颜色携带着大量的信息,如果在边缘检测的时候出现漏检,就会对结果产生很大的影响。下面用传统Canny算法来直接检测彩色三维PDF417条码图像边缘,如图3 1所示。

图31 传统的Canny算法

从图3 1可以发现,直接利用传统Canny算法检测条码边缘,得到的结果并不是十分的理想,因此本文对传统Canny算法进行改进,传统Canny算法共有四个步骤[11~14]:① 利用高斯滤波器平滑图像,去除图像噪声;② 利用一阶偏导的有限差分来计算梯度幅值和方向;③ 对梯度幅值进行非极大值抑制;④ 用双阈值算法检测并且连接边缘。

现在对第二步、第三步进行优化。

(1)梯度幅值和方向的计算

首先,彩色图像仍然以 RGB的形式存在,在点(i,j)的8个邻域内,通过对x、y、45°、135°方向上求偏导,来计算点 (i ,j)的梯度值和方向。其具体过程如下:

x方 向 偏 导 数 Rx(i,j)、 Bx(i,j)、 Gx(i,j)、Py(i,j ):

(2)在第一种方法中,是把彩色图像转化为灰度二值图像,这样图像与背景之间非常清晰。如果直接用传统的Canny算法对彩色三维PDF417条码进行边缘检测,由于图像与背景之间不是那么清晰,因此边缘检测效果不是很好,效果如图3 0所示,因此阈值选取的好坏对边缘检测有着至关重要的作用。由于传统Canny算法采用双阈值进行判别,这样容易造成漏检或者产生伪边缘,为克服这缺点,本文采用局部动态阈值选择的方法。

已知原梯度图像Y,Y经过非极大值抑制之后得到的图像为X,则阈值选择的过程如下:

① 计算X中各个候选点的双阈值。设 x( i ,j)是X中的一点,Y中存在一个中心为 Y (i,j)的正方形,其宽度为a,点 x( i ,j)双阈值的选取与正方形内梯度分布存在紧密的联系,可以根据PDF417条码密度的大小调整a的大小,a的取值范围为 [3 0,50],在所选正方形区域梯度直方图中,像素点个数的计算是按照梯度递增顺序进行累计[15]。假设像素点的总个数为 Z,高阈值用T2表示,低阈值用 T1表示,当累计和占 Z得百分比则为T2,T2的40%为T1。

② 假设X中候选边缘点的梯度值为T,该点的高阈值为T2,低阈值为T1,当 T> T2时,则候选点为时,且与保留边缘点的8个邻域相连,该点为边缘点,保留该点[15]。实验结果如图3 2所示。

图32 改进的Canny算法

4 结论

本文采取了两种识别方法,下面对它们的识别效果进行比较,主要不同之处归纳如下:

(1)从识别效果来看:第一种方法的边缘检测效果非常好,如图3 0所示,几乎没有任何的伪边缘;第二种方法的边缘检测效果也不错,如图3 2所示,产生了少量的伪边缘。所以第一种方法识别效果更好;

(2)从识别效率来看:第一种方法的识别速度要比第二种方法快,因为经过改进的Canny算法运行速度比较慢;

(3)从计算量来看:由于第二种方法没有图像预处理,不需进行灰度变换、二值化、去噪等计算,因此相比于第一种方法,计算量小很多。

[1]三维码[DB/OL]. http://baike.baidu.com/view/1586298.htm.

[2]二维条形码[DB/OL]. http://baike.baidu.com/View/71834.htm

[3]PDF417条码[DB/OL]. http://baike.baidu.com/view/132249.htm

[4]刘宁钟,杨静宇.三维条码的编码理论和设计[J].计算机学报,2007,30(4):686-692.

[5]刘宁钟.高维条码识别技术和编码理论的研究[D].博士学位论文.南京理工大学,2003:1-13,21-27,56-72.

[6]王沁.PDF417条码识别技术研究[D].硕士学位论文.西安理工大学,2007:17-34.

[7]文华.基于数学形态学的图像处理算法的研究[D].硕士学位论文.哈尔滨工程大学,2006:7-42.

[8]胡博.彩色图像分割算法研究[D].硕士学位论文.电子科技大学,2009:8-13.

[9]Hough变换[DB/OL]. http://baike.baidu.com/view/1241775.htm

[10]成诚. 二维PDF417条码识别技术的研究及其在Linux 平台下的实现[D].硕士学位论文.南京航空航天大学,2008:18-32.

[11]杨帆.数字图像处理与分析[M].北京:北京航空航天大学出版社,2007.251-261.

[12]周晓伟.二维条码识别技术研究[D].硕士学位论文.上海交通大学,2007:15-27.

[13]胡小锋,赵辉等.Visual C++/MATLAB图像处理与识别实用案例精选[M].人民邮电出版社,2004:85-118.

[14]王家文,曹宇.MATLAB 6.5图形图像处理[M].2004:190-193,268-272.

[15]王佳,李波,徐其志.边缘检测中局部区域的动态阈值选取的方法[J].计算机应用研究,2010,27(2).

猜你喜欢

条码算子灰度
中国条码技术与应用协会
条码微站
采用改进导重法的拓扑结构灰度单元过滤技术
拟微分算子在Hp(ω)上的有界性
基于灰度拉伸的图像水位识别方法研究
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
基于最大加权投影求解的彩色图像灰度化对比度保留算法
Roper-Suffridge延拓算子与Loewner链
基于灰度线性建模的亚像素图像抖动量计算