CN102354363B - 高反光柱面金属上的二维条码图像识别方法 - Google Patents

高反光柱面金属上的二维条码图像识别方法 Download PDF

Info

Publication number
CN102354363B
CN102354363B CN201110274647.XA CN201110274647A CN102354363B CN 102354363 B CN102354363 B CN 102354363B CN 201110274647 A CN201110274647 A CN 201110274647A CN 102354363 B CN102354363 B CN 102354363B
Authority
CN
China
Prior art keywords
value
image
bar code
point
dimensional bar
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.)
Expired - Fee Related
Application number
CN201110274647.XA
Other languages
English (en)
Other versions
CN102354363A (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.)
Northwestern Polytechnical University
Original Assignee
Northwestern Polytechnical 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 Northwestern Polytechnical University filed Critical Northwestern Polytechnical University
Priority to CN201110274647.XA priority Critical patent/CN102354363B/zh
Publication of CN102354363A publication Critical patent/CN102354363A/zh
Application granted granted Critical
Publication of CN102354363B publication Critical patent/CN102354363B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种高反光柱面金属上的二维条码图像识别方法,经过初定位二维条码区域,校正柱面光照不均,精确定位条码四边缘,判断输出数据是否满足校验函数,采集多幅图像并融合,仿射变换校正图像,划分网格,迭代提取信息等步骤得到二维条码模块信息矩阵。本发明能对任意角度旋转倾斜,轻度或中度几何畸变,轻度或中度光照不均,对比度不强,轻度或中度磨损的金属上的二维条码都有较高的识别率。

Description

高反光柱面金属上的二维条码图像识别方法
技术领域
本发明涉及对高反光柱面金属上的DataMatrix二维条码进行信息提取的方法,属于自动识别技术领域。
背景技术
直接零件标识DPM(Direct Part Marking)技术是一种可直接在产品的表面形成包括文字、符号或图案等形式的永久标识技术,利用DPM技术在产品表面形成的一维条码或二维条码符号,是实现产品可追溯性标识的重要技术手段,在条码符号的选择上,考虑到产品表面面积有限、提高符号识读率等因素,目前多选用二维DataMatrix条码作为产品的二维条码永久标识,这是因为DataMatrix条码编码容量大、密度高、纠错能力强。
目前二维条码识读方法上都采用CCD摄像头采集含有二维条码的图像,再对图像进行一系列处理,去除背景定位条码区域,然后提取条码数据信息。现有的二维条码识读系统只能处理平面状态下完整的、形变不严重及光照比较理想情况下的二维条码图像。而DPM所标识的零件或刀具很少具有平面表面,大都为圆柱形的,并且所标识的表面多为光滑的金属材质,所以摄像头所采集的图像通常含有较强的反光、光照不均及对比度低等现象,同时条码形状会有一定程度的扭曲。对于曲率比较大的圆柱形表面甚至会有反光区域覆盖码区,导致条码信息损失。针对金属柱面上标识的二维条码这些特有的繁杂情况,现有条码识别技术无法处理,譬如日本Cognex corp出产的手持式Dataman 7500和封闭式读码器MATRIX2000,都无法识读标刻在光滑的圆柱形金属材质上的二维DataMatrix条码,从而限制了二维条码技术在DPM中的应用。申请号为“201110100489.6”,发明名称为“一种金属柱面直接标刻二维条码识读装置及识读方法”的专利,从硬件方面设计了如何消除柱面高光,但软件方面并未实现。
发明内容
为了克服现有技术仅从硬件层面上消除柱面高光的不足,本发明提供一种高反光柱面金属上的二维条码图像识别方法,有效地实现了二维条码的读取。
本发明解决其技术问题所采用的技术方案包括以下步骤:
第一步,初定位二维条码区域:
1.定位二维条码的横向位置:
从图像横向中间w/2处,向左遍历求取竖向梯度:
grad i = Σ j = 0 h ( | pix i , j - pix i + 1 , j | + | pix i , j + pix i - 1 , j | ) / 2 , i ∈ ( 0 , w / 2 )
其中,gradi代表图像A中i列的梯度值,设在i=xleft处,取得最大梯度值,w为图像宽度,pixi,j代表现图像中i列j行像素点的像素值;用同样的方法从图像横向中间w/2处,向右遍历求取竖向梯度,设在i=xrigt处,取得最大梯度值。
2.通过投影法确定二维条码的纵向位置:
求取图像A竖向区域投影值:
proj j = Σ i = xleft xrigt | pix i , j - pix x + 1 , j | , i ∈ ( 0 , h )
得到一组投影值
Figure BSA00000574876400023
求取这组投影值的平均值
Figure BSA00000574876400024
遍历
Figure BSA00000574876400025
每个值,若
Figure BSA00000574876400026
则使projj=0;再次遍历
Figure BSA00000574876400027
记下每一个连续并不含有0的连通区域,设最长的一个连通域起始点和结束点为yup和ydown。
通过以上操作,可初定位条码所在区域,本发明认定横向xrigt=xrigt-5,xlef=xleft+5,纵向yup=yup+5、ydown=ydown-5确定的区域为二维条码区域。
第二步,校正柱面光照不均:
本发明利用6次多项式插值公式模拟横向像素的渐变曲线,并利用等距节点的牛顿插值法计算横向渐变曲线的插值公式,步骤如下:
1.建立横向节点值数组
Figure BSA00000574876400028
遍历投影值
Figure BSA00000574876400029
计算 xvalu i = Σ j = 0 h p i , j / n , 其中, p i , j = pix i , j proj j = 0 0 else , n表示
Figure BSA000005748764000212
中projj=0的数目。
2.节点间距h=(xrigt-xleft)/6,插值节点数组为
Figure BSA000005748764000213
3.设横向像素的渐变曲线函数f(x)在插值节点处函数值数组利用牛顿插值法求出6次多项式插值公式,设为N6(x),其中x=xleft+th,t=0,1,...,6。
4.以
Figure BSA000005748764000215
的平均值 xvalu ‾ = Σ i = xleft xrigt xvalu i / ( xrigt - xleft ) 作为基准值,求取逆向校正数组 { v ( x i ) | v ( x i ) = N 6 ( xleft + x i - xleft h h ) - xvalu ‾ } i = xleft xrigt .
5.根据逆向校正数组校正二维条码区域:
{pix|pixi,j=pixi,j-v(xi),xleft≤i≤xrigt  ydown≤j≤yup}
校正完二维条码区域后,通过(xrigt,ydown),(xrigt,yup),(xleft,ydown),(xleft,yup)四个顶点为基准裁切原图像,再对裁切完后的图像四周加上20像素长度的0值像素,得到图像A1。并将图像宽度和高度重新赋值,w=xrigt-xleft+20,h=yup-ydown+20。
第三步,精确定位条码四边缘:
1.求取码区主方向:
1)首先对图像A1做灰值形态学边缘梯度运算:
Figure BSA00000574876400032
Figure BSA00000574876400033
为灰值膨胀运算,Θ为灰值腐蚀运算,g为半径为2个像素的圆形结构元素,得到梯度图像A2,再对A2做大津阈值分割得到二值图像A3
2)建立一个二维条码边缘方向数组 { value ( d i ) | d i ∈ ( - π 2 + iπ 16 , - π 2 + ( i + 1 ) π 16 ) } i = 0 15 , 每个di代表着一个11.25°的区间。
3)扫描A3,若pixi,j=255,求取此点在A2中的sobel梯度方向drei,j=arctan(dyi,j/dxi,j),其中:
dyi,j=(pixi-1,j+1+2pixi,j+1+pixi+1,j+1)-(pixi-1,j-1+2pixi,j-1+pixi+1,j-1)
dxi,j=(pixi+1,j+1+2pixi+1,j+pixi+1,j-1)-(pixi-1,j+1+2pixi-1,j+pixi-1,j-1)
若drei,j∈di,则value(di)加1,直至扫描完A3中全部像素点。
4)遍历计算区间加权值:
valued=0.3×value(di-1)+0.4×value(di)+0.3×value(di+1)
其中,di-1表示di逆时针方向的上一个取值,di+1表示di顺时针方向下一个取值,d0到d15是一个圆形循环区间。设在区间di处加权值最大,记di中点值dfirst,和di相隔8个的区间的中点值记为dsec,二维条码的两个大致主方向求取为dfirst和dsec
2.去除噪声并粗定位:
1)以dfirst为方向的两条直线和以dsec为方向的
Figure BSA00000574876400036
线分
Figure BSA00000574876400037
个顶点开始遍历A3,遍历的间距为2个像素,将这四条直线记为遍历直线,用字母lline表示。
2)记录在遍历直线lline上像素值为255的像素点坐标,用集合{(i,j)|(i,j)∈lline && pixi,j=255}表示,判断集合中每个像素点的八邻域像素点的像素值,将八邻域中像素值等于255的像素点都计入集合中。
3)判断遍历直线lline所对应集合,若集合中元素个数大于阈值Th1,且集合中坐标点的的方差大于阈值Th2时,确定为条码区域,停止此次遍历并记下停止位置,其中, Th 1 = h 2 + w 2 / 3 , Th 2 = Σ i = 0 h 2 + w 2 ( i - h 2 + w 2 2 ) 2 2 h 2 + w 2 .
4)判断从四个顶点开始的遍历有没有全部结束,若没有则选择没有遍历过的顶点转到步骤2)开始遍历,若全部结束则转向步骤5)。
5)将四个停止位置处的遍历直线所围成的区域记为粗定位二维条码区域,并将粗定位二维条码区域之外的区域全部赋值为0,这样就去除了大部分污染。
3.精确定位条码边缘:
1)分别从上向下,从下向上,从左向右,从右向左扫描A3,得到一组像素值都为255边缘点,将这些点的集合记作E,并将图像A3中非边缘点都置为0。
2)对集合E中的所有点作霍夫变换,得到ρ-θ坐标系下的霍夫变换域,其中ρ是极半径,取值范围
Figure BSA00000574876400043
θ是极角,取值范围[dfirst-10,dfirst+10]和[dsec-10,dsec+10]。
3)利用模板遍历霍夫变换域,模板是一个5*5正方形区域。设中心点对应的霍夫点为(θi,ρi),则正方形区域中点(θi-1,ρi),(θi+1,ρi),(θi,ρi-1),(θi,ρi+1)对应的权值p0=0.6,点(θi+1,ρi+1),(θi+1,ρi-1),(θi-1,ρi+1),(θi-1,ρi-1)对应的权值p1=0.4,点(θi-2,ρi),(θi+2,ρi),(θi,ρi+2),(θi,ρi-2)对应的权值p2=0.2。正方形模板最中间是遍历目标点的坐标,其他对应的是目标点周围点的坐标,模板横向是θ轴方向,纵向是ρ轴方向。遍历霍夫变换域中(θi,θi),根据模板计算公式求取模板值T(θ,θ)
T ( θ i , ρ i ) = m ( θ i , ρ i ) + p 0 ( m ( θ i - 1 , ρ i ) + m ( θ i + 1 , ρ i ) + m ( θ i , p i - 1 ) + m ( θ i , ρ i + 1 ) ) +
p 1 ( m ( θ i + 1 , ρ i + 1 ) + m ( θ i + 1 , ρ i - 1 ) + m ( θ i - 1 , ρ i + 1 ) + m ( θ i - 1 , ρ i - 1 ) ) +
p 2 ( m ( θ i - 2 , ρ i ) + m ( θ i + 2 , ρ i ) + m ( θ i , ρ i - 2 ) + m ( θ i , ρ i + 2 ) )
其中是点(θ,ρ)对应的值,在模板遍历霍夫域的过程中,如果模板中的点(θ1,ρ1):ρ1超出ρ轴的范围
Figure BSA00000574876400054
舍去此模板点;如果θ1超出θ轴的范围
Figure BSA00000574876400055
则将此点代换为
Figure BSA00000574876400056
Figure BSA00000574876400057
得到新的点,并将此新的点的值代入模板计算公式求取模板值。
4)用模板遍历完霍夫域后,假设点(θj,ρj)对应的
Figure BSA00000574876400058
最大,则(θj,ρj)对应的图像坐标系中的直线ρj=xcosθj+ysinθj为最长直线。
5)求取
Figure BSA00000574876400059
模板上的所有的点在图像A3中对应的直线,并检测图像坐标系中在这些直线上并像素值等于255的点,称这些点为拟合点,记录这些点并根据这些点做最小二乘拟合,拟合直线即为DM码的一条边缘直线。
6)在霍夫域中清空上一步检测出的边缘直线的(ρ0,θ0)及其领域,判断本次检测直线是否为第四条直线,若否再转到步骤2)检测下一条边缘直线;若为第四条直线转到步骤7)。
7)求取四条边缘直线相互垂直的两两直线交点,共得四个交点。拟合点最多的边缘直线默认为二维条码的一条实边拟合直线,与其在同一个θ极角区间的拟合点最多的边缘直线为第二条实边拟合直线,两条实边拟合直线的交点为二维条码左上顶点,记为(x0,y0),另外两条边缘直线则默认为二维条码的虚边拟合直线,其交点为二维条码右下顶点,记为(x3,y3),其余的两交点记为(x1,y1)、(x2,y2)。
8)求取(x0,y0)和(x3,y3)连线的实际角度与理想状态3π/4之间的角度差:
θ=atan[y0-y3,x0-x3]-3π/4。
将另外两交点按角度θ逆时针旋转,求取旋转后x值:x1′=cosθ*x1+sinθ*y1,x2′=cosθ*x2+sinθ*y2,旋转后x值大的认为是右上顶点,x值小的则认为是右下顶点,将(x1,y1)、(x2,y2)中旋转后x值大的点赋值给(x1,y1),x值小的点赋值给(x2,y2)。
9)二维条码的四个顶点精确坐标即为:(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3),分别代表本次待识别二维条码的左上、右上、左下和右下四个顶点。
第四步,判断输出数据是否满足校验函数:
1.判断四个顶点的坐标有无超出横向(15,w-15)范围与竖向(15,h-15)范围,若至少有一个超过,则认为定位没有成功,输出否定值;若都没有超过则转向步骤2。
2.求取(x0,y0)与(x1,y1)之间的线段长度l0、(x1,y1)与(x2,y2)之间的线段长度l1、(x2,y2)与(x3,y3)之间的线段长度l2以及(x0,y0)与(x3,y3)之间的线段长度l3,得到一组线段长度数组
Figure BSA00000574876400061
计算比值{lm/ln(m≠n)&&m,n∈[0,3]},如果比值都在0.8~1.2之间。则默认上述方法已精确确定二维条码边缘,输出确定值;若否则判定二维条码边缘未能精确确定,输出否定值
3.若效验结果最终为确定值,转到第六步继续执行;若为否定值,转向第五步,采集多幅图像并融合识别。
第五步,采集多幅图像并融合:
1.调节黑色金属挡板使夹缝变小,直到相机抓取的图像没有高反光带覆盖条码区域为止,此时夹缝之间的条码区域只是整个二维条码区域的一部分。
2.调节相机拍摄时间为0~4秒,相机抓取图像帧数为0~10幅。
3.设抓取的帧数为f幅,旋转时间为t秒,旋转柱状金属每隔设f/t秒抓取一幅图像,得到一组图像序列
Figure BSA00000574876400062
4.利用步骤一的方法初定位图像序列
Figure BSA00000574876400063
中每个图像的二维条码区域,得到一组二维条码区域图像序列
Figure BSA00000574876400064
由于对应同一夹缝宽度,所以图像宽度是一样的,
Figure BSA00000574876400065
代表图像序列的图像大小,其中w和hp代表图像MvAreap的宽度和高度。
5.对于MvAreap,求取图像中每个像素点的横向和纵向的一阶导数gx和gy,以及两者的乘积gxgy,然后计算原图像上对应的每个像素点的兴趣值I=det(M)-k*tr2(M),其中, M = G ( s ‾ ) ⊗ g x 2 g x g y g x g y g y 2 , k为权值系数,取0.04,
Figure BSA00000574876400067
为高斯模板,det为矩阵行列式,tr为矩阵的迹。
6.将图像MvAreap上的兴趣值最大值记为Imax,以0.05*Imax作为阈值,判断每个像素点的兴趣值是否为其20*20像素邻域内的最大值,若为最大值且兴趣值大于0.05*Imax,则将此像素点记为MvAreap图像的Harris特征点。遍历图像MvAreap可得到特征点集Harp
7.重复步骤5和6,循环图像序列
Figure BSA00000574876400071
可得特征点集序列为对于i>0,图像MvAreap和MvAreap-1之间只有平移变化,并且通过初定位得到的MvAreap和MvAreap-1之间竖直位移很小,所以建立位移矩阵:
R = ( x 0 , y 0 ) · · · ( x 0 , y m ) · · · · · · · · · ( x n , y 0 ) · · · ( x n , y m ) n × m = ( 0 , - 1 / 20 h p - 1 ) · · · ( 0,1 / 20 h p - 1 ) · · · · · · · · · ( w - 1 , - 1 / 20 h p - 1 ) · · · ( w - 1 , 1 / 20 h p - 1 ) w × ( 1 / 10 + 1 ) h p - 1
8.遍历位移矩阵R,设此次遍历的位移元素为(x,y),设Ii是Hari中的特征点,坐标设为(xi,yi)。
在Hari-1中寻找距离(xi+x,yi+y)最近的特征点Ij,坐标设为(xj,yj),分别取Ii和Ij的4×4邻域A和B,求取这两个邻域的互相关系数:
C I i = Σ u = 1 4 Σ v = 1 4 ( A uv - A ‾ ) · ( B uv - B ‾ ) 16 · σ ( A ) · σ ( B )
其中
Figure BSA00000574876400075
Figure BSA00000574876400076
分别为邻域A和邻域B的像素平均值,σ(A)和σ(B)为标准差,Auv与Buv分别代表Ii与Ij的4×4邻域每个像素点的像素值。,可以看出
Figure BSA00000574876400077
从-1(两区域完全不同)到1(两区域完全相同)变化。
求取
Figure BSA00000574876400078
的高斯加权距离其中rij=‖(xj,yj)-(xi+x,yi+y)‖为特征点Ij与(xi+x,yi+y)之间的欧氏距离,σ为控制这两点之间相互作用的参数,本发明取σ=hi-1/8。
9.计算MvAreai和MvAreai-1在位移(x,y)下的特征点平均配准度 Reg ( x , y ) = Σ I i ∈ Har i G I i / size ( Har i ) , ( x , y ) ∈ R , 设在位移(xm,yn)∈R处Re g(x,y)取得最大值,则认为图像MvAreai经过位移(xm,yn)与MvAreai-1达到最佳配准融合;然后判断xm>w/3,若成立则配准融合成功,若不成立则认为MvAreai与MvAreai-1重合度过高,没有必要再融合;然后删除MvAreai并将其后的图像序号依次减1,譬如MvAreaj=MvAreaj-1(j>i),然后重复步骤5~9。
10.若将图像序列全部融合完毕,则得到一幅新的融合后的图像A1。A1的宽度为融合后图像的实际宽度,重新赋值给w,高度本步完毕后转向第三步继续顺序执行。
第六步,仿射变换校正图像:
对于原始真图像f(x,y)到变换后图像g(x′,y′)的空间变换,设变换后对应的四个顶点坐标为:(x0′,y0′)、(x1′,y1′)、(x2′,y2′)和(x3′,y3′),设并设变换方程为:
x = r ( x ′ , y ′ ) y = s ( x ′ , y ′ )
先在x方向上进行线性插值,即l1上进行线性插值:
r ( R 1 ) ≈ x 1 ′ - x ′ x 1 ′ - x 0 ′ x 0 + x ′ - x 0 ′ x 1 ′ - x 0 ′ x 1 where  R1=(x′,y0′)
再在l2上进行线性插值:
r ( R 2 ) ≈ x 1 ′ - x ′ x 1 ′ - x 0 ′ x 3 + x ′ - x 0 ′ x 1 ′ - x 0 ′ x 2 where  R2=(x′,y1′)
然后在y方向上进行线性插值:
r ( P ) ≈ y 0 ′ - y ′ y 0 ′ - y 1 ′ r ( R 2 ) + y ′ - y 1 ′ y 0 ′ - y 1 ′ r ( R 1 ) where  R2=(x′,y′)
由上述三个公式可由一维推向二维,假设输出图像为高为m,宽为n的矩形,则
x = r ( x ′ , y ′ ) = x 3 mn ( n - x ′ ) ( m - y ′ ) + x 2 mn x ′ ( m - y ′ ) + x 0 mn ( n - x ′ ) y ′ + x 1 mn x ′ y ′ - - - ( 1 )
同理对y进行双线性插值得:
y = s ( x ′ , y ′ ) = y 0 mn ( n - x ′ ) ( m - y ′ ) + y 1 mn x ′ ( m - y ′ ) + y 3 mn ( n - x ′ ) y ′ + y 2 mn x ′ y ′ - - - ( 2 )
将输出图像宽确定为w=m=200,输出图像高确定为h=n=200,建立一个空白图像A4,将图像A1四个顶点(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3)与空白图像A4的四个顶点对应起来,利用公式(1)和(2)可求取图像A4在图像A1中的对应点,对于非整数对应点用双线性插值法插值,最终求得经过几何畸变校正后的图像A4
对图像A4进行图像均衡,得到均衡过的图像A5
第七步,划分网格:
1.粗划分网格:
本发明认为打在金属柱面上的二维条码为8×8,10×10,12×12,14×14,16×16,18×18,20×20,22×22,24×24这9种划分方式,简记为集合
Figure BSA00000574876400091
粗划分网格如下:
1)以水平直线竖直方向遍历图像A5,遍历的间隔为一个像素,遍历的范围为图像A5的高度200像素。记录每个竖直遍历j处水平直线上像素点pixij的竖直方向梯度和:
h grad j = Σ i = 0 200 | pix i ( j - 1 ) - pix i ( j + 1 ) | ( j ∈ ( 0,200 ) )
得到一组竖直方向梯度投影数列
Figure BSA00000574876400093
同理以竖直直线水平方向遍历图像A5得到一组水平方向梯度投影数列
Figure BSA00000574876400094
2)选取p×p∈C划分方式预划分得到一组竖直分割点数列
H i = { h q | h q = q * 200 i ( q = 1,2 , . . . i - 1 ) } .
3)对于hq∈Hi,在 harea q = { h q - 200 4 i , h q + 200 4 i } 小区间里,求取最大加权值 max { 0 . 3 * ( h grad h p - 1 + h grad h p + 1 ) + 0.4 * h gra d h p ( h q ∈ h arg ea q ) } , 然后将最大加权值处的hp重新赋值给hq。对每个分割点都做此操作,得到一组微调后新的分割点集合Hi
4)对于hq∈Hi,求取在 harea q = { h q - 200 4 i , h q + 200 4 i } 区间里竖直方向梯度值投影的峰度:
hg q = N 2 ( N + 1 ) u 4 ( N - 1 ) ( N - 2 ) ( N - 3 ) s 4 - 3 ( N - 1 ) 2 ( N - 2 ) ( N - 3 ) ( q = 1,2 , . . . , i - 1 )
其中, N = 200 2 i , s = 1 N - 1 Σ i ∈ harea q ( h grad i - 1 N Σ j ∈ harea q h gr ad j ) 2 为标准差, u 4 = 1 N Σ i ∈ harea q ( h grad i - 1 N Σ j ∈ harea q h grad j ) 4 为4阶中心矩。然后求取i×i划分下竖直方向梯度值投影峰度的平均值
Figure BSA00000574876400101
遍历划分方式集合C,得到竖直方向梯度值投影峰度的平均值数列和竖直分割点数列集合{Hi}i×i∈C
5)然后选取p×p∈C划分方式预划分水平方向梯度投影数列与步骤2)~步骤4)的算法原理一样,亦可得到一组水平方向梯度值投影峰度的平均值数列记为
Figure BSA00000574876400104
并得到一组水平分割点数列集合记为{Li}i×i∈C
6)求取峰度最大值 max { hg i ‾ + lg i ‾ / 2 } i × i ∈ C , 假设 hg p ‾ + lg p ‾ / 2 = max { hg i ‾ + lg i ‾ / 2 } i × i ∈ C , 则p×p即为二维条码的划分方式,Hp和Lp即为二维条码网格粗划分纵向和横向分割点数列,最后可以得到二维条码网格粗划分坐标矩阵:
G = [ 0 , H p , h ] T × [ 0 , L p , w ] = ( 0,0 ) ( 0 , l 1 ) ( 0 , l 2 ) · · · ( 0 , l p - 1 ) ( 0 , w ) ( h 1 , 0 ) ( h 1 , l 1 ) ( h 1 , l 2 ) · · · ( h 1 , l p - 1 ) ( h 1 , w ) ( h 2 , 0 ) ( h 2 , l 1 ) ( h 2 , l 2 ) · · · ( h 2 , l p - 1 ) ( h 2 , w ) · · · · · · · · · · · · · · · · · · ( h p - 1 , 0 ) ( h p - 1 , l 1 ) ( h p - 1 , l 2 ) · · · ( h p - 1 , l p - 1 ) ( h p - 1 , w ) ( h , 0 ) ( h , l 1 ) ( h , l 2 ) · · · ( h , l p - 1 ) ( h , w ) ( p + 1 ) × ( p + 1 )
(hi∈Hp,li∈Lp,i=1,2,...,p-1)
其中第0行与第0列是扩展的行列,任取元素(hi,lj)∈G(i>0,j>0)代表第i行j列网格的右上坐标,w和h代表图像宽度和高度且都等于200。
2.微调细化分网格
1)取第i行第j列网格元素(hj,li)∈G(i>0,j>0),网格宽度wg=li-li-1,网格高度hg=hj-hj-1,在竖向harea={hj-hg/4,hj+hg/4}范围内,求取网格(hj,li)在harea范围内的上边缘梯度wupy,假设在my处取得最大值: wup my = max { wup y | wup y = Σ x = l i - 1 l i | pix x , y + 1 - pix x , y - 1 | y ∈ harea } . 同理,在横向warea={li-wg/4,li+wg/4}范围内,求取网格(hj,li)的右边缘梯度,假设在mx处取得最大值: hrigt mx = max { hrigt x | hrigt x = Σ y = h j - 1 h j | pix x + 1 , y - pix x - 1 , y | x ∈ warea } .
2)建立空白二维条码网格边缘梯度矩阵GE和二维条码网格划分位移矩阵GM:
GE = ( 0 , 0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) · · · · · · · · · · · · · · · ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) p × p GM = ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) · · · · · · · · · · · · · · · ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) ( 0,0 ) ( 0,0 ) · · · ( 0,0 ) ( 0,0 ) ( p + 1 ) × ( p + 1 )
根据上一步求出的第i行第j列网格的上边缘和右边缘梯度值wupmy与hrigtmx,将(wupmy,hrigtmx)赋值GE的第i行第j列元素。第i行与第j列网格的上边缘和右边缘位移为my-hj和mx-li,将(my-hj,mx-li)赋值GM的第i行与第j列元素。遍历G循环执行1,则得到满秩的GE和GM。最后二维条码网格细划分坐标矩阵为:G=G-GM。
至此二维条码网格划分已完毕,划分的精度精确到每个模块,用矩阵G代表划分的每个模块的坐标,矩阵GE代表划分的每个模块的上和右边缘梯度。
第八步,迭代提取信息:
1.先根据模块坐标矩阵G求出每个模块的平均灰度值,设第i行第j列网格元素(hj,li)∈G(i>0,j>0),则其灰度平均值为:
Figure BSA00000574876400113
循环求取G中所有元素,则可以得到二维条码模块灰度平均值矩阵:
V = v 11 v 12 · · · v 1 p v 21 v 22 · · · v 2 p · · · · · · · · · · · · v p 1 v p 2 · · · v pp P × P
对于虚边模块X=[vp,1,vp,2,...,vp,p,vp-1,p,...,v2,p,v1,p]2p-1,建立增广X矩阵 X ‾ = [ x 1 , x 2 , · · · , x 2 p + 3 ] 2 p + 3 = [ v p , 1 , v p , 2 , X , v 2 , p , v 1 , p ] 2 p + 3 , 其中,若i(2<i<2p+2)为奇数,则xi代表白模块,反之代表黑模块。若其中有白模块xi的灰度平均值小于其两侧黑模块的灰度平均值的较大值xi<max{xi-1,xi+1},则重新赋值xi=(xi-2+xi+2)/2,即将距离白模块xi最近的两个白模块的平均值赋值给xi;若其中有黑模块xi的灰度平均值大于其两侧白模块的灰度平均值的较小值xi>min{xi-1,xi+1},则重新赋值xi=(xi-2+xi+2)/2,即将距离黑模块xi最近的两个黑模块的平均值赋值给xi。循环执行,直到全部白模块比与其相邻的黑模块平均灰度值要大,且全部黑模块比与其相邻的白模块平均灰度值要小为止。
2.建立并初始化二维条码模块信息矩阵:
F = f 11 f 12 · · · f 1 p f 21 f 22 · · · f 2 p · · · · · · · · · · · · f p 1 f p 2 · · · f pp P × P = 1 1 · · · 1 1 f 22 · · · 0 · · · · · · · · · · · · 1 0 · · · 0 P × P
其中,边缘模块为定位模块,信息已知,所以将边缘模块赋予初始值,1代表白模块,0代表黑模块,其余的都设为未知信息模块。初始化迭代邻域n=1。
3.判断(1代表白模块,0代表黑模块,其余的都设为未知信息模块)F中的未知信息模块是否全部识别出来,如是转向步骤7,否则转向步骤4。
4.判断是否
Figure BSA00000574876400122
,fa,b的n邻域为:
fare n = f a - n , b + n · · · f a + n , + n · · · f i , j · · · f a - n , b - n · · · f a + n , b - n n × n
且faren中信息已知白模块个数不为0且信息已知黑模块个数也不为0。若存在满足此条件的fi,j,转向步骤5,否则将n=n+1转向步骤3。
5.本步是模块灰度平均值判断,根据矩阵V求出faren中所有信息已知白模块的平均值为
Figure BSA00000574876400124
所有信息已知黑模块的平均值为
Figure BSA00000574876400125
Figure BSA00000574876400126
则fa,b=1;若
Figure BSA00000574876400127
则fi,j=0;若
Figure BSA00000574876400128
则fa,b=1;若
Figure BSA00000574876400129
则fa,b=0。若以上顺序判断都满足,则转向步骤3,否则转向步骤6。
6.本步是选择边缘梯度信息判断。假设条件1:若fa-1,b、fa+1,b、fa,b-1与fa,b+1中白模块个数不为0或黑模块个数不为0,根据梯度矩阵GE设fi,j与其中所有白模块平均梯度值为
Figure BSA000005748764001210
或与其中所有黑模块平均梯度值为假设条件2:若为信息已知模块,且fp-1,q、fp+1,q、fp,q-1与fp,q+1中白模块个数不为0且黑模块个数也不为0,根据梯度矩阵GE求取fp,q与其中所有和它信息值相同模块的平均梯度值
Figure BSA000005748764001213
和其中所有和它信息值不同模块的平均梯度值
Figure BSA000005748764001214
然后求取满足假设条件2的所有fp,q∈faren
Figure BSA00000574876400131
平均值
Figure BSA00000574876400132
平均值
Figure BSA00000574876400133
若假设1和假设2都成立:假如假设条件1中的白模块数不为0,若
Figure BSA00000574876400134
则fa,b=1,反之fa,b=0;假如假设条件1中的黑模块数不为0,若
Figure BSA00000574876400135
则fa,b=0,反之fa,b=1;若假设条件1或假设条件2不成立,则回归到模块灰度平均值判断,若则fa,b=1,否则fa,b=0。转向步骤3。
7.将全部信息识别出,得到二维条码模块信息矩阵F。
本发明的有益效果是:本发明能对任意角度旋转倾斜,轻度或中度几何畸变,轻度或中度光照不均,对比度不强,轻度或中度磨损的金属上的二维条码都有较高的识别率。识别出来的小模块的正确率一般都在80%以上,质量比较好的图像能达到95%及更高。识别时间在268毫秒左右。
本发明的能解决金属柱面上直接标刻的DataMatrix二维条码图像由于柱面光滑及大曲率所造成表面反光严重、光照不均、码区形变严重、信息损失及对比度低等问题,读取正确率一般可以达到95%以上。对于640*512输入图像,“单幅识别”程序运行时间在200~300毫秒之间,“融合识别”程序运行时间在500~600毫秒之间。
下面结合附图和实施例对本发明进一步说明。
附图说明
图1是高反光柱面金属上二维条码图像识别方案总过程;
图2是识读工装整体结构;
图3是去噪示意图;
图4是遍历霍夫变换域模板;
图5是仿射变换示意图;
图6是遍历求取梯度波形图示意图;
图7是梯度值波形图;
图8是实例一所处理图像;
图9是实例一处理总过程;
图10是实例二所处理图像;
图11是实例二融合过程。
具体实施方式
本专利对处于高反光,大曲率柱面金属背景下的二维条码图像提出一套独特的处理方法。借助于特定的二维条码识读工装及简便光源,采集柱面金属上包含二维条码的图像。对于金属柱面背景下所特有的光照不均及高反光,本专利通过采集条码区域上下方的光滑区域像素,采用数学函数模型拟合光照,逆向校正图像光照分布;对于大曲率柱面及反光带遮盖条码区域所造成的信息损失情况,采用缩小条码采集区域并旋转采集多幅图像进行融合,拼接成信息无损和微形变的二维条码。对于二维条码边界定位,本专利通过先判断图像整体边缘方向,然后根据整体边缘方向而缩小了霍夫变换区域,大大减小程序运行时间并有一定的抗噪性能,然后根据改进的强鲁棒性霍夫变换和最小二乘法精确确定边缘;在二维条码网格划分上,由于柱面形变及光的衍射等因素,造成二维条码各模块大小并不一致,本专利通过一次粗划分,一次微调,准确定位二维条码的每一个模块;对于二维条码每个模块的数据识别,本专利采用邻域灰度值对比与边缘梯度对比双参数进行迭代识别,对于光照不均和对比度较低的二维条码图像有着较高的鲁棒性。
实例一:单幅识别
如图8所示,本实例选取直径为Φ12的柱面金属,在识读工装下用MV1300拍摄其上的二维条码图像。识读工装示意图如图2所示。本实例选取快门速度7ms,增益调节58,图像大小为640*512pix,采集速度为高速,反光带没有覆盖二维条码信息。为实现上述目的,本发明的技术方案总过程如图1所示。
1.在识读工装下,拍摄的二维条码图像如图8所示。首先根据二维条码区域有两条白边作为定位边,确定横向方向上二维条码的位置:xlef=182,xrigt=429。然后根据条码边缘的复杂性,通过投影法确定纵向二维条码所在区域,利用第一步算法得到ydown=109,yup=320,初定位区域如图9(b)中黑色线内的区域所示。
2.由于图像竖向像素属于柱面的同一弧度,在两侧平行的条状白光源下,对于柱面产生的光照不均在竖向是均匀的。横向则是由两侧向中间渐变变小的曲线。经过大量实验,发现由6次多项式插值的函数能够很好的模拟横向像素的渐变曲线。利用第二步中的校正柱面光照不均算法,拟合出6次多项式方程为y=2E-10x6-1E-07x5+3E-05x4-0.0048x3+0.3697x2-14.225x+253.91,拟合误差为R2=0.9851。逆向校正并裁切后的图像如图9中(c)所示,裁切后的新图像h=227,w=240。
3.由于定位二维条码边界时最重要的是边缘信息,本专利首先对裁切后的图像做灰值形态学边缘梯度运算,以半径为2个像素的圆形结构元素对边缘梯度进行形态学开运算去除细小污染。然后利用第三步中的算法建立原图像灰值边缘方向数组,并得到两条主方向分别为dfirst=1.52020688和dsec=-0.028376115,由于图像中以dfirst和dsec为方向的四条直线(为dfirst方向的有两条直线,为dsec方向的两条直线)从四个顶点开始遍历,去除二维条码区域外噪声并粗定位到二维条码区域,去噪示意图如图3所示。最后得到去噪粗定位后的图像,如图9(d)所示。在粗定位后,下面的就要通过加邻域模板的霍夫变换精确确定二维条码边缘及其四个顶点,先是分别从上向下,从下向上,从左向右,从右向左扫描图9(d)得到一组边缘点,效果如图9(e)所示。以极半径ρ取值范围
Figure BSA00000574876400151
极角θ取值范围 [ d first * 180 π - 10 , d first * 180 π + 10 ] [ d sec * 180 π - 10 , d sec * 180 π + 10 ] 对“边缘点”图像做霍夫变换得到一个霍夫变换域,然后利用5.3中的模板遍历霍夫变换域法和最小二乘拟合法精确定位二维条码的四条边缘,如图9中(f)所示。并得到二维条码的四个顶点,左上顶点(42,199),左下顶点(38,29),右上顶点(211,195)和右下顶点(207,27)。
4.将四个顶点代入第四步中的校验函数,满足条件,继续向下执行。
5.新建一幅200*200的空白图像,将3中求取的左上、左下、右上和右下顶点分别对应空白图像的左上、左下、右上和右下顶点,利用第六步中的仿射变换算法,求得校正后无畸变正方形二维条码图像,如图9中(g)所示。由于仿射变换采用了双线性插值法,所以变换后图像质量会有所下降,整体对比度降低。本专利在对原图像仿射变换后再进行图像均衡,增加对比度。效果如图9中(h)所示。
6.根据第7步中的梯度投影算法求取出二维条码的横向和纵向梯度投影,如图9中(i)所示。然后分别求取8×8~24×24这9种划分方式在“梯度投影波形”中的峰度值,以最大值为基准归一化,得到峰度值如下表格所示:
  行数方式   8×8   10×10   12×12   14×14   16×16   18×18   20×20   22×22   24×24
  峰度值   0.48   0.56   0.50   1   0.43   0.39   0.49   0.41   0.43
可知14×14是二维条码的最佳划分方式,并将其粗划分效果如图9中(j)所示。在二维条码网格粗划分后,由于柱面弧度、光的衍射等因素,造成图像中二维条码的每个模块大小并不一定等大,本专利又对粗划分完的二维条码网格进行微调,而得到精确定位二维条码模块的网格矩阵,然后再根据网格之间的梯度微调,得到更加精确的定位每个模块的大小,效果如图9中(k)所示。
7.本发明提出一种新的基于邻域灰度对比和边缘梯度对比的迭代提取二维条码模块信息的方法,这是一种非基于二值化图像而是基于灰度图像的方法,所以是一种信息无损算法,并能有效的应对光照不均。本算法原理是:每个二维条码模块的识别结果是通过与它最近邻域的已识别的二维条码模块对比得出的。首先利用5.8算法求取精确定位的每个模块的平均灰度值,建立二维条码模块灰度平均值矩阵,效果如图9中(1)所示。然后利用相邻模块灰度平均值及边缘梯度双参数对比,迭代求出每个未知模块的信息值,最终读取效果如图9中(h)所示所示。
通过本算法提取的信息效果如下表格所示:
  错误个数   错误坐标   正确率   计算时间
  0   无   100%   268毫秒
实例二:融合识别
如图10所示,本实例选取直径为Φ6的柱面金属,并拍摄其上的二维条码图像。由于柱面半径较小,曲率过大,无论如何调节相机参数都无法消除反光带覆盖掉部分二维条码信息,所以应采取融合识别。本实例选取快门速度7us,增益调节58,图像大小为640*512pix,采集速度为高速。
1.调节黑色金属挡板使夹缝适当变小,同时观察右侧视频显示框中所显示的图像,直至将高反光区域去掉为止。然后本实例选取2秒读取4幅图像,读取的图像如图11中(a)所示。
2.如5.5中算法所示,将这四幅图像首先进行初定位,并根据初定为结果切割处二维条码区域,效果如图11中(b)所示。利用5.5中所述算法,然后对每幅图像进行角点提取,提取结果如图11中(c)所示。
3.建立位移矩阵,计算每相邻两幅图像的角点区域互相关系数,根据最大互相关系数位移点融合相邻两幅图像,四幅图像的融合结果如图11中(d)所示。
4.后续算法和实例一类似,这里就不累述。

Claims (1)

1.高反光柱面金属上的二维条码图像识别方法,其特征在于包括下述步骤: 
第一步,初定位二维条码区域: 
1.定位二维条码的横向位置: 
从图像横向中间w/2处,向左遍历求取竖向梯度: 
Figure FDA0000422558340000011
其中,gradi代表图像A中i列的梯度值,设在i=xleft处,取得最大梯度值,w为图像宽度,pixi,j代表现图像中i列j行像素点的像素值;用同样的方法从图像横向中间w/2处,向右遍历求取竖向梯度,设在i=xrigt处,取得最大梯度值; 
2.通过投影法确定二维条码的纵向位置: 
求取图像A竖向区域投影值: 
Figure FDA0000422558340000012
得到一组投影值
Figure FDA0000422558340000013
求取这组投影值的平均值
Figure FDA0000422558340000014
遍历
Figure FDA0000422558340000015
每个值,若则使projj=0;再次遍历
Figure FDA0000422558340000017
记下每一个连续并不含有0的连通区域,设最长的一个连通域起始点和结束点为yup和ydown; 
通过以上操作,可初定位条码所在区域,本发明认定横向xrigt=xrigt-5,xlef=xleft+5,纵向yup=yup+5、ydown=ydown-5确定的区域为二维条码区域; 
第二步,校正柱面光照不均: 
本发明利用6次多项式插值公式模拟横向像素的渐变曲线,并利用等距节点的牛顿插值法计算横向渐变曲线的插值公式,步骤如下: 
1.建立横向节点值数组
Figure FDA0000422558340000018
遍历投影值计算
Figure DEST_PATH_FSA000005748763000110
其中,
Figure FDA00004225583400000111
n表示
Figure FDA00004225583400000112
中projj=0的数目; 
2.节点间距h=(xrigt-xleft)/6,插值节点数组为
Figure FDA00004225583400000113
3.设横向像素的渐变曲线函数f(x)在插值节点处函数值数组
Figure 720059DEST_PATH_FSA000005748763000114
利用牛顿插值法求出6次多项式插值公式,设为N6(x),其中x=xleft+t×h,t=0,1,...,6; 
4.以
Figure FDA0000422558340000021
的平均值
Figure FDA0000422558340000022
作为基准值,求取逆向校正数组
Figure FDA0000422558340000023
5.根据逆向校正数组校正二维条码区域: 
{pix|pixi,j=pixi,j-v(xi),xleft≤i≤xrigt ydown≤j≤yup} 
校正完二维条码区域后,通过(xrigt,ydown),(xrigt,yup),(xleft,ydown),(xleft,yup)四个顶点为基准裁切原图像,再对裁切完后的图像四周加上20像素长度的0值像素,得到图像A1;并将图像宽度和高度重新赋值,w=xrigt-xleft+20,h=yup-ydown+20; 
第三步,精确定位条码四边缘: 
1.求取码区主方向: 
1)首先对图像A1做灰值形态学边缘梯度运算:
Figure FDA0000422558340000027
为灰值膨胀运算,Θ为灰值腐蚀运算,g为半径为2个像素的圆形结构元素,得到梯度图像A2,再对A2做大津阈值分割得到二值图像A3; 
2)建立一个二维条码边缘方向数组每个di代表着一个11.25°的区间; 
3)扫描A3,若 pixi,j=255,求取此点在A2中的sobel梯度方向drei,j=arctan(dyi,j/dxi,j),其中: 
dyi,j=(pixi-1,j+1+2pixi,j+1+pixi+1,j+1)-(pixi-1,j-1+2pixi,j-1+pixi+1,j-1
dxi,j=(pixi+1,j+1+2pixi+1,j+pixi+1,j-1)-(pixi-1,j+1+2pixi-1,j+pixi-1,j-1
若drei,j∈di,则value(di)加1,直至扫描完A3中全部像素点; 
4)遍历
Figure FDA0000422558340000026
计算区间加权值: 
valued=0.3×value(di-1)+0.4×value(di)+0.3×value(di+1
其中,di-1表示di逆时针方向的上一个取值,di+1表示di顺时针方向下一个取值,d0到d15是一个圆形循环区间;设在区间di处加权值最大,记di中点值dfirst,和di相隔8个的区间的中点值记为dsec,二维条码的两个大致主方向求取为dfirst和dsec; 
2.去除噪声并粗定位: 
1)以dfirst为方向的两条直线和以dsec为方向的两条直线分别从四个顶点开始遍历A3,遍历的间距为2个像素,将这四条直线记为遍历直线,用字母lline表示; 
2)记录在遍历直线lline上像素值为255的像素点坐标,用集合{(i,j)|(i,j)∈lline&&pixi,j=255}表示,判断集合中每个像素点的八邻域像素点的像素值,将八邻域中像素值等于255的像素点都计入集合中; 
3)判断遍历直线lline所对应集合,若集合中元素个数大于阈值Th1,且集合中坐标点的方差大于阈值Th2时,确定为条码区域,停止此次遍历并记下停止位置,其中,
Figure FDA0000422558340000031
4)判断从四个顶点开始的遍历有没有全部结束,若没有则选择没有遍历过的顶点转到步骤2)开始遍历,若全部结束则转向步骤5); 
5)将四个停止位置处的遍历直线所围成的区域记为粗定位二维条码区域,并将粗定位二维条码区域之外的区域全部赋值为0; 
3.精确定位条码边缘: 
1)分别从上向下,从下向上,从左向右,从右向左扫描A3,得到一组像素值都为255边缘点,将这些点的集合记作E,并将图像A3中非边缘点都置为0; 
2)对集合E中的所有点作霍夫变换,得到ρ-θ坐标系下的霍夫变换域,其中ρ是极半径,取值范围
Figure FDA0000422558340000032
θ是极角,取值范围[dfirst-10,dfirst+10]和[dsec-10,dsec+10]; 
3)利用模板遍历霍夫变换域,模板是一个5*5正方形区域;设中心点对应的霍夫点为(θii),则正方形区域中点(θi-1i),(θi+1i),(θii-1),(θii+1)对应的权值p0=0.6,点(θi+1i+1),(θi+1i-1),(θi-1i+1),(θi-1i-1)对应的权值p1=0.4,点(θi-2i),(θi+2i),(θii+2),(θii-2)对应的权值p2=0.2;正方形模板最中间是遍历目标点的坐标,其他对应的是目标点周围点的坐标,模板横向是θ轴方向,纵向是ρ轴方向;遍历霍夫变换域中(θii),根据模板计算公式求取模板值T(θ,ρ): 
Figure FDA0000422558340000033
Figure FDA0000422558340000045
其中
Figure FDA0000422558340000047
是点(θ,ρ)对应的值,在模板遍历霍夫域的过程中,如果模板中的点(θ11):ρ1超出ρ轴的范围
Figure FDA0000422558340000041
舍去此模板点;如果θ1超出θ轴的范围
Figure FDA0000422558340000042
则将此点代换为
Figure FDA0000422558340000043
Figure FDA0000422558340000044
得到新的点,并将此新的点的值代入模板计算公式求取模板值; 
4)用模板遍历完霍夫域后,假设点(θjj)对应的最大,则(θjj)对应的图像坐标系中的直线ρj=xcosθj+ysinθj为最长直线; 
5)求取
Figure FDA0000422558340000049
模板上的所有的点在图像A3中对应的直线,并检测图像坐标系中在这些直线上并像素值等于255的点,称这些点为拟合点,记录这些点并根据这些点做最小二乘拟合,拟合直线即为DM码的一条边缘直线; 
6)在霍夫域中清空上一步检测出的边缘直线的(ρ00)及其领域,判断本次检测直线是否为第四条直线,若否再转到步骤2)检测下一条边缘直线;若为第四条直线转到步骤7); 
7)求取四条边缘直线相互垂直的两两直线交点,共得四个交点;拟合点最多的边缘直线默认为二维条码的一条实边拟合直线,与其在同一个θ极角区间的拟合点最多的边缘直线为第二条实边拟合直线,两条实边拟合直线的交点为二维条码左上顶点,记为(x0,y0),另外两条边缘直线则默认为二维条码的虚边拟合直线,其交点为二维条码右下顶点,记为(x3,y3),其余的两交点记为(x1,y1)、(x2,y2); 
8)求取(x0,y0)和(x3,y3)连线的实际角度与理想状态3π/4之间的角度差: 
θ=atan[y0-y3,x0-x3]-3π/4 
将另外两交点按角度θ逆时针旋转,求取旋转后x值:x1'=cosθ*x1+sinθ*y1,x2'=cosθ*x2+sinθ*y2,旋转后x值大的认为是右上顶点,x值小的则认为是右下顶点,将(x1,y1)、(x2,y2)中旋转后x值大的点赋值给(x1,y1),x值小的点赋值给(x2,y2); 
9)二维条码的四个顶点精确坐标即为:(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3),分别代表本次待识别二维条码的左上、右上、左下和右下四个顶点; 
第四步,判断输出数据是否满足校验函数: 
1.判断四个顶点的坐标有无超出横向(15,w-15)范围与竖向(15,h-15)范围,若至少有一个超过,则认为定位没有成功,输出否定值;若都没有超过则转向步骤2; 
2.求取(x0,y0)与(x1,y1)之间的线段长度l0、(x1,y1)与(x2,y2)之间的线段长度l1、(x2,y2)与(x3,y3)之间的线段长度l2以及(x0,y0)与(x3,y3)之间的线段长度l3,得到一组线段长度数组
Figure FDA0000422558340000051
计算比值{lm/ln(m≠n)&&m,n∈[0,3]},如果比值都在0.8~1.2之间,则默认上述方法已精确确定二维条码边缘,输出确定值;若否则判定二维条码边缘未能精确确定,输出否定值; 
3.若效验结果最终为确定值,转到第六步继续执行;若为否定值,转向第五步,采集多幅图像并融合识别; 
第五步,采集多幅图像并融合: 
1.调节黑色金属挡板使夹缝变小,直到相机抓取的图像没有高反光带覆盖条码区域为止,此时夹缝之间的条码区域只是整个二维条码区域的一部分; 
2.调节相机拍摄时间为0~4秒,相机抓取图像帧数为0~10幅; 
3.设抓取的帧数为f幅,旋转时间为t秒,旋转柱状金属每隔设f/t秒抓取一幅图像,得到一组图像序列
4.利用步骤一的方法初定位图像序列
Figure FDA0000422558340000053
中每个图像的二维条码区域,得到一组二维条码区域图像序列
Figure FDA0000422558340000054
Figure FDA0000422558340000055
代表图像序列的图像大小,其中w和hp代表图像MvAreap的宽度和高度; 
5.对于MvAreap,求取图像中每个像素点的横向和纵向的一阶导数gx和gy,以及两者的乘积gxgy,然后计算原图像上对应的每个像素点的兴趣值I=det(M)-k*tr2(M),其中,k为权值系数,取0.04,为高斯模板,det为矩阵行列式,tr为矩阵的迹; 
6.将图像MvAreap上的兴趣值最大值记为Imax,以0.05*Imax作为阈值,判断每个像素点的兴趣值是否为其20*20像素邻域内的最大值,若为最大值且兴趣值大于0.05*Imax,则将此像素点记为MvAreap图像的Harris特征点;遍历图像MvAreap得到特征点集Harp; 
7.重复步骤5和6,循环图像序列
Figure FDA0000422558340000061
可得特征点集序列为
Figure FDA0000422558340000062
建立位移矩阵: 
Figure FDA0000422558340000063
8.遍历位移矩阵R,设此次遍历的位移元素为(x,y),设Ii是Hari中的特征点,坐标设为(xi,yi); 
在Hari-1中寻找距离(xi+x,yi+y)最近的特征点Ij,坐标设为(xj,yj),分别取Ii和Ij的4×4邻域A和B,求取这两个邻域的互相关系数: 
Figure FDA0000422558340000064
其中
Figure FDA0000422558340000065
Figure FDA0000422558340000066
分别为邻域A和邻域B的像素平均值,σ(A)和σ(B)为标准差,Auv与Buv分别代表Ii与Ij的4×4邻域每个像素点的像素值; 
求取CIi的高斯加权距离
Figure FDA0000422558340000067
其中rij=||(xj,yj)-(xi+x,yi+y)||为特征点Ij与(xi+x,yi+y)之间的欧氏距离,σ为控制这两点之间相互作用的参数,本发明取σ=hi-1/8; 
9.计算MvAreai和MvAreai-1在位移(x,y)下的特征点平均配准度 
Figure FDA0000422558340000068
(x,y)∈R,设在位移(xm,yn)∈R处Reg(x,y)取得最大值,则认为图像MvAreai经过位移(xm,yn)与MvAreai-1达到最佳配准融合;然后判断xm>w/3,若成立则配准融合成功,若不成立则认为MvAreai与MvAreai-1重合度过高,没有必要再融合;然后删除MvAreai并将其后的图像序号依次减1,譬如MvAreaj=MvAreaj-1(j>i),然后重复步骤5~9; 
10.若将图像序列全部融合完毕,则得到一幅新的融合后的图像A1;A1的宽度为融合后图像的实际宽度,重新赋值给w,高度
Figure FDA00004225583400000610
本步完毕后转向第三步继续顺序执行; 
第六步,仿射变换校正图像: 
对于原始真图像f(x,y)到变换后图像g(x',y')的空间变换,设变换后对应的四个顶点坐标为:(x0',y0')、(x1',y1')、(x2',y2')和(x3',y3'),设并设变换方程为: 
先在x方向上进行线性插值,即l1上进行线性插值: 
Figure FDA0000422558340000077
再在l2上进行线性插值: 
Figure FDA0000422558340000072
然后在y方向上进行线性插值: 
由上述三个公式可由一维推向二维,假设输出图像为高为m,宽为n的矩形,则 
同理对y进行双线性插值得: 
Figure FDA0000422558340000075
将输出图像宽确定为w=m=200,输出图像高确定为h=n=200,建立一个空白图像A4,将图像A1四个顶点(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3)与空白图像A4的四个顶点对应起来,利用公式(1)和(2)求取图像A4在图像A1中的对应点,对于非整数对应点用双线性插值法插值,最终求得经过几何畸变校正后的图像A4; 
对图像A4进行图像均衡,得到均衡过的图像A5; 
第七步,划分网格: 
1.粗划分网格: 
打在金属柱面上的二维条码为8×8,10×10,12×12,14×14,16×16,18×18,20×20,22×22,24×24这9种划分方式,简记为集合
Figure FDA0000422558340000076
粗划分网格如下: 
1)以水平直线竖直方向遍历图像A5,遍历的间隔为一个像素,遍历的范围为图像A5的高度200像素;记录每个竖直遍历j处水平直线上像素点pixij的竖直方向 梯度和: 
Figure FDA0000422558340000081
得到一组竖直方向梯度投影数列
Figure FDA0000422558340000082
同理以竖直直线水平方向遍历图像A5得到一组水平方向梯度投影数列
Figure FDA0000422558340000083
2)选取p×p∈C划分方式预划分得到一组竖直分割点数列 
Figure FDA0000422558340000085
3)对于hq∈Hi,在
Figure FDA0000422558340000086
小区间里,求取最大加权值 
Figure FDA0000422558340000087
然后将最大加权值处的hp重新赋值给hq;对每个分割点都做此操作,得到一组微调后新的分割点集合Hi; 
4)对于hq∈Hi,求取在
Figure FDA0000422558340000088
区间里竖直方向梯度值投影的峰度: 
其中,
Figure FDA00004225583400000810
为标准差, 
Figure FDA00004225583400000811
为4阶中心矩;然后求取i×i划分下竖直方向梯度值投影峰度的平均值
Figure FDA00004225583400000812
遍历划分方式集合C,得到竖直方向梯度值投影峰度的平均值数列
Figure FDA00004225583400000813
和竖直分割点数列集合{Hi}i×i∈C; 
5)选取p×p∈C划分方式预划分水平方向梯度投影数列
Figure FDA00004225583400000814
与步骤2)~步骤4)的算法原理一样,得到一组水平方向梯度值投影峰度的平均值数列记为 并得到一组水平分割点数列集合记为{Li}i×i∈C; 
6)求取峰度最大值
Figure FDA00004225583400000816
假设
Figure FDA00004225583400000817
则p×p即为二维条码的划分方式,Hp和Lp即为二维条码网格粗划分纵向和横向分割点数列,最后可以得到二维条码网格粗划分坐标矩阵: 
(hi∈Hp,li∈Lp,i=1,2,...,p-1) 
其中第0行与第0列是扩展的行列,任取元素(hi,lj)∈G(i>0,j>0)代表第i行j列网格的右上坐标,w和h代表图像宽度和高度且都等于200; 
2.微调细化分网格 
1)取第i行第j列网格元素(hj,li)∈G(i>0,j>0),网格宽度wg=li-li-1,网格高度hg=hj-hj-1,在竖向harea={hj-hg/4,hj+hg/4}范围内,求取网格(hj,li)在harea范围内的上边缘梯度wupy,假设在my处取得最大值: 同理,在横向warea={li-wg/4,li+wg/4}范围内,求取网格(hj,li)的右边缘梯度,假设在mx处取得最大值:
2)建立空白二维条码网格边缘梯度矩阵GE和二维条码网格划分位移矩阵GM: 
根据上一步求出的第i行第j列网格的上边缘和右边缘梯度值wupmy与hrigtmx,将(wupmy,hrigtmx)赋值GE的第i行第j列元素;第i行与第j列网格的上边缘和右边缘位移为my-hj和mx-li,将(my-hj,mx-li)赋值GM的第i行与第j列元素;遍历G循环执行1,则得到满秩的GE和GM;最后二维条码网格细划分坐标矩阵为:G=G-GM; 
至此二维条码网格划分已完毕,划分的精度精确到每个模块,用矩阵G代表划 分的每个模块的坐标,矩阵GE代表划分的每个模块的上和右边缘梯度; 
第八步,迭代提取信息: 
1.先根据模块坐标矩阵G求出每个模块的平均灰度值,设第i行第j列网格元素(hj,li)∈G(i>0,j>0),则其灰度平均值为:循环求取G中所有元素,则可以得到二维条码模块灰度平均值矩阵: 
Figure FDA0000422558340000102
对于虚边模块X=[vp,1,vp,2,...,vp,p,vp-1,p,...,v2,p,v1,p]2p-1,建立增广X矩阵 
Figure FDA0000422558340000103
其中,若i(2<i<2p+2)为奇数,则xi代表白模块,反之代表黑模块;若其中有白模块xi的灰度平均值小于其两侧黑模块的灰度平均值的较大值xi<max{xi-1,xi+1},则重新赋值xi=(xi-2+xi+2)/2;若其中有黑模块xi的灰度平均值大于其两侧白模块的灰度平均值的较小值xi>min{xi-1,xi+1},则重新赋值xi=(xi-2+xi+2)/2;循环执行,直到全部白模块比与其相邻的黑模块平均灰度值要大,且全部黑模块比与其相邻的白模块平均灰度值要小为止; 
2.建立并初始化二维条码模块信息矩阵: 
Figure FDA0000422558340000104
其中,边缘模块为定位模块,信息已知,所以将边缘模块赋予初始值,1代表白模块,0代表黑模块,其余的都设为未知信息模块;初始化迭代邻域n=1; 
3.判断F中的未知信息模块是否全部识别出来,如是转向步骤7,否则转向步骤4; 
4.判断是否
Figure FDA0000422558340000105
fa,b的n邻域为: 
Figure FDA0000422558340000106
且faren中信息已知白模块个数不为0且信息已知黑模块个数也不为0;若存在满足此条件的fi,j,转向步骤5,否则将n=n+1转向步骤3; 
5.根据矩阵V求出faren中所有信息已知白模块的平均值为所有信息已知黑模块的平均值为
Figure FDA0000422558340000112
Figure FDA0000422558340000113
则fa,b=1;若
Figure FDA0000422558340000114
则fi,j=0;若
Figure FDA0000422558340000115
则fa,b=1;若 
Figure FDA0000422558340000116
则fa,b=0;若以上顺序判断都满足,则转向步骤3,否则转向步骤6; 
6.假设条件1:若fa-1,b、fa+1,b、fa,b-1与fa,b+1中白模块个数不为0或黑模块个数不为0,根据梯度矩阵GE设fi,j与其中所有白模块平均梯度值为或与其中所有黑模块平均梯度值为
Figure FDA0000422558340000118
假设条件2:若
Figure FDA0000422558340000119
为信息已知模块,且fp-1,q、fp+1,q、fp,q-1与fp,q+1中白模块个数不为0且黑模块个数也不为0,根据梯度矩阵GE求取fp,q与其中所有和它信息值相同模块的平均梯度值
Figure FDA00004225583400001110
和其中所有和它信息值不同模块的平均梯度值
Figure FDA00004225583400001111
然后求取满足假设条件2的所有fp,q∈faren
Figure FDA00004225583400001112
平均值
Figure FDA00004225583400001113
平均值
Figure FDA00004225583400001114
若假设1和假设2都成立:假如假设条件1中的白模块数不为0,若
Figure FDA00004225583400001115
则fa,b=1,反之fa,b=0;假如假设条件1中的黑模块数不为0,若则fa,b=0,反之fa,b=1;若假设条件1或假设条件2不成立,则回归到模块灰度平均值判断,若
Figure FDA00004225583400001117
则fa,b=1,否则fa,b=0;转向步骤3; 
7.将全部信息识别出,得到二维条码模块信息矩阵F。 
CN201110274647.XA 2011-09-15 2011-09-15 高反光柱面金属上的二维条码图像识别方法 Expired - Fee Related CN102354363B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110274647.XA CN102354363B (zh) 2011-09-15 2011-09-15 高反光柱面金属上的二维条码图像识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110274647.XA CN102354363B (zh) 2011-09-15 2011-09-15 高反光柱面金属上的二维条码图像识别方法

Publications (2)

Publication Number Publication Date
CN102354363A CN102354363A (zh) 2012-02-15
CN102354363B true CN102354363B (zh) 2014-04-16

Family

ID=45577925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110274647.XA Expired - Fee Related CN102354363B (zh) 2011-09-15 2011-09-15 高反光柱面金属上的二维条码图像识别方法

Country Status (1)

Country Link
CN (1) CN102354363B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102682266B (zh) * 2012-05-17 2014-06-11 西北工业大学 一种基于图像拼接的柱面二维条码识读方法
CN102831428B (zh) * 2012-06-30 2015-07-08 东南大学 图像内快速响应矩阵码区域的提取方法
CN102902945B (zh) * 2012-09-28 2015-04-15 南京汇兴博业数字设备有限公司 基于快速响应矩阵码外轮廓的畸变校正方法
CN103106345A (zh) * 2013-01-31 2013-05-15 广州梦龙科技有限公司 一种基于标识码的智能游戏方法及系统
CN104057719A (zh) * 2013-03-23 2014-09-24 杨筑平 条码印制的方法、标签、设备和系统
CN103177416B (zh) * 2013-04-10 2015-08-19 浙江大学 一种基于最小二乘法的qr码图像定位方法
CN103413141B (zh) * 2013-07-29 2017-02-22 西北工业大学 环形光源及利用环形光源照明基于刀具形状纹理重量的融合识别方法
CN104636779B (zh) * 2013-11-11 2017-11-28 覃政 环形码标识识别系统
CN103955684B (zh) * 2014-03-31 2017-07-28 小米科技有限责任公司 字符提取方法、装置及终端
CN104318277B (zh) * 2014-10-10 2018-12-18 南京大树智能科技股份有限公司 一种商品销售过程检测装置
CN104268499B (zh) * 2014-10-10 2017-04-26 南京大树智能科技股份有限公司 一种带条码商品的条码标记检测方法
CN104636701B (zh) * 2014-12-12 2017-09-19 浙江工业大学 一种基于图像修复的激光二维码识别方法
CN106446732B (zh) * 2015-08-13 2019-05-07 株式会社理光 一种条形码的识别方法、装置及设备
CN105512595B (zh) * 2015-12-04 2018-10-02 北京奇虎科技有限公司 条码修正方法和装置
US10235547B2 (en) * 2016-01-26 2019-03-19 Hand Held Products, Inc. Enhanced matrix symbol error correction method
CN111368819B (zh) * 2017-03-21 2023-05-30 北京中安未来科技有限公司 光斑检测方法和装置
CN106980851B (zh) * 2017-03-21 2020-02-14 浙江华睿科技有限公司 一种数据矩阵dm码的定位方法及装置
CN107369136B (zh) * 2017-06-22 2020-06-09 福建省万龙新材料科技有限公司 聚晶金刚石复合片表面裂纹视觉检测方法
CN107886335A (zh) * 2017-10-20 2018-04-06 北京火星盒子网络信息技术有限公司 一种商品扫码设备
CN108345817A (zh) * 2018-02-06 2018-07-31 徐州智融图像科技有限公司 一种圆柱面二维码的识别方法
CN110288560B (zh) * 2018-03-16 2021-03-02 北京三快在线科技有限公司 一种图像模糊检测方法及装置
CN109697382B (zh) * 2018-12-18 2022-05-10 福州图腾易讯信息技术有限公司 一种线性条码边缘失真处理方法及设备
CN109740403B (zh) * 2019-01-04 2022-02-22 凌云光技术股份有限公司 一种识读一维条码的方法和装置
CN111722202B (zh) * 2020-08-05 2021-04-27 湖北工业大学 一种基于回波强度的反光板位置拟合方法及系统
CN112532884B (zh) * 2020-11-27 2022-10-14 维沃移动通信有限公司 识别方法、装置及电子设备
CN113705576B (zh) * 2021-11-01 2022-03-25 江西中业智能科技有限公司 一种文本识别方法、装置、可读存储介质及设备
CN114972274B (zh) * 2022-06-02 2024-07-26 中交第一公路勘察设计研究院有限公司 一种基于裂缝连通域的区域搜索连接方法
CN115839675B (zh) * 2023-02-20 2023-05-12 宜科(天津)电子有限公司 一种物体轮廓线的识别系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862560A (zh) * 2006-06-21 2006-11-15 北京紫光捷通科技有限公司 一种基于定位图形的可快速定位的二维条码系统
CN101093553A (zh) * 2007-07-19 2007-12-26 成都博古天博科技有限公司 一种二维码系统及其识别方法
CN102096795A (zh) * 2010-11-25 2011-06-15 西北工业大学 磨损二维条码图像识别方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3516144B1 (ja) * 2002-06-18 2004-04-05 オムロン株式会社 光学情報コードの読取方法および光学情報コード読取装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862560A (zh) * 2006-06-21 2006-11-15 北京紫光捷通科技有限公司 一种基于定位图形的可快速定位的二维条码系统
CN101093553A (zh) * 2007-07-19 2007-12-26 成都博古天博科技有限公司 一种二维码系统及其识别方法
CN102096795A (zh) * 2010-11-25 2011-06-15 西北工业大学 磨损二维条码图像识别方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刀具标识中DataMatrix的编码和解码技术研究;席卫东等;《计算机工程与设计》;20080831;第29卷(第15期);4013-4016 *
席卫东等.刀具标识中DataMatrix的编码和解码技术研究.《计算机工程与设计》.2008,第29卷(第15期),

