CN106874820B - 一种基于最小二乘法的一维条码码字解码方法 - Google Patents
一种基于最小二乘法的一维条码码字解码方法 Download PDFInfo
- Publication number
- CN106874820B CN106874820B CN201710021294.XA CN201710021294A CN106874820B CN 106874820 B CN106874820 B CN 106874820B CN 201710021294 A CN201710021294 A CN 201710021294A CN 106874820 B CN106874820 B CN 106874820B
- Authority
- CN
- China
- Prior art keywords
- code word
- code
- error
- modules
- character
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1413—1D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/06009—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
- G06K19/06018—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking one-dimensional coding
- G06K19/06028—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking one-dimensional coding using bar codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Character Discrimination (AREA)
Abstract
一种基于最小二乘法的一维条码码字解码方法,具体步骤如下:根据实际扫描到的条空宽度计算出条码每个码字相似边缘距离包含的模块数ei,与标准边缘差异表中正确的码字包含的模块宽度数Ei比较是否相等并计算ei=Ei的个数N;g为码字相似边缘距离包含的模块数个数。当N<g‑2或N<=1时,则码字解码失败;当N>=g‑2且N>1时,则寻找待选可能码字Fi并利用最小二乘法从所有可能字符中选择误差Err最小的值为正确的码字,码字进行误码检查,通过误码检查则码字解码成功,未通过误码检查则码字解码失败;当N=g时,选定可能的字符,并进行是否为误码的相关计算。本发明能大大提高条码码字的解码成功率。
Description
技术领域
本发明属于信息存储、定位和识别技术领域,涉及一种基于最小二乘法的一维条码码字解码方法。
背景技术
一个完整的一维条码由两侧静止区、起始符、数据符、校验符、终止符组成,其结构图如图1所示。它将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息。
常用的条码扫描设备通常由光源(比如激光)、光学透镜、感光器件(例如CCD,CMOS等)、解码逻辑电路和I/O接口等组件构成。简单来讲,所述光源投射光至条码上,从条码处反射的光透过所述光学透镜进入感光器件表面,经过光电转换、模数转换等一系列处理后形成条码的数字图像,然后解码逻辑电路对摄取的图像进行分析和解码。
现有的一维条码码字解码方法:
1、对采集的条码图像进行预处理(去燥、灰度提取、二值化);
2、定位出条码区域;
3、沿条码方向布置采样线,得到条码条空边界,计算出条码每条每空的宽度,记为{a1,a2,a3…}
4、根据扫描实测的条码条空字符宽度计算相似边缘距离,记为{b1,b2,b3…};
5、将相似边缘距离(边缘差异)或条码字符条空宽度归一化为条码字符模块宽度的整数倍,字符条空模块数记为{c1,c2,c3…},相似边缘距离模块数记为{e1,e2,e3…};
6、根据第5步计算的条空的模块数查各条码编码字符集或者根据相似边缘距离模块数查各条码边缘差异表,得到条码起始符,数据字符值,结束符以及有校验时校验符,解码结束。
现有方法的第6步从编码字符集或者条码边缘差异表中找出相对应的字符码字,一个码字由多个黑白条空组成,以code128码符号字符值16(字符集A中为字符“0”)为例,它的条空模块数{C1,C2,C3,C4,C5,C6}为{1,2,3,1,2,2},相似边缘距离{E1,E2,E3,E4}为{3,5,4,3,6}这就要求扫描计算出的条空宽度模块数c1、c2、c3、c4、c5、c6分别等于1、2、3、1、2、2,或者计算出的边缘差异值e1、e2、e3、e4为3、5、4、3,符号字符值16的码字才能解码成功。但实际情况中当图像质量差的时候,噪声干扰、明暗不均、条空边界模糊、对比度小等原因使二值化计算出的条空宽度模块数误差变大,并不是每个码字的条空宽度模块数或者每个边缘差异值都正确,这种情况现有的方法会造成解码失败。
发明内容
本发明提供了一种能大大提高条码码字的解码成功率的基于最小二乘法的一维条码码字解码方法。
本发明采用的技术方案是:
一种基于最小二乘法的一维条码码字解码方法,具体步骤如下:
(1)计算出条码每个码字相似边缘距离包含的模块数,先扫描获取码字条空实际宽度为ai={a1,a2,a3,a4,a5,a6…},并计算得到该码字的相似边缘距离包含的模块数为ei={e1,e2,e3,e4,e5…},其中ei=ai+a(i+1);
(2)查询实际边缘差异表中正确的码字包含的模块宽度数为Ei={E1,E2,E3,E4,E5…},其中码字的标准条空模块数为Ci={C1,C2,C3,C4,C5,C6…},则Ei=Ci+C(i+1),并计算ei=Ei的个数N;
(3)根据条码类型可确定该条码每个码字包含的条和空个数和为I,每个码字的相似边缘距离包含的模块数个数为g,g=I-1;当N<g-2或N<=1时,则码字解码失败;当N>=g-2且N>1时,则进入步骤(4);当N=g时,选定可能字符F,查F边缘差异表,进行是否为误码的相关计算,检查自校验值V是否满足要求:
(V-1.75)*(p)<(a1+a3+a5+…)<(V+1.75)*(p)/Q;
其中p=a1+a2+a3+a4+a5+…,a1+a3+a5+…是实际扫描到的码字所有条宽度和,V为字符F所有条包含标准模块数的个数之和,Q为一个码字具有的模块个数;
满足要求则字符码字解码成功,不满足要求则码字解码失败;
(4)当每个不相等的算式ei≠Ei,不等式两边计算得到的边缘差异模块数与字符边缘差异表中标准模块数两者的误差不大于1,该字符选为可能字符,记录它的符号值以及对应的条空模块数,遍历边缘差异表,选出所有的可能字符Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6…};
(5)利用最小二乘法从所有可能字符中选择误差Err最小的值为正确的码字,包括:
1)根据步骤(1)中扫描获取的码字条空实际宽度为ai={a1,a2,a3,a4,a5,a6…},计算得到实际单位模块的平均宽度M=(a1+a2+a3+a4+a5+a6+…)/Q;
2)将可能字符的条空模块数Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6…}乘以实际单位模块的平均宽度M得到可能码字的条空宽度fi={fi1,fi2,fi3,fi4,fi5,fi6…},
即f1=F1*M={F11*M,F12*M,F13*M,F14*M,F15*M,F16*M…}、f2=F2*M={F21*M,F22*M,F23*M,F24*M,F25*M,F26*M…}…
3)计算可能码字的条空宽度值fi与实际扫描到的条空实际宽度值ai的误差Err1,Err2,Err3…
求Err1、Err2、Err3…最小值,其对应的可能码字的条空宽度值fi就是与扫描到的条空实际宽度最符合的码字字符F;
(6)对步骤(5)得到的码字字符F进行误码检查,通过误码检查则码字解码成功,未通过误码检查则码字解码失败。
进一步,步骤(6)的误码检查包括:1)检查自校验值V是否满足要求;2)根据实际情况选定一个域值θ,误差Err<θ是认为码字解码成功,否则认为码字存在误码,解码失败。
本发明的有益效果:能大大提高条码码字的解码成功率。
附图说明
图1是条码的结构示意图。
图2是本发明的流程示意图。
具体实施方式
下面结合具体实施例来对本发明进行进一步说明,但并不将本发明局限于这些具体实施方式。本领域技术人员应该认识到,本发明涵盖了权利要求书范围内所可能包括的所有备选方案、改进方案和等效方案。
参照图2,本实施例以code128码为例,包括3个条和3个空,一个码字包含11个模块,一种基于最小二乘法的一维条码码字解码方法,具体步骤如下:
(1)计算出条码每个码字相似边缘距离包含的模块数ei(边缘差异值),先扫描获取码字条空实际宽度为ai={a1,a2,a3,a4,a5,a6},并计算得到该码字的相似边缘距离包含的模块数为ei={e1,e2,e3,e4,e5},其中ei=ai+a(i+1),即e1=a1+a2、e2=a2+a3、e3=a3+a4、e4=a4+a5、e5=a5+a6;
(2)查询实际边缘差异表中正确的码字包含的模块宽度数为Ei={E1,E2,E3,E4,E5},其中码字的条空模块数为Ci={C1,C2,C3,C4,C5,C6},则Ei=Ci+C(i+1),即E1=C1+C2、E2=C2+C3、E3=C3+C4、E4=C4+C5、E5=C5+C6,并计算ei=Ei的个数N;
(3)当N<3时,则码字解码失败;当N>=3时,则进入步骤(4);当N=5时,选定可能字符F,查F边缘差异表,进行是否为误码的相关计算,检查自校验值V是否满足要求:
(V-1.75)*(p)<(a1+a3+a5)<(V+1.75)*(p)/11;
其中p=a1+a2+a3+a4+a5;V为字符F第1个条、第2个条、第3个条包含模块个数之和;满足要求则字符码字解码成功,不满足要求则码字解码失败;
(4)当每个不相等的算式ei≠Ei,不等式两边计算得到的边缘差异模块数与字符边缘差异表中标准模块数两者的误差不大于1,该字符选为可能字符,记录它的符号值以及对应的条空模块数,遍历边缘差异表,选出所有的可能字符Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6},F1{F11,F12,F13,F14,F15,F16}、F2{F21,F22,F23,F24,F25,F26}、F3{F31,F32,F33,F34,F35,F36}…;
(5)利用最小二乘法从所有可能字符中选择误差Err最小的值为正确的码字,包括:
1)根据步骤(1)中扫描获取的码字条空实际宽度为ai={a1,a2,a3,a4,a5,a6},计算得到实际单位模块的平均宽度M=(a1+a2+a3+a4+a5+a6)/11;
2)将可能字符的条空模块数Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6}乘以实际单位模块的平均宽度M得到可能码字的条空宽度fi={fi1,fi2,fi3,fi4,fi5,fi6},即f1=F1*M={F11*M,F12*M,F13*M,F14*M,F15*M,F16*M}、f2=F2*M={F21*M,F22*M,F23*M,F24*M,F25*M,F26*M}…
3)计算可能码字的条空宽度值fi与实际扫描到的条空实际宽度值ai的误差Err1,Err2,Err3…
求Err1、Err2、Err3…最小值,其对应的可能码字的条空宽度值fi就是与扫描到的条空实际宽度最符合的码字;
(6)对步骤(5)得到的码字进行误码检查,1)检查自校验值V是否满足要求;2)根据实际情况选定一个域值θ,误差Err<θ是认为码字解码成功,否则认为码字存在误码,解码失败。
本发明对条码条空模块数存在误差情况下利用最小二乘法选择出最符合的码字,并且设定误差大小防止误码出现,该方法能有效的提高条码码字解码效果和适应性。同时扩展了code128码边缘差异表,计算相似边缘距离宽度模块数比计算字符条空宽度模块数容错率高、解码效果好,一般code128码商品码选择根据计算相似边缘距离宽度模块数查找相应码字的方法,计算相似边缘距离宽度模块数为相邻条和空模块数总宽度,Code128码现有边缘差异表没有对码字的第三条黑条和第三白条信息进行处理,本发明将code128码码字的第三条黑条和第三白条信息加入到边缘差异表中,即边缘差异表{E1,E2,E3,E4}扩大为{E1,E2,E3,E4,E5},为code128码条码码字解码提供更多的信息,提高解码率。
Claims (2)
1.一种基于最小二乘法的一维条码码字解码方法,具体步骤如下:
(1)计算出条码每个码字相似边缘距离包含的模块数, 先扫描获取码字条空实际宽度为ai={a1,a2,a3,a4,a5,a6…},并计算得到该码字的相似边缘距离包含的模块数为ei={e1,e2,e3,e4,e5…},其中ei=ai+a(i+1);
(2)查询实际边缘差异表中正确的码字包含的模块宽度数Ei={E1,E2,E3,E4,E5…},其中码字的标准条空模块数为Ci={C1,C2,C3,C4,C5,C6…},则Ei=Ci+C(i+1),并计算ei=Ei的个数N;
(3)根据条码类型可确定该条码每个码字包含的条和空个数和为I,每个码字的相似边缘距离包含的模块数个数为g,g=I-1;当N<g-2或N<=1时,则码字解码失败;当N>=g-2且N>1时,则进入步骤(4);当N=g时,选定可能字符F,查F边缘差异表,进行是否为误码的相关计算,检查自校验值V是否满足要求:
(V-1.75)*(p)<(a1+a3+a5+…)<(V+1.75)*(p)/Q;
其中p=a1+a2+a3+a4+a5+…,a1+a3+a5+…是实际扫描到的码字所有条宽度和,V为字符F所有条包含标准模块数的个数之和,Q为一个码字具有的总模块个数;
满足要求则字符码字解码成功,不满足要求则码字解码失败;
(4)当每个不相等的算式ei≠Ei,不等式两边计算得到的边缘差异模块数与字符边缘差异表中标准模块数两者的误差不大于1,该字符选为可能字符,记录它的符号值以及对应的条空模块数,遍历边缘差异表,选出所有的可能字符Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6…};
(5)利用最小二乘法从所有可能字符中选择误差Err最小的值为正确的码字,包括:
1)根据步骤(1)中扫描获取的码字条空实际宽度为ai={a1,a2,a3,a4, a5,a6…},计算得到实际单位模块的平均宽度M=(a1+a2+a3+a4+a5+a6+…)/Q;
2)将可能字符的条空模块数Fi={Fi1,Fi2,Fi3,Fi4,Fi5,Fi6…}乘以实际单位模块的平均宽度M得到可能码字的条空宽度fi={fi1,fi2,fi3,fi4,fi5,fi6…},即f1=F1*M={F11*M,F12*M,F13*M,F14*M,F15*M,F16*M…}、f2=F2*M={F21*M,F22*M,F23*M,F24*M,F25*M,F26*M…}…
3)计算可能码字的条空宽度值fi与实际扫描到的条空实际宽度值ai的误差Err1,Err2,Err3…
求Err1、Err2、Err3…最小值,其对应的可能码字的条空宽度值fi就是与扫描到的条空实际宽度最符合的码字字符F;
(6)对步骤(5)得到的码字字符F进行误码检查,通过误码检查则码字解码成功,未通过误码检查则码字解码失败。
2.根据权利要求1所述的一种基于最小二乘法的一维条码码字解码方法,其特征在于:步骤(6)的误码检查包括:1)检查自校验值V是否满足要求;2)根据实际情况选定一个域值θ,误差Err<θ是认为码字解码成功,否则认为码字存在误码,解码失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710021294.XA CN106874820B (zh) | 2017-01-12 | 2017-01-12 | 一种基于最小二乘法的一维条码码字解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710021294.XA CN106874820B (zh) | 2017-01-12 | 2017-01-12 | 一种基于最小二乘法的一维条码码字解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874820A CN106874820A (zh) | 2017-06-20 |
CN106874820B true CN106874820B (zh) | 2019-07-23 |
Family
ID=59158146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710021294.XA Active CN106874820B (zh) | 2017-01-12 | 2017-01-12 | 一种基于最小二乘法的一维条码码字解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874820B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299628B (zh) * | 2017-07-24 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种条码的译码方法及装置 |
CN109697382B (zh) * | 2018-12-18 | 2022-05-10 | 福州图腾易讯信息技术有限公司 | 一种线性条码边缘失真处理方法及设备 |
CN112561014B (zh) * | 2020-12-21 | 2023-03-14 | 宁波尚臣物联科技有限公司 | 一种一维条码的编解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710381A (zh) * | 2009-12-28 | 2010-05-19 | 天津优尼莱博泰克电子科技发展有限公司 | 高性能一维条形码解码方法 |
CN104657728A (zh) * | 2015-03-19 | 2015-05-27 | 江苏物联网研究发展中心 | 基于计算机视觉的条码识别系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8668149B2 (en) * | 2009-09-16 | 2014-03-11 | Metrologic Instruments, Inc. | Bar code reader terminal and methods for operating the same having misread detection apparatus |
-
2017
- 2017-01-12 CN CN201710021294.XA patent/CN106874820B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710381A (zh) * | 2009-12-28 | 2010-05-19 | 天津优尼莱博泰克电子科技发展有限公司 | 高性能一维条形码解码方法 |
CN104657728A (zh) * | 2015-03-19 | 2015-05-27 | 江苏物联网研究发展中心 | 基于计算机视觉的条码识别系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106874820A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874820B (zh) | 一种基于最小二乘法的一维条码码字解码方法 | |
US8550352B2 (en) | QR barcode decoding chip and decoding method thereof | |
CA2186950C (en) | Method and apparatus for decoding bar code images using multi-order feature vectors | |
US6742708B2 (en) | Fiducial mark patterns for graphical bar codes | |
US20180165492A1 (en) | Decoding Method and System for QR Code with One Damaged Position Detection Pattern | |
US20060175414A1 (en) | Method for reading out symbol information and device for reading out symbol information | |
JP2005267598A5 (zh) | ||
US7305131B2 (en) | Extracting graphical bar codes from an input image | |
RU2729399C1 (ru) | Способ обнаружения и распознавания визуальных маркеров большой дальности и высокой плотности | |
CN109978110B (zh) | 一种用于agv定位与导航的二维码及解码方法 | |
CN108073966A (zh) | 一种二维码与孔阵码的转换方法 | |
CN105138945B (zh) | 一种钢筋表面二维码识别方法 | |
KR20090035529A (ko) | 광학식 심볼 및 그것이 부착된 물품 및 광학식 심볼을 물품에 부착하는 방법, 및 광학식 인식 코드 인식 방법 | |
US6655592B2 (en) | Graphically demodulating graphical bar codes without foreknowledge of the original unmodulated base image | |
CN103034830B (zh) | 条码解码方法及装置 | |
US20140084061A1 (en) | Optical information reading device, optical information reading method, computer-readable program and recording medium | |
CN107544446A (zh) | 智能卡生产控制方法 | |
BR112013011943B1 (pt) | método para identificação de um código de barras bidimensional em dados de imagem digital do código de barras, meio legível por computador não transitório e aparato configurado para identificar um código de barras bidimensional em dados de imagem digital do código de barras | |
CN114021596A (zh) | 一种基于深度学习的条码识别方法及装置 | |
CN104217189A (zh) | 一种用于试纸条的条形码的自学习识别方法 | |
KR102393764B1 (ko) | 바코드 이미지 식별 방법 및 그 장치 | |
CN109670364A (zh) | 一种模板识别信息校对方法 | |
CN206271034U (zh) | 商品条码防伪及验证系统 | |
CN101908133B (zh) | 一种条码解码方法及装置 | |
Martynov et al. | Aztec core symbol detection method based on connected components extraction and contour signature analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |