CN104517089B - 一种二维码解码系统及其方法 - Google Patents
一种二维码解码系统及其方法 Download PDFInfo
- Publication number
- CN104517089B CN104517089B CN201310454907.0A CN201310454907A CN104517089B CN 104517089 B CN104517089 B CN 104517089B CN 201310454907 A CN201310454907 A CN 201310454907A CN 104517089 B CN104517089 B CN 104517089B
- Authority
- CN
- China
- Prior art keywords
- central point
- coordinate
- detection
- segmented areas
- msub
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1478—Methods for optical code recognition the method including quality enhancement steps adapting the threshold for pixels in a CMOS or CCD pixel sensor for black and white recognition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Toxicology (AREA)
- Health & Medical Sciences (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)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
本发明所述的一种二维码解码系统及其方法,在对码图像进行二值化处理时,通过对码图像进行分块操作,每一个分块区域的灰度阈值都不相同,因此对于每一个分块区域内的像素点在码图像被还原的过程中是判定为黑还是判定为白,并不是单纯由其自身的灰度值来决定的,而是考虑到该像素点所在分块区域的预定范围的平均灰度值。即当一个分块区域所在的预定范围的灰度值整体偏大时,那么该分块区域中所对应的灰度阈值就会偏大,反之亦然。即每一个分块区域的灰度阈值是根据其所在区域的背景灰度密切相关的,因此得到的二值化结果可以排除外界环境的干扰,可以清晰呈现出二值化图像。从而为码的解码提供了一个准确的基础,保证了解码的准确性。
Description
技术领域
本发明属于二维码技术领域,具体地说是一种二维码解码系统及其方法。
背景技术
基于图像处理的二维码解码算法大体上可以分为五个步骤:图像预处理、定位与校正、读取数据、纠错以及译码。图像预处理基本步骤是灰度变换、图像滤波、阈值分割、边缘检测,二值化是包括在阈值分割里的。将获得的灰度图像经过对比度适应、亮度调节等增强算法后,利用二值化算法实现图像中背景和目标物的分割,将图片转化为只有黑白两种颜色的图像,以备解码使用。
但是,由于二维码依附的介质不同,所处的光照环境不同,以及成像系统不同等因素,会导致通过二维码识读设备抓取到的二维码图像千差万别,噪声的影响、图像光照不均、对比度过大过小等都会使得二维码图像转化为二值化图像变得很复杂,而图像的二值化过程的效果优劣又直接关乎二维码的识读效果。现有技术中的二值化方法应对复杂背景时有些不足,无法很好的处理较暗、光照不均、对比度过大或过小等问题,也就无法获得良好的二值化效果。获得的二值化图像的效果不好,便加大了后续解码的难度,或需要加大运算量,或者降低解码的准确性,甚者有可能导致解码步骤无法顺利进行。并且随着技术的进步,现有的解码技术恐无法满足用户对二维码解码速度以及准确性等各方面越来越高的需求。
发明内容
为此,本发明所要解决的技术问题在于现有技术中,从而提出一种二维码解码系统及其方法。
为解决上述技术问题,本发明是通过以下技术方案实现的:
一种二维码解码方法,包括如下步骤:
对二维码图像进行二值化处理得到二值化图像,所述二值化处理包括:
将二维码图像进行切割得到若干分块区域;
获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值;
根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值;
根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像;
对所述二值化图像进行解码,得到二维码所包含的信息内容。
所述的二维码解码方法,所述二值化处理还包括如下步骤:
根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值的获得每一分块区域的灰度值的处理包括:
根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值。
所述的二维码解码方法,所述根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值的处理中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数。
所述的二维码解码方法,利用以下公式构建所述对比度因子C:
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。
所述的二维码解码方法,所述根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值的处理中:
所述预定范围中包括n*n个分块区域,其中n为大于1的整数。
所述的二维码解码方法,所述对所述二值化图像进行解码,得到二维码所包含的解码信息的处理包括:
确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;并分别确定探测图形的中心点以及校正图形的中心点在原图坐标系下的坐标和在校正坐标系下的坐标;所述探测图形包括第一探测图形,第二探测图形和第三探测图形;
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
获取所述校正后图形中包含的信息内容。
所述的二维码解码方法,确定探测图形的中心点在原图坐标系下的坐标的处理中,确定每一个探测图形的中心点坐标的步骤包括:
沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点;
沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
所述的二维码解码方法,所述确定每一个探测图形的中心点坐标的步骤还包括:
设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
所述的二维码解码方法,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
所述的二维码解码方法,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,利用以下公式得到所述检测步长:
L=Max(M×N/Mod,Min),
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数。
所述的二维码解码方法,确定校正图形的中心点在原图坐标系下的坐标的处理包括:
根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标;
在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
所述的二维码解码方法,所述根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标的处理包括:
根据所述校正图形的中心点与所述第一探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述第一探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
所述的二维码解码方法,所述在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的处理中:
所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块。
所述的二维码解码方法,在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的步骤包括:
沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;
以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。
所述的二维码解码方法,所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形的处理包括:
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
所述的二维码解码方法,所述根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程的处理中:
所述模块的灰度值为模块中心点像素的灰度值。
所述的二维码解码方法,所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数的处理中:
根据透视变换准则获取所述转换参数。
本发明还提供一种二维码解码系统,包括:
二值化模块,用于对二维码图像进行二值化处理得到二值化图像;其进一步包括:
分块单元,用于将二维码图像进行切割得到若干分块区域;
灰度值获取单元,用于获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值;
灰度阈值获取单元,用于根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值;
二值化图像获取单元,用于根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像;
解码模块,用于对所述二值化图像进行解码,得到二维码所包含的信息内容。
所述的二维码解码系统,所述二值化模块还包括:
对比度因子构建模块,用于根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述灰度值获取单元中,根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值。
所述的二维码解码系统,所述对比度因子构建模块中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数。
所述的二维码解码系统,所述对比度因子构建模块中,利用以下公式构建所述对比度因子C:
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。
所述的二维码解码系统,所述灰度阈值获取单元,设定所述预定范围中包括n*n个分块区域,其中n为大于1的整数。
所述的二维码解码系统,所解码模块包括:
坐标确定单元,用于确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;
其包括探测图形坐标获取子单元,用于确定探测图形的中心点在原图坐标系下的坐标;
校正图形坐标获取子单元,用于确定校正图形的中心点在原图坐标系下的坐标;
校正坐标获取子单元,用于确定探测图形的中心点和校正图形的中心点在校正坐标系下的坐标;
校正图形获取单元,根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
信息获取单元,用于获取所述校正后图形中包含的信息内容。
所述的二维码解码系统,所述探测图形坐标获取子单元,用于沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点;沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
所述的二维码解码系统,所述探测图形坐标获取子单元还用于设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
所述的二维码解码系统,所述探测图形坐标获取子单元,还用于根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
所述的二维码解码系统,所述探测图形坐标获取子单元中,利用以下公式得到所述检测步长:
L=Max(M×N/Mod,Min)
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数。
所述的二维码解码系统,所述校正图形坐标确定子单元,用于根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标,在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
所述的二维码解码系统,所述校正图形坐标获取子单元还用于根据所述校正图形的中心点与所述第一探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述第一探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
所述的二维码解码系统,所述校正图形坐标获取子单元中,设置所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块
所述的二维码解码系统,所述校正图形坐标获取子单元,还用于沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。
所述的二维码解码系统,所述校正图形获取单元包括:
转换参数获取子单元,用于根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
校正子单元,根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
所述的二维码解码系统,所述校正子单元中,设定所述模块的灰度值为模块中心点像素的灰度值。
所述的二维码解码系统,所述校正子单元中,根据透视变换准则获取所述转换参数。
本发明的上述技术方案与现有技术相比,具有如下技术效果:
(1)本发明所述的码解码方法与系统,在对码图像进行二值化处理时,通过对码图像进行分块操作,每一个分块区域的灰度阈值都不相同,因此对于每一个分块区域内的像素点在码图像被还原的过程中是判定为黑还是判定为白,并不是单纯由其自身的灰度值来决定的,而是考虑到该像素点所在分块区域的预定范围的平均灰度值。即当一个分块区域所在的预定范围的灰度值整体偏大时,那么该分块区域中所对应的灰度阈值就会偏大,反之亦然。即每一个分块区域的灰度阈值是根据其所在区域的背景灰度密切相关的,因此得到的二值化结果可以排除外界环境的干扰,可以清晰呈现出二值化图像。从而为码的解码提供了一个准确的基础,保证了解码的准确性。
(2)本发明所述的码解码方法与系统,在对探测图形进行检测时,首先沿第一方向进行检测,在第一方向检测的基础上沿第二方向进行检测,检测出黑:白:黑:白:黑的长度比例满足预设比例的线段,确定探测图形的中心点,进而找出所有探测图形。探测图形的检测无需在整个QR码图像范围内进行纵向和横向的逐行遍历检测,只需在沿第一方向检测时进行逐行遍历检测即可,在检测出所述第一线段中心点后不再进行逐行的遍历检测,而是在所检测出的第一线段的中心点的基础上进行检测。极大地节省了检测的步骤,简化了检测流程,提升了运算速度,达到了对QR码图像的探测图形的快速检测,从而能够提高二维码的解码速度。
(3)本发明所述的码解码方法与系统,在检测校正图形时,根据校正图形的中心点与探测图形的中心点的相对位置关系获取所述参考坐标。由于在对二维码图像识别过程中必须首先对探测图形进行检测,所以探测图形的位置在检测校正图形之前已经获得,右下角的校正图形与三个探测图形的位置关系都是固定的。结合探测图形与校正图形的位置关系,可以大致参考出校正图形的坐标,进而可以快速的检测出校正图形,有效的实现了资源的整合与优化。
(4)本发明所述的码解码方法与系统,在进行二维码的校正时,直接采用三个探测图形和一个校正图形来获得转换参数,由于探测图形和和校正图形的检测技术已经相对成熟,检测的准确性程度较高,不仅整体计算相对简单快速,占用内存较少,同时可以很好的避免由于边缘检测算法带来的不足,获得良好的校正效果。
附图说明
为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1是本发明所述的一种二维码解码方法流程图;
图2是一种实施例所述的分块区域预定范围示意图;
图3是二维码图像的原始图像;
图4是二维码图像二值化后的效果图像;
图5是一种实施例所述的二维码探测图形的检测方法流程图;
图6是一种实施例所述的探测图形和定位点的位置示意图;
图7是一种实施例所述的获取校正图形的中心点的坐标的流程图;
图8是一种实施例所述的获取校正图形的中心点的坐标的示意图;
图9是二维码图像所在的原图坐标系示意图;
图10是二维码图像校正后图像所在的校正坐标系示意图;
图11是校正后的二维码图像效果图;
图12是本发明所述的一种二维码解码系统结构图。
具体实施方式
实施例1
本实施例提供了一种二维码解码方法,如图1所示,包括如下步骤:
对二维码图像进行二值化处理得到二值化图像,所述二值化处理包括:
将二维码图像进行切割得到若干分块区域。
获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值。
根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值。
根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像。
对所述二值化图像进行解码,得到二维码所包含的信息内容。所述信息内容包括二维码的版本信息,格式信息、纠错等级信息、内容信息等关键信息,判断二维码图像的正确性,并根据编码规则对码图内容进行解析,这种方法在现有技术中有较为成熟的应用,且这并不是本发明的发明点,因此在本实施例中不再赘述。
本实施例中,由于每一个分块区域的灰度阈值都不相同,因此对于每一个分块区域内的像素点在二维码图像被二值化的过程中是判定为黑还是判定为白,并不是单纯由其自身的灰度值来决定的,而是考虑到该像素点所在分块区域所在的预定范围的平均灰度值。例如,当某一个像素点的灰度值为150时,如果其所在分块区域所在的预定范围的平均灰度值为180,即灰度阈值为180,那么在对该分块区域进行二值化处理时,由于该像素点的灰度值小于灰度阈值,应当将其设定为黑色。而同样是灰度值为150的像素点,如果其所在分块区域所在的预定范围的平均灰度值为100,即灰度阈值为100,则该像素点的灰度值大于灰度阈值,在进行二值化处理时就将该像素点判定为白色。按照这个判定规则对该分块区域的每一个像素点进行判断得出其二值化的数值。继而对每一个分块区域内的不同像素点进行如此判断,最终将整个二维码图像按照判断后得出的二值化数值进行二值化,完成了二维码图像的二值化过程。
本实施例中,所述二值化处理还包括如下步骤:
根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值的获得每一分块区域的灰度值的处理包括:
根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值。
进一步地,本实施例中,所述根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值的处理中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数。
本实施例中,所述分块处理的步骤中,将二维码图像进行切割得到的每一个分块区域大小相同,每一分块区域中均包含m*m个像素点,其中m为大于1的整数。所述分块区域的个数为:
水平块个数:subW=W/m,其中W表示横向上的像素点总和。
垂直块个数:subH=H/m,其中H表示纵向上的像素点总和。
我们可以根据灰度图像的长和宽的乘积大小来确定分块图像的大小,例如,将640像素*640像素的二维码灰度图像分成4像素*4像素的块区域;将752像素*480像素的二维码灰度图像分成40像素*40像素的块区域;将1280像素*720像素的二维码灰度图像分成80像素*80像素的块区域。但是为了尽可能的保证二值化的精准度,并且尽可能的减少不必要的运算,在所述分块处理的步骤中,每一分块区域优选为8*8个像素点。
在获取所述灰度值的时候,与对比度因子相关。如前所述,对比度因子是和整个二维码图像的最大灰度值和最小灰度值的差值相关的,而针对每一个分块区域来说,当其内像素点的最大灰度值和最小灰度值之间的差值大于对比度因子时,可以理解为该分块区域内的像素点的灰度值的均匀性较差,很难采用某一个值来代表该分块区域内的平均灰度值,因此直接采用所有像素点的灰度值的和除以像素点的个数来计算平均灰度值。而当该分块区域内像素点的最大灰度值和最小灰度值之间的差值小于对比度因子时,可以认为在该分块区域内的所有像素点的灰度值的均匀性较好,可以选择某一个数值来代表整个分块区域的平均灰度值。
为了方便说明,将与一个分块区域相邻的几个分块区域定义为部分邻域。当该分块区域中最小灰度值小于部分邻域的平均灰度值时,即该分块区域的灰度值相较于其背景来说灰度值偏低,那么理论上该分块区域的灰度值偏低,希望最终设定为黑色。但是由于最终的二值化结果需要结合阈值来进行判断,当该分块区域内的像素点的数值小于其对应的灰度阈值时才能最终设定为黑色。而灰度阈值的设定需要结合预定范围中所包含的所有分块区域的平均灰度值,所以为了最大限度的将阈值进行合理化的扩大,故将该分块区域的平均灰度值设定为部分邻域的平均灰度值。因此该分块区域中的平均灰度值取较大的值,能够使灰度阈值合理化的扩大,提高该分块区域内的像素点在二值化处理时被判定为黑色的几率。
反之当最小灰度值大于部分邻域的平均灰度值时,即该分块区域的灰度值偏高,希望最终设定为白色。所以为了最大限度的将阈值进行合理化的缩小,故将该分块区域的平均灰度值设定为最小灰度值的一半,因此该分块区域中的平均灰度值取较小的值,能够使灰度阈值合理化的减小,提高该分块区域内的像素点在二值化处理时被判定为白色的几率。
本实施例中,优选地,利用以下公式构建所述对比度因子C:
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。Y0和Y1的取值范围都是在0-255之间,因为灰度图像的灰度值范围0-255,在Y0=110,Y1=130能够得到最理想的二值化效果。故优选所述亮度差常数为Y0=110,Y1=130。C0、C1和C2的取取值也是在0-255之间,并且要求递增,在C0=4、C1=14、C2=24能够得到最理想的二值化效果。故所述对比度因子C的公式中,优选C0=4、C1=14、C2=24。
本实施例中,优选地,所述根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值的处理中:
所述预定范围中包括n*n个分块区域,其中n为大于1的整数。
所述预定范围中包括n*n个分块区域,其中n为大于1的整数。如前所述,预定范围的选择可以根据系统运算能力和用户对运算时间的接受程度来选择,一般情况下,为了能够较快响应又能够有较好的结果为佳当然为了追求整体二值化的精准度,可以进一步将预定范围扩大,但是综合考虑整体的运算量以及实际的需求,优选所述预定范围中包括5*5个分块区域。
如图2所示,其中的每一个原点均代表一个分块区域。当选择预定范围内包括5*5个分块区域时,如图中第3行第3列的分块区域(3,3),其所在预定范围即为图中所标出的正方形区域,该预定范围中一共包含25个分块区域。故计算其灰度阈值时即为这25个分块区域的平均灰度值。
需要说明的是针对分块区域处于边缘处或者边角处的情况来说,以其为中心的5*5个分块区域并不能全部在二维码图像中找到,对此我们选择找到其中所能找到的以其为中心的5*5个分块区域内剩余分块区域。例如图中第一行第一列的分块区域,无法找全25个分块区域,此时只需要将图中虚线部分的分块区域作为其预定范围即可。故此处将虚线部分的分块区域的灰度值进行加和计算求得平均值即为该分块区域的灰度阈值。对分块区域处于边缘处或者边角处的情况的处理,使得获得的二值化图像的效果很好,不会出现边缘模糊的效果。其效果如图3所述的二维码图像的原始图像以及二值化后得到的图4所示。
利用本实施例中提供的二维码解码方法,能够在对二维码图形进行二值化处理时,清晰准确的还原二维码图像并使二维码图像的目标物体与背景更好地进行分割,很好地克服了较暗、光照不均带来的影响。
实施例2
本实施例在实施例1的基础上,做如下改进:
所述对所述二值化图像进行解码,得到二维码所包含的解码信息的处理包括:
确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;并分别确定探测图形的中心点以及校正图形的中心点在原图坐标系下的坐标和在校正坐标系下的坐标;所述探测图形包括第一探测图形,第二探测图形和第三探测图形;
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
需要说明的是,本实施例中所述的方法主要应用于QR码中。
获取所述校正后图形中包含的信息内容。
优选地,本实施例中,确定探测图形的中心点在原图坐标系下的坐标的处理中,确定每一个探测图形的中心点坐标的步骤,包括:
沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点。
沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
本实施例应用探测图形自身的特点进行探测图形的快速检测。探测图形自身的特点即每个所述的探测图形可以看作是由3个重叠的同心的正方形组成,它们分别为7*7个深色模块、5*5个浅色模块和3*3个深色模块。此处所述的模块是指二维码图像的基本信息存储单元。因此其理论上应该满足黑:白:黑:白:黑的比例为1:1:3:1:1。
由于二值化后的图像中,对于每一个模块内的每一个像素点来说,其灰度值或者为0或者为255,我们在判断线段比例是否满足第一预设比例时实质是根据像素点的灰度值来判断是黑色还是白色,最后求得整体黑白比例是否满足第一预设比例。
本实施例所述的二维码探测图形的检测方法,如图5所示,还包括如下步骤:沿第一方向对经过所述第二线段的中心点直线进行检测,若检测到黑:白:黑:白:黑的长度比例满足第一预设比例的线段,则所述第二线段的中心点为探测图形的中心点,否则返回沿第一方向对二维码进行检测的步骤。
进一步地,还包括沿与所述第一方向呈45°角或负45°角的对角线方向对经过所述第二线段的中心点直线进行检测,若检测到黑:白:黑:白:黑的长度比例满足第一预设比例的线段,则所述第二线段的中心点为探测图形的中心点,否则返回沿第一方向对二维码进行检测的步骤。上述检测均是为了保证快速检测的准确性而设置的。
下面结合图5进行进一步阐述。图5所示为一个完整的流程示意图,此处的第一方向可以是横向方向还可以是纵向方向。图5中首先沿第一方向对二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点CJ,显然第一线段的中心点一定是探测图形在第一方向上的中心点,但是其不一定是探测图形在第二方向上的中心点。以第一方向检测中得到的第一线段的中心点CJ为基准位置,得到第二方向上的直线,检测该直线上是否存在黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,若存在则确定该第二线段的中心点CIZ。由于第二线段是以探测图形的第一方向上的中心点为基准位置所做的,因此第二线段一定是位于探测图形的第一方向中心线上的,此时选择第二线段的中心点理论上一定是探测图形的纵向上的中心同时也是探测图形的几何中心点。
本实施例中的上述方案,只是从理论上认定该第二线段的中心点CIZ是探测图形的中心点,但实际上只是在第二方向进行了验证,没有确认其第一方向是否满足黑:白:黑:白:黑的长度比例满足第一预设比例的条件,有可能会造成误判的现象发生。为了避免这种现象的发生,对第二线段的中心点CIZ所在沿第一方向的直线进行了再判断,判断其所在直线上是否存在黑:白:黑:白:黑的长度比例满足第一预设比例条件的线段。同时还加入了对角线方向检测,通过对与探测图形中心点CJZ的第一方向呈正负45°角的两条对角线进行检测是否满足黑:白:黑:白:黑的长度比例满足第一预设比例的条件,如果该第二线段的中心点确实是探测图形的中心点,那么一定满足上述判断条件,否则认定其不是探测图形的中心点,进一步保证了检测的准确性。在确保对探测图形的快速检测的同时还能一定程度上保证检测的准确性,有效降低错检率。
本实施例中所述第一预设比例,第一预设比例与1:1:3:1:1相比有一定的误差。本实施例中取所述第一预设比例为:每一段黑色部分的长度和每一段白色部分的长度与黑色部分和白色部分的总长度之比均在0.5:7-2:7的范围内。即当检测到有一线段呈现5处黑白相间的情况,但是比例不能严格满足1:1:3:1:1时,我们首先可以获知该线段整体所占的像素数,同时也可以获知该线段中的每一段或黑或白的线段所占的像素数,由此便可以获知每一段或黑或白的线段所占线段整体的比例,只要这一比例满足第一预设比例即可
本实施例中在对探测图形进行检测时,充分利用了探测图形自身的特点,即探测图形的线段黑白长度比例满足1:1:3:1:1。同时考虑到失真以及图像形变等因素,设定了第一预设比例,第一预设比例的设定在保证检测的准确性的基础上还可以一定程度上消除因为失真以及轻微形变等带来的影响。
优选地,本实施例中,所述确定每一个探测图形的中心点坐标的步骤还包括:
设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
本实施例中,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
本实施例中,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,利用以下公式得到所述检测步长:
L=Max(M×N/Mod,Min),
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数。
其中M为二维码在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二维码在第一方向上包含的模块数,Min为二维码单个模块在第一方向上的像素数。
M×N/Mod为按照一定比例缩放的单个模块像素平均值,与单个模块在第一方向上的像素数进行比较,选取其中较大的一个值作为检测步长,可以减少扫描的行数。其中M×N/Mod可以是按照一定比例缩放的单个模块横向像素平均值,也可以是单个模块纵向像素平均值。但是为了能保证整体检测准确性,需要在尽可能减少扫描的行数的基础上,保证检测步长设置的合理性,所以下面结合二维码图像的版本号来进行具体阐述。
众所周知二维码图像共有40种规格,分别为版本1、版本2……版本40。版本1的规格为21模块*21模块,版本2为25模块*25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块*177模块。由此可见版本号越大,其横向和纵向方向上的模块数就越多,涵盖的信息量越大,二维码图像也会越大。由于在探测图形尚未检测出来时,我们无法获得所述二维码图像的真实版本号,现实中我们接触到的二维码图像一般为较低版本的,一般不会超过版本10。为了保证检测的准确性最好是将检测步长设定的较小,即模块中所述预设的二维码在第一方向上包含的模块数越少越好,此时可以使得检测步长最小。但是在保证检测的准确性的基础上,我们同时还想获得更快的检测速度,就希望将检测步长设置的尽可能大一些,这时将所述预设的二维码在第一方向上包含的模块数越多越好。所以基于以上两种考虑,本实施例中优选模块中设定所述预设的二维码在第一方向上包含的模块数Mod=57,即对应着版本号为10的情况。申请人采用上述设定对现有的二维码图像进行处理,不仅可以减少运算步骤,同时还能保证检测的准确性,处理结果的准确度达99%以上。
若最终检测步长大于一个模块的长度,则有可能造成进行检测时跳过了探测图形的中心方块,导致无法检测出探测图形。为了兼顾这种情况,防止由于监测步长设定的不合理而造成的漏检现象的发生,需要设定相应数值来保证检测步长不大于一个模块的长度。在经过多次的数值验证后,本实施例优选所述设置沿第一方向对二维码进行检测时的检测步长的步骤中,设定所述调整系数N为0.75。
本实施例中所述的二维码解码方法,在进行探测图形的检测时,无需在整个二维码图像范围内进行纵向和横向的逐行遍历检测,只需在沿第一方向检测时进行逐行遍历检测即可,在检测出所述第一线段中心点后不再进行逐行的遍历检测,而是在所检测出的第一线段的中心点的基础上进行检测。极大地节省了检测的步骤,简化了检测流程,提升了运算速度,并且第一方向检测时也可以按照探测步长进行,述探测步长具体数值的设定的合理性和灵活性,也进一步保证了探测图形的检测结果的准确性和高效性。
实施例3
本实施例在实施例2的基础上,做如下改进:
确定校正图形的中心点在原图坐标系下的坐标的处理包括:
根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标;
在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
如图6所示,第一探测图形3为位于整个二维码图像的左上角的探测图形。第二探测图形4和第三探测图形5可以分别为整个二维码图像的右上角和左下角的探测图形,也可以分别为整个二维码图像的左下角和右上角的探测图形。由于标准的二维码呈现正方形的结构,并且校正图形的中心与第二探测图形4在纵向上的距离与第三探测图形5和第一探测图形3的中心点的纵向距离相差3个模块。校正图形的中心与第三探测图形5在横向上的距离与第二探测图形4和第一探测图形3的中心点的横向距离相差3个模块。
所述根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标的处理包括:
根据所述校正图形的中心点与所述第一探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述第一探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
不同的二维码版本,校正图形的个数及位置也不相同,本实施例的意图并非找出所有的校正图形,而是找出位于整个二维码图像中的右下角的校正图形。因为设立校正图形的目的在于在解码过程中为矫正过程提供相应数据,使得失真的二维码图像得以还原,为后续的解码过程的顺利进行做好准备。但是对失真的二维码图像的矫正,并不需要使用所有的校正图形。如果不进行边缘检测,检测出所有的校正图形,不仅没有必要,反而会占用很多内存,同时运算量过大,也会致使整体运算速度较慢。在二维码图像完全不失真的情况下,所述校正图形的坐标就是我们所参考出的坐标,但是现实中保证二维码图像完全不失真的可能性极低,所以后续的精确定位便显得极其重要。
所述在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的处理中:
所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块。
从图6中可以看出,完成对校正图形的粗定位后,获得一个大致的参考坐标位置,然后所述参考坐标的预定范围内精确定位校正图形,其中很明显可以看到位于二维码的右下角位置处的校正图形落在了所述的正方形区域,即灰色线框处。正方形区域过大,会造成检测范围过宽,运算量过大致使检测速度较慢,若正方形区域过小,可能会造成无法检测出校正图形的情况发生。由于校正图形的大小为包含5X5个模块大小的正方形,故此处优选所述正方形区域至少包含64个模块,若无法在64个模块的检测区域内有效的检测出校正图形,将正方形区域扩大至包含256个模块,甚至是包含1024个模块。所述正方形区域的选择可以按照上述步骤由小至大的逐步检测,亦可以单独设定一个正方形区域进行检测,不在进行扩大检测。
在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的步骤包括:
沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;
以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。
在检测时先进行横向检测或者先进行纵向检测都是可以的,本实施例参照图7,以先进行横向检测为例。从上到下对参考中心点的预定范围进行横向检测,假如检测到的第一条符合第二预设比例的第三线段,选择该线段中黑色部分的中心点,该中心点可能并不是内侧黑色正方形的中心点,但一定是该正方形在横向上的中心点,因此在此基础上进行纵向检测,如果纵向线段上也存在白:黑:白的比例满足第四预设比例的第二线段,那么第四线段中黑色部分的中心点一定就是黑色正方形的中心,即校正图形的中心。
本实施例中,优选地,如图7所示,所述在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标还包括如下步骤:
以所述第四线段中黑色部分的中心点为基准位置,得到垂直于所述第四线段的第三检测线;在所述第三检测线上检测白:黑:白的长度比例满足第二预设比例的第五线段,若能够检测到所述第五线段则所述第四线段中黑色部分的中心点为校正图形的中心点,否则返回沿第一方向对所述预定范围检测的步骤。
以所述第四线段中黑色部分的中心点为基准位置,获得与所述第一方向呈45°角或负45°角的第四检测线,在所述第四检测线上检测满足白:黑:白的长度比例为预设比例的第六线段,若能够检测到所述第六线段则所述第四线段中黑色部分的中心点为校正图形的中心点,否则返回沿第一方向对所述预定范围检测的步骤。
通过对与校正图形中心点的第一方向及对角线方向的补充检测,进一步保证了检测的校正图形中心的准确性,有效降低错检率。
但是在二维码图像拍摄和二值化过程中由于误差的引入,校正图形的中心黑色模块,可能是很大也可能仅仅是一个点,而且并不在中心区域,此时我们再按照上述方法进行检测就可能无法获得校正图形。为了在这种情况下实现有效的检测校正图形,本实施例还提供了如下的方法。
根据所述第三线段的两个端点确定校正图形的第一方向边缘线;
根据所述第四线段的两个端点确定校正图形的第二方向边缘线;
根据所述第一方向边缘线和所述第二方向边缘线获取校正图形的四边形边框,所述四边形边框的几何中心即为校正图形的近似中心点;
获取所述第二线段中黑色部分的中心点与所述近似中心点的连线的中点为校正图形的中心点。
如图8所示,根据横向的第三线段的两个端点M、N和纵向的第四线段的两个端点P、Q,即可确定校正图形中中间白色正方形的四个边所在的位置,则M和N两个点的中心的横坐标即为近似中心点的横坐标,P和Q两个点的中心的纵坐标即为近似中心点的纵坐标。获得了内侧黑色正方形的中心点和整个校正图形的近似中心点,将二者中点作为校正图形中心点,可以很好的处理由于校正图形中心黑色模块严重失真造成的影响,使得本实施例应对各种复杂情况下的检测能力增强,并且可以保证高效准确的完成校正图形的检测。
在校正图形中,其包括:最外侧的5X5大小的黑色正方形、中间的3X3大小的白色正方形和最内侧的1个模块大小的黑色正方形组成。因此,如果对其进行横向或者纵向检测的话,校正图形内部应该满足白:黑:白的比例为1:1:1,并且长度为3个模块的长度。在二维码的其他位置并没有符合这一条件的线段。但是,从图中可以看出,由于受到干扰,图8所示的校正图形的内侧的黑色正方形并不在白色正方形的中心部分。而实际情况中,这种受到干扰的二维码是占大部分的,即大部分的校正图形中的线段的黑白比例都不能满足上述比例,因此设定一第二预设比例,该第二预设比例在1:1:1的比例上可以允许有一定的误差范围。本实施例中,取所述第二预设比例为白色部分和黑色部分的长度之和在0.7L-1.3L的范围内,其中L为三个模块的长度,且白色部分和黑色部分的长度均小于或等于2个模块的长度。即每一段白:黑:白中的每一白色线段和每一黑色线段的长度不得大于2个模块的长度,整体白:黑:白线段的长度在2.1个模块到3.9个模块的之间。如果每一白色线段、每一黑色线段以及每一段白:黑:白的线段长度超出上述限定范围内,便认为不符合第二预设比例。上述第二预设比例的设定是经过多次数据验证得出的,能够很好的保证检测的准确性。
实施例4
本实施例在实施例1-3任一实施例的基础上,做如下改进:
所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形的处理包括:
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
众所周知,对于二维码图像的解码过程是基于标准码图进行的,而对二维码图像进行校正的目的就在于将一定程度偏移、受损以及失真的图像进行校正,进而获得标准码图,以保证整个二维码图像可以顺利的完成后续的解码工作。所以本实施例在对二维码图像进行校正时,首先确定了两个坐标系。
如图9所示为二维码图像所在的原图坐标系,根据对这个图的检测可以获得相应点的坐标。图10为校正后图像所在的校正坐标系,其中每一个小正方形代表了一个点,在图中并未将所有的点表示出来,其中点的个数与所述二维码图像中的模块数相等。两幅图中0对应的左上角探测图形,1对应的右上角探测图形,2对应的校正图形,3对应的是左下角探测图形。如图3所示,当把二维码校正完成后,二维码中左上角的探测图形的中心距离二维码的上边缘为四个模块距离、左边缘的距离为四个模块距离,因此在校正坐标系中第四行第四列所对应的点对应到原图坐标系中的二维码图像的左上角探测图形的中心点处。如果该点的灰度值时0,则校正坐标系中第四行第四列所对应的点的灰度值也是0,如果该点的灰度值时255,则校正坐标系中第四行第四列所对应的点的灰度值也是255。本实施例中,探测图形中心点一定是黑色的,因此相对应的在校正坐标系中的第四行第四列所对应的点也是黑色的。依次类推,将校正坐标系中的每一个点均按照上述操作获得灰度值,完成后便可以得到图4所示的校正后的二维码图像了。
所述根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程的处理中:所述模块的灰度值为模块中心点像素的灰度值。直接按照模块中心点的像素值作为模块的灰度值,因为在二维码图像中,每一个模块作为最小的图像单元,其相对于整个二维码图来说,其所占的面积非常小,其内部的所有像素点的灰度值差异都非常小,因此可以选择其中一个像素点的像素值来代替并不会引入误差,依然能够保证校正的精确性,而且运算量也大大降低,能够提高校正的效率。
本实施例中,优选地,所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数的处理中:根据透视变换准则获取所述转换参数。于二维码图像在拍摄时物距较短,一般会存在较明显的透视现象,因此需要对拍摄得到的二维码图像进行透视变换,所谓透视变换即将二维码图像在当前坐标系下的每一坐标转换至校正坐标系下并得到校正后的坐标。在实现透视变换过程中需要获取较为精准的透视变换参数。本实施例结合可以明确检测出的探测图形和校正图形进行运算获得变换参数。
如图9所示为二维码图像所在的原图坐标系,根据对这个图的检测可以获得相应点的坐标。图3为校正后图像所在的校正坐标系,其中每一个小正方形代表了一个点,在图中并未将所有的点表示出来,其中点的个数与所述二维码图像中的模块数相等。两幅图中0对应的左上角探测图形,1对应的右上角探测图形,2对应的校正图形,3对应的是左下角探测图形。如图3所示,当把二维码校正完成后,二维码中左上角的探测图形的中心距离二维码的上边缘为四个模块距离、左边缘的距离为四个模块距离,因此在校正坐标系中第四行第四列所对应的点对应到原图坐标系中的二维码图像的左上角探测图形的中心点处。如果该点的灰度值时0,则校正坐标系中第四行第四列所对应的点的灰度值也是0,如果该点的灰度值时255,则校正坐标系中第四行第四列所对应的点的灰度值也是255。本实施例中,探测图形中心点一定是黑色的,因此相对应的在校正坐标系中的第四行第四列所对应的点也是黑色的。依次类推,将校正坐标系中的每一个点均按照上述操作获得灰度值,完成后便可以得到图11所示的校正后的二维码图像了。
下面结合公式具体阐述获取转换参数步骤。设校正前三个探测图形和一个校正图形的坐标分别为第P0(XA,YA),P1(XB,YB),P2(XC,YC),P3(x3p,y3p),校正后三个探测图形和一个校正图形坐标分别为A0(x0,y0),A1(x1,y1),A2(x2,y2),A3(x3,y3)。
根据校正后三个探测图形和一个校正图形坐标计算参数:
dy2=y3-y2
dy3=y0-y1+y2-y3
若dy2=0且dy3=0:
其中dy2=0则说明定位点与左下角探测图形在纵向上的距离为0,即说明二者在同一条直线上。
若dy3=0则说明左上角探测图形与右上角探测图形之间的纵向距离与左下角探测图形和定位点的纵向距离相等但方向相反。
这种情况下:
否则:
其中
同理,根据上述公式,将校正前的三个探测图形中心点和一个校正图形中心点坐标代入公式,求出相应参数b11,b21,b31,b12,b22,b32,b13,b23,b33。
最后,由a11,a21,...,a33和b′11,b′21,...,b′33两组参数计算出校正后与校正前图像之间的转换参数CX:
设二维码每行每列包含的模块数均为R,则校正坐标系中包括R*R个点,对于第i个点Pi(xi,yi),通过下列公式计算该点在原图像中对应点的坐标:
将原图坐标系的每一个模块的灰度值相应的赋值给校正坐标系,便可以完成校正过程。如图11所示,便是为完成校正赋值后的效果图。
本实施例所述校正图形中心点,也可以替换为右下角点,当为右下角点时选择虚拟的探测图形所对应的点,所谓虚拟的探测图形是指,在横向上与左下角探测图形的距离为右上角探测图形与左上角探测图形的横向距离;在纵向上与右上角探测图形的距离为左下角探测图形与左上角探测图形的纵向距离,符合上述要求的点为虚拟的探测图形所对应的点。
因为存在一些二维码图像版本本身不存在校正图形,如版本号为1的二维码图像便不存在校正图形。也有一些情况比如说因为失真严重导致校正图形不存在,或者受限于检测技术无法成功检测到校正图形。此时便用右下角点来替代校正图形,可以很好的达到检测效果。
本实施例所述的二维码图像的校正方法无需进行边缘检测,而是直接采用三个探测图形和一个校正图形来获得转换参数,由于探测图形和和校正图形的检测技术已经相对成熟,检测的准确性程度较高,可以很好的避免由于边缘检测算法带来的不足,获得良好的校正效果。
实施例5
本实施例还提供一种二维码解码系统,如图12所示,包括:
二值化模块,用于对二维码图像进行二值化处理得到二值化图像;其进一步包括。
分块单元,用于将二维码图像进行切割得到若干分块区域。
灰度值获取单元,用于获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值。
灰度阈值获取单元,用于根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值。
二值化图像获取单元,用于根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像。
解码模块,用于对所述二值化图像进行解码,得到二维码所包含的信息内容。
优选地,本实施例中的所述二值化模块还包括:
对比度因子构建模块,用于根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述灰度值获取单元中,根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值。
其中,所述对比度因子构建模块中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数,优选m=8。
上述公式中,所述对比度因子构建模块中,利用以下公式构建所述对比度因子C:
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。Y0和Y1的取值范围都是在0-255之间,因为灰度图像的灰度值范围0-255,在Y0=110,Y1=130能够得到最理想的二值化效果。故优选所述亮度差常数为Y0=110,Y1=130。C0、C1和C2的取取值也是在0-255之间,并且要求递增,在C0=4、C1=14、C2=24能够得到最理想的二值化效果。故所述对比度因子C的公式中,优选C0=4、C1=14、C2=24。
在本实施例中,优选所述灰度阈值获取单元,设定所述预定范围中包括n*n个分块区域,其中n为大于1的整数,优选n=5。
利用本实施例中提供的二维码解码方法,能够在对二维码图形进行二值化处理时,清晰准确的还原二维码图像并使二维码图像的目标物体与背景更好地进行分割,很好地克服了较暗、光照不均带来的影响。
本实施例中的二维码解码系统,所解码模块包括:
坐标确定单元,用于确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;
其包括探测图形坐标获取子单元,用于确定探测图形的中心点在原图坐标系下的坐标;
校正图形坐标获取子单元,用于确定校正图形的中心点在原图坐标系下的坐标;
校正坐标获取子单元,用于确定探测图形的中心点和校正图形的中心点在校正坐标系下的坐标;
校正图形获取单元,根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
信息获取单元,用于获取所述校正后图形中包含的信息内容。
优选地,所述探测图形坐标获取子单元,用于沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点;沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
进一步优选地,所述探测图形坐标获取子单元还用于设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
进一步优选地,所述探测图形坐标获取子单元,还用于根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
其中,所述探测图形坐标获取子单元中,利用以下公式得到检测步长:
L=Max(M×N/Mod,Min),
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数,优选所述Mod=57。
本实施例中,所述校正图形坐标确定子单元,用于根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标,在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
本实施例中的所述校正图形坐标获取子单元还用于根据所述校正图形的中心点与所述第一探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述第一探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
优选地,所述校正图形坐标获取子单元中,设置所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块,优选所述正方形区域包含256个模块或者1024个模块。
进一步地,所述校正图形坐标获取子单元,还用于沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。所述第二预设比例为白色部分和黑色部分的长度之和在0.7L-1.3L的范围内,其中L为三个模块的长度,且白色部分和黑色部分的长度均小于或等于2个模块的长度。
进一步地,所述校正图形获取单元包括:
转换参数获取子单元,用于根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
校正子单元,根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
本实施例中的所述校正子单元中,设定所述模块的灰度值为模块中心点像素的灰度值。
本实施例中的所述校正子单元中,根据透视变换准则获取所述转换参数。
本实施例所述的二维码图像的校正方法无需进行边缘检测,而是直接采用三个探测图形和一个校正图形来获得转换参数,可以很好的避免由于边缘检测算法带来的不足,获得良好的校正效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
Claims (30)
1.一种二维码解码方法,其特征在于,包括如下步骤:
对二维码图像进行二值化处理得到二值化图像,所述二值化处理包括:
将二维码图像进行切割得到若干分块区域;
获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值;
根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值;
根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像;
对所述二值化图像进行解码,得到二维码所包含的信息内容;
所述二值化处理还包括如下步骤:
根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值的获得每一分块区域的灰度值的处理包括:
根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值;
所述根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值的处理中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数。
2.根据权利要求1所述的二维码解码方法,其特征在于,利用以下公式构建所述对比度因子C:
<mrow>
<mi>C</mi>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>0</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>1</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>2</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo>></mo>
<msub>
<mi>Y</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>;</mo>
</mrow>
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。
3.根据权利要求1所述的二维码解码方法,其特征在于,所述根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值的处理中:
所述预定范围中包括n*n个分块区域,其中n为大于1的整数。
4.根据权利要求1所述的二维码解码方法,其特征在于,所述对所述二值化图像进行解码,得到二维码所包含的解码信息的处理包括:
确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;并分别确定探测图形的中心点以及校正图形的中心点在原图坐标系下的坐标和在校正坐标系下的坐标;所述探测图形包括第一探测图形,第二探测图形和第三探测图形;
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
获取所述校正后图形中包含的信息内容。
5.根据权利要求4所述的二维码解码方法,其特征在于,确定探测图形的中心点在原图坐标系下的坐标的处理中,确定每一个探测图形的中心点坐标的步骤包括:
沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点;
沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
6.根据权利要求5所述的二维码解码方法,其特征在于,所述确定每一个探测图形的中心点坐标的步骤还包括:
设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
7.根据权利要求6所述的二维码解码方法,其特征在于,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
8.根据权利要求6或7所述的二维码解码方法,其特征在于,所述设置沿第一方向对二值化图像进行检测时的检测步长的步骤中,利用以下公式得到所述检测步长:
L=Max(M×N/Mod,Min),
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数。
9.根据权利要求4-7任一所述的二维码解码方法,其特征在于,确定校正图形的中心点在原图坐标系下的坐标的处理包括:
根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标;
在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
10.根据权利要求9所述的二维码解码方法,其特征在于,所述根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标的处理包括:
根据所述校正图形的中心点与所述第一探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述第一探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
11.根据权利要求9所述的二维码解码方法,其特征在于,所述在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的处理中:
所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块。
12.根据权利要求9所述的二维码解码方法,其特征在于,在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标的步骤包括:
沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;
以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。
13.根据权利要求4所述的二维码解码方法,其特征在于,所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形的处理包括:
根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
14.根据权利要求13所述的二维码解码方法,其特征在于,所述根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程的处理中:
所述模块的灰度值为模块中心点像素的灰度值。
15.根据权利要求13或14所述的二维码解码方法,其特征在于,所述根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数的处理中:
根据透视变换准则获取所述转换参数。
16.一种二维码解码系统,其特征在于,包括:
二值化模块,用于对二维码图像进行二值化处理得到二值化图像;其进一步包括:
分块单元,用于将二维码图像进行切割得到若干分块区域;
灰度值获取单元,用于获取每一分块区域的所有像素点的灰度值,并根据所述所有像素点的灰度值获得每一分块区域的灰度值;
灰度阈值获取单元,用于根据每一分块区域所在的预定范围的平均灰度值,确定该分块区域的灰度阈值;
二值化图像获取单元,用于根据每一分块区域对应的灰度阈值对该分块区域中的像素点进行二值化处理,得到二值化图像;
解码模块,用于对所述二值化图像进行解码,得到二维码所包含的信息内容;
所述二值化模块还包括:
对比度因子构建模块,用于根据二维码图像中像素点灰度值的关系构建对比度因子,所述对比度因子与二维码图像中最大灰度值和最小灰度值的差值呈正比关系;
所述灰度值获取单元中,根据某一分块区域中最大灰度值和最小灰度值的差值与所述对比度因子的关系并结合与该分块区域相邻的其他分块区域的灰度值,确定该分块区域的灰度值;
所述对比度因子构建模块中利用以下公式获得分块区域(i,j)的灰度值
其中,i表示分块区域所在行的编号,j表示分块区域所在列的编号,Sij表示该分块区域中所有像素点的灰度值的总和,C表示对比度因子,maxij表示该分块区域中的最大灰度值,minij表示该分块区域中最小灰度值,m表示分块区域中包含m*m个像素点,其中m为大于1的整数。
17.根据权利要求16所述的二维码解码系统,其特征在于,所述对比度因子构建模块中,利用以下公式构建所述对比度因子C:
<mrow>
<mi>C</mi>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>0</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>1</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo><</mo>
<msub>
<mi>Y</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>C</mi>
<mn>2</mn>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
</mrow>
</msub>
<mo>></mo>
<msub>
<mi>Y</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>;</mo>
</mrow>
其中C0、C1、C2均为0-255的常数,Y0和Y1均为亮度差常数,且Y0和Y1均为0-255的常数。
18.根据权利要求16所述的二维码解码系统,其特征在于,所述灰度阈值获取单元,设定所述预定范围中包括n*n个分块区域,其中n为大于1的整数。
19.根据权利要求18所述的二维码解码系统,其特征在于,所解码模块包括:
坐标确定单元,用于确定原图坐标系和校正后图像所在的校正坐标系,所述校正坐标系中的每一点均对应着原图坐标系中的一个点;
其包括探测图形坐标获取子单元,用于确定探测图形的中心点在原图坐标系下的坐标;
校正图形坐标获取子单元,用于确定校正图形的中心点在原图坐标系下的坐标;
校正坐标获取子单元,用于确定探测图形的中心点和校正图形的中心点在校正坐标系下的坐标;
校正图形获取单元,根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下对二值化图像进行校正,获得校正后图形;
信息获取单元,用于获取所述校正后图形中包含的信息内容。
20.根据权利要求19所述的二维码解码系统,其特征在于,所述探测图形坐标获取子单元,用于沿第一方向对所述二值化图像进行检测,检测黑:白:黑:白:黑的长度比例满足第一预设比例的第一线段,确定所述第一线段的中心点;沿第二方向对经过所述第一线段的中心点的直线进行检测,得到黑:白:黑:白:黑的长度比例满足第一预设比例的第二线段,所述第二线段的中心点为探测图形的中心点。
21.根据权利要求20所述的二维码解码系统,其特征在于,所述探测图形坐标获取子单元还用于设置沿第一方向对所述二值化图像进行检测时的检测步长,所述检测步长小于或等于二值化图像中单个模块在第一方向上包含的像素数。
22.根据权利要求21所述的二维码解码系统,其特征在于,所述探测图形坐标获取子单元,还用于根据二值化图像在第一方向上包含的像素数与单个模块在第一方向上包含的像素数来获得所述检测步长。
23.根据权利要求21或22所述的二维码解码系统,其特征在于,所述探测图形坐标获取子单元中,利用以下公式得到所述检测步长:
L=Max(M×N/Mod,Min)
其中M为二值化图像在第一方向上包含的像素数,N为调整系数且0<N≤1,Mod为预设的二值化图像在第一方向上包含的模块数,Min为二值化图像单个模块在第一方向上的像素数。
24.根据权利要求19所述的二维码解码系统,其特征在于,所述校正图形坐标确定子单元,用于根据校正图形的中心点与探测图形的中心点的相对位置关系获取参考坐标,在所述参考坐标的预定范围内精确定位校正图形,获取校正图形的中心点的坐标。
25.根据权利要求24所述的二维码解码系统,其特征在于,所述校正图形坐标获取子单元还用于根据所述校正图形的中心点与所述探测图形的中心点的横向距离获取参考横坐标;根据所述校正图形的中心点与所述探测图形的中心点的纵向距离获取参考纵坐标;利用下述公式确定所述横向距离和所述纵向距离:
所述横向距离为:εh=ε(XR-XA);
所述纵向距离为:εz=ε(YR-YA);
其中XR=XB-XA+XC,YR=YB-YA+YC;(XB,YB)为第二探测图形的中心点的坐标;(XC,YC)为第三探测图形的中心点的坐标;ε为校正图形偏离因子,且ε=(N-3)/K,K为二值化图像第一方向上包含的模块的数量。
26.根据权利要求24或25所述的二维码解码系统,其特征在于,所述校正图形坐标获取子单元中,设置所述预定范围为包含所述参考坐标的正方形区域,所述正方形区域包含至少64个模块。
27.根据权利要求24所述的二维码解码系统,其特征在于,所述校正图形坐标获取子单元,还用于沿第一方向对所述预定范围检测,检测白:黑:白的长度比例满足第二预设比例的第三线段,确定所述第三线段中黑色部分的中心点;以所述第三线段中黑色部分的中心点作为基准位置,得到垂直于所述第三线段的直线,在该直线上检测白:黑:白的长度比例满足第二预设比例的第四线段,所述第四线段中黑色部分的中心点为校正图形的中心点。
28.根据权利要求19所述的二维码解码系统,其特征在于,所述校正图形获取单元包括:
转换参数获取子单元,用于根据每一探测图形中心点和校正图形中心点在所述原图坐标系下的坐标及与其在校正坐标系下的坐标获取转换参数;
校正子单元,根据所述转换参数,对所述校正坐标系中的每一点,查找到所述原图坐标系中与之对应的点所在的二值化图像中的模块,并且将该模块的灰度值赋予该点,完成二值化图像的校正过程。
29.根据权利要求28所述的二维码解码系统,其特征在于,所述校正子单元中,设定所述模块的灰度值为模块中心点像素的灰度值。
30.根据权利要求28或29所述的二维码解码系统,其特征在于,所述校正子单元中,根据透视变换准则获取所述转换参数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454907.0A CN104517089B (zh) | 2013-09-29 | 2013-09-29 | 一种二维码解码系统及其方法 |
US14/103,881 US9135489B2 (en) | 2013-09-29 | 2013-12-12 | System for decoding two dimensional code and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454907.0A CN104517089B (zh) | 2013-09-29 | 2013-09-29 | 一种二维码解码系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104517089A CN104517089A (zh) | 2015-04-15 |
CN104517089B true CN104517089B (zh) | 2017-09-26 |
Family
ID=52739106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310454907.0A Expired - Fee Related CN104517089B (zh) | 2013-09-29 | 2013-09-29 | 一种二维码解码系统及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9135489B2 (zh) |
CN (1) | CN104517089B (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069394B (zh) * | 2015-07-23 | 2017-10-10 | 福建联迪商用设备有限公司 | 二维码加权平均灰度法解码方法及系统 |
CN105069389B (zh) | 2015-07-27 | 2017-10-31 | 福建联迪商用设备有限公司 | 二维码分块解码方法及系统 |
CN105117677B (zh) * | 2015-07-30 | 2017-10-31 | 福建联迪商用设备有限公司 | 一种qr码特征检测方法及系统 |
CN105512598A (zh) * | 2015-12-29 | 2016-04-20 | 暨南大学 | 一种qr码图像取样的自适应匹配识别方法 |
JP2017187988A (ja) * | 2016-04-07 | 2017-10-12 | 東芝テック株式会社 | コード認識装置 |
CN105975892B (zh) * | 2016-05-04 | 2019-02-01 | 上海皇和信息科技有限公司 | 彩色图片二维码解码方法 |
CN106485183B (zh) * | 2016-07-14 | 2018-05-08 | 深圳市华汉伟业科技有限公司 | 一种二维码定位方法及系统 |
CN106204889B (zh) * | 2016-07-27 | 2019-03-12 | 深圳怡化电脑股份有限公司 | 一种纸币荧光区域的定位方法和装置 |
CN106874818B (zh) * | 2016-08-30 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 一种数字对象唯一标识符doi识别方法与装置 |
CN106372560B (zh) * | 2016-08-30 | 2018-03-27 | 腾讯科技(深圳)有限公司 | 一种二维码探测图形的检测方法和装置、终端 |
CN106845311A (zh) * | 2016-11-09 | 2017-06-13 | 北京鼎九信息工程研究院有限公司 | 一种图形二维码的识读方法及装置 |
CN107067403A (zh) * | 2017-03-13 | 2017-08-18 | 广州卓德信息科技有限公司 | 一种二维码图像二值化的改进方法 |
CN106951811A (zh) * | 2017-03-20 | 2017-07-14 | 深圳市金立通信设备有限公司 | 一种图像处理方法及终端 |
CN107424199B (zh) * | 2017-08-07 | 2020-11-13 | 联通系统集成有限公司河南省分公司 | 一种对图形加密数据纠错和检测的方法 |
CN108596001B (zh) * | 2017-09-21 | 2021-02-02 | 北京三快在线科技有限公司 | 二维码纠错译码方法、装置、电子设备及计算机可读介质 |
CN112861560B (zh) | 2017-09-27 | 2023-12-22 | 创新先进技术有限公司 | 二维码定位方法及装置 |
CN107977591B (zh) * | 2017-12-11 | 2020-04-28 | 维沃移动通信有限公司 | 一种二维码图像识别方法及移动终端 |
CN108268811B (zh) * | 2018-01-15 | 2021-02-02 | 深圳市易成自动驾驶技术有限公司 | 图像处理方法、装置及计算机可读存储介质 |
CN108989604B (zh) * | 2018-07-20 | 2020-05-05 | 京东方科技集团股份有限公司 | 图像加密方法、图像传输方法、电子设备、可读存储介质 |
US11514256B2 (en) | 2018-10-01 | 2022-11-29 | Hitachi Industrial Equipment Systems Co., Ltd. | Printing inspection device |
CN111380457B (zh) * | 2018-12-29 | 2024-02-06 | 上海晨兴希姆通电子科技有限公司 | 料盘的定位方法及系统 |
CN109754046B (zh) * | 2019-01-31 | 2022-09-27 | 北京迈格威科技有限公司 | 二维码、二维码的编码方法、解码方法、装置及设备 |
US11335214B2 (en) * | 2019-02-11 | 2022-05-17 | Andrea G. FORTE | Content encryption and in-place decryption using visually encoded ciphertext |
CN110084346B (zh) * | 2019-03-11 | 2022-07-19 | 广州真知码信息科技有限公司 | 一种个性化真知码的制作方法 |
CN110087063A (zh) * | 2019-04-24 | 2019-08-02 | 昆山丘钛微电子科技有限公司 | 一种图像处理方法、装置及电子设备 |
US11126808B1 (en) | 2019-05-30 | 2021-09-21 | Owens-Brockway Glass Container Inc. | Methods for dot code image processing on a glass container |
CN110348264B (zh) * | 2019-07-04 | 2023-12-26 | 北京电子工程总体研究所 | 一种qr二维码图像校正方法及系统 |
CN110543798B (zh) * | 2019-08-12 | 2023-06-20 | 创新先进技术有限公司 | 二维码的识别方法及装置 |
CN111311497B (zh) * | 2020-02-12 | 2023-05-05 | 广东工业大学 | 一种条形码图像角度校正方法和装置 |
CN111343339B (zh) * | 2020-03-03 | 2021-07-23 | 青岛海信移动通信技术股份有限公司 | 移动终端及其图像显示方法 |
CN113378595B (zh) * | 2020-03-10 | 2023-09-22 | 顺丰科技有限公司 | 二维码定位方法、装置、设备及存储介质 |
CN113515965A (zh) * | 2020-04-09 | 2021-10-19 | 富士通株式会社 | 二维码检测装置、二维码检测方法及存储介质 |
CN111753573B (zh) * | 2020-06-28 | 2023-09-15 | 北京奇艺世纪科技有限公司 | 二维码图像识别方法、装置、电子设备以及可读存储介质 |
CN114330400B (zh) * | 2020-10-12 | 2023-12-08 | 珠海格力电器股份有限公司 | 二维码图像处理方法、系统、装置、电子设备及存储介质 |
CN112507751B (zh) * | 2020-11-06 | 2024-01-09 | 福州符号信息科技有限公司 | 一种qr码的定位方法及其系统 |
CN112414679B (zh) * | 2020-12-04 | 2022-06-03 | 歌尔光学科技有限公司 | 一种提取sfr算法刀口区域的方法及装置 |
CN112541369B (zh) * | 2020-12-14 | 2022-08-05 | 合肥高维数据技术有限公司 | 一种信息码识别方法及系统 |
CN113554591B (zh) * | 2021-06-08 | 2023-09-01 | 联宝(合肥)电子科技有限公司 | 一种标签定位方法及设备 |
CN113591506A (zh) * | 2021-08-03 | 2021-11-02 | 深圳市杰恩世智能科技有限公司 | 一种鲁棒的二维码DataMatrix解码方法及系统 |
CN113673268B (zh) * | 2021-08-11 | 2023-11-14 | 广州爱格尔智能科技有限公司 | 一种用于不同亮度下的识别方法、系统及设备 |
CN113657133B (zh) * | 2021-08-24 | 2023-12-12 | 凌云光技术股份有限公司 | 一种二维码提取信息的纠正方法及装置 |
US20230161989A1 (en) * | 2021-11-23 | 2023-05-25 | VIRNECT inc. | Method and system for setting dynamic image threshold for two-dimensional identification code detection |
CN114418050B (zh) * | 2022-01-11 | 2023-12-01 | 三维码(厦门)网络科技有限公司 | 一种防伪点阵码生码方法及解码方法 |
CN116776909B (zh) * | 2023-08-28 | 2023-11-03 | 四川星点网络技术有限公司 | 一种瓶盖二维码溯源系统 |
CN117556847B (zh) * | 2024-01-05 | 2024-04-26 | 深圳爱莫科技有限公司 | 一种条烟端头二维码的识别方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081627A (en) * | 1996-08-23 | 2000-06-27 | Matsushita Electric Industrial Co., Ltd. | Two-dimensional code reader |
JP2001209751A (ja) * | 2000-01-28 | 2001-08-03 | Olympus Optical Co Ltd | 適応二値化方式 |
CN1963843A (zh) * | 2006-11-16 | 2007-05-16 | 深圳矽感科技有限公司 | 二维码及其解码方法、应用该二维码的印刷出版物 |
CN101093544A (zh) * | 2007-06-14 | 2007-12-26 | 中兴通讯股份有限公司 | 一种透视快速响应矩阵二维码图案校正的方法及系统 |
CN101093543A (zh) * | 2007-06-13 | 2007-12-26 | 中兴通讯股份有限公司 | 一种快速响应矩阵二维码图像的校正方法 |
CN101840499A (zh) * | 2010-06-01 | 2010-09-22 | 福建新大陆电脑股份有限公司 | 一种条码解码方法及其二值化方法 |
CN102708349A (zh) * | 2012-05-11 | 2012-10-03 | 深圳市天朗时代科技有限公司 | 一种矩阵式二维码的解码方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317223B1 (en) * | 1998-12-14 | 2001-11-13 | Eastman Kodak Company | Image processing system for reducing vertically disposed patterns on images produced by scanning |
JP4301775B2 (ja) * | 2002-07-18 | 2009-07-22 | シャープ株式会社 | 2次元コード読み取り装置,2次元コード読み取り方法,2次元コード読み取りプログラム及び該プログラムの記録媒体 |
JP4180497B2 (ja) * | 2003-12-05 | 2008-11-12 | 富士通株式会社 | コード種類判別方法、およびコード境界検出方法 |
JP4794847B2 (ja) * | 2004-10-29 | 2011-10-19 | キヤノン株式会社 | 2次元コードおよび情報処理方法 |
JP2007156879A (ja) * | 2005-12-06 | 2007-06-21 | Sony Corp | 情報処理装置および方法、並びにプログラム |
CN101882210B (zh) * | 2010-06-01 | 2012-06-27 | 福建新大陆电脑股份有限公司 | 矩阵式二维条码解码芯片及其解码方法 |
US8500026B2 (en) * | 2011-12-06 | 2013-08-06 | Xerox Corporation | Dual resolution two-dimensional barcode |
-
2013
- 2013-09-29 CN CN201310454907.0A patent/CN104517089B/zh not_active Expired - Fee Related
- 2013-12-12 US US14/103,881 patent/US9135489B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081627A (en) * | 1996-08-23 | 2000-06-27 | Matsushita Electric Industrial Co., Ltd. | Two-dimensional code reader |
JP2001209751A (ja) * | 2000-01-28 | 2001-08-03 | Olympus Optical Co Ltd | 適応二値化方式 |
CN1963843A (zh) * | 2006-11-16 | 2007-05-16 | 深圳矽感科技有限公司 | 二维码及其解码方法、应用该二维码的印刷出版物 |
CN101093543A (zh) * | 2007-06-13 | 2007-12-26 | 中兴通讯股份有限公司 | 一种快速响应矩阵二维码图像的校正方法 |
CN101093544A (zh) * | 2007-06-14 | 2007-12-26 | 中兴通讯股份有限公司 | 一种透视快速响应矩阵二维码图案校正的方法及系统 |
CN101840499A (zh) * | 2010-06-01 | 2010-09-22 | 福建新大陆电脑股份有限公司 | 一种条码解码方法及其二值化方法 |
CN102708349A (zh) * | 2012-05-11 | 2012-10-03 | 深圳市天朗时代科技有限公司 | 一种矩阵式二维码的解码方法 |
Non-Patent Citations (2)
Title |
---|
"基于DSP的QR码图像识别研究与实现";唐宇希;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100215;正文第19-36页 * |
"矩阵式二维条码的生成与解码技术的研究及应用";祁晓莉;《中国优秀硕士学位论文全文数据库 信息科技辑》;20071215;正文第23-41页 * |
Also Published As
Publication number | Publication date |
---|---|
US20150090792A1 (en) | 2015-04-02 |
US9135489B2 (en) | 2015-09-15 |
CN104517089A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104517089B (zh) | 一种二维码解码系统及其方法 | |
CN105069394B (zh) | 二维码加权平均灰度法解码方法及系统 | |
CN104517109B (zh) | 一种qr码图像的校正方法及系统 | |
CN106485183B (zh) | 一种二维码定位方法及系统 | |
CN113807334B (zh) | 一种基于残差网络的多尺度特征融合的人群密度估计方法 | |
CN108230321A (zh) | 缺陷检测方法及装置 | |
CN103778599B (zh) | 一种图像处理方法及系统 | |
CN104781835B (zh) | 二维码 | |
KR20180013982A (ko) | 이미지 프로세싱 방법 및 장치 | |
CN104517110A (zh) | 一种二维码图像的二值化方法及系统 | |
US9224198B2 (en) | Analysis of the digital image of the surface of a tyre and processing of non-measurement points | |
US20150090795A1 (en) | Method and system for detecting detection patterns of qr code | |
CN111986212B (zh) | 一种人像发丝流动特效实现方法 | |
CN110544300B (zh) | 一种基于二维手绘图像特征自动生成三维模型的方法 | |
CN110335322B (zh) | 基于图像的道路识别方法及道路识别装置 | |
CN104331883B (zh) | 一种基于非对称逆布局模型的图像边界提取方法 | |
CN109492735B (zh) | 二维码生成方法及计算机可读存储介质 | |
CN117011560A (zh) | 基于阈值和权重Census变换的煤矿井下图像立体匹配方法 | |
KR20130035914A (ko) | 디지털 단색 이미지의 결함 픽셀의 휘도를 정정하는 방법 | |
CN104809460B (zh) | 晶体中心位置图生成方法及晶体像素查找表生成方法 | |
CN108073963B (zh) | 一种融合二维码生成方法及装置 | |
JP2014106713A (ja) | プログラム、方法、及び情報処理装置 | |
CN108073964B (zh) | 一种透视二维码生成方法及装置 | |
CN108564622A (zh) | 实现定位板图像中亚像素级角点定位的方法 | |
CN104239874B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170926 Termination date: 20180929 |
|
CF01 | Termination of patent right due to non-payment of annual fee |