一种对二维条码精确定位的方法及装置制造方法

文档序号:6623673阅读:545来源:国知局
一种对二维条码精确定位的方法及装置制造方法
【专利摘要】本发明公开了一种对二维条码精确定位的方法及装置,该方法包括:当图像传感器采集到二维图像后,对二维图像进行图像预处理;在图像预处理中完成二值化处理后,对二维图像进行精确定位,所述精确定位包括:依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。本发明实施例依靠预处理后二维条码上黑白相间模块组成的独特图像特征,即有着明显的黑白轮廓线,从而尽可能较为精确地对二维条码所在区域进行初步定位;而最终定位是在上述初步定位出的二维条码区域上进行二次遍历扫描,最终实现精确定位。
【专利说明】一种对二维条码精确定位的方法及装置

【技术领域】
[0001]本发明涉及二维条码识别【技术领域】,具体涉及一种对二维条码精确定位的方法及
>J-U ρ?α装直。

【背景技术】
[0002]二维码是由一系列深色模块组成,有着鲜明独特的图形形式。通过这些模块有规律地相间地排列,记录着一定数据量的信息。而二维码会以图像的形式出现在需要标识的产品或地方上,而它本身就提携着这些东西的相关信息量。除了标识信息之外,现在二维码更作为媒介工具在金融活动或个人的购买活动以及商业活动中,如二维码扫描购买商品和二维码支付。基于二维码的识别技术主要步骤是:
[0003]首先对二维条码图像进行采集。在二维条码图像采集模块中,重点需采用灵敏和低失真的图像传感器拍摄下清晰度较高的图像。这模块的设计尤其重要,对图像传感器有着较高的性能要求,因为影响整个二维条码识读系统的响应速度和效率的关键两点,除了系统中央处理器的控制运算速度,就是较快速度采集下的图像清晰度。高清晰的采集图像也是系统成功识读二维条码所携带信息的基本保证。
[0004]接着对二维条码图像进行预处理,以保证二维条码码字定位提取的成功和准确。因为由于存在些摄影硬件设备有时难以克服的外界复杂环境,如聚焦差、成像系统误差、光照不均、噪声、人手抖动等所影响,采集到的二维条码图像还是有欠清晰度的。所以,需要利用图像处理技术作出增强图像清晰度的预处理,如:过滤噪声,增强图像对比度,边缘突出,去模糊等。在二维条码码字提取模块中,需要利用图像处理技术,采取了如二值化,边缘检测,轮廓提取,定位校正等步骤,从而能正确有效地提取到二维条码的码字。
[0005]接着,就是对提取到的二维条码码字进行纠错译码。由于某种原因,二维条码本身可能存在部分缺失或污损,折叠痕迹等情况,为保证译码出来的信息正确性,就需要采取一种与二维条码编码方式相呼应的纠错译码方式,从而译码出正确信息。
[0006]最后,对译码出来的信息进行显示,保存或传输处理。在相应的二维条码识读器配上数据存储器和IXD显示屏,从而能实时地对二维条码信息进行保存或显示,还有系统应用界面显不。
[0007]从上面的步骤可以看出,二维识别技术的重点就在于如何在拍摄图像上精确定位二维条码部分。并且,只有精确定位二维条码本身,才能更好地提高二维条码的识别速度或者说扫描精度,也能为后期的图像校正和提取信息等步骤做好准备。基于二维条码识别的技术要求,在这里需要提出一种精确定位二维条码的有效方法。


【发明内容】

[0008]针对现有中对二维条码中精确定位的不足,本发明提出了一种对二维条码精确定位的方法及装置,能更好的实现二维条码的精确定位。
[0009]本发明提供了一种对二维条码精确定位的方法,包括如下步骤:
[0010]当图像传感器采集到二维图像后,对二维图像进行图像预处理;
[0011]在图像预处理中完成二值化处理后,对二维图像进行精确定位,所述精确定位包括:
[0012]依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;
[0013]对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
[0014]所述依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位包括:
[0015]对经过二值化处理后的二维图像进行遍历扫描,首先定位出二维条码所在的水平区域,然后在定位出二维条码所在的垂直区域。
[0016]所述定位出二维条码所在的水平区域包括:
[0017]从上往下扫描二维图像每一行,把每一行出现像素值从黑变白和从白变黑的变化次数用变化数组记录下来;
[0018]将记录下来的变化次数大小使用堆排序算法对变化数组中的元素进行排序,以及利用行数组把排序后的数组中的元素所对应的行号记录下来;
[0019]将变化数组中排在二维条码高度阈值常数前的元素提取出来,以及将行数组中排在二维条码高度阈值常数前的元素进行排序;
[0020]按照顺序进行行行与行之间的判断,当判断行与行之间的距离在一个二维条码模块宽度以内,并且位于二维条码区域上时,记录下这两行的行号。
[0021]所述对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位包括:
[0022]先分别在区域的最上方开始向左和向右扫描这块区域,当遇到像素值为O的像素点时就停止,并分别记录下这两点的行号和列号,这两点分别为二维条码的左上顶点和右上顶点;再分别在区域的最下方开始依然向左和向右扫描这块区域,同样当遇到像素值为O的像素点时就停止,并分别记录这两点的行号和列号,这两点分别为二维条码的左下顶点和右下顶点。
[0023]相应的,本发明还提供了一种二维码译码的装置,包括:
[0024]图像预处理模块,用于在图像传感器采集到二维图像后,对二维图像进行图像预处理,以及在图像预处理中完成二值化处理后,将处理结果输出给精确定位模块;
[0025]精确定位模块,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
[0026]所述精确定位模块包括:
[0027]初步定位单元,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位
[0028]精确定位单元,用于对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
[0029]本发明在图像传感器采集到二维图像后,首先对拍摄图像进行图像预处理。在这里所使用的图像预处理过程能有效减少光照和噪声所带来的影响,从而也能使得后面的阈值二值化的效果更加明显和精确。接着,就是对拍摄图像进行二值化处理,这步处理主要是最大可能地减少图像本身的像素信息,但依然保留着图像中的物体轮廓特征,因此二值化处理也起到图像切割的效果。最终的效果是,图像背景的像素值为255 ;而图像前景,即二维条码本身的像素值即为O。初步定位主要是依靠上述预处理后二维条码上黑白相间模块组成的独特图像特征,即有着明显的黑白轮廓线,从而尽可能较为精确地对二维条码所在区域进行初步定位;而最终定位是在上述初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点,最终实现精确定位,从而方便后续整个译码的整个过程更加精准。

【专利附图】

【附图说明】
[0030]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0031]图1是本发明实施例中的对二维条码精确定位的方法流程图;
[0032]图2是本发明实施例中的二维码译码的装置结构示意图。

