CN104700062B - 一种识别二维码的方法及设备 - Google Patents
一种识别二维码的方法及设备 Download PDFInfo
- Publication number
- CN104700062B CN104700062B CN201510125930.4A CN201510125930A CN104700062B CN 104700062 B CN104700062 B CN 104700062B CN 201510125930 A CN201510125930 A CN 201510125930A CN 104700062 B CN104700062 B CN 104700062B
- Authority
- CN
- China
- Prior art keywords
- region
- quick response
- response code
- code
- image
- 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
- 230000004044 response Effects 0.000 title claims abstract description 319
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000015572 biosynthetic process Effects 0.000 claims description 27
- 230000012010 growth Effects 0.000 claims description 7
- 230000005484 gravity Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000001514 detection method Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000000205 computational method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- AIMMVWOEOZMVMS-UHFFFAOYSA-N cyclopropanecarboxamide Chemical compound NC(=O)C1CC1 AIMMVWOEOZMVMS-UHFFFAOYSA-N 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Image Processing (AREA)
- Focusing (AREA)
Abstract
本发明实施例提供一种识别二维码的方法及设备,涉及图像识别技术领域,能够提高定位二维码的位置探测图形的准确率,从而提高识别二维码的成功率。该方法包括:确定n个第一区域的n个重心点,该n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,该水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域;从n个重心点中确定该二维码的位置探测图形的重心点;以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域;获取该二维码所在区域的图像的信息。该方法应用于二维码识别***中。
Description
技术领域
本发明涉及图像识别技术领域,尤其涉及一种识别二维码的方法及设备。
背景技术
二维码(英文:2-dimensional bar code)是一种用黑白相间的图像记录数据符号信息的条码,该黑白相间的图像由特定的几何图形按照一定的规律分布在平面上组成。一般而言,识别二维码的方法可以包括:确定二维码所在区域,并对该区域的图像进行校正,以及对校正后的图像进行解码,以获取该二维码所记录的信息,即获取该区域的图像的信息。
传统方法中,通过定位二维码中的位置探测图形来确定二维码所在区域。其中,每个二维码具有三个位置探测图形,这三个位置探测图形分别分布在二维码所在区域的左上角、左下角以及右上角,每个位置探测图形由三个同心正方形组成。示例性的,如图1所示为一个二维码的示意图,其中,a、b和c分别为该二维码的三个位置探测图形。通常,扫描设备对该二维码扫描时,若该扫描设备检测到某个区域的水平方向和垂直方向上的黑色区域的宽度和白色区域的宽度均满足黑:白:黑:白:黑为1:1:3:1:1,则该扫描设备确定该区域为该二维码中的一个位置探测图形。
然而,由于二维码所在区域或者二维码所在区域的背景区域中也可能存在水平方向和垂直方向上的黑色区域的宽度和白色区域的宽度满足1:1:3:1:1的区域,因此,若采用上述方法确定二维码所在区域,则定位的区域可能不是该二维码的位置探测图形,即确定的该二维码的位置探测图形是错误的,从而导致扫描设备根据该错误的位置探测图形确定的二维码所在区域不正确,进而导致无法获取该二维码所记录的信息,即导致该二维码识别失败。
发明内容
本发明提供一种识别二维码的方法及设备,能够提高定位二维码的位置探测图形的准确率,从而提高识别二维码的成功率。
为达到上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种识别二维码的方法,包括:
确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,所述n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数;
从所述n个重心点中确定所述二维码的位置探测图形的重心点,所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色;
以所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域;
获取所述二维码所在区域的图像的信息。
在第一方面的第一种可能的实现方式中,所述从所述n个重心点中确定位置探测图形的重心点,包括:
判断所述n个重心点中第i个重心点的灰度值是否为a,1≤i≤n,i为整数;
若所述第i个重心点灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中的第i+1个重心点的灰度值是否为a;
若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
结合第一方面的第一种可能的实现方式,在第二中可能的实现方式中,所述以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,包括:
以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点;
将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色;
将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
结合前述的第一方面或第一方面的第一种可能的实现方式至第一方面的第二种可能的实现方式中的任一种实现方式,在第三种可能的实现方式中,
所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1;
所述第二预设比例为9:25:49。
结合前述的第一方面,在第一方面的第四种可能的实现方式中,所述以所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域,包括:
对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域;
以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述对所述二维码图像进行孔洞填充,包括:
从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像;
从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像;
将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,
其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
第二方面,一种二维码识别设备,包括:
确定单元,用于确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,所述n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数;
所述确定单元,还用于从所述n个重心点中确定所述二维码的位置探测图形的重心点,所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色;
形成单元,用于以所述确定单元确定的所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域;
获取单元,用于获取所述形成单元形成的所述二维码所在区域的图像的信息。
在第二方面的第一种可能的实现方式中,
所述确定单元,具体用于判断所述n个重心点中第i个重心点的灰度值是否为a,若所述第i个重心点的灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中第i+1个重心点的灰度值是否为a,1≤i≤n,i为整数;
所述确定单元,具体用于若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述确定单元,具体用于以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点;
所述确定单元,具体用于将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色;
所述确定单元,具体用于将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
结合前述的第二方面或第二方面的第一种可能的实现方式至第二种可能的实现方式中的任一种实现方式,在第三种可能的实现方式中,
所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1;
所述第二预设比例为9:25:49。
结合前述的第二方面,在第二方面的第四种可能的实现方式中,所述形成单元包括划分模块和形成模块,
所述划分模块,用于对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域;
所述形成模块,用于以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述划分模块划分的所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
结合第二方面的第四种可能的实现方式,在第五中可能的实现方式中,
所述划分模块,具体用于从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像;
所述划分模块,具体用于从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像;
所述划分模块,具体用于将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,
其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
本发明提供一种识别二维码的方法及设备,包括确定n个第一区域的n个重心点,从n个重心点中确定该二维码的位置探测图形的重心点,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域,以及获取该二维码所在区域的图像的信息,其中,每个第一区域包括一个重心点,n个第一区域为二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数,该二维码的位置探测图形中以该重心点为中心的各个区域的面积的比例为第二预设比例。通过本发明提供一种识别二维码的方法及设备,能够先确定n个重心点,并从该n个重心点中确定出该二维码的位置探测图形的重心点,从而更加准确的确定出该二维码的位置探测图形的重心点,提高了定位该二维码的位置探测图像的准确率,并根据该二维码的位置探测图形的重心点,确定该二维码所在区域,进而准确获取该二维码所记录的信息,提高了识别二维码的成功率。
附图说明
图1为一种常见的二维码的示意图;
图2为标准的二维码的位置探测图形的示意图;
图3为一种错误的二维码的位置探测图形的示意图;
图4为本发明实施例提供的一种识别二维码的方法流程图;
图5为本发明实施例提供的一种二维码的位置探测图形中的连通域的示意图;
图6为本发明实施例提供的一种识别二维码的方法流程图;
图7为本发明实施例提供的一种角点检测法的分组示意图;
图8为本发明实施例提供的一种反透视变换原理图;
图9为本发明实施例提供的一种二维码识别设备的结构示意图一;
图10为本发明实施例提供的一种二维码识别设备的结构示意图二;
图11为本发明实施例提供的一种二维码识别设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常情况下,一个二维码具有三个位置探测图形,且各个位置探测图形均由三个同心正方形构成,如图2所示,为一个标准的位置探测图形。根据位置探测图形的特性可知,在经过位置探测图形的重心点的每条直线上,五个连续的白色区域的宽度和黑色区域的宽度,均可以满足黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1。示例性的,如图2所示的四条直线,该四条直线都经过该位置探测图形的重心点,且在该四条直线的每条直线上,该位置探测图形的五个连续的白色区域的宽度和黑色区域的宽度,均可以满足1:1:3:1:1。
传统方法中,利用位置探测图形的上述特性,当扫描设备扫描到二维码图像后,定位二维码的位置探测图形时,若该扫描设备检测到某个区域的水平方向和垂直方向上的黑色区域的宽度和白色区域的宽度均满足1:1:3:1:1,则该扫描设备确定该区域为该二维码中的一个位置探测图形。然而,二维码所在区域或者二维码所在区域的背景区域中也可能存在水平方向和垂直方向上的黑色区域的宽度和白色区域的宽度满足1:1:3:1:1的区域。示例性的,如图3所示,为水平方向和垂直方向上的黑色区域的宽度和白色区域的宽度均满足1:1:3:1:1的一个区域,而该区域的图像是由三个同心矩形构成,并不是位置探测图形,即一种错误的位置探测图形。若根据该错误的位置探测图形确定二维码所在区域,则会导致确定的二维码所在区域不正确,进而导致二维码识别失败。对此,本发明实施例提供一种识别二维码的方法及设备,能够提高定位二维码的位置探测图形的准确率,从而提高识别二维码的成功率。
实施例一
本发明实施例提供一种识别二维码的方法,如图4所示,该方法可以包括:
S101、确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数。
其中,待识别二维码图像可以理解为扫描设备扫描待识别的二维码时,扫描到的图像,该二维码图像中至少包括二维码所在区域。当扫描设备距离二维码所在区域较远时,扫描到的二维码图像中还可能包括该二维码所在区域的背景区域,其中,背景区域为该二维码图形中除该二维码所在区域以外的区域。
在本发明实施例中,获取到二维码图像后,可以先对该二维码图像进行图像预处理,包括对该二维码图像进行灰度化处理、二值化处理、去噪处理等,以使该二维码图像呈现较为明显的黑白效果。进而可以对该二维码图像进行扫描,确定该二维码图像中的n个第一区域。
具体的,在确定该二维码图像中的n个第一区域时,可以分别从水平方向上确定黑色区域的宽度和白色区域的宽度的比例为第一预设比例的水平区域,从垂直方向上确定黑色区域的宽度和白色区域的宽度的比例为第一预设比例的垂直区域,并确定该二维码图形中水平区域和垂直区域的重叠区域,一个重叠区域即为一个第一区域。
示例性的,以确定水平区域为例,首先从左到右依次扫描该二维码图像中每一行像素点的灰度值,当灰度值发生变化时,记录灰度值相同的连续的像素点的个数。例如,假设该二维码图像中某一行像素点的灰度值分别为“a b b a a b b a a a a a a b b a ab”,扫描设备扫描到的第一个像素点的灰度值为a,当扫描到第二个像素点时,由于第二个像素点的灰度值为b,与第一个像素点的灰度值不同,即灰度值发生变化,因此,第一个像素点构成一个区域,且该区域的像素点的个数为1。当扫描到第四个像素点时,由于第四个像素点的灰度值为a,与第三个像素点的灰度值不同,因此,灰度值相同的第二个像素点和第三个像素点构成一个区域,且该区域的像素点的个数为2。以此类推,可以确定该行由共八个区域构成。
其中,像素点的灰度值为a,表征该像素点呈现黑色,像素点的灰度值为b,表征该像素点呈现白色。例如,根据现有的标准,呈现黑色的像素点的灰度值为255,则a=255;呈现白色的像素点的灰度值为0,则b=0。可以理解的是,该行的八个区域中,有四个黑色区域和四个白色区域。
进一步的,确定该行中是否存在黑色区域的宽度和白色区域的宽度的比例为第一预设比例的水平区域,若存在,则标记该水平区域。
需要说明的,第一预设比例可以根据二维码领域中规定的标准进行设置,具体的,例如,根据现有的标准,在经过位置探测图形的重心点的每条直线上,五个连续的白色区域的宽度和黑色区域的宽度,均可以满足黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1,则在本发明实施例中,第一预设比例可以设为1:1:3:1:1,即,在本发明实施例中,黑色区域的宽度和白色区域的宽度的比例为第一预设比例,指黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1。
在本发明实施例中,黑色区域的宽度与白色区域的宽度的比例可以由黑色区域中像素点的个数和白色区域中像素点的个数的比例表征。因此,该行中从第三个区域开始到第七个区域结束,构成了一个水平区域。
按照上述方法扫描该二维码图像中每一行像素点的灰度值,标记出该二维码图像中的所有水平区域。
按照上述方法,从上到下依次扫描该二维码图像中每一列像素点的灰度值,标记出该二维码图像中的所有的垂直区域。
进一步,将标记了水平区域的二维码图像和标记了垂直区域的二维码图像进行逻辑与运算,获取该二维码图像中水平区域和垂直区域的n个重叠区域。其中,该n个重叠区域即为本发明实施例中确定第一区域。该n个第一区域中至少包括一个像素点,根据该n个第一区域中的每个第一区域中的像素点的坐标,确定每个第一区域的重心点,即确定了n个重心点。
可以理解的是,在经过上述n个重心点中的每个重心点的水平方向上的直线和垂直方向上的直线上,黑色区域的宽度和白色区域的宽度的比例均为第一预设比例。
S102、从n个重心点中确定该二维码的位置探测图形的重心点,该二维码的位置探测图形中以该二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且该二维码的位置探测图形的重心点的灰度值为a。
示例性的,如图2所示的二维码的位置探测图形,以该二维码的位置探测图形的重心点为中心的各个区域的面积分别为:该二维码的位置探测图形的内部黑色区域的面积;由该二维码的位置探测图形的内部黑色区域和中间白色区域构成的区域的面积;由该二维码的位置探测图形的内部黑色区域、中间白色区域,以及外部黑色区域构成的区域的面积。
需要说明的是,在本发明实施例中,第二预设比例可以根据实际工程中设置的第一预设比例进行设置。例如,若第一预设比例设置为1:1:3:1:1,则第二预设比例可以设置为32:(1+3+1)2:(1+1+3+1+1)2,即9:25:49。
具体的,从n个重心点中确定该二维码的位置探测图形的重心点的步骤可以如下所示:
S1、判断该n个重心点中第i个重心点的灰度值是否为a,若是,则执行S2,否则执行S4,1≤i≤n,i为整数。
当确定n个重心点后,对该n个重心点进行随机排序,从i=1开始执行S1-S4,直至确定出该二维码的一个位置探测图形,即可结束循环。
S2、以该第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算该三个连通域的面积。
S3、若该三个连通域的面积的比例为第二预设比例,则该第i个重心点为该二维码的位置探测图形的重心点,循环结束,否则执行S4。
S4、令i=i+1,返回执行S1。
进一步的,上述S2具体可以包括:
S21、以第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算第一连通域的面积。
S22:将第一连通域中所有像素点的灰度值均设为b,从第二种子点开始,重新进行区域生长,形成第二连通域,并计算第二连通域的面积。
S23:将第二连通域中所有像素点的灰度值均设为a,从第二种子点开始,重新进行区域生长,形成第三连通域,并计算第三连通域的面积。
需要说明的是,在本发明实施例中,从第二种子点开始,进行的三次区域生长,都是将第二种子点的邻近区域中与第二种子的灰度值相同的像素点,与第二种子点合并到一个区域中,直至没有可以合并的像素点为止,分别形成三个连通域。
示例性的,如图5所示,假设第i个重心点为该二维码的位置探测图形的重心点,则以第i个重心点为第二种子点,进行三次区域生长后,分别形成的第一连通域为如图5中的(a)所示的内部黑色区域,对应于如图2所示的该二维码的位置探测图形的内部黑色区域,第二连通域为如图5中的(b)所示的白色区域,对应于如图2所示的该二维码的位置探测图形中由内部黑色区域和中间白色区域构成的区域,第三连通域为如图5中的(c)所示的黑色区域,对应于如图2所示的该二维码的位置探测图形中由内部黑色区域、中间白色区域,以及外部黑色区域构成的区域。
S103、以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域。
根据S101和S102所示的方法确定出该二维码的位置探测图形的重心点,完成对该二维码的位置探测图形的定位后,可以进一步根据确定该二维码所在区域。
具体的,首先对该二维码图像进行孔洞填充,以将该二维码图像划分为多个连通域,且该多个连通域中的某个连通域即为二维码所在区域所在的连通域,即通过对该二维码图像进行孔洞填充,能够将该二维码所在区域划分到一个连通域中,以便于从该二维码图像中提取该二维码所在区域。
其中,对该二维码图像进行孔洞填充的方式有多种,在本发明实施例中,可采用约束步长算法对该二维码图像进行孔洞填充,具体方式将在下述实施例中进行详细描述。
完成对该二维码图像的孔洞填充后,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成第四连通域,该第四连通域为该二维码图像经过孔洞填充后,被划分的多个连通域中包括该第一种子点和与该第一种子点的灰度值相同的像素点的一个连通域,该第四连通域为该二维码所在区域。其中,当以该二维码的位置探测图形的重心点为第一种子点,进行区域生长时,是将第一种子点的邻近区域中与第一种子点的灰度值相同的像素点,与第一种子点合并到一个区域中,直至没有可以合并的像素点为止,从而形成第四连通域。
S104、获取该二维码所在区域的图像的信息。
当确定该二维码所在区域后,通过对该二维码所在区域的图像进行校正,以及对校正后的图像进行解码,以获取该区域的图像的信息。对该二维码所在区域的图像进行校正的方式有多种,在本发明实施例中,可以采用根据该二维码所在区域的图像的四个角点坐标,通过反透视变换校正该二维码所在区域的图像。
本发明实施例提供一种识别二维码的方法,该方法可以包括确定n个第一区域的n个重心点,从n个重心点中确定该二维码的位置探测图形的重心点,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域,以及获取该二维码所在区域的图像的信息,其中,每个第一区域包括一个重心点,n个第一区域为二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数,该二维码的位置探测图形中以该重心点为中心的各个区域的面积的比例为第二预设比例。通过该方法,能够先确定n个重心点,并从该n个重心点中确定出该二维码的位置探测图形的重心点,从而更加准确的确定出该二维码的位置探测图形的重心点,提高了定位该二维码的位置探测图像的准确率,并根据该二维码的位置探测图形的重心点,确定该二维码所在区域,进而准确获取该二维码所记录的信息,提高了识别二维码的成功率。
实施例二
本发明实施例提供一种识别二维码的方法,如图6所示,该方法可以包括:
S201、获取二维码图像。
具体的,可以通过各种图像扫描设备获取二维码图像,例如,可以通过手机、相机、扫描仪等具有拍摄功能的设备拍摄需要识别的二维码,从而获取二维码图像。
S202、对该二维码图像进行图像预处理。
获取到该二维码图像后,可以对该二维码图像进行图像预处理,以简化识别二维码过程中的数据,提高识别二维码的可靠性。
具体的,对该二维码图像进行图像预处理可以包括如下三部分:
1)灰度化处理
由于获取的二维码图像通常呈现彩色效果,而二维码所在区域的图像由黑白相间的图形构成,因此,为了简化数据,提高对该二维码识别的可靠性,可以对该二维码图像进行灰度化处理,使得该二维码图像从彩色图像转换为灰度图像。
具体的,在RGB模型中,每种颜色都可以由以R(表征红色)、G(表征绿色)、B(表征蓝色)为坐标轴,建立的三维空间中的一个点表示。对彩色图像进行灰度化处理,可以使得每个像素点的颜色由直线R=G=B上的一个点来表示,从而简化数据。在本发明实施例中,可以采用加权平均法将红色、绿色、蓝色这三个颜色的分量以不同的权值进行加权平均,获取该二维码图像中的每个像素点的灰度值,具体可以通过下述公式(1)进行计算,其中g表示像素点的灰度值:
g=0.299×R+0.587×G+0.114×B 公式(1)
2)二值化处理
在将该二维码图像由彩色图像转换为灰度图像后,可以进一步对该二维码图像进行二值化处理,将该二维码图像由灰度图像转化为二值图像,即将该二维码图像中的每个像素点的灰度值设为a或b,以使该二维码图像呈现明显的黑白效果。
在本发明实施例中,可以采用大津律法对该二维码图像进行二值化处理,将该二维码图像分割为目标图像和背景图像。假设,该二维码图像的大小为M×N,目标图像和背景图像的分割域值为T,该二维码图像中像素点的灰度值小于T的像素点记为目标像素点,目标像素点的个数为N0,占该二维码图像中所有像素点的个数的比例为W0,N0个目标像素点平均灰度值为U0;该二维码图像中像素点的灰度值大于等于T的像素点记为背景像素点,背景像素点的个数为N1,占该二维码图像中所有像素点的个数的比例为W1,N1个背景像素点平均灰度值为U1。其中,N0、W0、U0、N1、W1,以及U1满足下述公式(2):
W0+W1=1 公式(2)
假设该二维码图像中所有像素点的平均灰度值为u,类间方差为g,且u和g满足下述公式(3):
u=W0×N0+W1×N1,g=W0×(U0-u)2+W1×(U1-u)2 公式(3)
由于g越大,表明该二维码图像中背景图像和目标图像的差别越大,且分割背景图像和目标图像时的正确率越高,因此,在本发明实施例中,结合公式(2)和公式(3),依次检测0-255,将T赋值为0-255中能够使得g最大的整数。
进一步的,确定出T后,将该二维码图像中灰度值小于T的像素点的灰度值设为b,将该二维码图像中灰度值大于等于T的像素点的灰度值设为a,从而使得该二维码图像呈现明显的黑白效果。
3)去噪处理
对该二维码图像进行二值化处理后,可以对该二维码图像进行去噪处理,以提高该二维码图像的清晰度。在本发明实施例中,可以采用形态学噪声滤波器,结合开运算和闭运算进行去噪处理,具体过程可参见现有技术中的相关描述,此处不再赘述。
S203、确定该二维码图像中二维码的位置探测图形的重心点。
具体的,可以先确定该二维码图像中的n个第一区域的n个重心点,然后从该n个重心点中确定该二维码的位置探测图形的重心点。在本发明实施例中,确定二维码的位置探测图形的重心点,即可以理解为定位该二维码的位置探测图形。
进一步的,确定n个第一区域的n个重心点,从该n个重心点中确定该二维码的位置探测图形的重心点的具体方式,可以参见如图4所示实施例中的相关描述,此处不再赘述。
S204、对该二维码图像进行孔洞填充。
为了确定该二维码所在区域,即将该二维码所在区域从该二维码图像中提取出来,需将该二维码所在区域划分到一个连通域中。因此,可以对该二维码图像进行孔洞填充,即将该二维码图像中的部分白色孔洞(即白色区域)填充为黑色,从而将该二维码图像划分为多个连通域,且该多个连通域中的某个连通域即为二维码所在区域的所在的连通域。
可选的,本发明实施例采用约束步长算法,逐行逐列填充该二维码图像中的白色孔洞。
具体的,采用约束步长算法对该二维码图像进行孔洞填充时,需先确定约束变量。若约束变量的取值过大,则可能会导致二维码所在区域与背景区域的相连接,若约束变量的取值过小,则可能会导致该二维码所在区域被划分到多个连通域中,因此,当约束变量的取值过大或过小时,都不利于准确提取该二维码所在区域。
根据国际标准化组织(英文:International Organization forStandardization,缩写:ISO)制定的标准可知,一个二维码的位置探测图形是由7×7个模块组成的正方形,一个模块宽度由下述公式(4)计算所得,其中,D表示模块宽度,S表示二维码的位置探测图形的面积:
公式(4)
通过观察发现,由于二维码所在区域与背景区域的距离大于模块宽度的二倍(表示为2D),因此,为了准确地提取二维码所在区域,在本发明实施例中,将约束变量设为2D。进一步的,对该二维码图像进行孔洞填充的步骤可以如下所示:
1)从左到右依次扫描该二维码图像的每一行像素点的灰度值,若该二维码图像中相邻两个黑色区域之间的白色区域的宽度小于2D,则将该白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对该二维码图像进行孔洞填充后的第一填充图像。
2)从上到下依次扫描该二维码图像的每一列像素点的灰度值,若该二维码图像中相邻两个黑色区域之间的白色区域的宽度小于2D,则将该白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对该二维码图像进行孔洞填充后的第二填充图像。
3)将该第一填充图像和该第二填充图像进行逻辑与运算,得到对该二维码图像进行孔洞填充后第三填充图像。
需要说明的是,第三填充图像即为进行孔洞填充后的二维码图像,第三填充图像包括上述多个连通域。为了保证该二维码所在区域能够被划分到一个连通域中,提高二维码的识别率,可以对该二维码图像重复执行两次或两次以上上述孔洞填充操作,以确保能够将该二维码所在区域划分到一个连通域中。
S205、完成对该二维码图像的孔洞填充后,根据该二维码的位置探测图形的重心点,确定该二维码所在区域。
完成对该二维码图像的孔洞填充后,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成第四连通域,该第四连通域即为该二维码所在区域。具体的,形成第四连通域的方式,可以参见如图4所示实施例中的相关描述,此处不再赘述。
S206、对该二维码所在区域的图像进行校正。
在获取二维码图像的过程中,可能会由于拍摄距离较远或拍摄角度较偏的问题,使得获取到的二维码图像中二维码所在区域的图像发生形变,因此,需对二维码所在区域的图像进行校正。具体的,在本发明实施例中,校正该二维码所在区域的图像可以包括:确定该二维码所在区域的四个角点坐标,并根据该四个角点坐标,通过反透视变换校正该二维码所在区域的图像。
在本发明实施例中,可以通过角点检测法确定该四个角点坐标,确定该四个角点坐标的具体过程如下:
1)确定两组不同的直线,每组包括四条直线。
示例性的,如图7所示,为角点检测法的分组示意图,其中,如图7中的(a)所示,第一组直线包括:直线1、直线2、直线3,以及直线4;如图7中的(b)所示,第二组直线包括:直线5、直线6、直线7,以及直线8。
2)将第一组中的四条直线分别从四个不同的方向由远及近逼近该二维码所在区域,直至该四条直线与该二维码所在区域相切,记录第一组切点坐标及第一组切点坐标的个数。
其中,第一组切点坐标包括第一组中的四条直线分别与该二维码所在区域的切点坐标,该四条直线分别与该二维码所在区域的切点个数可以分别表示为Q1,Q2,Q3,Q4,则第二组切点坐标的个数可以表示为j为整数。
示例性的,如图7中的(a)所示,第一组中的四条直线分别以图7中的(a)中四个箭头所指示的方向,由远及近逐渐逼近该二维码所在区域。
4)将第二组中的四条直线分别从四个不同的方向由远及近逼近该二维码所在区域,直至该四条直线与该二维码所在区域相切,记录第二组切点坐标及第二组切点坐标的个数。
其中,第二组切点坐标包括第二组中的四条直线分别与该二维码所在区域的切点坐标,该四条直线分别与该二维码所在区域的切点个数可以分别表示为Q5,Q6,Q7,Q8,则第二组切点坐标的个数可以表示为
示例性的,如图7中的(b)所示,第二组中的四条直线分别以图7中的(b)中四个箭头所指示的方向,由远及近逐渐逼近该二维码所在区域。
5)判断第一组切点坐标的个数和第二组切点坐标的个数的大小,确定切点坐标的个数较小的一组切点坐标作为候选角点坐标。
6)根据候选角点坐标,确定该四个角点坐标。
具体的,假设则确定第二组切点坐标为候选角点坐标。可以理解的是,该二维码所在区域的四个角点分别在直线5、直线6、直线7,以及直线8上。以直线5为例,若Q5>1,则计算Q5个切点坐标的重心坐标,并将该重心坐标作为一个角点坐标;若Q5=1,则将该唯一的切点坐标作为角点坐标。同理,对直线6、直线7,以及直线8进行同样的处理,从而确定该四个角点坐标。
进一步的,根据该四个角点坐标通过反透视变换校正该二维码所在区域的图像。
示例性的,如图8所示,为反透视变换的原理图。假设,校正该二维码所在区域的图像前,如图中的8(a)所示,该二维码所在区域的图像为x-y坐标系上的不规则四边形IJKL;该二维码所在区域的图像经过校正后的校正图像为w-v坐标系上正方形I’J’K’L’,如图8中的(b)所示。通过对该二维码所在区域中的每个点经过反透视变换,从x-y坐标系中映射到w-v坐标系中,从而校正该二维码所在区域的图像。具体可通过下述公式(5)进行映射:
公式(5)
其中,系数U、V、W、X、Y、Z、E、F,可以根据确定的四个角点坐标,以及已知的校正图像的四个角点坐标计算获取,具体的计算方法可参见现有技术中的计算方法,此处不再赘述。
S207、对校正后的图像进行解码,获取该二维码所在区域的图像的信息。
其中,对校正后的图像进行解码,获取该二维码所在区域的图像的信息的具体算法,可以参见现有的算法,此处不再赘述。
为了更加充分的证明本发明实施例提供的识别二维码的方法,能够提高识别二维码的成功率,下面通过实验,对传统的识别二维码的方法与本发明实施例提供的识别二维码的方法的成功率进行对比分析。
具体的,以一种常见的手机二维码扫描软件二维码扫描器1.5.0作为传统的识别二维码的方法,在MATLAB环境下,选取100幅二维码图像,该100幅二维码图像中的二维码不同,背景区域的也不同,当使用二维码扫描器1.5.0对该100幅二维码图像进行识别时,识别的成功率为85%。然而,当使用本发明实施例提供的识别二维码的方法进行识别时,识别的成功率为95%,其它5幅二维码图像识别失败的主要原因,为在拍摄二维码图像时拍摄距离过远,使得二维码的位置探测图形发生失真,从而导致二维码的位置探测图形定位错误。因此,通过实验结果表明,使用本发明实施例提供的识别二维码的方法,能够提高识别二维码率的成功率。
本发明实施例提供一种识别二维码的方法,该方法可以包括确定n个第一区域的n个重心点,从n个重心点中确定该二维码的位置探测图形的重心点,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域,以及获取该二维码所在区域的图像的信息,其中,每个第一区域包括一个重心点,n个第一区域为二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数,该二维码的位置探测图形中以该重心点为中心的各个区域的面积的比例为第二预设比例。通过该方法,能够先确定n个重心点,并从该n个重心点中确定出该二维码的位置探测图形的重心点,从而更加准确的确定出该二维码的位置探测图形的重心点,提高了定位该二维码的位置探测图像的准确率,并根据该二维码的位置探测图形的重心点,确定该二维码所在区域,进而准确获取该二维码所记录的信息,提高了识别二维码的成功率。
实施例三
如图9所示,本发明实施例提供一种二维码识别设备,包括:
确定单元10,用于确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,所述n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数。
所述确定单元10,还用于从所述n个重心点中确定所述二维码的位置探测图形的重心点,所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色。
形成单元11,用于以所述确定单元10确定的所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域。
获取单元12,用于获取所述形成单元11形成的所述二维码所在区域的图像的信息。
可选的,所述确定单元10,具体用于判断所述n个重心点中第i个重心点的灰度值是否为a,若所述第i个重心点的灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中第i+1个重心点的灰度值是否为a,1≤i≤n,i为整数。
所述确定单元10,具体用于若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
可选的,所述确定单元10,具体用于以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
所述确定单元10,具体用于将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色。
所述确定单元10,具体用于将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
可选的,所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1。
所述第二预设比例为9:25:49。
可选的,结合图9,如图10所示,所述形成单元11包括划分模块110和形成模块111。
所述划分模块110,用于对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域。
所述形成模块111,用于以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述划分模块110划分的所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
可选的,所述划分模块110,具体用于从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像。
所述划分模块110,具体用于从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像。
所述划分模块110,具体用于将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
本发明实施例提供一种二维码识别设备,能够确定n个第一区域的n个重心点,从n个重心点中确定该二维码的位置探测图形的重心点,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域,以及获取该二维码所在区域的图像的信息,其中,每个第一区域包括一个重心点,n个第一区域为二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数,该二维码的位置探测图形中以该重心点为中心的各个区域的面积的比例为第二预设比例。使用本发明实施例提供一种二维码识别设备识别待识别的二维码时,能够先确定n个重心点,并从该n个重心点中确定出该二维码的位置探测图形的重心点,从而更加准确的确定出该二维码的位置探测图形的重心点,提高了定位该二维码的位置探测图像的准确率,并根据该二维码的位置探测图形的重心点,确定该二维码所在区域,进而准确获取该二维码所记录的信息,提高了识别二维码的成功率。
实施例四
如图11所示,本发明实施例提供一种二维码识别设备,该二维码识别设备可以包括:摄像头20、处理器21、存储器22,以及***总线23。所述摄像头20、处理器21,以及存储器22之间通过所述***总线23连接并完成相互之间的数据传输。
所述摄像头20可以为任一种具有拍摄功能的模块,用于获取待识别二维码图像。
所述处理器21可以是一个中央处理器(英文:Central Processing Unit,缩写:CPU),或者是特定集成电路(英文:Application Specific Integrated Circuit,缩写:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
所述存储器22可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);所述存储器22也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);所述存储器22还可以包括上述种类的存储器的组合。
当所述二维码识别设备运行时,所述摄像头20、处理器21,以及存储器22,可以执行图4或图6所述的方法流程,具体包括:
所述处理器21,用于确定n个第一区域的n个重心点,并从所述n个重心点中确定所述二维码的位置探测图形的重心点,且以所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域,以及获取所述二维码所在区域的图像的信息。
其中,每个第一区域包括一个重心点,所述n个第一区域为所述摄像头20获取的待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数。所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色。
所述存储器22,用于存储所述n个第一区域的代码、所述n个重心点的代码、所述二维码的位置探测图形的重心点的代码、所述二维码所在区域的代码、所述二维码所在区域的图像的信息的代码、所述水平区域的代码、所述垂直区域的代码、所述第一预设比例的代码、所述第二预设比例的代码,以及控制所述处理器21完成上述过程的软件程序,从而所述处理器21通过执行所述软件程序,并调用所述n个第一区域的代码、所述n个重心点的代码、所述二维码的位置探测图形的重心点的代码、所述二维码所在区域的代码、所述二维码所在区域的图像的信息的代码、所述水平区域的代码、所述垂直区域的代码、所述第一预设比例的代码,以及所述第二预设比例的代码,完成上述过程。
可选的,所述处理器21,具体用于判断所述n个重心点中第i个重心点的灰度值是否为a,若所述第i个重心点的灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中第i+1个重心点的灰度值是否为a,1≤i≤n,i为整数。
所述处理器21,具体用于若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
可选的,所述处理器21,具体用于以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
所述处理器21,具体用于将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色。
所述处理器21,具体用于将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
可选的,所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1。
所述第二预设比例为9:25:49。
可选的,所述处理器21,具体用于对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域。
所述处理器21,具体以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
可选的,所述处理器21,具体用于从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像。
所述处理器21,具体用于从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像。
所述处理器21,具体用于将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
本发明实施例提供一种二维码识别设备,能够确定n个第一区域的n个重心点,从n个重心点中确定该二维码的位置探测图形的重心点,以该二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成该二维码所在区域,以及获取该二维码所在区域的图像的信息,其中,每个第一区域包括一个重心点,n个第一区域为二维码图像中水平区域和垂直区域的重叠区域,水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,该二维码图像至少包括二维码所在区域,n≥3,n为整数,该二维码的位置探测图形中以该重心点为中心的各个区域的面积的比例为第二预设比例。使用本发明实施例提供一种二维码识别设备识别待识别的二维码时,能够先确定n个重心点,并从该n个重心点中确定出该二维码的位置探测图形的重心点,从而更加准确的确定出该二维码的位置探测图形的重心点,提高了定位该二维码的位置探测图像的准确率,并根据该二维码的位置探测图形的重心点,确定该二维码所在区域,进而准确获取该二维码所记录的信息,提高了识别二维码的成功率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种识别二维码的方法,其特征在于,所述方法包括:
确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,所述n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数;
从所述n个重心点中确定所述二维码的位置探测图形的重心点,所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色;
以所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域;
获取所述二维码所在区域的图像的信息;
所述从所述n个重心点中确定所述二维码的位置探测图形的重心点,包括:
判断所述n个重心点中第i个重心点的灰度值是否为a,1≤i≤n,i为整数;
若所述第i个重心点的灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中第i+1个重心点的灰度值是否为a;
若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
2.根据权利要求1所述的方法,其特征在于,所述以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,包括:
以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点;
将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色;
将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
3.根据权利要求1-2任一项所述的方法,其特征在于,
所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1;
所述第二预设比例为9:25:49。
4.根据权利要求1所述的方法,其特征在于,所述以所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域,包括:
对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域;
以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
5.根据权利要求4所述的方法,其特征在于,所述对所述二维码图像进行孔洞填充,包括:
从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像;
从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像;
将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,
其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
6.一种二维码识别设备,其特征在于,包括:
确定单元,用于确定n个第一区域的n个重心点,其中,每个第一区域包括一个重心点,所述n个第一区域为待识别二维码图像中水平区域和垂直区域的重叠区域,所述水平区域为水平方向上黑色区域的宽度和白色区域的宽度的比例为第一预设比例的区域,所述垂直区域为垂直方向上黑色区域的宽度和白色区域的宽度的比例为所述第一预设比例的区域,所述二维码图像至少包括所述二维码所在区域,n≥3,n为整数;
所述确定单元,还用于从所述n个重心点中确定所述二维码的位置探测图形的重心点,所述二维码的位置探测图形中以所述二维码的位置探测图形的重心点为中心的各个区域的面积的比例为第二预设比例,且所述二维码的位置探测图形的重心点的灰度值为a,其中,a表征所述二维码的位置探测图形的重心点呈现黑色;
形成单元,用于以所述确定单元确定的所述二维码的位置探测图形的重心点为第一种子点,进行区域生长,形成所述二维码所在区域;
获取单元,用于获取所述形成单元形成的所述二维码所在区域的图像的信息;
所述确定单元,具体用于判断所述n个重心点中第i个重心点的灰度值是否为a,若所述第i个重心点的灰度值为a,则以所述第i个重心点为第二种子点,分别进行三次区域生长,形成三个连通域,并分别计算所述三个连通域的面积,否则,判断所述n个重心点中第i+1个重心点的灰度值是否为a,1≤i≤n,i为整数;
所述确定单元,具体用于若所述三个连通域的面积的比例为所述第二预设比例,则所述第i个重心点为所述二维码的位置探测图形的重心点。
7.根据权利要求6所述的二维码识别设备,其特征在于,
所述确定单元,具体用于以所述第i个重心点为第二种子点,进行区域生长,形成第一连通域,并计算所述第一连通域的面积,所述第一连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点;
所述确定单元,具体用于将所述第一连通域中所有像素点的灰度值均设为b,从所述第二种子点开始,重新进行区域生长,形成第二连通域,并计算所述第二连通域的面积,所述第二连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点,其中,b表征所述第i个重心点呈现白色;
所述确定单元,具体用于将所述第二连通域中所有像素点的灰度值均设为a,从所述第二种子点开始,重新进行区域生长,形成第三连通域,并计算所述第三连通域的面积,所述第三连通域包括所述第二种子点和与所述第二种子点的灰度值相同的像素点。
8.根据权利要求6-7任一项所述的二维码识别设备,其特征在于,
所述黑色区域的宽度和白色区域的宽度的比例为第一预设比例包括,黑色区域的宽度:白色区域的宽度:黑色区域的宽度:白色区域的宽度:黑色区域的宽度为1:1:3:1:1;
所述第二预设比例为9:25:49。
9.根据权利要求6所述的二维码识别设备,其特征在于,所述形成单元包括划分模块和形成模块,
所述划分模块,用于对所述二维码图像进行孔洞填充,以将所述二维码图像划分为多个连通域;
所述形成模块,用于以所述二维码的位置探测图形的重心点为所述第一种子点,进行区域生长,形成第四连通域,所述第四连通域为所述划分模块划分的所述多个连通域中包括所述第一种子点和与所述第一种子点的灰度值相同的像素点的一个连通域,所述第四连通域为所述二维码所在区域。
10.根据权利要求9所述的二维码识别设备,其特征在于,
所述划分模块,具体用于从左到右依次扫描所述二维码图像的每一行像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从水平方向上对所述二维码图像进行孔洞填充后的第一填充图像;
所述划分模块,具体用于从上到下依次扫描所述二维码图像的每一列像素点的灰度值,若所述二维码图像中相邻两个黑色区域之间的白色区域的宽度小于所述模块宽度的二倍,则将所述白色区域中的所有像素点的灰度值均设为a,得到从垂直方向上对所述二维码图像进行孔洞填充后的第二填充图像;
所述划分模块,具体用于将所述第一填充图像和所述第二填充图像进行逻辑与运算,得到对所述二维码图像进行孔洞填充后第三填充图像,所述第三填充图像中包括所述多个连通域,
其中,所述模块宽度等于所述位置探测图形的面积开方后除以7。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510125930.4A CN104700062B (zh) | 2015-03-20 | 2015-03-20 | 一种识别二维码的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510125930.4A CN104700062B (zh) | 2015-03-20 | 2015-03-20 | 一种识别二维码的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104700062A CN104700062A (zh) | 2015-06-10 |
CN104700062B true CN104700062B (zh) | 2017-06-27 |
Family
ID=53347162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510125930.4A Active CN104700062B (zh) | 2015-03-20 | 2015-03-20 | 一种识别二维码的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104700062B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117677B (zh) * | 2015-07-30 | 2017-10-31 | 福建联迪商用设备有限公司 | 一种qr码特征检测方法及*** |
US9830489B2 (en) * | 2016-03-29 | 2017-11-28 | Analog Devices, Inc. | Simple code reader |
CN106372560B (zh) * | 2016-08-30 | 2018-03-27 | 腾讯科技(深圳)有限公司 | 一种二维码探测图形的检测方法和装置、终端 |
CN107886026B (zh) * | 2016-09-30 | 2019-12-13 | 腾讯科技(深圳)有限公司 | 图形码处理方法及装置 |
CN107392281A (zh) * | 2017-07-04 | 2017-11-24 | 福建新大陆电脑股份有限公司 | 一种拉伸条码的制作方法及*** |
CN112861560B (zh) | 2017-09-27 | 2023-12-22 | 创新先进技术有限公司 | 二维码定位方法及装置 |
CN109960957B (zh) * | 2017-12-26 | 2022-12-16 | 阿里巴巴集团控股有限公司 | 残缺二维码及其生成、修复和识别方法、装置及*** |
CN110555860B (zh) * | 2018-06-04 | 2023-11-14 | 青岛海信医疗设备股份有限公司 | 医学图像中肋骨区域标注的方法、电子设备和存储介质 |
CN110555850B (zh) * | 2018-06-04 | 2023-11-03 | 青岛海信医疗设备股份有限公司 | 识别图像中肋骨区域的方法、装置、电子设备和存储介质 |
CN108833786B (zh) * | 2018-06-29 | 2022-04-22 | 联想(北京)有限公司 | 一种模式控制方法和电子设备 |
CN110874898A (zh) * | 2018-08-31 | 2020-03-10 | 北京意锐新创科技有限公司 | 基于移动支付设备的收银方法和装置 |
CN109559536B (zh) * | 2018-12-10 | 2021-06-08 | 百度在线网络技术(北京)有限公司 | 交通灯、交通灯识别方法、装置、设备及存储介质 |
CN109871726A (zh) * | 2018-12-28 | 2019-06-11 | 南京天创电子技术有限公司 | 一种基于qr码及图像识别的同类仪表示数预警方法 |
CN113420859A (zh) * | 2019-03-18 | 2021-09-21 | 创新先进技术有限公司 | 二维码、二维码的生成、识别方法、装置及设备 |
CN111815725B (zh) * | 2020-07-29 | 2024-03-08 | 苏州中科全象智能科技有限公司 | 一种qr码区域定位方法 |
CN113283262A (zh) * | 2020-12-29 | 2021-08-20 | 深圳怡化电脑股份有限公司 | 一种二维码定位方法、装置、电子设备、机器可读介质 |
CN116167395B (zh) * | 2023-04-26 | 2023-09-22 | 荣耀终端有限公司 | 一种扫码方法及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708349A (zh) * | 2012-05-11 | 2012-10-03 | 深圳市天朗时代科技有限公司 | 一种矩阵式二维码的解码方法 |
CN103593695A (zh) * | 2013-11-15 | 2014-02-19 | 天津大学 | 一种dpm二维码区域定位的方法 |
CN104424457A (zh) * | 2013-08-20 | 2015-03-18 | 复旦大学 | 一种非线性扭曲情况下的二维码识别方法 |
-
2015
- 2015-03-20 CN CN201510125930.4A patent/CN104700062B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708349A (zh) * | 2012-05-11 | 2012-10-03 | 深圳市天朗时代科技有限公司 | 一种矩阵式二维码的解码方法 |
CN104424457A (zh) * | 2013-08-20 | 2015-03-18 | 复旦大学 | 一种非线性扭曲情况下的二维码识别方法 |
CN103593695A (zh) * | 2013-11-15 | 2014-02-19 | 天津大学 | 一种dpm二维码区域定位的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104700062A (zh) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104700062B (zh) | 一种识别二维码的方法及设备 | |
CN106485183B (zh) | 一种二维码定位方法及*** | |
CN105335725B (zh) | 一种基于特征融合的步态识别身份认证方法 | |
CN108369650A (zh) | 将校准图案的图像内的候选点标识为该校准图案的可能特征点的方法 | |
CN109685000A (zh) | 一种基于视觉的车位检测方法及装置 | |
CN109427066A (zh) | 任意角度的边缘检测方法 | |
CN109271870A (zh) | 行人重识别方法、装置、计算机设备及存储介质 | |
CN107424142A (zh) | 一种基于图像显著性检测的焊缝识别方法 | |
US20160004934A1 (en) | Authenticity determination system, feature point registration apparatus and method of controlling operation of same, and matching determination apparatus and method of controlling operation of same | |
CN107492094A (zh) | 一种高压电线绝缘子的无人机视觉检测方法 | |
CN104008542B (zh) | 一种针对特定平面图形的快速角点匹配方法 | |
CN104537367B (zh) | 一种vin码的校验方法 | |
CN108549836A (zh) | 照片的翻拍检测方法、装置、设备及可读存储介质 | |
CN106981081A (zh) | 一种基于深度信息提取的墙面平整度检测方法 | |
CN110400278A (zh) | 一种图像颜色和几何畸变的全自动校正方法、装置及设备 | |
CN103473537B (zh) | 一种目标图像轮廓特征表示方法及装置 | |
CN107452028B (zh) | 一种确定目标图像位置信息的方法及装置 | |
CN110503102A (zh) | 车辆识别码检测方法、装置、计算机设备和存储介质 | |
CN104537376B (zh) | 一种识别台标的方法及相关设备、*** | |
CN109886935A (zh) | 一种基于深度学习的道面异物检测方法 | |
CN104463240B (zh) | 一种仪表定位方法及装置 | |
CN104268550B (zh) | 特征提取方法及装置 | |
CN104778657B (zh) | 图像二维码融合方法及装置 | |
CN110288034A (zh) | 图像匹配方法、装置、电子设备及可读存储介质 | |
CN104978558B (zh) | 目标的识别方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |