CN102682266A - 一种基于图像拼接的柱面二维条码识读方法 - Google Patents

一种基于图像拼接的柱面二维条码识读方法 Download PDF

Info

Publication number
CN102682266A
CN102682266A CN2012101526388A CN201210152638A CN102682266A CN 102682266 A CN102682266 A CN 102682266A CN 2012101526388 A CN2012101526388 A CN 2012101526388A CN 201210152638 A CN201210152638 A CN 201210152638A CN 102682266 A CN102682266 A CN 102682266A
Authority
CN
China
Prior art keywords
mrow
msubsup
image
msub
msup
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.)
Granted
Application number
CN2012101526388A
Other languages
English (en)
Other versions
CN102682266B (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 CN201210152638.8A priority Critical patent/CN102682266B/zh
Publication of CN102682266A publication Critical patent/CN102682266A/zh
Application granted granted Critical
Publication of CN102682266B publication Critical patent/CN102682266B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明提出了一种基于图像拼接的柱面二维条码识读方法,步骤包括旋转采集一组二维条码图片、图像光照不均校正、条码边缘信息增强、条码图像及条码位置识别、条码模块划分、条码图像粗配准、条码图像精配准和图像拼接融合与条码识别。本发明改变现有的二维条码识读***基于一幅图像的识别原理,能够完整采集柱面条码信息,消除柱面条码的畸变和光照不均等问题。根据Data Matrix二维条码图像的特征,设计的拼接融合算法能够很好解决二维条码图像拼接过程中遇到正确率不高、效率低等突出问题,实现快速准确的识读柱面二维条码信息。

Description

一种基于图像拼接的柱面二维条码识读方法
技术领域
本发明涉及柱面二维条码识读技术领域,具体为一种基于图像拼接的柱面二维条码识读方法。
背景技术
产品表面直接标刻二维条码快速准确识读,是产品全生命周期管理和信息追踪的基础,是成为提高库存管理效率、实现生产过程信息采集及实时追踪的关键。目前多选用二维Data Matrix条码作为产品的二维条码永久标识,这是因为Data Matrix条码编码容量大、密度高、纠错能力强。
目前的二维条码识读方法都采用CCD摄像头采集一幅含有二维条码的图像,再对图像进行一系列处理,去除背景定位条码区域,然后提取条码数据信息。现有的二维条码识读***只能处理平面状态下完整的、形变较小及光照均匀情况下的二维条码图像。例如美国康耐视出产的手持式Dataman 7500和德国产的封闭式读码器MATRIX2000。然而现实中经常遇到圆柱形的产品,由于标识在柱面上的二维条码与平面二维条码有着很大的差异,造成了识读困难,具体如下:
1、标识在柱面上的二维条码,由于柱面承载会造成柱面畸变,造成条码的尺寸比例发生变化。
2、柱面上采集的二维条码图像,一般都会存在一定程度的光照不均。如果柱面比较光滑,特别是金属柱面时,采就会形成严重高亮反光,造成信息彻底丢失。
3、柱面上采集的一幅二维条码图像,由于柱面遮挡或者采集角度不合适,容易造成采集的信息不完整。
4、上述的这些典型差异,在圆柱产品直径越小,而标刻在柱面的二维条码尺越大时,表现的越明显。
这些典型的差异使得柱面上的二维条码识读比较困难,甚至无法识读。现有的成熟的二维条码识读装置,在识读柱面二维条码时,普遍识读率较低,严重影响了识读效率,从而限制了二维条码技术在圆柱产品标识追踪中的应用。现有的技术研究中,为了增加柱面二维条码的识读效率和正确率,一般采取两方面的措施:一是采取标刻过程中的增强处理或使用过程中的保护措施。如中国机械工程2011年05期上解志锋等发表的题为《零件表面激光直接标刻二维条码的工艺参数优化研究》的文章,介绍了如何优化参数提高标刻的质量,这些措施着眼于提高及维护金属表面二维条码的对比度和质量,并没有从本质上解决柱面条码识读困难,所以取得的效果并不好。二是采取硬件辅助与图像融合的方法,但是现有的图像融合方法,并没有考虑到二维条码图像的一系列特点,直接用于柱面二维条码图像融合,效率低,错误率高。例如申请号为“201110100489.6”,发明名称为“一种金属柱面直接标刻二维条码的识读装置及识读方法”的专利,从硬件方面实现了旋转采集柱面图像,消除高亮反光,但软件处理理想化,不能实用。
发明内容
要解决的技术问题
为解决现有技术存在的问题本发明提出了一种基于图像拼接的柱面二维条码识读方法,通过研究柱面上标刻的Data Matrix条码图像特点,设计一种全新的图像拼接方法来解决柱面二维条码在识读时光照不均、柱面畸变、采集信息不完整等方面的难题,以达到快速准确的获得高质量二维条码图像,实现柱面信息采集,提高柱面二维条码识读效率之目的。
技术方案
本发明的技术方案为:
所述一种基于图像拼接的柱面二维条码识读方法,其特征在于:包括以下步骤:
步骤1:连续采集二维条码的N幅图像
Figure BDA00001648868500021
所述N幅图像包含了二维条码的全部信息;每幅图像的宽度为w,高度为h,pixn i,j表示第n幅图像Mvtempn中第i列第j行像素点的像素值;
步骤2:校正图像光照不均:
步骤(2-1):任意选取
Figure BDA00001648868500031
中包含条码信息的一幅图像Mvtemp,从图像Mvtemp中间h/2处向上遍历求取纵向梯度:
grad j Mvtemp = Σ i = 0 w ( pix i , j Mvtemp - pix i , j + 1 Mvtemp ) j ∈ ( h / 2 , h )
其中,
Figure BDA00001648868500033
表示图像Mvtemp中第j行的纵向梯度值,并在第yup行取到最大纵向梯度值;
步骤(2-2):计算图像MVtemp中背景区域的光照度数组:
I i Mvtemp = 1 20 Σ j = y up y up + β pix i , j Mvtemp i ∈ [ 0 , w )
其中,图像Mvtemp中背景区域指第0列至第w-1列,第yup行至yup+β行的区域,β取10~h-yup
Figure BDA00001648868500035
表示图像Mvtemp背景区域第i列的光照度;
步骤(2-3):计算图像Mvtemp中背景区域的平均光照度
Figure BDA00001648868500036
I ‾ Mvtemp = 1 ( β + 1 ) w Σ i = 0 w - 1 Σ j = y up y up + β pix i , j Mvtemp
步骤(2-4):逆向校正图像序列
Figure BDA00001648868500038
中每一幅图像的光照不均:
pix i , j n = pix i , j n · I ‾ Mvtemp / I i Mvtemp n ∈ [ 0 , N - 1 ] , i ∈ [ 0 , w - 1 ] , j ∈ [ 0 , h - 1 ] ,
步骤3:运用Roberts算子对图像序列
Figure BDA000016488685000311
做边缘轮廓信息提取,然后将边缘强度信息增加到原图像中,实现条码边缘信息增强;
步骤4:识别条码图像及条码位置:
步骤(4-1):计算图像序列
Figure BDA000016488685000312
中每幅图像的横向投影数据
Figure BDA000016488685000313
avg j n = 1 w Σ i = 0 w pix i , j n j ∈ [ 0 , h )
对于第n幅图像,得到一组横向投影数据
Figure BDA000016488685000315
计算
Figure BDA000016488685000316
中的最小值
Figure BDA000016488685000317
步骤(4-2):将横向投影数据
Figure BDA000016488685000318
整体向下平移
Figure BDA000016488685000319
计算平移后横向投影数据
Figure BDA00001648868500041
的最大值
Figure BDA00001648868500042
和平均值
Figure BDA00001648868500043
对平移后的横向投影数据
Figure BDA00001648868500044
进行加权均值滤波和中值滤波,其中加权均值滤波模板为:
1 9 × 1 2 3 2 1
中值滤波采用5×1的滑动窗口;对滤波后的横向投影数据
Figure BDA00001648868500046
进行阈值分割,分割函数为:
步骤(4-3):对经过步骤(4-2)处理后的横向投影数据
Figure BDA00001648868500048
进行数据拟合,拟合函数的形式为:
y = a 1 ( 0 &le; x < x 1 ) b 1 ( x 1 &le; x &le; h / 2 ) a 2 ( h / 2 < x &le; x 2 ) b 2 ( x 2 < x < h )
其中,a1,b1,a2,b2为线性拟合函数的拟合变量,x1,x2为线性拟合函数的分段点;采用最小二乘拟合,得到拟合误差为:
S ^ min 2 ( x 1 n ) = &Sigma; i = 0 h / 2 ( avg i n ) 2 - ( &Sigma; i = 0 x 1 n - 1 avg i n ) 2 x 1 n - ( &Sigma; i = x 1 n h / 2 avg i n ) 2 h / 2 - x 1 n + 1
S ^ min 2 ( x 2 n ) = &Sigma; i = h / 2 + 1 h - 1 ( avg i n ) 2 - ( &Sigma; i = h / 2 + 1 x 2 n avg i n ) 2 x 2 n - h / 2 - ( &Sigma; i = x 2 n + 1 h - 1 avg i n ) 2 h - x 2 n - 1
在第n幅图像中,计算拟合误差
Figure BDA000016488685000412
取最小值时对应的
Figure BDA000016488685000413
计算拟合误差
Figure BDA000016488685000415
取最小值时对应的
Figure BDA000016488685000416
Figure BDA000016488685000417
步骤(4-4):重复步骤(4-1)~步骤(4-3),得到图像序列
Figure BDA000016488685000418
中每幅图像的
Figure BDA000016488685000419
从而得到数组
Figure BDA000016488685000421
步骤(4-5):计算图像序列中每幅图像各自
Figure BDA000016488685000423
位置的纵向梯度值:
grad y d n n = &Sigma; i = 0 w - 1 | pix i , y d n n - pix i , y d n + 1 n |
从而得到数组
Figure BDA00001648868500052
计算数组
Figure BDA00001648868500053
的平均值
Figure BDA00001648868500054
从数组
Figure BDA00001648868500055
中第n=0的数据开始向后依次与
Figure BDA00001648868500056
比较,当比较到第n=η的数据大于
Figure BDA00001648868500057
为止;从数组
Figure BDA00001648868500058
中第n=N-1的数据开始向前依次与
Figure BDA00001648868500059
比较,当比较到第n=κ的数据大于
Figure BDA000016488685000510
为止;图像序列
Figure BDA000016488685000511
中,Mvtempη~Mvtempκ的图像为条码图像;
步骤(4-6):计算所有条码图像中
Figure BDA000016488685000512
值的平均值ys;任取条码图像中的一幅图像,计算该图像
Figure BDA000016488685000513
位置和
Figure BDA000016488685000514
位置处的纵向梯度值;当
Figure BDA000016488685000515
处的纵向梯度值大于
Figure BDA000016488685000516
处的纵向梯度值,则将所有条码图像从各自位置向上裁剪,保留
Figure BDA000016488685000518
作为新的条码图像;当
Figure BDA000016488685000519
处的纵向梯度值大于
Figure BDA000016488685000520
处的纵向梯度值,则将所有条码图像从各自
Figure BDA000016488685000521
位置向下裁剪,保留
Figure BDA000016488685000522
作为新的条码图像;将新得到的条码图像按原先顺序重新存为图像宽度w不变,高度为ys
步骤5:确定条码模块的划分方式:
步骤(5-1):将按顺序横向排列,纵向对齐合并成一幅图像NMvtemp,图像NMvtemp高度为ys,宽度为Mw;对图像NMvtemp做纵向梯度投影:
y grad j NMvtemp = &Sigma; i = 0 Mw - 1 | pix i , j NMvtemp - pix i , j + 1 NMvtemp | j &Element; [ 0 , y s )
其中表示图像NMvtemp中第j行的纵向梯度;
步骤(5-2):从二维条码模块划分方式集合C={L×L}中选取划分方式l×l∈C,得到一组模块纵向分割点:
H = { h m | h m = y s l &times; m } m = 1 l - 1
步骤(5-3):计算图像NMvtemp在集合H中每个模块纵向分割点hm处的纵向梯度值
Figure BDA000016488685000528
并计算所有纵向梯度值
Figure BDA000016488685000529
的平均值,作为划分方式l×l∈C的梯度值;
步骤(5-4):重复进行步骤(5-2)~步骤(5-3),计算集合C中所有划分方式的梯度值,取梯度值最大的划分方式p×p作为二维条码横向模块划分方式;
步骤6:条码图像粗配准:
步骤(6-1):将
Figure BDA00001648868500061
中的每一幅图像NMvtempn都转化为一个p×w的数据矩阵,转化计算方式为:
X n = [ ( x k , i n = 1 M s &Sigma; j = k M s ( k + 1 ) M s pix i , j n ) i = 0 w - 1 ] k = 0 p - 1
其中Xn表示图像NMvempn对应的数据矩阵,
Figure BDA00001648868500063
表示矩阵中第k行第i列元素,Ms表示条码模块的纵向尺寸,Ms=ys/p;
步骤(6-2):将
Figure BDA00001648868500064
中相邻两幅图像对应的数据矩阵Xn,Xn+1步进重叠,步进列数δg的范围为1列~5列;计算每次重叠时重叠区域元素的均方差S2(gn):
S 2 ( g n ) = 1 p g n ( &Sigma; k = 0 p - 1 &Sigma; i = 0 g n ( X k , i n + 1 - X k , w - i - g n n ) 2 ) ( 1 &le; g n &le; w )
其中S2(gn)表示数据矩阵重叠gn列元素时的均方差;
步骤(6-3):计算数据矩阵Xn,Xn+1步进重叠过程中的所有S2(gn),取其中取值最小的三个均方差对应的重叠列数
Figure BDA00001648868500066
作为相邻两幅图像NMvtempn和NMvtempn+1间的粗配准位置,并记
Figure BDA00001648868500067
步骤(6-4):重复步骤(6-2)~步骤(6-3),对图像序列
Figure BDA00001648868500068
中每两幅相邻图像进行粗配准,得到粗配准位置序列
Figure BDA00001648868500069
步骤7:条码图像精配准:
步骤(7-1):采用经典相似性测度方法的计算相邻两幅图像NMvtempn和NMvempn+1在匹配位置gn处的匹配度Rn(gn):
R n ( g n ) = &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n &times; pix i , j n + 1 ) &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n ) 2 &Sigma; i = 0 g n - 1 &Sigma; j = 1 y s - 1 ( pix i , j n + 1 ) 2 g n &Element; U ( g 1 n , &delta; ) &cap; U ( g 2 n , &delta; ) &cap; U ( g 3 n , &delta; )
微调的列数δ取δg+1;
步骤(7-2):取匹配度Rn(gn)的最大值为相邻两幅图像NMvtempn和NMvtempn+1间的最佳匹配度,记为Rn=max{Rn(gn)},并将max{Rn(gn)}对应的位置gn作为相邻两幅图像NMvtempn和NMvtempn+1间的精配准位置,并记精配准位置Cn=gn
步骤(7-3):重复步骤(7-1)~步骤(7-2),计算图像序列
Figure BDA00001648868500071
中每两幅相邻图像的最佳匹配度以及精配准位置,得到最佳匹配度数组
Figure BDA00001648868500072
和精配准位置数组
步骤8:图像拼接融合与条码识别:
步骤(8-1):遍历最佳匹配度数组
Figure BDA00001648868500074
以匹配度数值最小的两个位置点n1和n2作为分段点,将图像序列
Figure BDA00001648868500075
分为三个部分;
步骤(8-2):将每个部分的图像按照图像间的精配准位置采用渐入渐出的加权平均法进行拼接融合,得到三个部分的合成图像Part0、Part1、Part2,三幅图像宽度分别为w0、w1、w2,高度是ys,三幅图像间的精配准位置分别为PC0、PC1
Figure BDA00001648868500076
PC 1 = C n 2 ;
步骤(8-3):计算中图像NMvtemp0的横向梯度:
x grad j NMvtem p 0 = &Sigma; j = 0 y s - 1 ( pix i + 1 , j NMvtem p 0 - pix i , j NMvtem p 0 ) i &Element; [ 0 , w )
Figure BDA000016488685000710
代表图像NMvtemp0中i列的横向梯度;得到数组
Figure BDA000016488685000711
并计算
Figure BDA000016488685000712
中的最大值位置xl即为图像NMvtemp0中条码区域和空白区域分界位置;
步骤(8-4):计算
Figure BDA000016488685000714
中图像NMvtempM-1的横向梯度:
x grad j NMvtem p M - 1 = &Sigma; j = 0 y s - 1 ( pix i , j NMvtem p M - 1 - pix i + 1 , j NMvtem p M - 1 ) i &Element; [ 0 , w )
Figure BDA000016488685000716
代表图像NMvtempM-1中i列的横向梯度;得到数组
Figure BDA000016488685000717
并计算
Figure BDA000016488685000718
中的最大值
Figure BDA000016488685000719
位置xr即为图像NMvtempM-1中条码区域和空白区域分界位置;
步骤(8-5):将Part0、Part1、Part2三幅图像拼接融合后的宽度为wm=(xl+ys+w-xr),高度为ys;建立图像内存缓冲区,大小为wm×ys;将图像Part0放入缓冲区左侧,将图像Part2放入缓冲区右侧;判断|(wm-w0-w2)-(w1-PC0-PC1)|≤10,若满足判断条件则将图像Part1按照与Part0、Part2的精配准位置PC0、PC1放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合,进入步骤(8-7),若不满足判断条件则进入步骤(8-6);
步骤(8-6):在图像内存缓冲区内将Part1放在两幅图像之间,开始位置与Part0重合w列,然后Part1步进向右运动,直到Part1与Part2重合w列为止;将步进运动过程中Part1与Part0、Part2分别重合的区域合并为联合重合区域,计算联合重合区域匹配度,匹配度计算方法同步骤(7-1),并步进运动过程中取到联合重合区域最大匹配度的位置作为配准位置,将图像Part1按照配准位置放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合;
步骤(8-7):将图像内存缓冲区内拼接融合得到的二维条码图像,按照宽度进行裁剪,取二维条码图像xl~xl+ys部分,得到一幅新的ys×ys的Data Matrix二维条码图像,条码模块大小为Ms×Ms;使用解码***读取新的Data Matrix二维条码图像中的条码信息,解码***根据解码原理和Reed-Solomon纠错算法对其解码并纠错。
有益效果
本发明提出的一种基于图像拼接的柱面二维条码识读技术,改变现有的二维条码识读***基于一幅图像的识别原理,能够完整采集柱面条码信息,消除柱面条码的畸变和光照不均等问题。根据Data Matrix二维条码图像的特征,设计的拼接融合算法能够很好解决二维条码图像拼接过程中遇到正确率不高、效率低等突出问题,实现快速准确的识读柱面二维条码信息。根据发明人初步统计,在不使用本发明识读方法时,读取一个柱面二维条码平均需要2~4秒,而使用本发明识读方法后只需0.4~0.8秒,提高了3~5倍的效率,并且大大提高的识读率。
附图说明
图1:本发明的流程图;
图2:实际凸形数据图;
图3:规范化后的凸形数据图;
图4:实施例中的处理过程图;
具体实施方式
下面结合具体实施例描述本发明:
本实例取为Φ6的柱面金属,在识读工装下用MV1300,采集一组的序列图像。本实例选取相机参数如下:快门速度10us,增益调节60,采集速度为高速。为实现上述目的,本发明的技术方案总过程如图1所示。
步骤1:在识读工装下,调节减小挡板缝隙,使得采集的条码图像不存在高亮反光为止,然后旋转连续采集二维条码的N幅图像
Figure BDA00001648868500091
所述N幅图像包含了二维条码的全部信息;每幅图像的宽度为w=97,高度为h=384,
Figure BDA00001648868500092
表示第n幅图像Mvtempn中第i列第j行像素点的像素值。本实施例中采集了8幅图像,如附图4中(a)所示。
步骤2:校正图像光照不均:
本步骤利用图像中背景区域的光照度变化规律校正图像中条码区域的光照不均,步骤如下:
步骤(2-1):任意选取
Figure BDA00001648868500093
中包含条码信息的一幅图像Mvtemp,从图像Mvtemp中间h/2处向上遍历求取纵向梯度:
grad j Mvtemp = &Sigma; i = 0 w ( pix i , j Mvtemp - pix i , j + 1 Mvtemp ) j &Element; ( h / 2 , h )
其中,表示图像Mvtemp中第j行的纵向梯度值,并在第yup行取到最大纵向梯度值;
步骤(2-2):计算图像Mvtemp中背景区域的光照度数组:
I i Mvtemp = 1 20 &Sigma; j = y up y up + &beta; pix i , j Mvtemp i &Element; [ 0 , w )
其中,图像Mvtemp中背景区域指第0列至第w-1列,第yup行至yup+β行的区域,β取10~h-yup
Figure BDA00001648868500097
表示图像Mvtemp背景区域第i列的光照度;
步骤(2-3):计算图像Mvtemp中背景区域的平均光照度
I &OverBar; Mvtemp = 1 ( &beta; + 1 ) w &Sigma; i = 0 w - 1 &Sigma; j = y up y up + &beta; pix i , j Mvtemp
步骤(2-4):逆向校正图像序列中每一幅图像的光照不均:
pix i , j n = pix i , j n &CenterDot; I &OverBar; Mvtemp / I i Mvtemp n &Element; [ 0 , N - 1 ] , i &Element; [ 0 , w - 1 ] , j &Element; [ 0 , h - 1 ] ,
Figure BDA00001648868500102
本实施例中图像纵向像素属于柱面的同一弧度,在两侧平行的条形白光源下,图像的纵向是光照均匀的,横向的光照度则是从两侧向中间渐渐变小的。基于此规律,本实施例利用图像中空白区域的光照度变化规律校正图像中条码区域的光照不均。计算得到序列图像中第四幅图像中的矩形空白区域:纵向15~35,横向0~233,平均光照度逆向校正后的图像如图4中(b)所示。
步骤3:运用Roberts算子对图像序列
Figure BDA00001648868500104
做边缘轮廓信息提取,然后将边缘强度信息增加到原图像中,实现条码边缘信息增强;增强后的图像如图4中(c)所示。
步骤4:识别条码图像及条码位置:
本步骤通过拟合图像中灰度投影的方法,识别哪些图像含有条码,哪些图像不含条码,含有条码的图像中的条码所在的纵向位置,实现条码图像及条码位置的识别。步骤如下:
步骤(4-1):计算图像序列
Figure BDA00001648868500105
中每幅图像的横向投影数据
Figure BDA00001648868500106
avg j n = 1 w &Sigma; i = 0 w pix i , j n j &Element; [ 0 , h )
对于第n幅图像,得到一组横向投影数据
Figure BDA00001648868500108
计算中的最小值由于条码区域的的投影数据与背景不同,所以数据会呈现出凸字形,称为凸形数据,如图2所示。
步骤(4-2):为简化计算的运算量,将横向投影数据
Figure BDA000016488685001012
整体向下平移
Figure BDA000016488685001013
计算平移后横向投影数据
Figure BDA000016488685001014
的最大值和平均值
Figure BDA000016488685001016
对平移后的横向投影数据
Figure BDA000016488685001017
进行加权均值滤波和中值滤波,进一步消除了各种噪声、污染等影响,其中加权均值滤波模板为:
1 9 &times; 1 2 3 2 1
中值滤波采用5×1的滑动窗口;对滤波后的横向投影数据
Figure BDA00001648868500112
进行阈值分割,消除凸形数据存在锯齿现象,分割函数为:
Figure BDA00001648868500113
通过步骤(4-2)的规范化操作,使得凸形数据不规则得到了很大的改善,如图3所示。
步骤(4-3):对经过步骤(4-2)处理后的横向投影数据
Figure BDA00001648868500114
进行数据拟合,拟合函数的形式为:
y = a 1 ( 0 &le; x < x 1 ) b 1 ( x 1 &le; x &le; h / 2 ) a 2 ( h / 2 < x &le; x 2 ) b 2 ( x 2 < x < h )
其中,a1,b1,a2,b2为线性拟合函数的拟合变量,x1,x2为线性拟合函数的分段点;采用最小二乘拟合,得到拟合误差为:
S ^ min 2 ( x 1 n ) = &Sigma; i = 0 h / 2 ( avg i n ) 2 - ( &Sigma; i = 0 x 1 n - 1 avg i n ) 2 x 1 n - ( &Sigma; i = x 1 n h / 2 avg i n ) 2 h / 2 - x 1 n + 1
S ^ min 2 ( x 2 n ) = &Sigma; i = h / 2 + 1 h - 1 ( avg i n ) 2 - ( &Sigma; i = h / 2 + 1 x 2 n avg i n ) 2 x 2 n - h / 2 - ( &Sigma; i = x 2 n + 1 h - 1 avg i n ) 2 h - x 2 n - 1
在第n幅图像中,计算拟合误差
Figure BDA00001648868500118
取最小值时对应的
Figure BDA00001648868500119
Figure BDA000016488685001110
计算拟合误差
Figure BDA000016488685001111
取最小值时对应的
Figure BDA000016488685001113
步骤(4-4):重复步骤(4-1)~步骤(4-3),得到图像序列中每幅图像的
Figure BDA000016488685001115
Figure BDA000016488685001116
从而得到数组
Figure BDA000016488685001117
步骤(4-5):计算图像序列
Figure BDA000016488685001118
中每幅图像各自
Figure BDA000016488685001119
位置的纵向梯度值:
grad y d n n = &Sigma; i = 0 w - 1 | pix i , y d n n - pix i , y d n + 1 n |
从而得到数组
Figure BDA00001648868500122
计算数组
Figure BDA00001648868500123
的平均值
Figure BDA00001648868500124
从数组
Figure BDA00001648868500125
中第n=0的数据开始向后依次与比较,当比较到第n=η的数据大于
Figure BDA00001648868500127
为止;从数组
Figure BDA00001648868500128
中第n=N-1的数据开始向前依次与
Figure BDA00001648868500129
比较,当比较到第n=κ的数据大于
Figure BDA000016488685001210
为止;图像序列
Figure BDA000016488685001211
中,Mvtempη~Mvtempκ的图像为条码图像;
步骤(4-6):计算所有条码图像中
Figure BDA000016488685001212
值的平均值ys;任取条码图像中的一幅图像,计算该图像
Figure BDA000016488685001213
位置和位置处的纵向梯度值;当
Figure BDA000016488685001215
处的纵向梯度值大于
Figure BDA000016488685001216
处的纵向梯度值,则将所有条码图像从各自
Figure BDA000016488685001217
位置向上裁剪,保留
Figure BDA000016488685001218
作为新的条码图像;当
Figure BDA000016488685001219
处的纵向梯度值大于处的纵向梯度值,则将所有条码图像从各自
Figure BDA000016488685001221
位置向下裁剪,保留
Figure BDA000016488685001222
作为新的条码图像;将新得到的条码图像按原先顺序重新存为
Figure BDA000016488685001223
图像宽度w不变,高度为ys
本实施例中,在步骤4通过拟合每幅图像中灰度投影的方法,识别哪些图像含有条码,哪些图像不含条码,含有条码的图像中的条码所在的纵向位置,实现条码图像及条码位置的识别。通过计算、规范化、拟合投影凸形数据得到每幅图像中最小拟合误差位置的 { y d 0 = 153 , y u 0 = 196 } , { y d 1 = 34 , y u 1 = 345 } , { y d 2 = 34 , y u 2 = 345 } , { y d 3 = 35 , y u 3 = 346 } , { y d 4 = 31 , y u 4 = 342 } , { y d 5 = 29 , y u 5 = 341 } , { y d 6 = 31 , y u d = 343 } , { y d 7 = 150 , y u 7 = 200 } , 通过梯度判断可知第一幅和最后一幅图像中不含有二维条码。按照拟合位置裁剪图像,图像高度ys=311,宽度w不变,这样消除了图像间的纵向偏移,裁剪后的图像如图4中(d)所示。
步骤5:确定条码模块的划分方式:
本步骤根据图像竖直梯度投影,通过判断最佳预划分梯度的方式实现条码水平模块划分,过程如下:
步骤(5-1):将
Figure BDA000016488685001232
按顺序横向排列,纵向对齐合并成一幅图像NMvtemp,图像NMvtemp高度为ys,宽度为Mw;对图像NMvtemp做纵向梯度投影:
y grad j NMvtemp = &Sigma; i = 0 Mw - 1 | pix i , j NMvtemp - pix i , j + 1 NMvtemp | j &Element; [ 0 , y s )
其中
Figure BDA00001648868500131
表示图像NMvtemp中第j行的纵向梯度;
Figure BDA00001648868500132
表示图像NMvtemp中第i列第j行像素点的像素值;
步骤(5-2):从二维条码模块划分方式集合C={L×L}中选取划分方式l×l∈C,得到一组模块纵向分割点:
H = { h m | h m = y s l &times; m } m = 1 l - 1
步骤(5-3):计算图像NMvtemp在集合H中每个模块纵向分割点hm处的纵向梯度值并计算所有纵向梯度值
Figure BDA00001648868500135
的平均值,作为划分方式l×l∈C的梯度值;
步骤(5-4):重复进行步骤(5-2)~步骤(5-3),计算集合C中所有划分方式的梯度值,取梯度值最大的划分方式p×p作为二维条码横向模块划分方式。
本实施例中选用的二维条码模块划分方式集合根据图像竖直梯度投影波形,通过判断最佳预划分梯度的方式实现条码水平模块划分。各种预划分方式的梯度值为:
  划分方式   8*8   10*10   12*12   14*14   16*16   18*18   20*20   22*22   24*24
  梯度值   489.42   328.22   1079.0   333.15   367.33   446.29   349.10   343.33   640.69
可知,12*12是二维条码的最佳水平模块划分方式,划分效果如图4中(e)所示。
步骤6:条码图像粗配准:
经过上述步骤,图像间的偏移只存在于横向,还需要将图像间的横向配准分为粗配准和精配准两个阶段。本步骤将图像按照所划分的水平条码模块转化为数据矩阵,然后通过数据矩阵匹配实现相邻图像间的粗配准,过程如下:
步骤(6-1):将
Figure BDA00001648868500137
中的每一幅图像NMvtempn都转化为一个p×w的数据矩阵,转化计算方式为:
X n = [ ( x k , i n = 1 M s &Sigma; j = k M s ( k + 1 ) M s pix i , j n ) i = 0 w - 1 ] k = 0 p - 1
其中Xn表示图像NMvtempn对应的数据矩阵,
Figure BDA00001648868500139
表示矩阵中第k行第i列元素,Ms表示条码模块的纵向尺寸,Ms=ys/p;步骤6及以后步骤中
Figure BDA00001648868500141
表示第n幅图像NMvtempn中第i列第j行像素点的像素值;
步骤(6-2):将
Figure BDA00001648868500142
中相邻两幅图像对应的数据矩阵Xn,Xn+1步进重叠,步进列数δg的范围为1列~5列;计算每次重叠时重叠区域元素的均方差S2(gn):
S 2 ( g n ) = 1 p g n ( &Sigma; k = 0 p - 1 &Sigma; i = 0 g n ( X k , i n + 1 - X k , w - i - g n n ) 2 ) ( 1 &le; g n &le; w )
其中S2(gn)表示数据矩阵重叠gn列元素时的均方差;
步骤(6-3):计算数据矩阵Xn,Xn+1步进重叠过程中的所有S2(gn),取其中取值最小的三个均方差对应的重叠列数
Figure BDA00001648868500144
作为相邻两幅图像NMvtempn和NMvtempn+1间的粗配准位置,并记
步骤(6-4):重复步骤(6-2)~步骤(6-3),对图像序列
Figure BDA00001648868500146
中每两幅相邻图像进行粗配准,得到粗配准位置序列
Figure BDA00001648868500147
步骤7:条码图像精配准:
本步骤通过在每个粗配准位置微调,计算最佳的匹配度,最终确定出相邻两幅图像间精配准,具体过程如下:
步骤(7-1):采用经典相似性测度方法的计算相邻两幅图像NMvtempn和NMvtempn+1在匹配位置gn处的匹配度Rn(gn):
R n ( g n ) = &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n &times; pix i , j n + 1 ) &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n ) 2 &Sigma; i = 0 g n - 1 &Sigma; j = 1 y s - 1 ( pix i , j n + 1 ) 2 g n &Element; U ( g 1 n , &delta; ) &cap; U ( g 2 n , &delta; ) &cap; U ( g 3 n , &delta; )
微调的列数δ取δg+1;
步骤(7-2):取匹配度Rn(gn)的最大值为相邻两幅图像NMvtempn和NMvtempn+1间的最佳匹配度,记为Rn=max{Rn(gn)},并将max{Rn(gn)}对应的位置gn作为相邻两幅图像NMvtempn和NMvtempn+1间的精配准位置,并记精配准位置Cn=gn
步骤(7-3):重复步骤(7-1)~步骤(7-2),计算图像序列
Figure BDA00001648868500149
中每两幅相邻图像的最佳匹配度以及精配准位置,得到最佳匹配度数组和精配准位置数组
Figure BDA00001648868500151
本实施例中步骤6和步骤7建立图像数据矩阵,计算最小均方差确定图像间的粗配准,然后按照经典的相似性测度方法确定图像间最佳匹配度以及精配准位置,如下所示:
步骤8:图像拼接融合与条码识别:
本步骤基于图像间的精配准位置及匹配度,首先将图片拼接融合成三个片段,然后填入预定的二维条码图像内存缓冲区域,完成图像拼接融合,然后实现二维条码信息识读。过程如下:
步骤(8-1):遍历最佳匹配度数组
Figure BDA00001648868500153
以匹配度数值最小的两个位置点n1和n2作为分段点,将图像序列
Figure BDA00001648868500154
分为三个部分;
如上表所示最佳匹配度数据,三个部分分别为{NMvtemp0,NMvtemp1}、{NMvtemp2}和{NMvtemp3,NMvtemp4,NMvtemp5}。
步骤(8-2):将每个部分的图像按照图像间的精配准位置采用渐入渐出的加权平均法进行拼接融合,得到三个部分的合成图像Part0、Part1、Part2,如图4中(f1)、(f2)、(f3)所示。三幅图像宽度分别为w0=172、w1=97、w2=166,高度ys=311,三幅图像间的精配准位置分别为PC0=41、PC1=43;
步骤(8-3):计算
Figure BDA00001648868500155
中图像NMvtemp0的横向梯度:
x grad j NMvtem p 0 = &Sigma; j = 0 y s - 1 ( pix i + 1 , j NMvtem p 0 - pix i , j NMvtem p 0 ) i &Element; [ 0 , w )
代表图像NMvtemp0中i列的横向梯度;得到数组并计算中的最大值
Figure BDA000016488685001510
位置xl即为图像NMvtemp0中条码区域和空白区域分界位置;本实施例xl=12。
步骤(8-4):计算
Figure BDA00001648868500161
中图像NMvtempM-1的横向梯度:
x grad i NMvtem p M - 1 = &Sigma; j = 0 y s - 1 ( pix i , j NMvtem p M - 1 - pix i + 1 , j NMvtem p M - 1 ) i &Element; [ 0 , w )
代表图像NMvtempM-1中i列的横向梯度;得到数组并计算
Figure BDA00001648868500165
中的最大值
Figure BDA00001648868500166
位置xr即为图像NMvtempM-1中条码区域和空白区域分界位置;本实施例xr=76。
步骤(8-5):将Part0、Part1、Part2三幅图像拼接融合后的宽度为wm=(xl+ys+w-xr)=344,高度为ys;建立图像内存缓冲区,大小为wm×ys;将图像Part0放入缓冲区左侧,将图像Part2放入缓冲区右侧;判断|(wm-w0-w2)-(w1-PC0-PC1)|≤10,若满足判断条件则将图像Part1按照与Part0、Part2的精配准位置PC0、PC1放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合,进入步骤(8-7),若不满足判断条件则进入步骤(8-6);
本实施例中|(wm-w0-w2)-(w1-PC0-PC1)|=7≤10。满足判断条件,将图像Part1按照与Part0、Part2的精配准位置PC0、PC1放入缓冲区,完成图像拼接融合,结果如图4中(g)所示。
步骤(8-6):在图像内存缓冲区内将Part1放在两幅图像之间,开始位置与Part0重合w列,然后Part1步进向右运动,直到Part1与Part2重合w列为止;将步进运动过程中Part1与Part0、Part2分别重合的区域合并为联合重合区域,计算联合重合区域匹配度,匹配度计算方法同步骤(7-1),并步进运动过程中取到联合重合区域最大匹配度的位置作为配准位置,将图像Part1按照配准位置放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合;
步骤(8-7):将图像内存缓冲区内拼接融合得到的二维条码图像,按照宽度进行裁剪,取二维条码图像xl~xl+ys部分,得到一幅新的ys×ys的Data Matrix二维条码图像,条码模块大小为Ms×Ms,如图4中(h)所示;使用解码***读取新的Data Matrix二维条码图像中的条码信息,解码***根据解码原理和Reed-Solomon纠错算法对其解码并纠错。

Claims (1)

1.一种基于图像拼接的柱面二维条码识读方法,其特征在于:包括以下步骤:
步骤1:连续采集二维条码的N幅图像
Figure FDA00001648868400011
所述N幅图像包含了二维条码的全部信息;每幅图像的宽度为w,高度为h,
Figure FDA00001648868400012
表示第n幅图像Mvtempn中第i列第j行像素点的像素值;
步骤2:校正图像光照不均:
步骤(2-1):任意选取
Figure FDA00001648868400013
中包含条码信息的一幅图像Mvtemp,从图像Mvtemp中间h/2处向上遍历求取纵向梯度:
grad j Mvtemp = &Sigma; i = 0 w ( pix i , j Mvtemp - pix i , j + 1 Mvtemp ) j &Element; ( h / 2 , h )
其中,表示图像Mvtemp中第j行的纵向梯度值,并在第yup行取到最大纵向梯度值;
步骤(2-2):计算图像Mvtemp中背景区域的光照度数组:
I i Mvtemp = 1 20 &Sigma; j = y up y up + &beta; pix i , j Mvtemp i &Element; [ 0 , w )
其中,图像Mvtemp中背景区域指第0列至第w-1列,第yup行至yup+β行的区域,β取10~h-yup
Figure FDA00001648868400017
表示图像Mvtemp背景区域第i列的光照度;
步骤(2-3):计算图像Mvtemp中背景区域的平均光照度
Figure FDA00001648868400018
I &OverBar; Mvtemp = 1 ( &beta; + 1 ) w &Sigma; i = 0 w - 1 &Sigma; j = y up y up + &beta; pix i , j Mvtemp
步骤(2-4):逆向校正图像序列
Figure FDA000016488684000110
中每一幅图像的光照不均:
pix i , j n = pix i , j n &CenterDot; I &OverBar; Mvtemp / I i Mvtemp n &Element; [ 0 , N - 1 ] , i &Element; [ 0 , w - 1 ] , j &Element; [ 0 , h - 1 ] ,
Figure FDA000016488684000112
步骤3:运用Roberts算子对图像序列
Figure FDA000016488684000113
做边缘轮廓信息提取,然后将边缘强度信息增加到原图像中,实现条码边缘信息增强;
步骤4:识别条码图像及条码位置:
步骤(4-1):计算图像序列
Figure FDA000016488684000114
中每幅图像的横向投影数据
Figure FDA000016488684000115
avg j n = 1 w &Sigma; i = 0 w pix i , j n j &Element; [ 0 , h )
对于第n幅图像,得到一组横向投影数据
Figure FDA00001648868400022
计算
Figure FDA00001648868400023
中的最小值
Figure FDA00001648868400024
步骤(4-2):将横向投影数据
Figure FDA00001648868400025
整体向下平移
Figure FDA00001648868400026
计算平移后横向投影数据的最大值
Figure FDA00001648868400028
和平均值
Figure FDA00001648868400029
对平移后的横向投影数据
Figure FDA000016488684000210
进行加权均值滤波和中值滤波,其中加权均值滤波模板为:
1 9 &times; 1 2 3 2 1
中值滤波采用5×1的滑动窗口;对滤波后的横向投影数据
Figure FDA000016488684000212
进行阈值分割,分割函数为:
步骤(4-3):对经过步骤(4-2)处理后的横向投影数据进行数据拟合,拟合函数的形式为:
y = a 1 ( 0 &le; x < x 1 ) b 1 ( x 1 &le; x &le; h / 2 ) a 2 ( h / 2 < x &le; x 2 ) b 2 ( x 2 < x < h )
其中,a1,b1,a2,b2为线性拟合函数的拟合变量,x1,x2为线性拟合函数的分段点;采用最小二乘拟合,得到拟合误差为:
S ^ min 2 ( x 1 n ) = &Sigma; i = 0 h / 2 ( avg i n ) 2 - ( &Sigma; i = 0 x 1 n - 1 avg i n ) 2 x 1 n - ( &Sigma; i = x 1 n h / 2 avg i n ) 2 h / 2 - x 1 n + 1
S ^ min 2 ( x 2 n ) = &Sigma; i = h / 2 + 1 h - 1 ( avg i n ) 2 - ( &Sigma; i = h / 2 + 1 x 2 n avg i n ) 2 x 2 n - h / 2 - ( &Sigma; i = x 2 n + 1 h - 1 avg i n ) 2 h - x 2 n - 1
在第n幅图像中,计算拟合误差
Figure FDA000016488684000218
取最小值时对应的
Figure FDA000016488684000219
Figure FDA000016488684000220
计算拟合误差取最小值时对应的
Figure FDA000016488684000222
Figure FDA000016488684000223
步骤(4-4):重复步骤(4-1)~步骤(4-3),得到图像序列
Figure FDA00001648868400031
中每幅图像的
Figure FDA00001648868400032
Figure FDA00001648868400033
从而得到数组
Figure FDA00001648868400034
步骤(4-5):计算图像序列
Figure FDA00001648868400035
中每幅图像各自
Figure FDA00001648868400036
位置的纵向梯度值:
grad y d n n = &Sigma; i = 0 w - 1 | pix i , y d n n - pix i , y d n + 1 n |
从而得到数组
Figure FDA00001648868400038
计算数组
Figure FDA00001648868400039
的平均值
Figure FDA000016488684000310
从数组
Figure FDA000016488684000311
中第n=0的数据开始向后依次与
Figure FDA000016488684000312
比较,当比较到第n=η的数据大于
Figure FDA000016488684000313
为止;从数组
Figure FDA000016488684000314
中第n=N-1的数据开始向前依次与比较,当比较到第n=κ的数据大于
Figure FDA000016488684000316
为止;图像序列
Figure FDA000016488684000317
中,Mvtempη~Mvtempκ的图像为条码图像;
步骤(4-6):计算所有条码图像中
Figure FDA000016488684000318
值的平均值ys;任取条码图像中的一幅图像,计算该图像
Figure FDA000016488684000319
位置和
Figure FDA000016488684000320
位置处的纵向梯度值;当
Figure FDA000016488684000321
处的纵向梯度值大于
Figure FDA000016488684000322
处的纵向梯度值,则将所有条码图像从各自
Figure FDA000016488684000323
位置向上裁剪,保留作为新的条码图像;当处的纵向梯度值大于
Figure FDA000016488684000326
处的纵向梯度值,则将所有条码图像从各自
Figure FDA000016488684000327
位置向下裁剪,保留作为新的条码图像;将新得到的条码图像按原先顺序重新存为
Figure FDA000016488684000329
图像宽度w不变,高度为ys
步骤5:确定条码模块的划分方式:
步骤(5-1):将
Figure FDA000016488684000330
按顺序横向排列,纵向对齐合并成一幅图像NMvtemp,图像NMvemp高度为ys,宽度为Mv;对图像NMvtemp做纵向梯度投影:
y grad j NMvtemp = &Sigma; i = 0 Mw - 1 | pix i , j NMvtemp - pix i , j + 1 NMvtemp | j &Element; [ 0 , y s )
其中表示图像NMvtemp中第j行的纵向梯度;
Figure FDA000016488684000333
表示图像NMvtemp中第i列第j行像素点的像素值;
步骤(5-2):从二维条码模块划分方式集合C={L×L}中选取划分方式l×l∈C,得到一组模块纵向分割点:
H = { h m | h m = y s l &times; m } m = 1 l - 1
步骤(5-3):计算图像NMvtemp在集合H中每个模块纵向分割点hm处的纵向梯度值并计算所有纵向梯度值
Figure FDA00001648868400042
的平均值,作为划分方式l×l∈C的梯度值;
步骤(5-4):重复进行步骤(5-2)~步骤(5-3),计算集合C中所有划分方式的梯度值,取梯度值最大的划分方式p×p作为二维条码横向模块划分方式;
步骤6:条码图像粗配准:
步骤(6-1):将
Figure FDA00001648868400043
中的每一幅图像NMvtempn都转化为一个p×w的数据矩阵,转化计算方式为:
X n = [ ( x k , i n = 1 M s &Sigma; j = k M s ( k + 1 ) M s pix i , j n ) i = 0 w - 1 ] k = 0 p - 1
其中Xn表示图像NMvtempn对应的数据矩阵,
Figure FDA00001648868400045
表示矩阵中第k行第i列元素,Ms表示条码模块的纵向尺寸,Ms=ys/p;步骤6及以后步骤中
Figure FDA00001648868400046
表示第n幅图像NMvtempn中第i列第j行像素点的像素值;
步骤(6-2):将
Figure FDA00001648868400047
中相邻两幅图像对应的数据矩阵Xn,Xn+1步进重叠,步进列数δg的范围为1列~5列;计算每次重叠时重叠区域元素的均方差S2(gn):
S 2 ( g n ) = 1 p g n ( &Sigma; k = 0 p - 1 &Sigma; i = 0 g n ( X k , i n + 1 - X k , w - i - g n n ) 2 ) ( 1 &le; g n &le; w )
其中S2(gn)表示数据矩阵重叠gn列元素时的均方差;
步骤(6-3):计算数据矩阵Xn,Xn+1步进重叠过程中的所有S2(gn),取其中取值最小的三个均方差对应的重叠列数作为相邻两幅图像NMvtempn和NMvtempn+1间的粗配准位置,并记
Figure FDA000016488684000410
步骤(6-4):重复步骤(6-2)~步骤(6-3),对图像序列
Figure FDA000016488684000411
中每两幅相邻图像进行粗配准,得到粗配准位置序列
步骤7:条码图像精配准:
步骤(7-1):采用经典相似性测度方法的计算相邻两幅图像NMvtempn和NMvtempn+1在匹配位置gn处的匹配度Rn(gn):
R n ( g n ) = &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n &times; pix i , j n + 1 ) &Sigma; i = 0 g n - 1 &Sigma; j = 0 y s - 1 ( pix w - i - g n , j n ) 2 &Sigma; i = 0 g n - 1 &Sigma; j = 1 y s - 1 ( pix i , j n + 1 ) 2 g n &Element; U ( g 1 n , &delta; ) &cap; U ( g 2 n , &delta; ) &cap; U ( g 3 n , &delta; )
微调的列数δ取δg+1;
步骤(7-2):取匹配度Rn(gn)的最大值为相邻两幅图像NMvtempn和NMvtempn+1间的最佳匹配度,记为Rn=max{Rn(gn)},并将max{Rn(gn)}对应的位置gn作为相邻两幅图像NMvtempn和NMvtempn+1间的精配准位置,并记精配准位置Cn=gn
步骤(7-3):重复步骤(7-1)~步骤(7-2),计算图像序列
Figure FDA00001648868400052
中每两幅相邻图像的最佳匹配度以及精配准位置,得到最佳匹配度数组
Figure FDA00001648868400053
和精配准位置数组
Figure FDA00001648868400054
步骤8:图像拼接融合与条码识别:
步骤(8-1):遍历最佳匹配度数组
Figure FDA00001648868400055
以匹配度数值最小的两个位置点n1和n2作为分段点,将图像序列
Figure FDA00001648868400056
分为三个部分;
步骤(8-2):将每个部分的图像按照图像间的精配准位置采用渐入渐出的加权平均法进行拼接融合,得到三个部分的合成图像Part0、Part1、Part2,三幅图像宽度分别为w0、w1、w2,高度是ys,三幅图像间的精配准位置分别为PC0、PC1
Figure FDA00001648868400057
PC 1 = C n 2 ;
步骤(8-3):计算
Figure FDA00001648868400059
中图像NMvtemp0的横向梯度:
x grad j NMvtem p 0 = &Sigma; j = 0 y s - 1 ( pix i + 1 , j NMvtem p 0 - pix i , j NMvtem p 0 ) i &Element; [ 0 , w )
Figure FDA000016488684000511
代表图像NMvtemp0中i列的横向梯度;得到数组
Figure FDA000016488684000512
并计算
Figure FDA000016488684000513
中的最大值
Figure FDA000016488684000514
位置xl即为图像NMvtemp0中条码区域和空白区域分界位置;
步骤(8-4):计算
Figure FDA000016488684000515
中图像NMvtempM-1的横向梯度:
x grad j NMvtem p M - 1 = &Sigma; j = 0 y s - 1 ( pix i , j NMvtem p M - 1 - pix i + 1 , j NMvtem p M - 1 ) i &Element; [ 0 , w )
代表图像NMvtempM-1中i列的横向梯度;得到数组
Figure FDA000016488684000518
并计算
Figure FDA00001648868400061
中的最大值位置xr即为图像NMvtempM-1中条码区域和空白区域分界位置;
步骤(8-5):将Part0、Part1、Part2三幅图像拼接融合后的宽度为wm=(xl+ys+w-xr),高度为ys;建立图像内存缓冲区,大小为wm×ys;将图像Part0放入缓冲区左侧,将图像Part2放入缓冲区右侧;判断|(wm-w0-w2)-(w1-PC0-PC1)|≤10,若满足判断条件则将图像Part1按照与Part0、Part2的精配准位置PC0、PC1放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合,进入步骤(8-7),若不满足判断条件则进入步骤(8-6);
步骤(8-6):在图像内存缓冲区内将Part1放在两幅图像之间,开始位置与Part0重合w列,然后Part1步进向右运动,直到Part1与Part2重合w列为止;将步进运动过程中Part1与Part0、Part2分别重合的区域合并为联合重合区域,计算联合重合区域匹配度,匹配度计算方法同步骤(7-1),并步进运动过程中取到联合重合区域最大匹配度的位置作为配准位置,将图像Part1按照配准位置放入缓冲区,重合区域采用渐入渐出的加权平均法完成图像拼接融合;
步骤(8-7):将图像内存缓冲区内拼接融合得到的二维条码图像,按照宽度进行裁剪,取二维条码图像xl~xl+ys部分,得到一幅新的ys×ys的Data Matrix二维条码图像,条码模块大小为Ms×Ms;使用解码***读取新的Data Matrix二维条码图像中的条码信息,解码***根据解码原理和Reed-Solomon纠错算法对其解码并纠错。
CN201210152638.8A 2012-05-17 2012-05-17 一种基于图像拼接的柱面二维条码识读方法 Expired - Fee Related CN102682266B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210152638.8A CN102682266B (zh) 2012-05-17 2012-05-17 一种基于图像拼接的柱面二维条码识读方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210152638.8A CN102682266B (zh) 2012-05-17 2012-05-17 一种基于图像拼接的柱面二维条码识读方法

Publications (2)

Publication Number Publication Date
CN102682266A true CN102682266A (zh) 2012-09-19
CN102682266B CN102682266B (zh) 2014-06-11

Family

ID=46814167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210152638.8A Expired - Fee Related CN102682266B (zh) 2012-05-17 2012-05-17 一种基于图像拼接的柱面二维条码识读方法

Country Status (1)

Country Link
CN (1) CN102682266B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203564A (zh) * 2016-06-23 2016-12-07 北京印刷学院 一种圆‑棱柱组合体表面的二维码的生成和采集方法
EP3104306A1 (en) 2015-06-11 2016-12-14 Scantrust SA Two dimensional barcode
CN106529365A (zh) * 2016-12-05 2017-03-22 广东工业大学 自动计价机
CN108345817A (zh) * 2018-02-06 2018-07-31 徐州智融图像科技有限公司 一种圆柱面二维码的识别方法
CN114882370A (zh) * 2022-07-07 2022-08-09 西安超嗨网络科技有限公司 商品智能识别方法、装置、终端及存储介质
WO2022227777A1 (zh) * 2021-04-26 2022-11-03 华为技术有限公司 一种模型处理方法及装置
CN111553317B (zh) * 2020-05-14 2023-08-08 北京惠朗时代科技有限公司 一种防伪码的获取方法、装置、计算机设备和存储介质
TWI838870B (zh) * 2022-08-30 2024-04-11 新加坡商台達電子國際(新加坡)私人有限公司 條碼讀取裝置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060043186A1 (en) * 2004-08-30 2006-03-02 Nadabar Sateesha G Methods and apparatus for reading bar code identifications
CN102156849A (zh) * 2011-04-21 2011-08-17 西北工业大学 一种金属柱面直接标刻二维条码的识读装置及识读方法
CN102354363A (zh) * 2011-09-15 2012-02-15 西北工业大学 高反光柱面金属上的二维条码图像识别方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060043186A1 (en) * 2004-08-30 2006-03-02 Nadabar Sateesha G Methods and apparatus for reading bar code identifications
CN102156849A (zh) * 2011-04-21 2011-08-17 西北工业大学 一种金属柱面直接标刻二维条码的识读装置及识读方法
CN102354363A (zh) * 2011-09-15 2012-02-15 西北工业大学 高反光柱面金属上的二维条码图像识别方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3104306A1 (en) 2015-06-11 2016-12-14 Scantrust SA Two dimensional barcode
WO2016199004A1 (en) 2015-06-11 2016-12-15 Scantrust Sa Two dimensional barcode
CN106203564A (zh) * 2016-06-23 2016-12-07 北京印刷学院 一种圆‑棱柱组合体表面的二维码的生成和采集方法
CN106203564B (zh) * 2016-06-23 2019-02-01 北京印刷学院 一种圆-棱柱组合体表面的二维码的生成和采集方法
CN106529365A (zh) * 2016-12-05 2017-03-22 广东工业大学 自动计价机
CN106529365B (zh) * 2016-12-05 2019-09-06 广东工业大学 自动计价机
CN108345817A (zh) * 2018-02-06 2018-07-31 徐州智融图像科技有限公司 一种圆柱面二维码的识别方法
CN111553317B (zh) * 2020-05-14 2023-08-08 北京惠朗时代科技有限公司 一种防伪码的获取方法、装置、计算机设备和存储介质
WO2022227777A1 (zh) * 2021-04-26 2022-11-03 华为技术有限公司 一种模型处理方法及装置
CN114882370A (zh) * 2022-07-07 2022-08-09 西安超嗨网络科技有限公司 商品智能识别方法、装置、终端及存储介质
TWI838870B (zh) * 2022-08-30 2024-04-11 新加坡商台達電子國際(新加坡)私人有限公司 條碼讀取裝置

