CN102708351B - 复杂工况背景下的Data Matrix二维条码快速识别方法 - Google Patents

复杂工况背景下的Data Matrix二维条码快速识别方法 Download PDF

Info

Publication number
CN102708351B
CN102708351B CN201210163706.0A CN201210163706A CN102708351B CN 102708351 B CN102708351 B CN 102708351B CN 201210163706 A CN201210163706 A CN 201210163706A CN 102708351 B CN102708351 B CN 102708351B
Authority
CN
China
Prior art keywords
point
bar code
straight
code
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210163706.0A
Other languages
English (en)
Other versions
CN102708351A (zh
Inventor
白瑞林
徐义钊
吉峰
李新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XINJE ELECTRONIC CO Ltd
Jiangnan University
Original Assignee
XINJE ELECTRONIC CO Ltd
Jiangnan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by XINJE ELECTRONIC CO Ltd, Jiangnan University filed Critical XINJE ELECTRONIC CO Ltd
Priority to CN201210163706.0A priority Critical patent/CN102708351B/zh
Publication of CN102708351A publication Critical patent/CN102708351A/zh
Application granted granted Critical
Publication of CN102708351B publication Critical patent/CN102708351B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

本发明提出一种复杂工况背景下的Data Matrix二维条码快速识别方法,其首先采用基于链码跟踪技术提取边缘链码,然后利用直线段合并技术提取直线段,即将链码分割成子链码,根据直线段相似度合并子链码构成直线段;接着利用最小二乘法技术拟合直线段,精确角度;最后利用向量外积技术计算二维条码旋转角度。采用基于链码跟踪的方法,对每条链码进行直线段提取,克服以往计算量大、识别速度慢、容易受背景干扰、极性不同时而无法识别的缺点。该方法计算量小,只需遍历图像两次,不受条码极性的影响,黑色条码或白色条码均可识别,可识别的最小条码可以达到3个像素单位模块的二维条码,不容易受背景干扰。

Description

复杂工况背景下的Data Matrix二维条码快速识别方法
技术领域
本发明涉及一种Data Matrix二维条码快速识别方法,尤其是一种复杂工况背景下的Data Matrix二维条码快速识别方法,属于Data Matrix二维条码识别的技术领域。 
背景技术
条码技术是在计算机应用实践中形成的一种自动识别技术。自上个世纪70年代初期问世以来,一维条码技术已被广泛地应用。但是,随着现代高新技术的发展,迫切需要用条码在有限的几何空间内表示更多的信息,从而满足千变万化的信息需要。二维条码技术正是为了满足人们的这种需求而诞生。传统的一维条码只有校验功能,没有纠错能力。而二维条码具有很强的错误校验和错误纠正功能。由于二维条码密度远大于一维条码,其识别技术不同于一维条码,如何快速准确地识别条码成为了一个值得研究的问题。 
目前,Data Matrix的识别方法的文献很多,主要分为四类。李雅静在Data Matrix二维条码图像识别的算法研究与实现中提出了以Data Matrix二维条码区域的面积最大值作为判断根据来定位条码。Wei Xu在2D Barcode Localization and Motion Deblurring Using a Flutter Shutter Camera一文中提出由于条码区域的角点密度高。Anan Liu等在A Hierarchical Framework for 2D Data Matrix Recognition一文中提出外接矩形方法定位二维条码。珠海炬力集成电路设计有限公司的专利中提出轮廓跟踪法。蔡强等人专利中提出采用特征匹配方法定位Data Matrix条码区域。在条码图像中搜索位置探测图形来确定所述探测图形的像素坐标;该专利采用灰度特征匹配的方法。上述Data Matrix二维条码识别方法存在计算量大,识别速度慢,容易受背景干扰,极性不同时导致无法识别的缺点,不能满足快速识别要求。 
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种复杂工况背景下的Data Matrix二维条码快速识别方法,其操作方便,降低识别计算量,提高识别速度,识别抗干扰能力强,识别适应范围广,识别精度高。 
按照本发明提供的技术方案,所述复杂工况背景下的Data Matrix二维条码快速识别方法,所述Data Matrix二维条码快速识别方法包括如下步骤: 
a、读取包含有Data Matrix二维条码的灰度图像,对上述灰度图像进行中值滤波,并利用Sobel边缘检测算子提取灰度图像每个像素点的方向向量及梯度值,且对灰度图像的梯度值进行非极大值抑制及阈值二值化梯度图像,以获得灰度图像的边缘; 
b、对上述图像,根据边缘点的八方向上边缘点数目进行分类,并对每类边缘点分别进行链码跟踪,且记录每条链码的起点坐标、方向码及链码长度; 
c、提取上述每条链码的直线段,记录每条直线段的起点坐标、终点坐标、角度以及直线段的长度; 
d、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段,在“L”型两条直线段的对角分别作两条平行的线段,以记录条码区域两条虚线边的边界线,并根据“L”型的两条直线段与两条虚线边的边界线,判断条码区域; 
e、根据上述判定的条码区域,在原始灰度图像上截取条码区域;拟合具有“L”型形状的两条直线段,并根据拟合“L”型两条直线段的角度得到条码区域的旋转角度,根据旋转角度将条码区域旋转到水平正方位置,并对旋转后的条码区域进行双线性插值; 
f、高斯平滑上述二维条码区域。 
采用最大类间方差法对高斯平滑后的二维条码区域进行二值化,并对二值化后的条码区域进行采样,且根据Data Matrix条码类型对采样后的条码区域进行译码。 
所述步骤a包括如下步骤: 
a1、采用中值滤波对灰度图像进行滤波时,设定滤波窗口内输入序列为{x(i,j),i,j∈I},I为自然数集合或子集,窗口大小为m×n,则 
y(i,j)=Med{x(i-u,j-v),…,x(i+u,j+v)},其中  y为滤波输出; 
a2、利用Sobel边缘检测算子提取灰度图像内每个像素点X方向、Y方向的方向向量及梯度值时,X方向、Y方向的检测算子为: 
g 1 = 1 2 1 0 0 0 - 1 - 2 - 1 , g 2 = - 1 0 1 - 2 0 2 - 1 0 1 ;
其中,g1为X方向的检测算子,g2为Y方向的检测算子;采用 计算灰度图像内像素点的梯度值,其中,G为梯度模,dx,dy分别表示X方向,Y方向上的梯度值; 
a3、对梯度图像的每个像素点作非极大值抑制; 
a4、计算梯度图像的梯度平均值,设定两倍的梯度平均值为阈值,并根据阈值将梯度图像二值化,以获得灰度图像的边缘。 
所述步骤b包括如下步骤: 
b1、提取梯度图像中的“L”型区域,当“L”型区域对应角点的左边点、右点边、上边点或下边点的八方向上只有两个边缘点时,将相应的左边点、右边点、上边点或下边点删除;当“L”型区域对应角点的上边点、下边点、左边点、右边点的八方向上大于两个边缘点时,将所述角点删除; 
b2、在上述梯度图像上,将边缘点八方向上边缘点数为0的边缘点删除,根据边缘点的八方向上边缘点数目进行分类,将边缘点八方向上边缘点数目为1的边缘点作为端点,将边缘点八方向上边缘点数为2的边缘点作为链码中间点, 将边缘点八方向上边缘点数大于2的边缘点作为链码交叉点; 
b3、以八方向上边缘点数为1的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或大于2的边缘点,此条链码跟踪结束; 
b4、以八方向上边缘点数大于2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或2的边缘点,此条链码跟踪结束; 
b5、剩余的边缘点为八方向上边缘点数为2的边缘点,剩余的边缘点构成闭合线圈,以任意一个八方向上边缘点数为2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0、且记录链码的长度,直到不再遇到边缘点,此条链码跟踪结束。 
所述步骤c包括如下步骤: 
c1、对每条链码进行分割,以6个像素为一条子链码,记录子链码的长度及角度; 
c2、当前子链码与上一条相邻的子链码与合并条件匹配时,将当前子链码与上一条相邻的子链码合并;否则,将上一条子链码作为单独的直线段;记录每条直线段的起点坐标、终点坐标、角度以及直线段长度; 
c3、扫描每条直线段,查找存在能合并的直线段,并将相应的直线段合并; 
c4、将长度小于25个像素的直线段删除。 
所述步骤d包括如下步骤: 
d1、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段; 
d2、在在“L”型两条直线段的对角分别作两条平行的线段,并将两条所作的线段向外平移直至线段上无边界点,以记录条码区域两条虚线边的边界线; 
d3、以两条虚边的边界线向里延伸两个像素分别做两条平行线段,判断所作线段与“L”型的两条直线段间的区域是否为条码区域,获得条码区域。 
所述步骤e包括如下步骤: 
e1、根据上述获得条码区域及条码区域对应的边界,计算条码区域的顶点,以在原始灰度图像上截取条码区域; 
e2、采用最小二乘法拟合截取条码区域内“L”型的两条直线段,精确Data Matrix二维条码的旋转角度,得到 
D = Σ i = 1 n d i 2 = [ y i - a - bx i ] 2
其中,a为需要拟合的直线段的斜率,b为对应的截距,y、x分别为拟合点的纵坐标、横坐标,D为拟合差值,n为坐标点个数; 
D对a和b分别求一阶偏导数为: 
∂ D ∂ a = - 2 [ Σ i = 1 n y i - na - b Σ i = 1 n x i ]
∂ D ∂ b = 2 [ Σ i = 1 n x i y i - a Σ i = 1 n x i - b Σ i = 1 n x i 2 ]
令一阶偏导数为零,得到 
Σ i = 1 n y i - na - b Σ i = 1 n x i = 0
Σ i = 1 n x i y i - a Σ i = 1 n x i - b Σ i = 1 n x i 2 = 0
引入平均值: x ‾ = 1 n Σ i = 1 n x i ; y ‾ = 1 n Σ i = 1 n y i ; x 2 ‾ = 1 n Σ i = 1 n x i 2 ; xy ‾ = 1 n Σ i = 1 n x i y i 则得到: 
y ‾ - a - b x ‾ = 0
xy ‾ - a x ‾ - b x 2 ‾ = 0
e3、根据上述拟合“L”型的两条直线段,计算Data Matrix二维条码的旋转角度,令μ=[x1-x3,y1-y3,0],φ=[x2-x3,y2-y3,0],则叉积为w=μ×φ=[0,0,(x1-x3)(y2-y3)-(x2-x3)(y1-y3)];其中,x3,y3分别表示拟合后“L”型的两条直线段交点的横坐标、纵坐标;x1,y1分别表示拟合后“L”型的两条直线段中一条直线段的端点,x2,y2分别表示拟合后“L”型的两条直线段中另一条直线段的端点; 
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)<0时,根据拟合后“L”型的两直线段的角度得到旋转角度θ2; 
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)>0,根据拟合后“L”型的两直线段的角度得到旋转角度θ1; 
e4、将上述计算得到的旋转角度代入图像旋转公式,得到 
x ′ y ′ = cos θ sin θ - sin θ cos θ x y ,
以将条码旋转正方便对条码进行采样,其中,x′,y′分别表示旋转后的纵横坐标; 
e5、采用双线性插值算法对旋转后的二维条码插值,得到 
f(x′0,y′0)=(1-η)(1-λ)f(x0,y0)+(1-η)λf(x0,y0+1)+η(1-λ)f(x0+1,y0)+ηλf(x0+1,y0+1)其中,η=x′0-x0,λ=y′0-y0;x′0为介于x0与x0+1之间的整数,y′0为介于y0与y0+1之间的整数。 
所述步骤f中,高斯卷积模版为: 
h = 1 16 * 1 2 1 2 4 2 1 2 1 .
对二值化后的条码区域进行采样时,对条码区域进行水平投影与垂直投影,以得到条码的上边界、下边界、左边界、右边界;以上边界向下每落两个像素做一条直线,直至下边界;记录边界点的横坐标,以两点之间的中心点坐标做竖直直线,并以两点之间的中心点坐标做水平直线;以水平直线与竖直直线的 交点作为此采样模块的值。 
所述当前子链码与上一条相邻的子链码间的合并条件是两条子链码间角度大于165度且两条子链码的直线相似度大于0.9,直线相似度的为上一条相邻的子链码起点与当前子链码的终点之间的距离与两条子链码对应长度之和的比值。 
本发明的优点:采用基于链码跟踪的方法,对每条链码进行直线段提取,寻找具有“L”形状的直线段,定位Data Matrix二维条码。该方法计算量小,只需遍历图像两次,不受条码极性的影响,黑色条码或白色条码均可识别,可识别的最小条码可以达到3个像素单位模块的二维条码,不容易受背景干扰。 
附图说明
图1为Data Matrix二维条码识别的总流程图。 
图2为Sobel边缘提取流程图。 
图3为干扰边缘点删除的一种示意图。 
图4为干扰边缘点删除的另一种示意图。 
图5为干扰边缘点删除的再一种示意图。 
图6为边缘点分类的一种示意图。 
图7为边缘点分类的另一种示意图。 
图8为边缘点分类的再一种示意图。 
图9为链码跟踪的流程图。 
图10为八方向的示意图。 
图11为链码直线段提取流程图。 
图12为二维条码旋转角度一种示意图。 
图13为二维条码旋转角度的另一种示意图。 
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。 
Data Matrix符号分为ECC000-140和ECC200两个大类,ECC000-140具有四个等级的卷积纠错功能,ECC200则通过Reed-Solomon纠错算法汁算纠错码,根据符号的不同尺寸得到不同的纠错码;两类符号的外形区别在于,ECC000-140符号的右上角为深色模块,ECC200符号的右上角为浅色模块。复杂工况背景指图片中存在大量的文字信息以及类似条码形状的图案,如图1所示:为了能在复杂工况背景下对Data Matrix二维条码快速识别,本发明包括如下步骤: 
a、读取包含有Data Matrix二维条码的灰度图像,对上述灰度图像进行中值滤波,并利用Sobel边缘检测算子提取灰度图像每个像素点的方向向量及梯度值,且对灰度图像的梯度值进行非极大值抑制及阈值二值化梯度图像,以获得灰度图像的边缘; 
a1、采用中值滤波时能去除噪声,能够较好的保留图像边缘,中值滤波器对处理脉冲噪声很有效,尤其对处理椒盐噪声非常有效;采用中值滤波对灰度图像进行滤波时,设定滤波窗口内输入序列为{x(i,j),i,j∈I},I为自然数集合或子集,窗口大小为m×n,则 
y(i,j)=Med{x(i-u,j-v),…,x(i+u,j+v)},其中i∈I, y为滤波输出; 
a2、利用Sobel边缘检测算子提取灰度图像内每个像素点X方向、Y方向的方向向量及梯度值时,X方向、Y方向的检测算子为: 
g 1 = 1 2 1 0 0 0 - 1 - 2 - 1 , g 2 = - 1 0 1 - 2 0 2 - 1 0 1 ;
其中,g1为X方向的检测算子,g2为Y方向的检测算子;采用 计算灰度图像内像素点的梯度值,其中,G为梯度模,dx,dy分别表示X方向,Y方向上的梯度值;如图2所示; 
a3、对梯度图像的每个像素点作非极大值抑制; 
具体地,当dx为水平梯度上的局部极大值时,dx要大于dy;或者,dy为垂直梯度上的局部极大值时,dy大于dx,即dx(i,j)>dx(i,j-1)、dx(i,j)>dx(i,j+1)、dx(i,j)>dy(i,j)或者dy(i,j)>dy(i-1,j)、dy(i,j)>dy(i+1,j)、dx(i,j)<dy(i,j);其中dx(i,j)表示图像坐标(i,j)处像素的水平梯度值,dy(i,j)表示图像坐标(i,j)处像素的垂直梯度值,其余以此类推,此处不再详述。 
a4、计算梯度图像的梯度平均值,设定两倍的梯度平均值为阈值,并根据阈值将梯度图像二值化,以获得灰度图像的边缘。 
b、对上述图像,根据边缘点的八方向上边缘点数目进行分类,并对每类边缘点分别进行链码跟踪,且记录每条链码的起点坐标、方向码及链码长度;八方向如图10所示; 
b1、提取梯度图像中的“L”型区域,当“L”型区域对应角点的左边点、右点边、上边点或下边点的八方向上只有两个边缘点时,将相应的左边点、右边点、上边点或下边点删除;当“L”型区域对应角点的上边点、下边点、左边点、右边点的八方向上大于两个边缘点时,将所述角点删除;如图3、图4和图5所示:通过删除这些干扰点,能降低识别的计算量;其中,小方框为标记点,图3中,标记点、标记点的右边点及标记点的右上方点构成一个“L”形状,以标记点的右边点为中心点,标记点的邻域八方向上存在两个边缘点,中心点的上边点的邻域八方向上存在三个边缘点。若边缘点的邻域八方向上边缘点数大于2,则将其视为链码的端点。若不将标记点删除,链码跟踪到中心点的上边点时需要停止,因为该点邻域八方向上存在三个边缘点,跟踪到此点时,存在两个方向,所以在此点需要停止;然后再以此点作为起点分成两个方向跟踪链码。这样存在三条链码。若将标记点删除,则中心点的上边点的邻域八方向上只存在两个边缘点,跟踪到此点时无需停下,只需要一链码。图4、图5两种情况与图3类似,同一道理,为本技术领域人员所熟知,此处不再详述。 
b2、在上述梯度图像上,将边缘点八方向上边缘点数为0的边缘点删除,根据边缘点的八方向上边缘点数目进行分类,将边缘点八方向上边缘点数目为1 的边缘点作为端点,将边缘点八方向上边缘点数为2的边缘点作为链码中间点,将边缘点八方向上边缘点数大于2的边缘点作为链码交叉点;如图6、图7和图8所示;其中,图6中,标记点的邻域八方向上存在一个边缘点;图7中,标记点的邻域八方向上存在两个边缘点;图8中,标记点的邻域八方向上边缘点数大于2。 
b3、以八方向上边缘点数为1的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或大于2的边缘点,此条链码跟踪结束;如图9所示;八方向上边缘点数为1或大于2的边缘点是作为链码的端点,跟踪链码时遇到这样的点需要停止,然后再跟踪其他的边缘点,直到所有的边缘点被跟踪,链码跟踪工作才可以结束。 
b4、以八方向上边缘点数大于2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或2的边缘点,此条链码跟踪结束; 
b5、剩余的边缘点为八方向上边缘点数为2的边缘点,剩余的边缘点构成闭合线圈,以任意一个八方向上边缘点数为2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0、且记录链码的长度,直到不再遇到边缘点,此条链码跟踪结束。 
c、提取上述每条链码的直线段,记录每条直线段的起点坐标、终点坐标、角度以及直线段的长度,如图11所示; 
c1、对每条链码进行分割,以6个像素为一条子链码,记录子链码的长度及角度; 
c2、当前子链码与上一条相邻的子链码与合并条件匹配时,将当前子链码与上一条相邻的子链码合并;否则,将上一条子链码作为单独的直线段;记录每条直线段的起点坐标、终点坐标、角度以及直线段长度; 
所述当前子链码与上一条相邻的子链码间的合并条件是两条子链码间角度大于165度且两条子链码的直线相似度大于0.9,直线相似度的为上一条相邻的子链码起点与当前子链码的终点之间的距离与两条子链码对应长度之和的比值。 
c3、扫描每条直线段,查找存在能合并的直线段,并将相应的直线段合并; 
由于边缘提取之后的图像边缘存在断裂现象,提取直线段后再合并相邻的直线段,合并的条件为两条子链码之间的角度大于165度且两条子链码的直线相似度大于0.9。扫描每条直线段,寻找是否存在可以合并的直线段,如果存在,则将索引号大的直线段并入到索引号小的直线段中。 
c4、将长度小于25个像素的直线段删除。 
由于可识别条码的单位模块最小为3个像素,最小的条码边长为10个单位模块,所以长度阈值设为25个像素。 
d、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段,在“L”型两条直线段的对角分别作两条平行的线段,以记录 条码区域两条虚线边的边界线,并根据“L”型的两条直线段与两条虚线边的边界线,判断条码区域; 
d1、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段; 
d2、在在“L”型两条直线段的对角分别作两条平行的线段,并将两条所作的线段向外平移直至线段上无边界点,以记录条码区域两条虚线边的边界线; 
d3、以两条虚边的边界线向里延伸两个像素分别做两条平行线段,判断所作线段与“L”型的两条直线段间的区域是否为条码区域,获得条码区域。 
判断条件为:穿过的边界点数是否大于设定阈值,这里设定阈值为8,去掉第一个和最后一个边界点,最小值为8,白色模块与黑色模块长度的差值小于设定另一阈值设为7,由于二值化之后边缘会出现增长或缺失的情况。 
e、根据上述判定的条码区域,在原始灰度图像上截取条码区域;拟合具有“L”型形状的两条直线段,并根据拟合“L”型两条直线段的角度得到条码区域的旋转角度,根据旋转角度将条码区域旋转到水平正方位置,并对旋转后的条码区域进行双线性插值; 
e1、根据上述获得条码区域及条码区域对应的边界,计算条码区域的顶点,以在原始灰度图像上截取条码区域; 
e2、采用最小二乘法拟合截取条码区域内“L”型的两条直线段,精确Data Matrix二维条码的旋转角度,得到 
D = Σ i = 1 n d i 2 = [ y i - a - bx i ] 2
其中,a为需要拟合的直线段的斜率,b为对应的截距,y、x分别为拟合点的纵坐标、横坐标,D为拟合差值,n为坐标点个数; 
D对a和b分别求一阶偏导数为: 
∂ D ∂ a = - 2 [ Σ i = 1 n y i - na - b Σ i = 1 n x i ]
∂ D ∂ b = 2 [ Σ i = 1 n x i y i - a Σ i = 1 n x i - b Σ i = 1 n x i 2 ]
令一阶偏导数为零,得到 
Σ i = 1 n y i - na - b Σ i = 1 n x i = 0
Σ i = 1 n x i y i - a Σ i = 1 n x i - b Σ i = 1 n x i 2 = 0
引入平均值: x ‾ = 1 n Σ i = 1 n x i ; y ‾ = 1 n Σ i = 1 n y i ; x 2 ‾ = 1 n Σ i = 1 n x i 2 ; xy ‾ = 1 n Σ i = 1 n x i y i 则得到: 
y ‾ - a - b x ‾ = 0
xy ‾ - a x ‾ - b x 2 ‾ = 0
y ‾ - a - b x ‾ = 0 xy ‾ - a x ‾ - b x 2 ‾ = 0
而两个公式组成方程组,能求出a(直线斜率)与b(直线截距),从而得出直线方程,即可描述“L”型的两条直线段。 
e3、根据上述拟合“L”型的两条直线段,计算Data Matrix二维条码的旋转角度,令μ=[x1-x3,y1-y3,0],φ=[x2-x3,y2-y3,0],则叉积为w=μ×φ=[0,0,(x1-x3)(y2-y3)-(x2-x3)(y1-y3)];其中,x3,y3分别表示拟合后“L”型的两条直线段交点的横坐标、纵坐标;x1,y1分别表示拟合后“L”型的两条直线段中一条直线段的端点,x2,y2分别表示拟合后“L”型的两条直线段中另一条直线段的端点; 
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)<0时,根据拟合后“L”型的两直线段的角度得到旋转角度θ2; 
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)>0,根据拟合后“L”型的两直线段的角度得到旋转角度θ1;如图12和图13所示; 
通过步骤e2及二维条码“L”型的两条直线段的直线方程的斜率可求得直线段的角度: 
θ1=arctan(a1
θ2=arctan(a2
其中a1和θ1分别为“L”边的一条直线段的斜率和角度,a2和θ2分别为“L”边的另一条直线段的斜率和角度。 
e4、将上述计算得到的旋转角度代入图像旋转公式,得到 
x ′ y ′ = cos θ sin θ - sin θ cos θ x y ,
以将条码旋转正方便对条码进行采样,其中,x′,y′分别表示旋转后的纵横坐标; 
e5、条码图像旋转时,数字图像的坐标值是整数,而输出像素通常被映射到图像中的非整数位置,因此旋转后的图像通常会存在一些几何失真,这里采用双线性插值算法对旋转后的二维条码插值;采用双线性插值算法对旋转后的二维条码插值,得到 
f(x′0,y′0)=(1-η)(1-λ)f(x0,y0)+(1-η)λf(x0,y0+1)+η(1-λ)f(x0+1,y0)+ηλf(x0+1,y0+1)其中,η=x′0-x0,λ=y′0-y0;x′0为介于x0与x0+1之间的整数,y′0为介于y0与y0+1之间的整数。 
f、高斯平滑上述二维条码区域。 
高斯卷积模版为: 
h = 1 16 * 1 2 1 2 4 2 1 2 1 .
采用最大类间方差法对高斯平滑后的二维条码区域进行二值化,并对二值 化后的条码区域进行采样,且根据Data Matrix条码类型对采样后的条码区域进行译码。 
对二值化后的条码区域进行采样时,对条码区域进行水平投影与垂直投影,以得到条码的上边界、下边界、左边界、右边界;以上边界向下每落两个像素做一条直线,直至下边界;记录边界点的横坐标,以两点之间的中心点坐标做竖直直线,并以两点之间的中心点坐标做水平直线;以水平直线与竖直直线的交点作为此采样模块的值。采样后,根据Data Matrix条码类型进行译码。 
本发明采用基于链码跟踪技术提取边缘链码,即将边缘点进行分类,按各类点分别进行跟踪,记录链码;然后利用直线段合并技术提取直线段,即将链码分割成子链码,根据直线段相似度合并子链码构成直线段;接着利用最小二乘法技术拟合直线段,即利用最小二乘法拟合“L”边,精确角度;最后利用向量外积技术计算二维条码旋转角度,即利用向量外积方法具有方向性这一特点计算出条码的旋转角度。采用基于链码跟踪的方法,对每条链码进行直线段提取,克服以往计算量大、识别速度慢、容易受背景干扰、极性不同时而无法识别的缺点;本发明计算量小,只需遍历图像两次,不受条码极性的影响,黑色条码或白色条码均可识别,可识别的最小条码可以达到3个像素单位模块的二维条码,不容易受背景干扰。 

Claims (10)

1.一种复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述Data Matrix二维条码快速识别方法包括如下步骤:
(a)、读取包含有Data Matrix二维条码的灰度图像,对上述灰度图像进行中值滤波,并利用Sobel边缘检测算子提取灰度图像每个像素点的方向向量及梯度值,且对灰度图像的梯度值进行非极大值抑制及阈值二值化梯度图像,以获得灰度图像的边缘;
(b)、对上述图像,根据边缘点的八方向上边缘点数目进行分类,并对每类边缘点分别进行链码跟踪,且记录每条链码的起点坐标、方向码及链码长度;
(c)、提取上述每条链码的直线段,记录每条直线段的起点坐标、终点坐标、角度以及直线段的长度;
(d)、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段,在“L”型两条直线段的对角分别作两条平行的线段,以记录条码区域两条虚线边的边界线,并根据“L”型的两条直线段与两条虚线边的边界线,判断条码区域;
(e)、根据上述判断的条码区域,在原始灰度图像上截取条码区域;拟合具有“L”型形状的两条直线段,并根据拟合“L”型两条直线段的角度得到条码区域的旋转角度,根据旋转角度将条码区域旋转到水平正方位置,并对旋转后的条码区域进行双线性插值;
(f)、高斯平滑上述二维条码区域。
2.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是:采用最大类间方差法对高斯平滑后的二维条码区域进行二值化,并对二值化后的条码区域进行采样,且根据Data Matrix条码类型对采样后的条码区域进行译码。
3.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(a)包括如下步骤:
(a1)、采用中值滤波对灰度图像进行滤波时,设定滤波窗口内输入序列为{x(i,j),i,j∈I},I为自然数集合或子集,窗口大小为m×n,则
y为滤波输出;
(a2)、利用Sobel边缘检测算子提取灰度图像内每个像素点X方向、Y方向的方向向量及梯度值时,X方向、Y方向的检测算子为:
g 1 = 1 2 1 0 0 0 - 1 - 2 - 1 , g 2 = - 1 0 1 - 2 0 2 - 1 0 1 ;
其中,g1为X方向的检测算子,g2为Y方向的检测算子;采用计算灰度图像内像素点的梯度值,其中,G为梯度模,dx,dy分别表示X方向,Y方向上的梯度值;
(a3)、对梯度图像的每个像素点作非极大值抑制;
(a4)、计算梯度图像的梯度平均值,设定两倍的梯度平均值为阈值,并根据阈值将梯度图像二值化,以获得灰度图像的边缘。
4.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(b)包括如下步骤:
(b1)、提取梯度图像中的“L”型区域,当“L”型区域对应角点的左边点、右点边、上边点或下边点的八方向上只有两个边缘点时,将相应的左边点、右边点、上边点或下边点删除;当“L”型区域对应角点的上边点、下边点、左边点、右边点的八方向上大于两个边缘点时,将所述角点删除;
(b2)、在上述梯度图像上,将边缘点八方向上边缘点数为0的边缘点删除,根据边缘点的八方向上边缘点数目进行分类,将边缘点八方向上边缘点数目为1的边缘点作为端点,将边缘点八方向上边缘点数为2的边缘点作为链码中间点,将边缘点八方向上边缘点数大于2的边缘点作为链码交叉点;
(b3)、以八方向上边缘点数为1的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或大于2的边缘点,此条链码跟踪结束;
(b4)、以八方向上边缘点数大于2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0,且记录链码的长度,直到遇到八方向上边缘点数为1或2的边缘点,此条链码跟踪结束;
(b5)、剩余的边缘点为八方向上边缘点数为2的边缘点,剩余的边缘点构成闭合线圈,以任意一个八方向上边缘点数为2的边缘点作为起点,记录作为起点的边缘点与前一个边缘点、下一个边缘点的方向码,并将前一个边缘点置0、且记录链码的长度,直到不再遇到边缘点,此条链码跟踪结束。
5.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(c)包括如下步骤:
(c1)、对每条链码进行分割,以6个像素为一条子链码,记录子链码的长度及角度;
(c2)、当前子链码与上一条相邻的子链码与合并条件匹配时,将当前子链码与上一条相邻的子链码合并;否则,将上一条子链码作为单独的直线段;记录每条直线段的起点坐标、终点坐标、角度以及直线段长度;
(c3)、扫描每条直线段,查找存在能合并的直线段,并将相应的直线段合并;
(c4)、将长度小于25个像素的直线段删除。
6.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(d)包括如下步骤:
(d1)、根据上述直线段角度,查找相邻相差90度的两条直线段,以获得“L”型的两条直线段;
(d2)、在在“L”型两条直线段的对角分别作两条平行的线段,并将两条所作的线段向外平移直至线段上无边界点,以记录条码区域两条虚线边的边界线;
(d3)、以两条虚边的边界线向里延伸两个像素分别做两条平行线段,判断所作线段与“L”型的两条直线段间的区域是否为条码区域,获得条码区域。
7.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(e)包括如下步骤:
(e1)、根据上述获得条码区域及条码区域对应的边界,计算条码区域的顶点,以在原始灰度图像上截取条码区域;
(e2)、采用最小二乘法拟合截取条码区域内“L”型的两条直线段,精确Data Matrix二维条码的旋转角度,得到
D = Σ i = 1 n d i 2 = [ y 1 - a - bx i ] 2
其中,a为需要拟合的直线段的斜率,b为对应的截距,y、x分别为拟合点的纵坐标、横坐标,D为拟合差值,n为坐标点个数;
D对a和b分别求一阶偏导数为:
∂ D ∂ a = - 2 [ Σ i = 1 n y i - na - b Σ i = 1 n x i ] ∂ D ∂ b = - 2 [ Σ i = 1 n x i y i - a Σ i = 1 n x 1 - b Σ i = 1 n x i 2 ]
令一阶偏导数为零,得到
Σ i = 1 n y i - na - b Σ i = 1 n = 0 Σ i = 1 n x i y i - a Σ i = 1 n x i - b Σ i = 1 n x i 2 = 0
引入平均值: x ‾ = 1 h Σ i = 1 n x i ; y ‾ = 1 n Σ i = 1 n y i ; x 2 ‾ = 1 n Σ i = 1 n x i 2 ; xy ‾ = 1 n Σ i = 1 n x i y i 则得到:
(e3)、根据上述拟合“L”型的两条直线段,计算Data Matrix二维条码的旋转角度,令μ=[x1-x3,y1-y3,0],φ=[x2-x3,y2-y3,0],则叉积为w=μ×φ=[0,0,(x1-x3)(y2-y3)-(x2-x3)(y1-y3)];其中,x3,y3分别表示拟合后“L”型的两条直线段交点的横坐标、纵坐标;x1,y1分别表示拟合后“L”型的两条直线段中一条直线段的端点,x2,y2分别表示拟合后“L”型的两条直线段中另一条直线段的端点;
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)<0时,根据拟合后“L”型的两直线段的角度得到旋转角度θ2
当(x1-x3)(y2-y3)-(x2-x3)(y1-y3)>0,根据拟合后“L”型的两直线段的角度得到旋转角度θ1
(e4)、将上述计算得到的旋转角度代入图像旋转公式,得到
以将条码旋转正方便对条码进行采样,其中,x′,y′分别表示旋转后的纵横坐标;
(e5)、采用双线性插值算法对旋转后的二维条码插值,得到
f(x' 0,y' 0)=(1-η)(1-λ)f(x0,y0)+(1-η)λf(x0,y0+1)+η(1-λ)f(x0+1,y0)+ηλf(x0+1,y0+1)
其中,η=x' 0-x0,λ=y ' 0-y0;x 0为介于x0与x0+1之间的整数,y 0为介于y0与y0+1之间的整数。
8.根据权利要求1所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,所述步骤(f)中,高斯卷积模版为:
h = 1 16 * 1 2 1 2 4 2 1 2 1 .
9.根据权利要求2所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是,对二值化后的条码区域进行采样时,对条码区域进行水平投影与垂直投影,以得到条码的上边界、下边界、左边界、右边界;以上边界向下每落两个像素做一条直线,直至下边界;记录边界点的横坐标,以两点之间的中心点坐标做竖直直线,并以两点之间的中心点坐标做水平直线;以水平直线与竖直直线的交点作为此采样模块的值。
10.根据权利要求5所述的复杂工况背景下的Data Matrix二维条码快速识别方法,其特征是:所述当前子链码与上一条相邻的子链码间的合并条件是两条子链码间角度大于165度且两条子链码的直线相似度大于0.9,直线相似度的为上一条相邻的子链码起点与当前子链码的终点之间的距离与两条子链码对应长度之和的比值。
CN201210163706.0A 2012-05-24 2012-05-24 复杂工况背景下的Data Matrix二维条码快速识别方法 Active CN102708351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210163706.0A CN102708351B (zh) 2012-05-24 2012-05-24 复杂工况背景下的Data Matrix二维条码快速识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210163706.0A CN102708351B (zh) 2012-05-24 2012-05-24 复杂工况背景下的Data Matrix二维条码快速识别方法

Publications (2)

Publication Number Publication Date
CN102708351A CN102708351A (zh) 2012-10-03
CN102708351B true CN102708351B (zh) 2014-07-23

Family

ID=46901097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210163706.0A Active CN102708351B (zh) 2012-05-24 2012-05-24 复杂工况背景下的Data Matrix二维条码快速识别方法

Country Status (1)

Country Link
CN (1) CN102708351B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014063837A1 (en) * 2012-10-23 2014-05-01 Sicpa Holding Sa Method and device for identifying a two-dimensional barcode
CN103996212B (zh) * 2013-02-18 2017-11-14 威达电股份有限公司 自动描绘对象边缘走向之方法
CN103177416B (zh) * 2013-04-10 2015-08-19 浙江大学 一种基于最小二乘法的qr码图像定位方法
CN105335681B (zh) * 2014-07-14 2017-09-22 株式会社理光 条形码识别装置、文档图像管理系统以及条形码识别方法
CN105989317B (zh) * 2015-02-11 2021-10-08 北京鼎九信息工程研究院有限公司 一种二维码的识别方法及装置
CN106485255B (zh) * 2016-09-29 2019-12-24 元启工业技术(青岛)有限公司 一种dm码定位及识别的方法与系统
CN106934438B (zh) * 2017-02-28 2019-11-19 浙江华睿科技有限公司 一种快速反应qr码模块边界调整的方法及装置
CN107133545A (zh) * 2017-06-08 2017-09-05 东北大学 一种立体条码、识别方法及室内辅助地图构建方法
CN107301368B (zh) * 2017-06-28 2023-12-22 昂视智能(深圳)有限公司 一种DataMatrix二维码的识别方法
CN109187548B (zh) * 2018-07-24 2020-04-07 西南交通大学 一种岩体裂隙识别方法
CN109359645B (zh) * 2018-08-29 2022-02-22 深圳市易成自动驾驶技术有限公司 Agv编码标志、检测方法及计算机可读存储介质
CN114549423A (zh) * 2022-01-26 2022-05-27 环旭电子股份有限公司 一种标签完整度自适应检测方法及系统
CN116822549B (zh) * 2023-08-30 2023-12-22 北京紫光青藤微系统有限公司 用于离散dpm码区域的定位方法及装置、图像处理设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1438603A (zh) * 2003-03-25 2003-08-27 西安理工大学 基于通用办公设备的二维条码自动识读方法
CN101197004A (zh) * 2007-12-25 2008-06-11 深圳矽感科技有限公司 一种二维条码及其编解码方法
CN102184378A (zh) * 2011-04-27 2011-09-14 茂名职业技术学院 一种pdf417标准二维条码图像切割的办法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100511271C (zh) * 2006-11-16 2009-07-08 深圳市天朗时代科技有限公司 二维码解码方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1438603A (zh) * 2003-03-25 2003-08-27 西安理工大学 基于通用办公设备的二维条码自动识读方法
CN101197004A (zh) * 2007-12-25 2008-06-11 深圳矽感科技有限公司 一种二维条码及其编解码方法
CN102184378A (zh) * 2011-04-27 2011-09-14 茂名职业技术学院 一种pdf417标准二维条码图像切割的办法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于链码跟踪的Data Matrix二维条码快速识别;徐义钊;《计算机应用》;20121130;第32卷(第11期);3206-3209 *
徐义钊.基于链码跟踪的Data Matrix二维条码快速识别.《计算机应用》.2012,第32卷(第11期),3206-3209.

Also Published As

Publication number Publication date
CN102708351A (zh) 2012-10-03

Similar Documents

Publication Publication Date Title
CN102708351B (zh) 复杂工况背景下的Data Matrix二维条码快速识别方法
Luvizon et al. A video-based system for vehicle speed measurement in urban roadways
KR101617681B1 (ko) 히스토그램들을 갖는 다중 층 연결 요소들을 사용하는 텍스트 검출
Kumar et al. An efficient approach for detection and speed estimation of moving vehicles
CN106815583B (zh) 一种基于mser和swt相结合的夜间车辆车牌定位方法
CN102254144A (zh) 一种鲁棒的图像中二维码区域提取方法
Babenko Visual inspection of railroad tracks
CN106485182A (zh) 一种基于仿射变换的模糊qr码复原方法
CN102750531B (zh) 用于票据文档定位格的手写体标记符号检测方法
CN103136528A (zh) 一种基于双边缘检测的车牌识别方法
Saha et al. Automatic localization and recognition of license plate characters for Indian vehicles
CN103632376A (zh) 一种两级框架的车辆部分遮挡消除方法
JP2015064752A (ja) 車両監視装置、および車両監視方法
Zhu et al. Integrating saliency and ResNet for airport detection in large-size remote sensing images
Zhang et al. Detection and identification method of medical label barcode based on deep learning
CN108961262B (zh) 一种复杂场景下的条码定位方法
Parvin et al. Vehicle number plate detection and recognition techniques: a review
CN113435452A (zh) 一种基于改进ctpn算法的电气设备铭牌文本检测方法
Liu et al. A multiscale deep feature for the instance segmentation of water leakages in tunnel using MLS point cloud intensity images
Kumar et al. Traffic surveillance and speed limit violation detection system
Islam et al. An approach to extract text regions from scene image
Gui et al. A fast caption detection method for low quality video images
Lim et al. Vision-based recognition of road regulation for intelligent vehicle
Kumar et al. An efficient algorithm for text localization and extraction in complex video text images
Alhussein et al. Vehicle license plate detection and perspective rectification

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 1800 No. 214122 Jiangsu city of Wuxi Province Li Lake Avenue

Applicant after: Jiangnan University

Applicant after: Xinje Electronic Co., Ltd.

Address before: 1800 No. 214122 Jiangsu city of Wuxi Province Li Lake Avenue

Applicant before: Jiangnan University

Applicant before: Wuxi Czech Automation Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant