一种采用阈值二值化算法实现二维条码预处理的方法
【技术领域】
[0001]本发明涉及二维码技术领域,具体涉及一种采用阈值二值化算法实现二维条码预处理的方法。
【背景技术】
[0002]二维码拥有由一系列深色模块相间分布组成的独特纹理特征。通过这些模块有规律地相间地排列,记录着一定数据量的信息。而二维码会以图像的形式出现在需要标识的产品或地方上,而它本身就提携着这些东西的相关信息量。除了标识信息之外,现在二维码更作为媒介工具在金融活动或个人的购买活动以及商业活动中,如二维码扫描购买商品和二维码支付。基于二维码的图形识别技术主要步骤是:
[0003]首先,对采集到的二维条码图像进行图像预处理,为后期能快速定位二维码目标部分而做好减小图形定位复杂度的准备。目前较多的采集方式以拍摄式为主,继而在拍摄图片上对二维条码进行定位,实现最终的解码。但因为由于存在些摄影硬件设备有时难以克服的外界复杂环境,如聚焦差、成像系统误差、光照不均、噪声、人手抖动等所影响,采集到的二维条码图像还是有欠清晰度的。因此往往需要增强图像清晰度,以免扩大后面的定位误差。还有,拍摄下来的图像有着很多不必要的像素信息以及干扰目标部分定位的背景像素信息,因此,图像预处理过程中还需要有目的减少像素信息以及进行背景和目标部分的切割处理。
[0004]然后,在经预处理的图像上对二维条码部分进行快速定位。定位过程一般分为基于寻找二维条码位置探测图形的定位和基于二维条码图形特征的定位。前者提及的定位方法是利用二维图码本身独有的特征符号即位置探测图形,该图形有特定比例的深浅模块组成。而且,这种比例不受由于拍摄角度不同导致发生图像的缩放,旋转及几何失真而改变。因此,只要定位到二维条码上三个相同的位置探测图形,即能定位到二维条码目标部分以及计算其倾斜角度。后者提及的定位方法是利用二维条码本身具有的矩形形状特征和独有的深浅像素相间分布的纹理特征对二维条码进行定位。接着,就对定位到的二维条码进行旋转校正及几何失真校正。
[0005]接着,就是对提取到的二维条码码字进行纠错译码。由于某种原因,二维条码本身可能存在部分缺失或污损,折叠痕迹等情况,为保证译码出来的信息正确性,就需要采取一种与二维条码编码方式相呼应的纠错译码方式,从而译码出正确信息。这一模块我们通常包括在本课题里会在软件架构中使用算法实现,当然,也可使用市场上的译码芯片进行。
[0006]最后,就要对译码出来的信息进行显示,保存或传输处理。因此,我们会给二维条码识读器配上数据存储器和IXD显示屏,从而能实时地对二维条码信息进行保存或显示,还有系统应用界面显示。对于传输过程,可以分为有线传输和无线传输两种,有线传输可以使用USB数据线或串行线与PC连接。无线传输方式更多样,如使用Zigbee,GSM/GPRS,WCDMA, Bluetooth等方式把数据传到个人PC或服务器上。
[0007]从上面步骤可看出,二维条码图形识别的预处理过程尤其重要。因为,要对二维条码进行快速定位,必须要尽可能减少图像像素信息而避免过大的计算量,以及解决因外界复杂环境比如光照不均,相对移动,低光照,欠缺快速对焦等所影响而引起的图像识别问题,最大限度地将图像中背景部分与二维码部分精准地分割开来,从而便于后期的快速及精确定位。
【发明内容】
[0008]针对现有二维条码预处理的不足,本发明提供了一种采用阈值二值化算法实现二维条码预处理的方法,能避免由于图像模糊或复杂的图像背景信息引起的二值化图像分割失败,实现精确地把目标和背景部分分割开来。
[0009]本发明提供了一种采用阈值二值化算法实现二维条码预处理的方法,包括如下步骤:
[0010]获取经过灰度化处理的二维条码图像;
[0011]采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板;
[0012]将原二维条码图像分块的像素值与平滑模板相减获取差异值;
[0013]采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值;
[0014]基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理。
[0015]所述采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板包括:
[0016]每次利用一定大小的由高斯函数生成的核与所述核同样大小的原图像分块进行卷积得到平滑模板。
[0017]所述采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值包括:
[0018]基于预先设置的迭代次数从阈值初始值零值开始递减进行迭代过程;
[0019]在每一次的迭代过程中,基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值;基于原像素值和二值化值计算出类间方差值,并在迭代过程中形成一个类间方差值集合;
[0020]在迭代过程结束之后,采取遍历方法获取类间方差值集合中的最大类间方差值。
[0021]所述基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值包括:
[0022]判断差异值与阈值间的大小,当差异值小于阈值时,差异值所对应的原像素值所设定的二值化值为255,同时也保存下原像素值;如果差异值大于等于阈值时,差异值所对应的原像素值所设定的二值化值为0,同时也保存下原像素值。
[0023]所述预先设置的迭代次数为自然数,为2至100的自然数。
[0024]所述基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理之后还包括:
[0025]清除分块效应。
[0026]所述清除分块效应包括:
[0027]找到图像分块之间的边界,在以边界像素作为中心像素的3*3区域中,分别计算此区域内黑像素和白像素这两类的个数,然后将中心像素设定为个数最多的那类所对应的像素值;如果这两类个数相等的话,就将中心像素设定为黑像素。
[0028]因此,本文提出一种效果良好的阈值二值化算法,能避免由于图像模糊或复杂的图像背景信息引起的二值化图像分割失败,实现精确地把目标和背景部分分割开来,从而有利于后期对目标部分的快速定位。当由于图像存在由光照不均或背景复杂引起的问题时,每个图像局部发生的模糊情况或背景干扰都有所不同,此时把图像整体的统计特性当作图形局部统计特性来对待,会产生较大的处理误差,因此,在二值化处理过程中不应该对图像整体进行统一阈值判别,而是在图像各局部内自适应地进行统计特性分析,依据局部情况调整阈值进行二值化。所以,本发明实施例即采用分治法的思想对原图像进行分块处理,同时也提出消除分块处理引起的分块效应的方法,在处理过程中具有较好的鲁棒性。
【附图说明】
[0029]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0030]图1是本发明实施例中的采用阈值二值化算法实现二维条码预处理的方法流程图;
[0031]图2是本发明实施例中的采用阈值二值化算法实现二维条码预处理的具体方法流程图。
【具体实施方式】
[0032]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0033]图1示出了本发明实施例中的采用阈值二值化算法实现二维条码预处理的方法流程图,包括如下步骤:
[0034]S101、获取经过灰度化处理的二维条码图像;
[0035]在实施过程中,每次利用一定大小的由高斯函数生成的核与所述核同样大小的原图像分块进行卷积得到平滑模板。
[0036]S102、采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板;
[0037]在实施过程中,基于预先设置的迭代次数从阈值初始值零值开始递减进行迭代过程;
[0038]在每一次的迭代过程中,基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值;基于原像素值和二值化值计算出类间方差值,并在迭代过程中形成一个类间方差值集合;在迭代过程结束之后,采取遍历方法获取类间方差值集合中的最大类间方差值。
[0039]在基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值过程中包括:判断差异值与阈值间的大小,当差异值小于阈值时,差异值所对应的原像素值所设定的二值化值为255,同时也保存下原像素值;如果差异值大于等于阈值时,差异值所对应的原像素值所设定的二值化值为0,同时也保存下原像素值。
[0040]该预先设置的迭代次数为自然数,一般为2至100的自然数,可以取30次左右为最佳。
[0041]S103、将原二维条码图像分块的像素值与平滑模板相减获取差异值;
[0042]S104、采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值;
[0043]S105、基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理。
[0044]S106、清除分块效应。
[0045]在实施过程中,找到图像分块之间的边界,在以边界像素作为中心像素的3*3区域中,分别计算此区域内黑像素和白像素这两类的个数,然后将中心像素设定为个数最多的那类所对应的像素值;如果这两类个数相等的话,就将中心像素设定为黑像素。
[0046]图2示出了本发明实施例中的采用阈值二值化算法实现二维条码预处理的具体方法流程图,包括如下步骤:
[0047]S201、获取经灰度化处理的原图像;
[0048]S202、图像分块与高斯核卷积获得平滑模块;
[0049]读取经过灰度化处理的包含有二维条码的图像。利用由高斯函数产生的有一定大小的核与同等大小的原图像分块进行卷积处理,得到高斯平滑的图像结果即平滑模板,并保存起来。经实验证明,当高斯核的大小为75*75的时候,处理效果较好。
[0050]S203、原图像分块与平滑模板相减得到差异值;
[0051]用原图像分块的像素值与上述步骤得到的平滑模板相减,得到差异值结果,差异值有正负之分,不用将其绝对值化,同样把结果保存起来。
[0052]S204、设定阈值k初始值为0,没迭代一次递减1,对原始图像分块进行阈值二值化处理;
[0053]S205、判断阈值k是否小于像素点对应的差异值,如果小于则进入到S206,否则进入到S207 ;
[0054]S206、将像素点值设定为255,并将原像素值单独保存起来成一类;
[0055]S207、将像素点值设置为0,并将原像素值单独保存起来成一类;
[0056]S208、图像分块所有像素点遍历判别是否完毕,如果没有则进入到S205中,否则进入到S209 ;
[0057]S209、计算这两类的类间方差值,并保存;
[0058]S210、判断是否超出迭代出次数,如果超出则进入到S211,否则进入到S204 ;
[0059]S211、对所有在迭代过程中产生的类间方差值进行排序,得到最大方差值;
[0060]设定一阈值从零值开始递减进行迭代过程,每次递减1,保证阈值为负整数。迭代过程进行如下:提取出上述步骤保存下来的差异值与阈值进行比较判断,当差异值小于等于阈值时,将差异值对应的原图像分块中该像素点的值设定为255,即判断此像素点属于背景像素,同时把像素值重新设定为255的原像素点的值单独保存起来;当差异值大于此阈值时,将,即将差异值对应的原图像分块中该像素点的值设定为O,即判断此像素点属于目标像素,同样把像素值重新设定为O的原像素点的值单独保存起来。当处理完图像分块的所有像素点后,计算接着对原像素值被设定为255和被设定为O的这两类像素点进行计算在其原像素值下的类间方差值并保存起来,同时将此时二值化处理结果作为临时数据保存起来。迭代过程进行一定次数即停止,然后通过遍历的方式对保存起来的类间方差值进行排序,得到最大类间方差值。然后,释放所有在迭代过程中用来保存临时数据的存储空间。输出最大方差值对应的阈值二值化处理效果作为图像分块最终的二值化处理结果。经实验证明,迭代过次数一般为100次,即在负区间[-100,O]中,必能找到一最佳阈值,使得图像分块最终的二值化处理效果为最佳。
[0061]S212、清除分块效应;
[0062]在对二维条码这幅原图像中进行遍历分块处理,得到一系列二值图像分块Btl, B1,...,Bn。然而遍历处理后的图像整体会出现分块效应。因此,提出消除分块效应的方法,如下:找到图像分块之间的边界,在以边界像素作为中心像素的3*3区域中,分别计算此区域内黑像素和白像素这两类的个数,然后将中心像素设定为个数最多的那类所对应的像素值;如果这两类个数相等的话,就将中心像素设定为黑像素。对所有分块边界的像素进行上述处理后,能有效消除分块效应带来的不良情况,最终得到效果较好的图像整体二值化处理结果。
[0063]S213、输出最大方差值对应的阈值二值化处理效果作为图像分块最终的二值化处理结果。
[0064]综上,本文提出一种效果良好的阈值二值化算法,能避免由于图像模糊或复杂的图像背景信息引起的二值化图像分割失败,实现精确地把目标和背景部分分割开来,从而有利于后期对目标部分的快速定位。当由于图像存在由光照不均或背景复杂引起的问题时,每个图像局部发生的模糊情况或背景干扰都有所不同,此时把图像整体的统计特性当作图形局部统计特性来对待,会产生较大的处理误差,因此,在二值化处理过程中不应该对图像整体进行统一阈值判别,而是在图像各局部内自适应地进行统计特性分析,依据局部情况调整阈值进行二值化。所以,本发明实施例即采用分治法的思想对原图像进行分块处理,同时也提出消除分块处理引起的分块效应的方法,在处理过程中具有较好的鲁棒性。
[0065]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
[0066]以上对本发明实施例所提供的采用阈值二值化算法实现二维条码预处理的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种采用阈值二值化算法实现二维条码预处理的方法,其特征在于,包括如下步骤: 获取经过灰度化处理的二维条码图像; 采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板; 将原二维条码图像分块的像素值与平滑模板相减获取差异值; 采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值; 基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理。2.如权利要求1所述的采用阈值二值化算法实现二维条码预处理的方法,其特征在于,所述采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板包括: 每次利用一定大小的由高斯函数生成的核与所述核同样大小的原图像分块进行卷积得到平滑模板。3.如权利要求2所述的采取阈值二值化算法实现二维条码预处理的方法,其特征在于,所述采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值包括: 基于预先设置的迭代次数从阈值初始值零值开始递减进行迭代过程; 在每一次的迭代过程中,基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值;基于原像素值和二值化值计算出类间方差值,并在迭代过程中形成一个类间方差值集合; 在迭代过程结束之后,采取遍历方法获取类间方差值集合中的最大类间方差值。4.如权利要求3所述的采取阈值二值化算法实现二维条码预处理的方法,其特征在于,所述基于阈值与差异值进行二值化处理,并获取所述差异值所对应的原像素值和二值化处理后的二值化值包括: 判断差异值与阈值间的大小,当差异值小于阈值时,差异值所对应的原像素值所设定的二值化值为255,同时也保存下原像素值;如果差异值大于等于阈值时,差异值所对应的原像素值所设定的二值化值为O,同时也保存下原像素值。5.如权利要求3所述的采取阈值二值化算法实现二维条码预处理的方法,其特征在于,所述预先设置的迭代次数为自然数,为2至100的自然数。6.如权利要求1至5任一项所述的采取阈值二值化算法实现二维条码预处理的方法,其特征在于,所述基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理之后还包括: 清除分块效应。7.如权利要求6所述的采取阈值二值化算法实现二维条码预处理的方法,其特征在于,所述清除分块效应包括: 找到图像分块之间的边界,在以边界像素作为中心像素的3*3区域中,分别计算此区域内黑像素和白像素这两类的个数,然后将中心像素设定为个数最多的那类所对应的像素值;如果这两类个数相等的话,就将中心像素设定为黑像素。
【专利摘要】本发明公开了一种采用阈值二值化算法实现二维条码预处理的方法,包括如下步骤:获取经过灰度化处理的二维条码图像;采用高斯函数对灰度化处理的二维条码图像进行卷积处理,得到平滑模板;将原二维条码图像分块的像素值与平滑模板相减获取差异值;采用阈值二值化算法对获取的差异值进行迭代过程获得最大类间方差值;基于最大类间方差值将二维条码图像分块中的目标部分和背景部分进行分割处理。本发明实施例能避免由于图像模糊或复杂的图像背景信息引起的二值化图像分割失败,实现精确地把目标和背景部分分割开来,从而有利于后期对目标部分的快速定。
【IPC分类】G06K9/38
【公开号】CN104899589
【申请号】CN201510239502
【发明人】胡建国, 谭宇泉, 白小楠, 李仕仁, 曾圣勇, 黄海娜
【申请人】广州中大数码科技有限公司, 佛山酷微微电子有限公司, 广东中泽自动识别技术有限公司
【公开日】2015年9月9日
【申请日】2015年5月12日