Also Published As

Publication number Publication date
CN102682266B (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN102682266A (zh) 一种基于图像拼接的柱面二维条码识读方法
CN110866924B (zh) 一种线结构光中心线提取方法及存储介质
CN102790841B (zh) 书籍的书脊区域中数字图像的检测和校正方法
CN107239778B (zh) 高效准确的车牌识别方法
CN102354363A (zh) 高反光柱面金属上的二维条码图像识别方法
CN104732183A (zh) 一种基于图像采样线灰度信息分析的一维条码识别方法
CN102708552B (zh) 一种快速二维条码图像运动去模糊方法
CN109871938A (zh) 一种基于卷积神经网络的零部件喷码检测方法
CN106485182B (zh) 一种基于仿射变换的模糊qr码复原方法
CN112819845B (zh) 柔性封装基板轮廓、线宽线距缺陷检测方法及介质和设备
CN106651774B (zh) 一种车牌超分辨率模型重建方法及装置
CN106934806B (zh) 一种基于结构清晰度的无参考图失焦模糊区域分割方法
CN108921813B (zh) 一种基于机器视觉的无人机检测桥梁结构裂缝识别方法
CN105447512A (zh) 一种精粗结合的光学表面缺陷的检测方法及装置
CN111008651B (zh) 一种基于多特征融合的图像翻拍检测方法
Trouvé et al. Single image local blur identification
CN107680152A (zh) 基于图像处理的目标物表面形貌测量方法和装置
CN111931537B (zh) 一种颗粒状qr二维码定位方法
CN104899589A (zh) 一种采用阈值二值化算法实现二维条码预处理的方法
CN113421210B (zh) 一种基于双目立体视觉的表面点云重建方法
CN110956624A (zh) 一种针对立体物体的图像清晰度评价方法
CN110378167B (zh) 一种基于深度学习的条码图像补正方法
Saleem et al. Effects of ground manifold modeling on the accuracy of stixel calculations
CN115438682B (zh) 用于确定解码方向的方法、装置及解码设备
CN116842976A (zh) 一种基于图像粗定位后的DataMatrix二维码识别方法及***

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: 20140611

Termination date: 20150517

EXPY Termination of patent right or utility model