CN109388999A - 一种条形码识别方法及装置 - Google Patents

一种条形码识别方法及装置 Download PDF

Info

Publication number
CN109388999A
CN109388999A CN201710686925.XA CN201710686925A CN109388999A CN 109388999 A CN109388999 A CN 109388999A CN 201710686925 A CN201710686925 A CN 201710686925A CN 109388999 A CN109388999 A CN 109388999A
Authority
CN
China
Prior art keywords
sky
target
width
gray value
code word
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
CN201710686925.XA
Other languages
English (en)
Other versions
CN109388999B (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201710686925.XA priority Critical patent/CN109388999B/zh
Publication of CN109388999A publication Critical patent/CN109388999A/zh
Application granted granted Critical
Publication of CN109388999B publication Critical patent/CN109388999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14131D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1486Setting the threshold-width for bar codes to be decoded

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Toxicology (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Character Input (AREA)
  • Control Of Metal Rolling (AREA)

Abstract

本发明实施例提供了一种条形码识别方法及装置,方法包括:获得目标条形码中的每一目标码字;针对每一目标码字,确定目标码字对应的目标条空宽度序列,以及每一条对应的条灰度值以及每一空对应的空灰度值;根据目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整,再结合预设宽度调整规则,调整目标条空宽度序列;将调整后的目标条空宽度序列与包含有多对对应关系的预设码字表进行匹配;当匹配成功时,根据匹配成功的标准条空宽度序列对应的代表信息,确定目标码字对应的目标代表信息;基于目标代表信息,确定目标条形码对应的最终代表信息,以提高对模糊的条形码的识别的准确性。

Description

一种条形码识别方法及装置
技术领域
本发明涉及图像识别技术领域,特别是涉及一种条形码识别方法及装置。
背景技术
条形码在多个领域发挥着重要作用,例如:超市物品结算、物流、工业自动化等领域。举例而言,在物流领域中,可以通过自动检测识别物品上的条形码完成对物品的管理,不仅提高了物品管理效率并且节约了管理成本。
条形码中包含至少一个码字,每个码字由以预定规则排列的条(黑色条带)空(白色条带)组成,其中上述预定规则由条形码对应的码制决定。现有技术中,对条形码自动检测识别流程一般为:先计算条形码中每个码字对应的条空宽度序列,并将上述的条空宽度序列标准化,将标准化后的条空宽度序列与标准码字表中的标准宽度序列进行匹配,匹配成功后,将所匹配的标准宽度序列对应的信息确定为条形码中每个码字对应的实际信息,进而识别出条形码。
然而,现有的条形码自动检测识别流程则不能很好的识别模糊的条形码。具体的,模糊的条形码中每个码字的条空宽度有所失真,计算所得的每个码字对应的条空宽度序列不够准确,进一步的,将上述条空宽度序列进行标准化后,将所得的标准化后的条空宽度序列与标准码字表中的标准宽度序列进行匹配时,可能匹配不到准确的标准宽度序列,进而,导致无法正确译码。
发明内容
本发明实施例的目的在于提供一种条形码识别方法及装置,以提高对模糊的条形码的识别的准确性。具体技术方案如下:
一方面,本发明实施例提供了一种条形码识别方法,所述方法包括:
获得目标条形码中的每一目标码字;
针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
可选地,所述针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤,包括:
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
可选地,在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤之前,所述方法还包括:
将所确定的目标条空宽度序列与所述预设码字表进行匹配;
当所确定的目标条空宽度序列与所述预设码字表匹配失败时,执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
当所确定的目标条空宽度序列与所述预设码字表匹配成功时,将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,并执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
所述根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息的步骤,包括:
将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
可选地,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
在所述确定所述目标码字对应的目标条空宽度序列的步骤之前,所述方法还包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息的步骤,包括:
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
可选地,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或
当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,所述方法还包括:
基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
可选地,在所述基于所确定的所述目标码字对应的第一代表信息,确定所述目标条形码对应的最终代表信息的步骤之后,所述方法还包括:
当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
可选地,所述获得目标条形码中的每一目标码字的步骤,包括:
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
可选地,所述预设码字表中包含至少一种码制对应的码字子表;
所述将调整后的目标条空宽度序列与预设码字表进行匹配的步骤,包括:
将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述确定所述目标码字对应的目标条空宽度序列的步骤,包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小;
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤之前,所述方法还包括:
从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
可选地,所述方法还包括:
利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
另一方面,本发明实施例提供了一种条形码识别装置,所述装置包括:
获得模块,用于获得目标条形码中的每一目标码字;
第一确定模块包括第一确定单元和第二确定单元,其中,所述第一确定单元,用于针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,所述第二确定单元,用于确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
第二确定模块,用于根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
调整模块,用于若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
匹配模块,用于将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
第三确定模块,用于当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
第四确定模块,用于基于所确定的所述目标码字对应的第一代表信息,确定所述目标条形码对应的最终代表信息。
另一方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的计算机程序时,实现本发明实施例所提供的任一所述的条形码识别方法。
另一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的任一所述的条形码识别方法。
本发明实施例中,获得目标条形码中的每一目标码字;针对每一目标码字,确定目标码字对应的目标条空宽度序列,并确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整目标条空宽度序列,再结合预设宽度调整规则,调整目标条空宽度序列;将调整后的目标条空宽度序列与包含有多对对应关系的预设码字表进行匹配,每一对应关系为:标准条空宽度序列与代表信息的对应关系;当调整后的目标条空宽度序列与预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定目标码字对应的目标代表信息;基于所确定的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息。
可见,本发明实施例中在将目标条空宽度序列与预设码字表进行匹配前,需要根据目标码字对应的目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列,并在确定调整时,再结合预设宽度调整规则,对目标条空宽度序列进行调整,进而基于调整后的目标条空宽度序列,确定目标码字对应的目标代表信息,进而基于目标条形码中的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息,避免了在识别模糊的条形码时,仅基于模糊的条形码的宽度失真的条空宽度序列,确定模糊条形码对应的代表信息,导致识别错误甚至无法识别的问题,在一定程度上提高对模糊的条形码的识别的准确性。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种条形码识别方法的流程示意图;
图2A为码字的一种示意图;
图2B为图2A所示的码字对应的灰度波形的一种示意图;
图2C为利用不同尺度的模糊核对图2B所示的灰度波形进行模糊处理后所得结果的一种示意图;
图3为本发明实施例所提供的一种条形码识别方法的另一流程示意图;
图4为本发明实施例所提供的一种条形码识别方法的另一流程示意图;
图5为本发明实施例所提供的一种条形码识别装置的结构示意图;
图6为本发明实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提供了一种条形码识别方法及装置,以提高对模糊的条形码的识别的准确性。
如图1所示,本发明实施例提供了一种条形码识别方法,可以包括如下步骤:
S101:获得目标条形码中的每一目标码字;
可以理解的是,本发明实施例所提供的一种条形码识别方法,可以应用于任一能够获得目标条形码的电子设备中,上述电子设备可以为电脑、智能手机、扫描枪等等。
本步骤中,可以是直接获得从目标条形码中所识别出的每一目标码字,其中,目标码字由条和空组成。一般的,目标条形码中的目标码字可以存在两种宽度单元(例如39码),上述宽度单元可以分别用宽或窄标识,标准化后的宽和窄之间的宽度之比可以为2:1,此时上述目标条形码中可以存在宽条、窄条、宽空和窄空。目标条形码中的目标码字还可以存在四种宽度单元(例如:128码),上述宽度单元可以分别用第一宽、第二宽、第三宽或第四宽标识,标准化后的第一宽、第二宽、第三宽和第四宽之间的宽度之比可以为4:3:2:1,此时,上述目标条形码中可以存在第一宽条、第二宽条、第三宽条、第四宽条、第一宽空、第二宽空、第三宽空和第四宽空。
S102:针对每一目标码字,确定目标码字对应的目标条空宽度序列,并确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
本步骤中,上述目标条空宽度序列可以为进行标准化后的条空宽度序列。在确定目标码字的对应的目标条空宽度序列时,可以并行处理目标条形码中的每一目标码字,也可以串行处理目标条形码中的每一目标码字,这都是可以的。
获得目标条形码的每一目标码字之后,可以基于目标码字的灰度值,确定出目标码字的条空的宽度,进一步的,再将所确定出的条空的宽度进行标准化,生成上述的目标码字对应的目标条空宽度序列。
码字由条和空组成,且条空一般间隔出现,其中,条可以通过黑色条带表征,空可以通过白色条带表证。码字中条空对应的灰度值一般差距较大,可以理解的是,码字可能出现模糊(即条形码出现模糊)的情况,此时,码字的条空对应的灰度值会有所失真,且条空的宽度(后续提到的实际宽度)也会有所失真,在一定程度下,码字中条空对应的灰度值还是会存在差距。可以预先针对条空设置灰度阈值,例如:条对应第一灰度阈值,空对应第二灰度阈值,其中,第一灰度阈值不大于第二灰度阈值。在基于目标码字的灰度值,确定出目标码字的条空的宽度时,可以利用上述第一灰度阈值和第二灰度阈值,确定每一条空的宽度,例如,在目标码字中识别连续出现的不大于第一灰度阈值的灰度值,将上述所识别出的连续出现的不大于第一灰度阈值的灰度值对应的位置之间的距离,确定为一条的宽度(后续提到的第一实际宽度);在目标码字中识别连续出现的不小于第二灰度阈值的灰度值,将上述所识别出的连续出现的不小于第二灰度阈值的灰度值对应的位置之间的距离,确定为一空的宽度(后续提到的第二实际宽度),等等。
后续的,在确定出目标码字中条空的宽度后,可以利用确定条空宽度的灰度值对应的位置之间所包含的灰度值,确定对应条空的条灰度值或空灰度值,其中,可以是取上述所有灰度值的平均值,也可以取上述所有灰度值之中的最大值。
S103:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;
S104:若确定调整目标条空宽度序列,根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列;
可以理解的是,码字出现模糊的情况时,条对应的灰度值会增大,空对应的灰度值会减小,且条空对应的宽度也会出现变化。一般的,条越宽,该条的灰度值的变化程度越小;空越宽,该空的灰度值的变化程度越小。在一种情况中,码字中存在两种宽度单元(即存在宽和窄)时,宽对应的灰度值变化程度相较于窄对应的灰度值变化程度小。此时,上述预设宽度调整条件可以包括限定目标条空宽度序列中的宽条对应的条灰度值不能大于窄条对应的条灰度值,和/或,宽空对应的空灰度值不能小于窄空对应的空灰度值,和/或,预设有目标码字中宽的标准个数与窄的标准个数的条件。
当出现目标条空宽度序列中的宽条对应的条灰度值大于窄条对应的条灰度值,和/或,宽空对应的空灰度值小于窄空对应的空灰度值,和/或,目标条空宽度序列中的宽的个数与窄的个数不满足上述预设的宽的标准个数与窄的标准个数的情况时,则确定需要调整上述目标条空宽度序列。
其中,上述预设宽度调整规则中,可以包括:限定将上述情况中的宽条调整为窄条,将上述窄条调整为宽条,和/或,将上述情况中的宽空调整为窄空,将上述情况中的窄空调整为宽空的规则。当上述预设宽度调整条件中还包括:限定目标码字中宽的标准个数与窄的标准个数的条件时,上述预设宽度调整规则中,还可以包括:限定在调整的过程中需要保证目标条空宽度序列中的宽的个数与窄的个数满足上述预设的宽的标准个数与窄的标准个数的规则。
在码字中存在四种宽度单元(即存在第一宽、第二宽、第三宽和第四宽)时,第一宽、第二宽、第三宽和第四宽对应的灰度值的变化程度依次减小,此时,每一目标码字中所包含的四种宽度单元的标准化后的宽度之和(即目标条空宽度序列之中的所有宽度之和)可以为一常数。在一种情况中,上述预设宽度调整条件可以包括:限定目标条空宽度序列中的第一宽条对应的灰度值<第二宽条对应的灰度值<第三宽条对应的灰度值<第四宽条对应的灰度值,和/或,第一宽空对应的灰度值>第二宽空对应的灰度值>第三宽空对应的灰度值>第四宽空对应的灰度值,和/或,目标条空宽度序列之中的所有宽度之和为一预设常数。
当出现目标条空宽度序列中的第一宽条对应的灰度值不小于第二宽条对应的灰度值,和/或,第二宽条对应的灰度值不小于第三宽条对应的灰度值,和/或,第三宽条对应的灰度值不小于第四宽条对应的灰度值,和/或,第一宽空对应的灰度值不大于第二宽空对应的灰度值,和/或,第二宽空对应的灰度值不大于第三宽空对应的灰度值,和/或,第三宽空对应的灰度值不大于第四宽空对应的灰度值,和/或,目标条空宽度序列之中的所有宽度之和不为上述预设常数的情况时,可以确定调整目标条空宽度序列。
其中,上述预设宽度调整规则中,可以包括:限定将上述情况中的第一宽条和第二宽条相互转化(即将上述第一宽条调整为第二宽条,将上述第二宽条调整为第一宽条),和/或,第二宽条与第三宽条相互转换,和/或,第三宽条与第四宽条相互转换,和/或,第一宽空与第二宽空相互转换,和/或,第二宽空与第三宽空相互转换,和/或,第三宽空与第四宽空相互转换。当上述述预设宽度调整条件中还包括:限定目标条空宽度序列之中的所有宽度之和为预设常数的条件时,上述调整过程中需保证目标条空宽度序列之中的所有宽度之和为预设常数。
S105:将调整后的目标条空宽度序列与预设码字表进行匹配,其中,预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
S106:当调整后的目标条空宽度序列与预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定目标码字对应的目标代表信息;
上述步骤中,可以将上述调整后的目标条空宽度序列与预设码字表中的每一标准条空宽度序列进行一一比对,当预设码字表中包含与上述调整后的目标条空宽度序列相同的标准条空宽度序列时,即为匹配成功,当匹配成功时,即可根据上述匹配成功的标准条空宽度序列对应的代表信息,确定上述目标条空宽度序列的目标代表信息,即为目标码字对应的目标代表信息。另外的,当预设码字表中不包含与上述调整后的目标条空宽度序列相同的标准条空宽度序列时,则可以确定为匹配失败,此时可以对应输出提示用户目标码字译码错误的信息。
在一种实施方式中,可以直接将上述与调整后的目标条空宽度序列的匹配成功的标准条空宽度序列对应的代表信息,确定为上述调整后的目标条空宽度序列的代表信息,此处称为第一代表信息,进一步的,可以将上述第一代表信息确定为目标码字对应的目标代表信息。
在另一种实施方式中,获得每一目标码字的目标条空宽度序列后,可以首先将所获得的目标条空宽度序列,与预设码字表中的每一标准条空宽度序列进行一一比对,当预设码字表中包含与上述目标条空宽度序列相同的标准条空宽度序列时,即为匹配成功。当匹配成功时,即可将上述匹配成功的标准条空宽度序列对应的代表信息,确定为上述目标条空宽度序列的代表信息,此处称为第二代表信息。在一种情况中,可以直接将上述第二代表信息确定为目标码字对应的目标代表信息。在另一种情况中,后续的,还可以确定是否需要调整上述目标条空宽度序列,在确定出调整上述目标条空宽度序列,并对上述目标条空宽度序列进行调整后,获得调整后的目标条空宽度序列。进一步的,可以将调整后的目标条空宽度序列,与预设码字表中的每一标准条空宽度序列进行一一比对,当预设码字表中包含与上述调整后的目标条空宽度序列相同的标准条空宽度序列时,即为匹配成功。当匹配成功时,即可将上述匹配成功的标准条空宽度序列对应的代表信息,确定为上述调整后的目标条空宽度序列的代表信息,即第一代表信息。继而,当确定目标码字对应的目标代表信息时,可以基于上述第一代表信息与上述第二代表信息确定。一种方式,可以随机将上述第一代表信息或上述第二代表信息,确定为目标码字对应的目标代表信息;另一种方式,可以设置筛选条件,依据筛选条件从上述第一代表信息和上述第二代表信息筛选出一个代表信息,并将所筛选出的代表信息,确定为目标码字对应的目标代表信息。
S107:基于所确定的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息。
当确定出每一目标码字对应的目标代表信息后,可以依据所确定出的每一目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息。
可以理解的是,目标条形码中可以包含多个目标码字,当确定每一目标码字对应的目标代表信息后,可以根据每一目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息。
应用本发明实施例,在将目标条空宽度序列与预设码字表进行匹配前,需要根据目标码字对应的目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列,并在确定调整时,再结合预设宽度调整规则,对目标条空宽度序列进行调整,进而基于调整后的目标条空宽度序列确定目标码字对应的目标代表信息,进而基于目标条形码中的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息,避免了在识别模糊的条形码时,仅基于模糊的条形码的宽度失真的条空宽度序列,确定模糊条形码对应的代表信息,导致识别错误甚至无法识别的问题,在一定程度上提高对模糊的条形码的识别的准确性。
在一种实现方式中,所述针对每一目标码字,确定目标码字对应的目标条空宽度序列,并确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值(S102)的步骤,可以包括:
针对每一目标码字,获得目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
可以理解的是,针对每一目标码字,可以基于目标码字的条空的灰度值生成目标码字的目标灰度波形。如图2A所示,为一码字的一种示意图,其中,该码字的组成部分包括:图2A中所示的“|”之间所包含的条空。具体的,码字的条可以通过图2A中所示的黑色条带表征,黑色条带之间、黑色条带与灰色条带之间的白色条带可以表征码字的空,图2A中所示的灰色条带是为了可以体现出图2A中所示的白色条带,即为了体现出图2A中所示的码字的空。如图2B所示,为图2A所示的码字的一种灰度波形的示意图,其中,图2A所示的码字的条可以对应灰度波形中的波谷,图2A所示的码字的空可以对应灰度波形中的波峰。
基于目标灰度波形可以确定出目标码字中的条空的宽度,进一步的,对所确定出的条空的宽度进行标准化,即可确定出目标码字的目标条空宽度序列。其中,在基于目标灰度波形确定目标码字中的条空的宽度是可以利用相关的灰度分配方式、边缘点坐标差方式等确定。在一种实现方式中,可以将每一波谷(或波峰)两侧的所对应斜率的绝对值最大的点,作为所对应波谷(或波峰)的边缘点,将波谷(或波峰)两侧的边缘点之间的距离确定为波谷(或波峰)对应的宽度,即条(或空)对应的宽度。
并且,可以将上述波谷(或波峰)对应的最大灰度值(或最小灰度值),确定为所对应条的条灰度值(或空的空灰度值)。
可以理解的是,码字模糊的情况越严重,码字失真越严重,其中,码字中条对应的灰度值变大,空对应的灰度值变小,且条空的宽度也发生变化。以对图2B所示的灰度波形为例进行说明,利用不同的模糊核对图2B所示的灰度波形进行模糊处理,生成不同的模糊核对应的灰度波形,如图2C所示,其中,“1”对应的波形为原始灰度波形(即为图2B所示的灰度波形)中的一窄条的波形,,“2~6”分别对应的波形为:利用不同尺度的模糊核对“1”对应的波形进行模糊处理后的灰度波形,“2~6”分别对应的模糊核的尺度依次增加,其中,条或空的宽度越窄,灰度值变化程度越大,例如:图2C中“1”与“10”对应的波形。
在一种实现方式中,在对所确定出的条空的宽度进行标准化过程中,可以是将所确定出的数值最小的宽度作为基准宽度,将所确定出的其他条空的宽度与上述的基准宽度作比,确定每一其他条空的宽度与上述基准宽度的比值,根据上述比值确定其他条空的宽度的标准化后的宽度。举例而言,当确定目标码字中存在两种宽度单元时,可以设置第一宽度阈值,可以将上述基准宽度确定为窄,可以将所对应比值大于或等于第一宽度阈值的比值的其他条空的宽度确定为宽,将所对应比值小于第一宽度阈值的其他条空的宽度确定为窄,其中,上述第一宽度阈值可以根据实际情况进行设定,可以为1.8,等等。
又例如:当确定目标码字中存在四种宽度单元时,可以针对每一宽度单元设置一宽度阈值,其中,可以是将所对应比值大于或等于第二宽度阈值、且小于第三宽度阈值的其他条空的宽度确定为第三宽度,将所对应比值大于或等于第三宽度阈值小于第四宽度阈值的其他条空的宽度确定为第二宽度,将所对应比值大于或等于第四宽度阈值的其他条空的宽度确定为第一宽度,其中,上述第二宽度阈值、第三宽度阈值、第四宽度阈值均可以根据实际情况进行设定,第二宽度阈值可以为1.5、第三宽度阈值可以为2.5、第四宽度阈值可以为3.5,等等。
在一种实现方式中,如图3所示,所述方法可以包括:
S301:获得目标条形码中的每一目标码字;
其中,上述S301与图1中所示的S101相同。
S302:针对每一目标码字,确定目标码字对应的目标条空宽度序列;
S303:将所确定的目标条空宽度序列与预设码字表进行匹配;当所确定的目标条空宽度序列与预设码字表匹配失败时,执行S304,当所确定的目标条空宽度序列与预设码字表匹配成功时,执行S310;
其中,预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系。
S304:确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
S302~S304,及后续的S310为图1中所示的S102的一种实现方式。
S305:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整目标条空宽度序列,执行S306;
S306:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列;
S307:将调整后的目标条空宽度序列与预设码字表进行匹配;当调整后的目标条空宽度序列与所述预设码字表匹配成功时,执行S308;
S308:根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定目标码字对应的目标代表信息;
其中,当所确定的目标条空宽度序列与预设码字表匹配失败时,可以表明该目标码字可能仅对应一代表信息,此时,可以直接将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为目标码字对应的目标代表信息。即,可以直接将后续提到的第一代表信息,确定为目标码字对应的目标代表信息。
S309:基于所确定出的目标代表信息,确定目标条形码对应的最终代表信息;
其中,上述S305与图1中所示的S103相同,上述S306与图1中所示的S104相同,上述S307与图1中所示的S105相同,上述S308与图1中所示的S106相同,上述S309与图1中所示的S107相同。
S310:将与目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
在一种情况中,当目标码字出现模糊的情况时,目标码字的条空的宽度失真较小时,标准化可以减轻上述宽度失真对目标码字译码的影响,例如:宽度比为1.1:2.1,及宽度比为1.4:2.1,进行标准化后的标准宽度比均为1:2。此时,在确定出目标码字对应的目标条空宽度序列后,可以直接将目标条空宽度序列与预设码字表进行一次匹配,当匹配成功时,将与目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,并对该目标码字记录,继续执行后续的流程,当匹配失败时,也继续执行后续的流程。
在另一种情况中,还可能出现调整后的目标条空宽度序列为错误的,根据上述调整后的目标条空宽度序列,所确定出的目标码字对应的代表信息可能出错,此时,为了减少出现上述情况,可以在确定出目标条空宽度序列后,即将上述目标条空宽度序列与预设码字表进行匹配。
S311:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整目标条空宽度序列,执行S312;
S312:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列;
S313:将调整后的目标条空宽度序列与预设码字表进行匹配;当调整后的目标条空宽度序列与预设码字表匹配成功时,执行S314;
其中,上述S311与图1中所示的S103相同,上述S312与图1中所示的S104相同,上述S313与图1中所示的S105相同。
S314:将匹配成功的标准条空宽度序列对应的代表信息,确定为目标码字对应的第一代表信息;
S315:根据第二代表信息以及第一代表信息,确定出目标代表信息;
S316:基于所确定出的目标代表信息,确定目标条形码对应的最终代表信息。其中,上述S316与图1中所示的S107相同。
当确定出对目标码字对应两个代表信息,即第一代表信息和第二代表信息后,可以从上述两个代表信息中随机确定一个,作为目标码字对应的目标代表信息,后续的,可以根据上述所确定出的目标代表信息,确定目标条形码对应的最终代表信息。可以理解的是,目标条形码中可以包含多个目标码字,当确定每一目标码字对应的目标代表信息后,根据每一目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息。
另外,还可以根据预设的筛选条件,从上述第一代表信息和第二代表信息中筛选出满足上述预设的筛选条件的代表信息,作为目标码字的目标代表信息,进而,根据上述目标代表信息确定目标条形码的最终代表信息。在一种实现方式中,所述目标条空宽度序列中包含:目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
在所述确定目标码字对应的目标条空宽度序列(S102)的步骤之前,所述方法还可以包括:
针对每一目标码字,确定目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述根据第二代表信息以及第一代表信息,确定出目标代表信息(S315)的步骤,可以包括:
计算目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较第一绝对值和与所述第二绝对值和的大小;
当第一绝对值和小于第二绝对值和时,将第二代表信息,确定为目标代表信息;
当第一绝对值和不小于第二绝对值和时,将第一代表信息,确定为目标代表信息。
可以理解的是,通过上述所计算出的第一绝对值和和第二绝对值和,可以确定出目标条空宽度序列中的各宽度以及调整后的目标条空宽度序列中的各宽度,与目标码字对应的条空的实际宽度的差距。当第一绝对值和小于第二绝对值和,可以表明目标条空宽度序列与目标码字对应的条空的实际宽度更接近,此时,可以确定第二代表信息的准确性更大些,可以将第二代表信息确定为目标代表信息;反之,第一绝对值和不小于第二绝对值和时,可以表明调整后的目标条空宽度序列与目标码字对应的条空的实际宽度更接近,此时,可以确定第一代表信息的准确性更大些,可以将第一代表信息确定为目标代表信息。
在一种实现方式中,如图4所示,所述方法可以包括步骤:
S401:获得目标条形码中的每一目标码字;
S402:针对每一目标码字,确定目标码字对应的目标条空宽度序列;
S403:将所确定的目标条空宽度序列与预设码字表进行匹配;当所确定的目标条空宽度序列与预设码字表匹配失败时,执行S404,当所确定的目标条空宽度序列与预设码字表匹配成功时,执行S410;
其中,预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
S404:确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
S405:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整目标条空宽度序列,执行S406;
S406:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列;
S407:将调整后的目标条空宽度序列与预设码字表进行匹配;当调整后的目标条空宽度序列与所述预设码字表匹配成功时,执行S408;
S408:根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定目标码字对应的目标代表信息;
其中,当所确定的目标条空宽度序列与预设码字表匹配失败时,可以表明该目标码字可能仅对应一代表信息,此时,可以直接将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为目标码字对应的目标代表信息。即,可以直接将后续提到的第一代表信息,确定为目标码字对应的目标代表信息。
S409:基于所确定出的目标代表信息,确定目标条形码对应的最终代表信息;
S410:将与目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,确定目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
S411:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列;若确定调整目标条空宽度序列,执行S412,若确定不调整目标条空宽度序列,执行S417;
S412:根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列;
S413:将调整后的目标条空宽度序列与预设码字表进行匹配;当调整后的目标条空宽度序列与预设码字表匹配成功时,执行S414,当调整后的目标条空宽度序列与预设码字表匹配失败时,执行S417;
S414:将匹配成功的标准条空宽度序列对应的代表信息,确定为目标码字对应的第一代表信息;
S415:根据第二代表信息以及第一代表信息,确定出目标代表信息;
S416:基于所确定出的目标代表信息,确定目标条形码对应的最终代表信息;
其中,上述S401与图3中所示的S301相同,上述S402与图3中所示的S302相同,上述S403与图3中所示的S303相同,上述S404与图3中所示的S304相同,上述S405与图3中所示的S305相同,上述S406与图3中所示的S306相同,上述S407与图3中所示的S307相同,上述S408与图3中所示的S308相同,上述S409与图3中所示的S309相同,上述S410与图3中所示的S310相同,上述S411与图3中所示的S311相同,上述S412与图3中所示的S312相同,上述S413与图3中所示的S313相同,上述S414与图3中所示的S314相同,上述S415与图3中所示的S315相同,上述S416与图3中所示的S316相同。
S417:基于所确定的目标码字对应的第二代表信息,确定目标条形码对应的最终代表信息。
另外,当所确定的目标条空宽度序列与预设码字表匹配失败时,且确定不调整目标条空宽度序列时,则译码失败,此时可以输出提示用户目标码字译码失败的信息,或者,当所确定的目标条空宽度序列与预设码字表匹配失败时,且确定调整目标条空宽度序列后,调整后的目标条空宽度序列与预设码字表匹配失败时,则译码失败,此时也可以输出提示用户目标码字译码失败的信息。
在一种情况中,目标条形码中设置有校验符,为了更好的保证所识别出的目标条形码的代表信息的准确性,当确定目标条形码中存在校验符,根据所确定出的校验符校验所确定出的最终代表信息是否准确。在一种实现方式中,在所述基于所确定的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息(S107)的步骤之后,所述方法还包括:
当确定目标条形码中存在校验符时,利用校验符校验所确定出的最终代表信息是否准确;
当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为目标条形码的实际代表信息。
在一种实现方式中,所述获得目标条形码中的每一目标码字(S101)的步骤,可以包括:
从目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定目标条形码对应的目标码制;
根据所确定出的目标码制,确定目标条形码中的每一目标码字。
可以理解的是,条形码存在多种码制,即存在多种不同的编码规则,且不同码制中的起始符和终止符存在不同,此时,可以依据目标条形码中的起始符和终止符,确定目标条形码对应的目标码制,继而,根据所确定出的目标码制确定目标条形码中的每一目标码字。
其中,在一种情况中,条形码中的起始符和终止符中的条空的长度,相较于码字的条空的长度较长,在从目标条形码中确定起始符和终止符时,可以是识别目标条形码中的条空的长度较长的条空所组成的部分,即可以确认为目标条形码中确定起始符和终止符。另外,在另一种情况中,条形码中的起始符和终止符所在部分存在标识符,如“*”,在从目标条形码中确定起始符和终止符时,可以是识别上述标识符,可以将上述标识符所对应的条空所组成的部分,确认为目标条形码中确定起始符和终止符。
另外,不同码制对应的起始符和终止符存在不同,且每种码制可以对应固定模式的起始符和终止符。在一种情况中,可以针对不同的码制,建立该码制对应的起始符和终止符的预设模板,其中,上述预设模版中包括清晰的起始符和终止符的模板,即未失真的起始符和终止符的模板,也可以包括,通过不同的模糊和进行模糊后的起始符和终止符的模板,等等。在识别过程中,可以理解的是,起始符和终止符一般存在于条形码的开始位置和结束位置,将上述预设模版与所识别的目标条形码开始位置和结束位置进行匹配,以确定目标条形码中的起始符和终止符。另外的,也可以依据本发明实施例所提供的识别方法,从上述目标条形码中确定起始符和终止符,这都是可以的。
可以理解的,不同码制中所包含的码字可能不同,即不同码制中所包含的码字对应的标准条空宽度序列不同,在一种实现方式中,所述预设码字表中包含至少一种码制对应的码字子表;
所述将调整后的目标条空宽度序列与预设码字表进行匹配(S105)的步骤,可以包括:
将调整后的目标条空宽度序列与目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与预设码字表匹配成功。
为了节省匹配时间,可以在将调整后的目标条空宽度序列与预设码字表进行匹配前,首先根据目标条形码所对应的目标码制,确定出目标码制对应的码字子表,再将调整后的目标条空宽度序列仅与目标码制对应的码字子表进行匹配。另外,在将目标条空宽度序列与预设码字表进行匹配前,也可以首先根据目标条形码所对应的目标码制,确定出目标码制对应的码字子表。
在一种实现方式中,所述预设宽度调整条件为目标码制对应的预设宽度调整条件;当目标码制表征所述目标条形码中存在两种宽度单元时,
所述确定目标码字对应的目标条空宽度序列的步骤,可以包括:
针对每一目标码字,确定目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定目标码字对应的目标条空宽度序列;
所述根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列的步骤,可以包括:
根据目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整目标条空宽度序列;
所述根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列的步骤,可以包括:
比较条对中的条所对应的条灰度值的大小,和/或,比较空对中的空所对应的空灰度值的大小;
当条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当空对中的空对应的宽度单元为宽时,将将所对应空灰度值小的空的宽度单元调为窄。
可以理解的是,当目标条形码中的宽度单元存在两种时,目标码字中的宽度单元为宽的个数为一第一预定常数。当在调整上述目标码字时,需要保证该目标码字中所包含的宽度单元为宽的个数为上述第一预定常数。
上述第一预定数值、第二预定数值、第三预定数值和第四预定数值可以根据实际情况设定,上述第一预定数值和第二预定数值可以相同,也可以不同,上述第三预定数值和第四预定数值可以相同,也可以不同,可选地,上述第一预定数值和第二预定数值可以取1.5,上述第三预定数值和第四预定数值也可以取1.5。
可以理解的是,当目标码字出现模糊的情况时,目标码字的条空的灰度值、宽度可能会出现失真的情况,在一种情况中,条空对应的宽度单元为宽时,其对应的灰度值的变化程度,比条空对应的宽度单元为窄时所对应的灰度值的变化程度小。此时,以条为例:当宽度单元相同的两个条对应的条灰度值相差差距较大时,即所对应条灰度值的比值大于第二预定数值时,当宽度单元为宽时,将两个条中所对应条灰度值大的条的宽度单元调为窄。
另外的,条对中的条对应的宽度单元为窄时,也可以将所对应条灰度值小的条的宽度单元调为宽;当空对中的空对应的宽度单元为窄时,将所对应空灰度值大的空的宽度单元调为宽。等等,这都是可以的。
当码字中存在两种宽度单元时,例如39码,上述宽度单元可以分别用宽或窄标识,其中,标准化后的宽和窄之间的宽度之比可以为2:1。此时,上述码字中可以包括宽条、窄条、宽空和窄空。
在一种实现方式中,计算宽度单元相同的条(空)对应的条灰度值(空灰度值)之间的比值时,可以用条灰度值(空灰度值)大的作为分子,将条灰度值(空灰度值)小的作为分母。
在一种实现方式中,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
在所述根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列的步骤之前,所述方法还可以包括:
从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列的步骤,可以包括:
根据目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整目标条空宽度序列;
所述根据目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整目标条空宽度序列的步骤,包括:
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
当目标条形码中存在四种宽度单元时,上述各宽度单元对应的初始灰度值,可以包括:第一宽空对应的第一初始灰度值、第二宽空对应的第二初始灰度值、第三宽空对应的第三初始灰度值、第四宽空对应的第四初始灰度值、第一宽条对应的第五初始灰度值、第二宽条对应的第六初始灰度值、第三宽条对应的第七初始灰度值、第四宽条对应的第八初始灰度值。
当在调整上述空、条对应的宽度单元时,可以仅将上述空、条当前对应的宽度单元调整为与其当前对应的宽度单元相邻的宽度单元,例如,当一空对应的宽度单元为第一宽时,此时,可以将空对应的宽度单元调整为第二宽;当一空对应的宽度单元为第二宽时,此时,可以将空对应的宽度单元调整为第一宽或第三宽,等等。
当目标条形码中存在四种宽度单元时,目标码字对应的目标条空宽度序列中各标准宽度之和为一第二预定常数,此时,在对目标码字对应的目标条空宽度序列进行调整时,需要保证调整后的目标条空宽度序列中的各标准宽度之和为上述第二预定常数。
在一种实现方式中,当码字中存在四种宽度单元时,例如:128码,此时,上述宽度单元可以分别用第一宽、第二宽、第三宽或第四宽标识,标准化后的第一宽、第二宽、第三宽和第四宽之间的宽度之比可以为4:3:2:1,此时,上述目标条形码中可以存在第一宽条、第二宽条、第三宽条、第四宽条、第一宽空、第二宽空、第三宽空和第四宽空。
在一种情况中,当该空的宽度单元为第三宽,且将该空的宽度单元调大时,可以是将该空的宽度单元从第三宽调整为第二宽;另外,当该空的宽度单元为第三宽,且将该空的宽度单元调小时,可以是将该空的宽度单元从第三宽调整为第四宽。
可以理解的,为了保证目标码字译码的准确性,可以利用调整后的条(空)对应的条灰度值(空灰度值),更新调整后的条(空)对应的宽度单元对应的初始灰度值。在一种实现方式中,所述方法还可以包括:
利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
其中,可以取调整后的条(空)对应的条灰度值(空灰度值)与各宽度单元对应的原初始灰度值的平均值,作为宽度单元对应的新的初始灰度值。举例而言,一宽度单元a对应的初始灰度值为A,条m对应的条灰度值为B,条m对应宽度单元a,当根据宽度单元a对应的初始灰度值为A和条m对应的条灰度值为B,确定出需要调整条m对应的宽度单元,并需要将条m对应的宽度单元调整为宽度单元b,此时,宽度单元b对应的初始灰度值为C,将条m对应的宽度单元调整为宽度单元b后,利用条m对应的条灰度值为B更新宽度单元b对应的初始灰度值,其中,可以是将宽度单元b对应的初始灰度值更新为(B+C)/2。
相应于上述方法实施例,本发明实施例提供了一种条形码识别装置,如图5所示,所述装置可以包括:
获得模块510,用于获得目标条形码中的每一目标码字;
第一确定模块520包括第一确定单元521和第二确定单元522,其中,所述第一确定单元521,用于针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,所述第二确定单元522,用于确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
第二确定模块530,用于根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
调整模块540,用于若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
第一匹配模块550,用于将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
第三确定模块560,用于当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
第四确定模块570,用于基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
应用本发明实施例,在将目标条空宽度序列与预设码字表进行匹配前,需要根据目标码字对应的目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列,并在确定调整时,再结合预设宽度调整规则,对目标条空宽度序列进行调整,进而基于调整后的目标条空宽度序列,确定目标码字对应的目标代表信息,进而基于目标条形码中的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息,避免了在识别模糊的条形码时,仅基于模糊的条形码的宽度失真的条空宽度序列,确定模糊条形码对应的代表信息,导致识别错误甚至无法识别的问题,在一定程度上提高对模糊的条形码的识别的准确性。
在一种实现方式中,所述第一确定模块520,具体用于
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
在一种实现方式中,基于图5所示结构,所述第一确定模块520还可以包括匹配单元和第三确定单元;
所述匹配单元,用于在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值之前,将所确定的目标条空宽度序列与所述预设码字表进行匹配;当所确定的目标条空宽度序列与所述预设码字表匹配失败时,触发所述第二确定单元522;当所确定的目标条空宽度序列与所述预设码字表匹配成功时,触发所述第三确定单元;
所述第三确定单元,用于将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,触发所述第二确定单元522;
所述第三确定模块560包括第四确定单元和第五确定单元;
所述第四确定单元,用于将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
所述第五确定单元,用于根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
在一种实现方式中,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
所述第一确定模块520还包括第六确定单元;
所述第六确定单元,用于在所述确定所述目标码字对应的目标条空宽度序列之前,针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述第五确定单元,具体用于
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
在一种实现方式中,所述装置还可以包括第五确定模块;
所述第五确定模块,用于当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
在一种实现方式中,所述装置还包括校验模块和第六确定模块;
所述校验模块,用于在所述基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息之后,当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
所述第六确定模块,用于当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
在一种实现方式中,所述获得模块510,具体用于
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
在一种实现方式中,所述预设码字表中包含至少一种码制对应的码字子表;
所述匹配模块550,用于将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
在一种实现方式中,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述第一确定单元521,具体用于
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述第二确定模块530,具体用于
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述调整模块540,具体用于
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
在一种实现方式中,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
所述装置还包括第七确定模块;
所述第七确定模块,用于在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列之前,从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述第二确定模块530,具体用于
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述调整模块540,具体用于
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
在一种实现方式中,所述装置还包括更新模块;
所述更新模块,用于利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
相应于上述方法实施例,本发明实施例还提供了一种电子设备,如图6所示,包括处理器610、通信接口620、存储器630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信;
存储器630,用于存放计算机程序;;
处理器610,用于执行存储器630上所存放的计算机程序时,实现本发明实施例所提供的任一条形码识别方法,该方法可以包括如下步骤:
获得目标条形码中的每一目标码字;
针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
应用本发明实施例,在将目标条空宽度序列与预设码字表进行匹配前,需要根据目标码字对应的目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列,并在确定调整时,再结合预设宽度调整规则,对目标条空宽度序列进行调整,进而基于调整后的目标条空宽度序列确定目标码字对应的目标代表信息,进而基于目标条形码中的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息,避免了在识别模糊的条形码时,仅基于模糊的条形码的宽度失真的条空宽度序列,确定模糊条形码对应的代表信息,导致识别错误甚至无法识别的问题,在一定程度上提高对模糊的条形码的识别的准确性。
可选地,所述针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤,包括:
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
可选地,在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤之前,所述方法还包括:
将所确定的目标条空宽度序列与所述预设码字表进行匹配;
当所确定的目标条空宽度序列与所述预设码字表匹配失败时,执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
当所确定的目标条空宽度序列与所述预设码字表匹配成功时,将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,并执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
所述根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息的步骤,包括:
将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
可选地,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
在所述确定所述目标码字对应的目标条空宽度序列的步骤之前,所述方法还包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息的步骤,包括:
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
可选地,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或
当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,所述方法还包括:
基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
可选地,在所述基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息的步骤之后,所述方法还包括:
当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
可选地,所述获得目标条形码中的每一目标码字的步骤,包括:
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
可选地,所述预设码字表中包含至少一种码制对应的码字子表;
所述将调整后的目标条空宽度序列与预设码字表进行匹配的步骤,包括:
将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述确定所述目标码字对应的目标条空宽度序列的步骤,包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小;
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤之前,所述方法还包括:
从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
可选地,所述方法还包括;
利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
相应于上述方法实施例,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的条形码识别方法,可以包括以下步骤:
获得目标条形码中的每一目标码字;
针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
应用本发明实施例,在将目标条空宽度序列与预设码字表进行匹配前,需要根据目标码字对应的目标条空宽度序列、条灰度值、空灰度值以及预设宽度调整条件,确定是否调整目标条空宽度序列,并在确定调整时,再结合预设宽度调整规则,对目标条空宽度序列进行调整,进而基于调整后的目标条空宽度序列确定目标码字对应的目标代表信息,进而基于目标条形码中的目标码字对应的目标代表信息,确定目标条形码对应的最终代表信息,避免了在识别模糊的条形码时,仅基于模糊的条形码的宽度失真的条空宽度序列,确定模糊条形码对应的代表信息,导致识别错误甚至无法识别的问题,在一定程度上提高对模糊的条形码的识别的准确性。
可选地,所述针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤,包括:
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
可选地,在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤之前,所述方法还包括:
将所确定的目标条空宽度序列与所述预设码字表进行匹配;
当所确定的目标条空宽度序列与所述预设码字表匹配失败时,执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
当所确定的目标条空宽度序列与所述预设码字表匹配成功时,将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,并执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
所述根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息的步骤,包括:
将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
可选地,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
在所述确定所述目标码字对应的目标条空宽度序列的步骤之前,所述方法还包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息的步骤,包括:
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
可选地,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或
当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,所述方法还包括:
基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
可选地,在所述基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息的步骤之后,所述方法还包括:
当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
可选地,所述获得目标条形码中的每一目标码字的步骤,包括:
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
可选地,所述预设码字表中包含至少一种码制对应的码字子表;
所述将调整后的目标条空宽度序列与预设码字表进行匹配的步骤,包括:
将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述确定所述目标码字对应的目标条空宽度序列的步骤,包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小;
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
可选地,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤之前,所述方法还包括:
从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
可选地,所述方法还包括;
利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (24)

1.一种条形码识别方法,其特征在于,所述方法包括:
获得目标条形码中的每一目标码字;
针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
2.根据权利要求1所述的方法,其特征在于,所述针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,并确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤,包括:
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
3.根据权利要求1所述的方法,其特征在于,在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤之前,所述方法还包括:
将所确定的目标条空宽度序列与所述预设码字表进行匹配;
当所确定的目标条空宽度序列与所述预设码字表匹配失败时,执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
当所确定的目标条空宽度序列与所述预设码字表匹配成功时,将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,并执行所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值的步骤;
所述根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息的步骤,包括:
将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
4.根据权利要求3所述的方法,其特征在于,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
在所述确定所述目标码字对应的目标条空宽度序列的步骤之前,所述方法还包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息的步骤,包括:
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
5.根据权利要求3所述的方法,其特征在于,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或
当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,所述方法还包括:
基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息的步骤之后,所述方法还包括:
当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
7.根据权利要求1所述的方法,其特征在于,所述获得目标条形码中的每一目标码字的步骤,包括:
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
8.根据权利要求7所述的方法,其特征在于,所述预设码字表中包含至少一种码制对应的码字子表;
所述将调整后的目标条空宽度序列与预设码字表进行匹配的步骤,包括:
将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
9.根据权利要求7所述的方法,其特征在于,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述确定所述目标码字对应的目标条空宽度序列的步骤,包括:
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小;
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
10.根据权利要求7所述的方法,其特征在于,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤之前,所述方法还包括:
从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列的步骤,包括:
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列的步骤,包括:
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
12.一种条形码识别装置,其特征在于,所述装置包括:
获得模块,用于获得目标条形码中的每一目标码字;
第一确定模块包括第一确定单元和第二确定单元,其中,所述第一确定单元,用于针对每一目标码字,确定所述目标码字对应的目标条空宽度序列,所述第二确定单元,用于确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值;
第二确定模块,用于根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列;
调整模块,用于若确定调整所述目标条空宽度序列,根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整规则,调整所述目标条空宽度序列;
匹配模块,用于将调整后的目标条空宽度序列与预设码字表进行匹配,其中,所述预设码字表中包含有多对对应关系,每一对应关系为:标准条空宽度序列与代表信息的对应关系;
第三确定模块,用于当调整后的目标条空宽度序列与所述预设码字表匹配成功时,根据与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定所述目标码字对应的目标代表信息;
第四确定模块,用于基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息。
13.根据权利要求12所述的装置,其特征在于,所述第一确定模块,具体用于
针对每一目标码字,获得所述目标码字的目标灰度波形;
根据所获得的目标灰度波形,确定所述目标码字对应的目标条空宽度序列;
并根据所获得的目标灰度波形,确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值。
14.根据权利要求12所述的装置,其特征在于,所述第一确定模块还包括匹配单元和第三确定单元;
所述匹配单元,用于在所述确定所述目标码字中的每一条对应的条灰度值以及每一空对应的空灰度值之前,将所确定的目标条空宽度序列与所述预设码字表进行匹配;当所确定的目标条空宽度序列与所述预设码字表匹配失败时,触发所述第二确定单元;当所确定的目标条空宽度序列与所述预设码字表匹配成功时,触发所述第三确定单元;
所述第三确定单元,用于将与所述目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第二代表信息,触发所述第二确定单元;
所述第三确定模块包括第四确定单元和第五确定单元;
所述第四确定单元,用于将与调整后的目标条空宽度序列匹配成功的标准条空宽度序列对应的代表信息,确定为第一代表信息;
所述第五确定单元,用于根据所述第二代表信息以及所述第一代表信息,确定出所述目标代表信息。
15.根据权利要求14所述的装置,其特征在于,所述目标条空宽度序列中包含:所述目标码字中的每一条对应的第一标准宽度、每一空对应的第二标准宽度;调整后的目标条空宽度序列中包含:所述目标码字中的每一条对应的第三标准宽度、每一空对应的第四标准宽度;
所述第一确定模块还包括第六确定单元;
所述第六确定单元,用于在所述确定所述目标码字对应的目标条空宽度序列之前,针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
所述第五确定单元,具体用于
计算所述目标码字中每一条对应的第一标准宽度和第一实际宽度的差的第一绝对值,以及每一空对应的第二标准宽度和第二实际宽度的差的第二绝对值,并计算所述目标码字中每一条对应的第三标准宽度和第一实际宽度的差的第三绝对值,以及每一空对应的第四标准宽度和第二实际宽度的差的第四绝对值;
基于所计算的第一绝对值和第二绝对值,确定所述目标条空宽度序列对应的第一绝对值和;
基于所计算的第三绝对值和第四绝对值,确定调整后的目标条空宽度序列对应的第二绝对值和;
比较所述第一绝对值和与所述第二绝对值和的大小;
当所述第一绝对值和小于所述第二绝对值和时,将所述第二代表信息,确定为目标代表信息;
当所述第一绝对值和不小于所述第二绝对值和时,将所述第一代表信息,确定为目标代表信息。
16.根据权利要求14所述的装置,其特征在于,所述装置还包括第五确定模块;
所述第五确定模块,用于当所确定的目标条空宽度序列与所述预设码字表匹配成功,且确定不调整所述目标条空宽度序列时,或,当所确定的目标条空宽度序列与所述预设码字表匹配成功,且调整后的目标条空宽度序列与预设码字表匹配失败时,基于所确定的所述目标码字对应的第二代表信息,确定所述目标条形码对应的最终代表信息。
17.根据权利要求12-16任一项所述的装置,其特征在于,所述装置还包括校验模块和第六确定模块;
所述校验模块,用于在所述基于所确定的所述目标码字对应的目标代表信息,确定所述目标条形码对应的最终代表信息之后,当确定所述目标条形码中存在校验符时,利用所述校验符校验所确定出的最终代表信息是否准确;
所述第六确定模块,用于当确定所确定出的最终代表信息准确时,将所确定出的最终代表信息确定为所述目标条形码的实际代表信息。
18.根据权利要求12所述的装置,其特征在于,所述获得模块,具体用于
从所述目标条形码中确定起始符和终止符;
根据所确定出的起始符和终止符,确定所述目标条形码对应的目标码制;
根据所确定出的目标码制,确定所述目标条形码中的每一目标码字。
19.根据权利要求18所述的装置,其特征在于,所述预设码字表中包含至少一种码制对应的码字子表;
所述匹配模块,用于将调整后的目标条空宽度序列与所述目标码制对应的码字子表进行匹配,其中,当调整后的目标条空宽度序列与所述目标码制对应的码字子表匹配成功时,表征调整后的目标条空宽度序列与所述预设码字表匹配成功。
20.根据权利要求18所述的装置,其特征在于,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件;当所述目标码制表征所述目标条形码中存在两种宽度单元时,
所述第一确定单元,具体用于
针对每一目标码字,确定所述目标码字中的每一条对应的第一实际宽度、每一空对应的第二实际宽度;
将每一条对应的第一实际宽度、每一空对应的第二实际宽度进行标准化,确定所述目标码字对应的目标条空宽度序列;
所述第二确定模块,具体用于
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
判断宽度单元相同的条中是否存在所对应第一实际宽度的比值小于第一预定数值,且所对应条灰度值的比值大于第二预定数值的条对,其中,每一条对中包含两个条;
和/或,
判断宽度单元相同的空中是否存在所对应第二实际宽度的比值小于第三预定数值,且所对应空灰度值的比值大于第四预定数值的空对,其中,每一空对中包含两个空;
当存在至少一个判断结果为是时,确定调整所述目标条空宽度序列;
所述调整模块,具体用于
比较所述条对中的条所对应的条灰度值的大小,和/或,比较所述空对中的空所对应的空灰度值的大小
当所述条对中的条对应的宽度单元为宽时,将所对应条灰度值大的条的宽度单元调为窄;
当所述空对中的空对应的宽度单元为宽时,将所对应空灰度值小的空的宽度单元调为窄。
21.根据权利要求18所述的装置,其特征在于,所述预设宽度调整条件为所述目标码制对应的预设宽度调整条件,当所述目标码制表征所述目标条形码中存在四种宽度单元时,
所述装置还包括第七确定模块;
所述第七确定模块,用于在所述根据所述目标条空宽度序列、每一条对应的条灰度值、每一空对应的空灰度值以及预设宽度调整条件,确定是否调整所述目标条空宽度序列之前,从所确定出的起始符和终止符中,确定各宽度单元对应的原始灰度;
所述第二确定模块,具体用于
根据所述目标条空宽度序列,确定每一条对应的宽度单元以及每一空对应的宽度单元;
计算每一条对应的条灰度值与所对应的宽度单元对应的初始灰度值的第一差值;并计算每一空对应的空灰度值与所对应的宽度单元对应的初始灰度值的第二差值;
当确定存在至少一个第一差值不位于第一预设范围内,和/或,存在至少一个第二差值不位于第二预设范围内时,确定调整所述目标条空宽度序列;
所述调整模块,具体用于
当确定存在至少一个第一差值不位于第一预设范围内时,判断第一差值对应的条的条灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该条的宽度单元调小;
当确定为否时,将该条的宽度单元调大;
和/或,
当确定存在至少一个第二差值不位于第二预设范围内时,判断第二差值对应的空的空灰度值是否大于所对应的宽度单元对应的初始灰度值;
当确定为是时,将该空的宽度单元调大;
当确定为否时,将该空的宽度单元调小。
22.根据权利要求21所述的装置,其特征在于,所述装置还包括更新模块;
所述更新模块,用于利用调整后的条对应的条灰度值,更新该条对应的宽度单元对应的初始灰度值;和/或,
利用调整后的空对应的空灰度值,更新该空对应的宽度单元对应的初始灰度值。
23.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的计算机程序时,实现权利要求1-11任一所述的条形码识别方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-11任一所述的条形码识别方法。
CN201710686925.XA 2017-08-11 2017-08-11 一种条形码识别方法及装置 Active CN109388999B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710686925.XA CN109388999B (zh) 2017-08-11 2017-08-11 一种条形码识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710686925.XA CN109388999B (zh) 2017-08-11 2017-08-11 一种条形码识别方法及装置

Publications (2)

Publication Number Publication Date
CN109388999A true CN109388999A (zh) 2019-02-26
CN109388999B CN109388999B (zh) 2021-09-17

Family

ID=65414790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710686925.XA Active CN109388999B (zh) 2017-08-11 2017-08-11 一种条形码识别方法及装置

Country Status (1)

Country Link
CN (1) CN109388999B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111476054A (zh) * 2020-05-07 2020-07-31 浙江华睿科技有限公司 解码方法及电子设备
CN112329495A (zh) * 2020-11-02 2021-02-05 杭州海康威视数字技术股份有限公司 一种条形码识别方法、装置及***
CN113869077A (zh) * 2021-09-29 2021-12-31 杭州海康威视数字技术股份有限公司 一种条码识别方法、装置及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104732183A (zh) * 2015-03-20 2015-06-24 杭州晟元芯片技术有限公司 一种基于图像采样线灰度信息分析的一维条码识别方法
CN105512594A (zh) * 2014-10-09 2016-04-20 康耐视公司 解码条形码
CN105512595A (zh) * 2015-12-04 2016-04-20 北京奇虎科技有限公司 条码修正方法和装置
CN105975894A (zh) * 2016-05-11 2016-09-28 华中科技大学 一种基于自适应边缘检测和映射模型的一维码识别算法
US9519817B1 (en) * 2016-08-18 2016-12-13 Benq Co., Ltd. Method for digitizing barcode image by using dynamic threshold
CN107016318A (zh) * 2017-03-21 2017-08-04 浙江华睿科技有限公司 一种条码解码方法及装置
CN107025639A (zh) * 2017-04-05 2017-08-08 中科微至智能制造科技江苏有限公司 一种复杂环境下的条码定位方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512594A (zh) * 2014-10-09 2016-04-20 康耐视公司 解码条形码
CN104732183A (zh) * 2015-03-20 2015-06-24 杭州晟元芯片技术有限公司 一种基于图像采样线灰度信息分析的一维条码识别方法
CN105512595A (zh) * 2015-12-04 2016-04-20 北京奇虎科技有限公司 条码修正方法和装置
CN105975894A (zh) * 2016-05-11 2016-09-28 华中科技大学 一种基于自适应边缘检测和映射模型的一维码识别算法
US9519817B1 (en) * 2016-08-18 2016-12-13 Benq Co., Ltd. Method for digitizing barcode image by using dynamic threshold
CN107016318A (zh) * 2017-03-21 2017-08-04 浙江华睿科技有限公司 一种条码解码方法及装置
CN107025639A (zh) * 2017-04-05 2017-08-08 中科微至智能制造科技江苏有限公司 一种复杂环境下的条码定位方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘霞: "《一维条形码图像辨识方法的研究》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111476054A (zh) * 2020-05-07 2020-07-31 浙江华睿科技有限公司 解码方法及电子设备
CN111476054B (zh) * 2020-05-07 2022-03-08 浙江华睿科技股份有限公司 解码方法及电子设备
CN112329495A (zh) * 2020-11-02 2021-02-05 杭州海康威视数字技术股份有限公司 一种条形码识别方法、装置及***
CN112329495B (zh) * 2020-11-02 2022-08-05 杭州海康威视数字技术股份有限公司 一种条形码识别方法、装置及***
CN113869077A (zh) * 2021-09-29 2021-12-31 杭州海康威视数字技术股份有限公司 一种条码识别方法、装置及电子设备

Also Published As

Publication number Publication date
CN109388999B (zh) 2021-09-17

Similar Documents

Publication Publication Date Title
CN109388999A (zh) 一种条形码识别方法及装置
JP2016095753A (ja) 文字認識システム及び文字認識方法
CN109376758B (zh) 一种基于图形的元器件识别方法、***、装置和存储介质
CN101666637B (zh) 圆度计算及显示***与方法
CN106817366A (zh) 一种can文件解析及重新保存方法
CN112733568B (zh) 一维条码识别方法、装置、设备及存储介质
CN110135413B (zh) 一种字符识别图像的生成方法、电子设备和可读存储介质
CN104756113A (zh) 用于检测数据源中的偏差的方法、设备和计算机程序
CN109214229A (zh) 一种条码扫描方法、装置及电子设备
CN109916350B (zh) 一种生成三坐标测量程序的方法、装置及终端设备
CN111475402A (zh) 程序功能的测试方法及相关装置
CN104536998A (zh) 一种数据导入方法及装置
CN109919154B (zh) 一种字符智能识别方法及识别装置
CN109002715B (zh) 一种基于卷积神经网络的恶意软件识别方法及***
CN102034078A (zh) 图像条码识别的编码方法
CN106681850B (zh) 一种车辆型号校验方法及装置
CN111353558A (zh) 一种识别码的错误检测方法、装置和终端
CN106576040A (zh) 设备固有信息的错误率控制方法和设备固有信息的错误率控制程序
CN117592656A (zh) 基于碳数据核算的碳足迹监控方法及***
CN108197086B (zh) 一种被动元件参数解析的方法及装置
CN101833645B (zh) 一种基于码字组合的条码解码方法
CN110690982B (zh) 一种电信网络管理性能数据关联分析方法及***
CN106610899B (zh) 一种测试用例生成方法及装置
CN110866037B (zh) 一种报文的过滤方法及装置
CN109104297A (zh) 一种业务流程的处理方法及装置

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