【具体实施方式】
[0033]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0034]图1示出了本发明实施例中的对二维条码精确定位的方法流程图,包括如下步骤:
[0035]S101、基于图像传感器采集二维图像;
[0036]S102、对采集的二维图像进行图像预处理;
[0037]当图像传感器采集到二维图像后,首先对拍摄图像进行图像预处理。在这里所使用的图像预处理过程能有效减少光照和噪声所带来的影响,从而也能使得后面的阈值二值化的效果更加明显和精确。
[0038]图像预处理过程中包括了:灰度化、边缘检测、高斯滤波、二值化等处理过程。对拍摄图像进行二值化处理,这步处理主要是最大可能地减少图像本身的像素信息,但依然保留着图像中的物体轮廓特征,因此二值化处理也起到图像切割的效果。最终的效果是,图像背景的像素值为255 ;而图像前景,即二维条码本身的像素值即为O。
[0039]S103、对二维图像进行初步定位;
[0040]初步定位主要是依靠上述预处理后二维条码上黑白相间模块组成的独特图像特征,即有着明显的黑白轮廓线,从而尽可能较为精确地对二维条码所在区域进行初步定位。
[0041]对经二值化处理的拍摄图像进行遍历扫描。首先在这里先分别定义两个名为变化数组ChangeCount [N]和行数组LineNum[N],在这里分别记录N个元素。数组在计算机中表示为一种顺序存储式的数据结构。第一步:定位出二维条码所在的水平区域。从上往下扫描每一行,把每一行出现像素值从黑变白和从白变黑的变化次数用数组ChangeCount [N]记录下来,其中N为图像的每行像素所在行的行号。因为这些像素变化更多会出现在二维条码本体上,所以它们可以很好地表征二维条码所在的区域。首先将记录下来的变化次数大小进行排序。由于这里要进行排序的是数组中的元素,所以要遍历整个ChangeCount[N]数组。因此,为了进一步把算法的时间复杂度降低,在这里引入堆这种更高效的存储数据结构,在这里把数组ChangeCount [N]转为堆,然后使用堆排序算法对数组元素进行快速排序,同时利用数组LineNum[N]把排序后的数组中的元素所对应的行号记录下来,方便后面的处理。
[0042]然后,在经过元素从大到小排序的数组ChangeCount [N]中把排在前MAX个的元素提取下来。此处的操作主要为了找出图像中像素间变化次数较多且有可能包含二维条码区域的全部像素行。MAX为一常数值,经实验可为二维条码标准高度的1.5倍时可以更好减小定位误差,并四舍五入取整,保证MAX为一常整数,这里可以允许四舍五入带来的误差。因为二值化后依然还可能存在的背景像素会形成干扰行,很容易被误认为是二维图像所在区域的某一行。因此接下来要进行相关行判断。首先,对上述得到的数组LineNum[N]中的前MAX个元素进行排序,依然可以使用上述提到的堆排序算法。接着按顺序进行行与行之间的相关行判断。判断依据是:只要上述得到的MAX条可能组成二维条码所在区域的行里,行与行之间的距离是在一个二维条码模块宽度以内,就可认为它们是相关行,并且位于二维条码区域上,然后记录下这两行的行号。而这距离的计算就是求这两行的行号差。最后,就能得到一系列相关行,确定均位于二维条码区域上,再找出其中的最大行号和最小行号,它们的差就是二维条码所在的水平区域的高度。
[0043]第二步:定位出二维条码所在的垂直区域。在图像上从左往右扫描每一列像素,接着的处理就与上述定位二维条码水平区域相类似。最终得出二维条码所在的垂直区域的宽度。得到二维条码所在的水平区域和垂直区域后,再找到它们的交集区域,即记录这块重叠区域的四条边界,其实分别就是上述得到的二维条码水平区域的最大行号和最小行号,以及二维条码垂直区域的最大列号和最小列号。这样,通过上述方法,就能对二维条码进行初步定位。
[0044]S104、对二维图像进行精确对位。
[0045]精确定位是在上述初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点。
[0046]对二维条码进行精确定位的目的就是找到其四个顶点,从而方便后面的图形校正处理以及最后的切割提取。主要的做法就是在上述初步定位到的二维条码区域上再次进行遍历扫描。先分别在区域的最上方开始向左和向右扫描这块区域,当遇到像素值为O的像素点时就停止,并分别记录下这两点的行号和列号,这两点就为二维条码的左上和右上顶点;再分别在区域的最下方开始依然向左和向右扫描这块区域,同样当遇到像素值为O的像素点时就停止,并分别记录这两点的行号和列号,这两点就为二维条码的左下和右下顶点。这样,二维条码的四个顶点就被找出,从而完成对二维条码的精确定位。
[0047]相应的,图2示出了本发明实施例中的二维码译码的装置结构示意图,包括:
[0048]图像预处理模块,用于在图像传感器采集到二维图像后,对二维图像进行图像预处理,以及在图像预处理中完成二值化处理后,将处理结果输出给精确定位模块;
[0049]精确定位模块,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
[0050]需要说明的是,该精确定位模块还包括有:
[0051]初步定位单元,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;
[0052]精确定位单元,用于对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
[0053]初步定位单元用于对经过二值化处理后的二维图像进行遍历扫描,首先定位出二维条码所在的水平区域,然后在定位出二维条码所在的垂直区域。以及该定位出二维条码所在的水平区域包括:从上往下扫描二维图像每一行,把每一行出现像素值从黑变白和从白变黑的变化次数用变化数组记录下来;将记录下来的变化次数大小使用堆排序算法对变化数组中的元素进行排序,以及利用行数组把排序后的数组中的元素所对应的行号记录下来;将变化数组中排在二维条码高度阈值常数前的元素提取出来,以及将行数组中排在二维条码高度阈值常数前的元素进行排序;按照顺序进行行行与行之间的判断,当判断行与行之间的距离在一个二维条码模块宽度以内,并且位于二维条码区域上时,记录下这两行的行号。
[0054]该精确定位单元用于先分别在区域的最上方开始向左和向右扫描这块区域,当遇到像素值为O的像素点时就停止,并分别记录下这两点的行号和列号,这两点分别为二维条码的左上顶点和右上顶点;再分别在区域的最下方开始依然向左和向右扫描这块区域,同样当遇到像素值为O的像素点时就停止,并分别记录这两点的行号和列号,这两点分别为二维条码的左下顶点和右下顶点。
[0055]综上,本发明在图像传感器采集到二维图像后,首先对拍摄图像进行图像预处理。在这里所使用的图像预处理过程能有效减少光照和噪声所带来的影响,从而也能使得后面的阈值二值化的效果更加明显和精确。接着,就是对拍摄图像进行二值化处理,这步处理主要是最大可能地减少图像本身的像素信息,但依然保留着图像中的物体轮廓特征,因此二值化处理也起到图像切割的效果。最终的效果是,图像背景的像素值为255 ;而图像前景,即二维条码本身的像素值即为O。初步定位主要是依靠上述预处理后二维条码上黑白相间模块组成的独特图像特征,即有着明显的黑白轮廓线,从而尽可能较为精确地对二维条码所在区域进行初步定位;而最终定位是在上述初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点,最终实现精确定位,从而方便后续整个译码的整个过程更加精准。
[0056]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
[0057]以上对本发明实施例所提供的对二维条码精确定位的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种对二维条码精确定位的方法,其特征在于,包括如下步骤: 当图像传感器采集到二维图像后,对二维图像进行图像预处理; 在图像预处理中完成二值化处理后,对二维图像进行精确定位,所述精确定位包括:依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位; 对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
2.如权利要求1所述的对二维条码精确定位的方法,其特征在于,所述依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位包括: 对经过二值化处理后的二维图像进行遍历扫描,首先定位出二维条码所在的水平区域,然后在定位出二维条码所在的垂直区域。
3.如权利要求2所述的对二维条码精确定位的方法,其特征在于,所述定位出二维条码所在的水平区域包括: 从上往下扫描二维图像每一行,把每一行出现像素值从黑变白和从白变黑的变化次数用变化数组记录下来; 将记录下来的变化次数大小使用堆排序算法对变化数组中的元素进行排序,以及利用行数组把排序后的数组中的元素所对应的行号记录下来; 将变化数组中排在二维条码高度阈值常数前的元素提取出来,以及将行数组中排在二维条码高度阈值常数前的元素进行排序; 按照顺序进行行行与行之间的判断,当判断行与行之间的距离在一个二维条码模块宽度以内,并且位于二维条码区域上时,记录下这两行的行号。
4.如权利要求2所述的对二维条码精确定位的方法,其特征在于,所述对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位包括: 先分别在区域的最上方开始向左和向右扫描这块区域,当遇到像素值为O的像素点时就停止,并分别记录下这两点的行号和列号,这两点分别为二维条码的左上顶点和右上顶点;再分别在区域的最下方开始依然向左和向右扫描这块区域,同样当遇到像素值为O的像素点时就停止,并分别记录这两点的行号和列号,这两点分别为二维条码的左下顶点和右下顶点。
5.一种二维码译码的装置,其特征在于,包括: 图像预处理模块,用于在图像传感器采集到二维图像后,对二维图像进行图像预处理,以及在图像预处理中完成二值化处理后,将处理结果输出给精确定位模块; 精确定位模块,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位;对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
6.如权利要求5所述的二维码译码的装置,其特征在于,所述精确定位模块包括: 初步定位单元,用于依靠图像预处理后二维条码上黑白相间模块组成的图像特征对二维条码所在区域进行初步定位 精确定位单元,用于对初步定位出的二维条码区域上进行二次遍历扫描,得到二维条码的四个顶点实现精确定位。
【文档编号】G06K7/10GK104298947SQ201410404650
【公开日】2015年1月21日 申请日期:2014年8月15日 优先权日:2014年8月15日
【发明者】胡建国, 谭宇泉, 李仕仁, 白小楠 申请人:广东顺德中山大学卡内基梅隆大学国际联合研究院, 广州中大数码科技有限公司, 中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1