Also Published As

Publication number Publication date
CN102354363A (zh) 2012-02-15

Similar Documents

Publication Publication Date Title
CN102354363B (zh) 高反光柱面金属上的二维条码图像识别方法
CN112686812B (zh) 银行卡倾斜矫正检测方法、装置、可读存储介质和终端
CN102790841B (zh) 书籍的书脊区域中数字图像的检测和校正方法
EP1870835B1 (en) Two-dimensional code
CN100380393C (zh) 复杂背景下qr码图像符号区域的精确定位方法
CN110807496B (zh) 一种密集目标检测方法
CN110309687A (zh) 一种二维码图像的校正方法及校正装置
CN109409163B (zh) 一种基于纹理特性的qr码快速定位方法
CN102779275A (zh) 一种纸类字符识别方法及相关装置
CN111754536B (zh) 图像标注方法、装置、电子设备及存储介质
CN102682266B (zh) 一种基于图像拼接的柱面二维条码识读方法
CN105450900A (zh) 用于文档图像的畸变校正方法和设备
CN104809446A (zh) 基于校正手掌方向的掌纹感兴趣区域快速提取方法
CN110335322B (zh) 基于图像的道路识别方法及道路识别装置
US20090218404A1 (en) Camera based code reading
CN106909869B (zh) 一种矩阵式二维码的采样网格划分方法及装置
CN110298353A (zh) 一种字符识别方法及系统
CN110544202A (zh) 一种基于模板匹配与特征聚类的视差图像拼接方法及系统
CN113807131A (zh) 用于识别农田土表的方法、装置、农用机械及介质
CN118153607B (zh) 一种基于机器视觉的一维码定位方法
CN112508836A (zh) 一种基于标注框拼接的深度学习图像增强方法
CN106778766A (zh) 一种基于定位点的旋转数字识别方法及系统
CN111507120A (zh) 二维码定位框识别方法、装置、电子设备及存储介质
CN113516123A (zh) 一种针对轮胎压印字符的检测识别方法
JP2004508641A (ja) ディジタル画像のセグメンテーション

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140416

Termination date: 20150915

EXPY Termination of patent right or utility model