用于可变码识读字符质量验证的检测方法
技术领域
本申请涉及条码验证技术领域,尤其涉及一种用于可变码识读字符质量验证的检测方法。
背景技术
可变码识读字符是指用来说明可变码内容的字符,可变码作为一种高效的信息载体,因其在广告推广、防伪、物流跟踪等方面的独特优势,越来越多地应用在食品、医药、烟酒、服饰、电子产品等各种商品的包装上。
一般情况下,由于可变码的内容不是直观可见的,为了方便人们知道可变码内的内容,会在可变码周边喷印可供人识别的字符。对于这种字符的检测,常见的方法有两种:
一是通过OCR(Optical Character Recognition,光学字符识别)技术判别印刷结果是否正确,这种方法需要收集字符样本图像以及训练识别模型,识别效果依赖于OCR算法的准确程度和鲁棒性,而且没有利用到字符对应的可变码信息。
另一种方式是从实时采集的图像中建立模板字库,同时记录图像中每个字符的位置以及该位置可能出现的字符,在检测过程中进行验证。但这种方法前期也需要采集实时字符图像创建字库,操作复杂,验证的结果与字库中的字符质量有关,如果选用的字体质量不良,则会影响检测效果。
发明内容
本申请提供了一种用于可变码识读字符质量验证的检测方法,以解决目前可变码识读字符检测方法操作复杂、检测效果较低的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
第一方面,本申请实施例公开了一种用于可变码识读字符质量验证的检测方法,所述方法包括:
根据可变码识读字符所选用的字体创建字体文件;
采集所述可变码识读字符的实时字符图像;
根据所述字体文件与所述实时字符图像生成字符模板图像;
将所述实时字符图像中的字符与所述字符模板图像的字符进行差值比对,计算差异值;
将每个字符比对的最小差异值作为验证结果。
可选的,根据所述字体文件与所述实时字符图像生成字符模板图像,包括:
校正被检测的实时字符图像;
计算所述字体文件中字符与校正后实时字符图像中字符的缩放系数;
计算所述实时字符图像的前景灰度值与背景灰度值;
将所述字体文件中的字符根据所述缩放系数、所述前景灰度值与所述背景灰度值生成字符模板图像。
可选的,计算所述字体文件中字符与校正后实时字符图像中字符的缩放系数,包括:
获取所述字体文件中各个字符的高度值;
提取所述实时字符图像中字符区域的字符边界,获取所述字符区域的高度值;
根据所述字体文件中字符的高度值与所述字符区域的高度值,计算得到参考缩放系数。
可选的,计算得到参考缩放系数后,还包括:
在所述参考缩放系数的基础上,根据所述实时字符图像的字符走向设置缩放系数搜索范围;
在所述缩放系数搜索范围内搜索获得最佳缩放系数。
可选的,计算所述实时字符图像的前景灰度值与背景灰度值,包括:
遍历所述实时字符图像边缘的像素计算像素灰度平均值;
计算整个所述实时字符图像的灰度直方图;
通过所述灰度直方图获取覆盖率达到预设值的高低灰度值;
将接近所述像素灰度平均值的灰度值作为背景灰度值。
可选的,将所述字体文件中的字符根据所述缩放系数、所述前景灰度值与所述背景灰度值生成字符模板图像,包括:
计算字符区域在所述实时字符图像中的位置;
获取所述字符区域相应位置处的字符;
在所述字体文件中查找与所述字符对应的字符;
根据所述缩放系数、所述前景灰度值与所述背景灰度值将所述字体文件中的字符生成字符模板图像。
可选的,将所述实时字符图像中的字符与所述字符模板图像的字符进行差值比对,计算差异值,包括:
获取所述字符模板图像中字符的高mWidth与宽mHeight;
获取所述实时字符图像中字符的高sWidth与宽sHeight;
根据mWidth、mHeight、sWidth与sHeight计算字符的差异值nDiff:
其中,fx=0........sWidth-mWdith,fy=0........sHeight-mHeight,nThresh为根据所述前景灰度值与所述背景灰度值计算的偏差阈值,ImgH为所述字符模板图像的原始图像,ImgL为所述字符模板图像的膨胀后的图像,ImgM为所述字符模板图像的掩膜图像。
第二方面,本申请实施例还提供了一种用于可变码识读字符质量验证的检测系统,包括:
创建模块,用于根据可变码识读字符所选用的字体创建字体文件;
采集模块,用于采集所述可变码识读字符的实时字符图像;
生成模块,用于根据所述字体文件与所述实时字符图像生成字符模板图像;
计算模块,用于将所述实时字符图像中的字符与所述字符模板图像的字符进行差值比对,计算差异值;
验证模块,用于将每个字符比对的最小差异值作为验证结果。
可选的,所述生成模块包括:
校正单元,用于校正被检测的实时字符图像;
第一计算单元,用于计算所述字体文件中字符与校正后实时字符图像中字符的缩放系数;
第二计算单元,用于计算所述实时字符图像的前景灰度值与背景灰度值;
生成单元,用于将所述字体文件中的字符根据所述缩放系数、所述前景灰度值与所述背景灰度值生成字符模板图像。
可选的,所述计算模块包括:
第一获取单元,用于获取所述字符模板图像中字符的高mWidth与宽mHeight;
第二获取单元,用于获取所述实时字符图像中字符的高sWidth与宽sHeight;
第三计算单元,用于根据mWidth、mHeight、sWidth与sHeight计算字符的差异值nDiff。
与现有技术相比,本申请的有益效果为:
本申请实施例提供的用于可变码识读字符质量验证的检测方法使用模板对比的方式进行字符的验证,因为每个识读字符都存在与其对应的可变码,通过对可变码解码能够知道字符的具体内容,根据每个字符对应的实际内容能够获得在字体文件中该字符对应的标准字符图像,结合标准字符图像和实时图像中的字符生成一个字符模板图像,将字符模板图像与实际字符图像进行点对点差值运算,得到最终的验证结果。本申请提供的检测方法使用标准字体文件进行可变码识读字符的检测,可以不用采集图像创建模板字库,建模时只需选择喷码时选用的字体即可,操作简单,可省去很多中间环节,从而保证检测效果只与印刷质量有关。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种用于可变码识读字符质量验证的检测方法的流程图;
图2a示例性的示出了字体文件创建工具的示意图;
图2b示例性的示出了字体文件的示意图;
图3为本申请实施例提供的用于可变码识读字符质量验证的检测方法中S300的详细流程图;
图4为本申请实施例提供的用于可变码识读字符质量验证的检测方法中字符验证示意图;
图5为本申请实施例提供的一种用于可变码识读字符质量验证的检测系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
参见图1,为本申请实施例提供的一种用于可变码识读字符质量验证的检测方法的流程图。
如图1所示,本申请实施例提供的用于可变码识读字符质量验证的检测方法,所述方法包括:
S100:根据可变码识读字符所选用的字体创建字体文件。
字体文件是使用操作系统安装的字体生成的,无需依赖于实际的产品。也就是说,如图2a、2b所示,使用喷码时选用的字体(宋体),按照一定的规则就可以生成一个字体文件。
S200:采集可变码识读字符的实时字符图像。
S300:根据字体文件与实时字符图像生成字符模板图像。
对字体文件进行建模,建模的主要目的是计算字体文件中的字符到实际字符图像的映射参数(即缩放系数)。具体的,加载字体文件中的字体,统计字体中各个字符图像的高度、宽度,每个字符在字符图像中的上边界、左边界和字符的宽度,以及每个字符图像的原始图像、膨胀后的图像和掩膜图像,同时统计所有字符的最大宽大Wm、最大高度Hm。
而根据字体文件中的字符生成字符模板图像的具体方法如图3所示:
S301:校正被检测的实时字符图像。
采集到实时字符图像后,将被检测的实时字符图像调整至水平方向(如果原来就是水平的则不予处理),即使得字符条码的走向为水平方向。
S302:计算字体文件中的字符与校正后实时字符图像中字符的缩放系数。
采集到实时字符图像后,对实时字符图像中的字符区域进行字符边界提取,获取字符区域的高度Hr,按照下列公式计算得到参考缩放系数fZoomBase。
fZoomBase=Hr/Hm
得到参数缩放系数fZoomBase后,在参考缩放系数的基础上,根据条码的走向(垂直还是水平,成像系统的横纵向分辨率一般是不同的)设置缩放系数搜索范围,在范围内搜索最佳的缩放系数。例如,计算得到的参考缩放系数fZoomBase为0.5,设置缩放系数搜索范围为0.1-1,在该范围内搜索最佳的缩放系数,其中,最佳缩放系数可为小数点两位数或小数点三位数。
S303:计算实时字符图像的前景灰度值与背景灰度值。
遍历实时字符图像四个边缘的像素计算像素灰度平均值nBorderAverage,之后计算得到整个实时字符图像的灰度直方图,根据该灰度直方图,获取覆盖率达到预设值的高低灰度值(nDarrk,nLight),例如,整个实时字符图像的灰度值为0-255,从0向前查找,查找灰度值所占面积占整个图像达到预设值(即覆盖率达到预设值)时,此时的低灰度值nLight;再从255向后查找,查找灰度值所占面积占整个图像达到预设值(即覆盖率达到预设值)时,此时的高灰度值nDark。得到高低灰度值后,将其作为前景/背景的灰度值。本示例中,预设值可为2.5%。
但此时无法确定哪个灰度值为前景灰度值,哪个灰度值为背景灰度值,可通过将其分别与灰度平均值nBorderAverage比较来判断具体文字前景灰度值。本示例中,将接近灰度平均值nBorderAverage的灰度值作为背景灰度值,另一灰度值作为前景灰度值。如,若低灰度值nLight接近灰度平均值nBorderAverage,则该低灰度值nLight为背景灰度值,高灰度值nDark为前景灰度值;若高灰度值nDark接近灰度平均值nBorderAverage,则该高灰度值nDark为背景灰度值,低灰度值nLight为前景灰度值。
S304:将字体文件中的字符根据缩放系数、前景灰度值与背景灰度值生成字符模板图像。
确定前景文字灰度值和背景灰度值后,计算字符区域在被检测字符图像中的位置rcBorder,如图4所示,检测字符图像中的第一个字符时,根据第一个字符的内容找到字体文件中对应的字符,然后根据计算得到的缩放系数、前景灰度值与背景灰度值生成该字符对应的字符模板图像(右侧字符图像);之后根据生成的字符模板图像的宽度,计算得到被检测字符图像中对应的字符位置,即字符图像中的第一个字符。
S400:将实时字符图像中的字符与字符模板图像的字符进行差值比对,计算差异值。
S500:将每个字符比对的最小差异值作为验证结果。
计算差异值时需要利用字符模板图像的原始图像、掩膜图像和膨胀后的图像,对于黑字白底的图像来说,称原始图像为高值模板ImgH,膨胀后的图像为低值模板ImgL,掩膜图像ImgM表示图像中特殊的区域,用已分配不同的系数。
字符验证,一般是计算被检测字符图像与字符模板图像的某些特征的相关性,例如横纵向投影的相关性等,这样的方式在不同的字符集、不同的条件下可能需要计算多种特征,对特征的选择依赖性很强。而本申请直接进行点对点的差值比对,但是因为不同的字符集存在相似度很大的字符,通过掩膜加强相似字符不同的地方的系数,可以准确的衡量出字符间的差异,同时,高低值模板的引入,有效的减少了喷印、成像等环节带来的噪声,大大降低了误检的概率。
计算差异值时,假设字符模板图像的高宽分别为mWidth、mHeight,实时字符图像的高宽分别为sWdith、sHeight,根据下列公式计算差异值nDiff为:
其中,fx=0........sWidth-mWdith,fy=0........sHeight-mHeight,nThresh为根据所述前景灰度值与所述背景灰度值计算的偏差阈值。
本申请实施例提供的用于可变码识读字符质量验证的检测方法使用标准字体文件进行可变码识读字符的检测,因为每个识读字符都存在与其对应的可变码,通过对可变码解码知道字符的具体内容,根据每个字符对应的实际内容获得在字体文件中该字符对应的模板图像,将模板图像与实际字符图像进行点对点差值运算,得到最终的验证结果。本申请使用标准字体作为基准,在实时检测过程中计算映射参数创建字符模板图像,再与实时图像进行点对对比对,进而完成验证的工作,不同于采集实时图像创建模板字库,操作简单,省去了很多中间环节,保证了检测效果只与印刷质量有关,从而提高了字符检测效果。
基于上述实施例提供的用于可变码识读字符质量验证的检测方法,本申请实施例还提供了一种用于可变码识读字符质量验证的检测系统。
如图5所示,本申请实施例提供的用于可变码识读字符质量验证的检测系统包括:
创建模块100,用于根据可变码识读字符所选用的字体创建字体文件。本申请使用标准字体建立字体文件,可以不用采集实时图像创建模板字库。
采集模块200,用于采集可变码识读字符的实时字符图像。
生成模块300,用于根据字体文件与实时字符图像生成字符模板图像。即根据每个识读字符对应的实际内容获得在字体文件中该字符对应的模板图像。本示例中,生成模块300包括:
校正单元301,用于校正被检测的实时字符图像。将被检测图像调整至水平方向,如果原来就是水平的则不予处理。
第一计算单元302,用于计算字体文件中的字符与校正后实时字符图像中字符的缩放系数。统计字体文件中所有字符的最大高度Hm,及获取实时字符图像中字符区域的高度Hr,根据高度Hr与Hm计算参考缩放系数fZoomBase,之后在参考缩放系数fZoomBase的基础上,根据条码的走向设置缩放系数搜索范围,在范围内搜索最佳的缩放系数。
第二计算单元303,用于计算实时字符图像的前景灰度值与背景灰度值。遍历实时字符图像四个边缘的像素计算像素灰度平均值nBorderAverage,计算整个字符图像的灰度直方图,并取覆盖率达到预设值的高低灰度值作为前景/背景的灰度值,并通过与像素灰度平均值nBorderAverage比较确定前景文字灰度值与背景灰度值。
生成单元304,用于将字体文件中的字符根据缩放系数、前景灰度值与背景灰度值生成字符模板图像。根据字符图像中字符的内容找到字体文件中对应的字符,然后根据缩放系数、前景灰度值、背景灰度值生成一个字符模板图像。
计算模块400,用于将实时字符图像中的字符与字符模板图像的字符进行差值比对,计算差异值。计算差异值时利用字符模板图像的原始图像、掩膜图像和膨胀后的图像,基于高低值模板和掩膜的验证方式计算得到实时字符图像中的字符与字符模板图像的字符的差异值。
计算模块400包括:
第一获取单元401,用于获取字符模板图像中字符的高mWidth与宽mHeight。
第二获取单元402,用于获取实时字符图像中字符的高sWidth与宽sHeight。
第三计算单元403,用于根据mWidth、mHeight、sWidth与sHeight计算字符的差异值nDiff。
验证模块500,用于将每个字符比对的最小差异值作为验证结果。
本申请实施例提供的用于可变码识读字符质量验证的检测系统使用标准字体作为模板,只需要在检测时计算映射参数,即可完成验证的工作,操作简单很多,省去了很多中间环节,保证了检测效果只与印刷效果有关;且基于高低值模板和掩膜的验证方式,直接进行点对点的差值比对,有效的减小了喷印、成像等环节带来的噪声,大大降低了误检的概率。
本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本申请的其他实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求的内容指出。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。