具体实施方式
为了提高识读二维码符号数据的准确性和识读效率,本发明实施例提供一种二维码符号数据的识读方法,本方法中,根据标准二维码图形中综合定位信息的离散特征点信息,在待识读二维码所在区域中查找待识别二维码的综合定位信息对应的元素符号,并根据查找到的综合定位信息对应的元素符号的位置确定待识别二维码中数据元素的位置,进而按照二维码数据元素的排放顺序读取待识别二维码中的数据元素。
参见图1,本发明实施例提供的二维码符号数据的识读方法,具体包括以下步骤10~步骤13:
步骤10:选取标准二维码图形中的整体定位信息和数据元素定位信息对应的元素符号作为综合定位信息,抽取综合定位信息的各个元素符号的特征点,构成综合定位信息的离散特征点信息;
步骤11:确定待识读二维码所在的区域,根据所述综合定位信息的离散特征点信息在待识读二维码所在的区域内查找待识别二维码的综合定位信息对应的元素符号;
步骤12:根据查找到的待识别二维码的综合定位信息中数据元素定位信息的元素符号在待识读二维码所在区域内的位置,以及二维码中各个数据元素与数据元素定位信息的各元素符号的位置关系,确定所述各个数据元素的位置信息;
步骤13:根据所述各个数据元素的位置信息按照二维码数据元素的排放顺序,读取待识读二维码中的数据元素。
步骤10中,整体定位信息是指用于对二维码图形进行整体定位的信息,数据元素定位信息是指用于对二维码图形中的数据元素进行定位的信息。各种二维码图形符号的结构各不相同,一般来说,二维码图形的寻像图形或确定二维码位置关系的图形符号是整体定位信息;称为矫正信息或称为数据定位信息或称为同步信息等的图形符号是数据元素定位信息。整体定位信息和数据元素的定位信息是分布在二维码图形不同位置上的。
抽取综合定位信息的各个元素符号的特征点,构成综合定位信息的离散特征点信息,其具体实现方式可以包括以下步骤A1~步骤C1:
步骤A1:抽取选取的各个元素符号的中心点作为综合定位信息的特征点,并获取各个特征点的位置坐标和光学特征标志;
步骤B1:在待识读二维码所在的区域中选取一个数据点作为参考点,并将各个特征点的位置坐标转换为对该参考点的相对坐标;
步骤C1:按照待识读二维码的分辨率与标准二维码的分辨率的比例对各个特征点的相对坐标进行转换,转换后的各个特征点的位置坐标和光学特征标志构成综合定位信息的离散特征点信息。例如,待识读二维码的分辨率为A,标准二维码的分辨率为B,一特征点的相对坐标为X,则转换后的该特征点的位置坐标为X*(A/B)。
步骤11中,确定待识读二维码所在的区域的具体方法可以为:根据待识别二维码的光学特征及几何形状特征,对二维码图形进行边界搜索,得到待识别二维码所在的区域;或者,根据人为设定确定待识别二维码所在的区域。
步骤11中,根据综合定位信息的离散特征点信息在待识读二维码区域内查找待识别二维码的综合定位信息对应的元素符号,其具体实现可以包括以下步骤A2~步骤C2:
步骤A2:在待识别二维码所在的区域,对离散特征点信息中的特征点的位置坐标进行平移和/或旋转的数学变换,每次数学变换后,求取离散特征点信息与待识别二维码的匹配指标;
这里,求取每次数学变换后离散特征点信息与待识别二维码的匹配指标的具体方法为:首先,在待识别二维码所在区域内查找本次数学变换后的各个坐标对应的数据点;然后,对于查找到的各个数据点,判断该数据点的光学特征标志是否与该数据点对应的特征点的光学特征标志一致,若不一致,则将该数据点确定为不匹配点;最后,计算(N-m)/N的结果作为本次数学变换后离散特征点信息与待识别二维码的匹配指标,其中m为确定的不匹配点的个数,N为离散特征点信息中特征点的个数。数据点是将特征点的位置坐标进行平移和/或旋转的数学变换后得到的数据点,将该特征点称为该数据点对应的特征点。
步骤B2:对于求取得到的多个匹配指标中的最大匹配指标对应的数学变换,确定该数学变换后的各个位置坐标在待识别二维码所在区域内对应的数据点;
较佳的,在确定数学变换后的各个位置坐标在待识别二维码所在区域内对应的数据点之前,可以首先判断最大匹配指标是否大于预先设定的判定指标Q,在判断为是时,判定查找到待识别二维码的综合定位信息,然后确定最大匹配指标对应的数学变换后的各个位置坐标在二维码所在区域内对应的数据点,并转步骤C2;在判断为否时,判定没有查找到待识别二维码综合定位信息,整个流程结束。
步骤C2:对于步骤B2确定的各数据点,在待识别二维码区域内查找中心点距离该数据点最近的元素符号,将查找到的各个元素符号作为待识别二维码的综合定位信息对应的元素符号。或者,根据标准二维码图形的综合定位信息对应的各元素符号的位置关系和步骤B2确定的各元素符号在待识别二维码所在区域内的数据点,确定待识别二维码的综合定位信息对应的各元素符号在待识别二维码所在区域内的准确位置。
步骤C2中,确定待识别二维码的综合定位信息对应的各元素符号在待识别二维码所在区域内的准确位置,其具体实现可以包括以下步骤:
步骤C21:选取标准二维码图形的综合定位信息对应的各元素符号中的边角元素符号作为第一个元素符号,将第一个元素符号作为当前元素符号,到步骤C24;例如,如图3所示的FZ码的边角元素符号为X0或S0,X0的下一相邻元素符号为X1,以此类推,相应的最后一个元素符号为X23;S0的下一相邻元素符号为S1,以此类推,相应的最后一个元素符号为S23;
步骤C22:判断当前元素符号与上一相邻元素符号的光学特征是否一致,若不一致,则到步骤C24;若一致,到步骤C23;
步骤C23:判断当前元素符号与下一相邻元素符号的光学特征是否一致,若一致,则将下一相邻元素符号作为当前元素符号,继续执行步骤C23;若不一致,则到步骤C24;
步骤C24:根据上一相邻元素符号的特征点的位置偏移量,修正当前元素符号的数据点的位置(例如,将当前元素符号的数据点的位置坐标与上一相邻元素符号的特征点的位置偏移量相加),在不存在上一相邻元素符号时,所述位置偏移量为0;将待识读二维码所在区域内光学特征与当前元素符号一致并且中心点距离修正后数据点最近的元素符号的位置确定为当前元素符号在待识读二维码中的准确位置;并将该元素符号的中心点确定为当前元素符号的特征点,求取当前元素符号的特征点与修正前数据点的位置坐标的差值,将该差值作为当前元素符号的特征点的位置偏移量;若当前元素符号与除当前元素符号之外的最近得到准确位置的元素符号不相邻,则按照平均算法确定当前元素符号与所述最近得到准确位置的元素符号之间各元素符号在待识读二维码中的准确位置;判断当前元素符号是否为最后一个元素符号,若是,则结束本流程;否则,将当前元素符号的下一相邻元素符号作为当前元素符号,返回步骤C22。
步骤12中,根据数据元素定位信息的元素符号在待识读二维码所在区域内的位置,以及二维码中各个数据元素与数据元素定位信息的各元素符号的位置关系,确定各个数据元素的位置信息,其具体实现方法可以包括步骤A3~步骤C3:
步骤A3:获取二维码数据区按位流顺序的各个数据元素与二维码中数据元素定位信息对应的各元素符号的位置关系;
步骤B3:在步骤B中查找到的综合定位信息对应的元素符号中,提取数据元素定位信息对应的元素符号;
步骤C3:根据提取的元素符号的中心点的位置坐标和各个数据元素与数据元素定位信息对应的各元素符号的位置关系,计算得到数据区按位流顺序的各个数据元素的位置坐标,将该位置坐标作为对应数据元素的位置信息。
较佳的,在步骤13之后,对于读取到的各个数据元素,将该数据元素的光学特征与设置的待识别二维码所在区域光学特征的阈值进行比较,根据比较结果确定该数据元素的光学特征标志;例如,根据待识别二维码上亮度的中间值,确定黑、白点的亮度判定阈值,当数据元素的亮度低于该阈值,判定数据元素为黑点;当数据元素的亮度高于该阈值,判定该数据元素为白点。
然后,将确定的各个数据元素的光学特征标志按照二维码数据元素的排放顺序存入数据区,完成二维码位流数据的恢复。
下面以具体实施例对上述方法进行说明:
实施例一:
本实施例通过对本发明人的前一项发明《二维码标签的符号生成方法及装置》的二维码(简称FZ码)的识别过程,说明本发明对于二维码符号数据的识读方法。本实施例一按照实际应用的环境,对如图2所示的FZ码,进行符号数据的识读。在一张银行票据上,应用FZ二维码,标示本张票据的诸多要素信息。识读过程是在一张票据图像上进行。具体包括如下步骤:
步骤101:在票据图像分辨率已知并且票据二维码印制分辨率也已知的情况下,基本元素符号的长度是已知的。本实施例中,基本元素符号的长度d=5。否则,要通过搜索FZ码的数据元素定位信息,获得基本元素符号的长度。在图3中边界黑色方块的边长即为基本元素符号的长度。二维码在票据图像中的区域,可以人为界定,也可根据二维码的几何和光学特征,通过图像搜索确定。
步骤102:确定综合定位信息。在FZ码中,综合定位信息是由方向定位信息和数据元素定位信息构成。如图3中边界S0到S23和X0到X23黑色或白色方块所示。其中方向定位信息是数据元素定位信息S1、S3、X1、X3兼用的。根据基本元素符号的长度,在综合定位信息中,确定S0到S23和X0到X23元素符号的中心点的坐标,并根据各元素符号的颜色,设置颜色标志。为综合定位信息的离散点设计数据结构DW,声明数据结构DW dws[24],dwx[24],以描述综合定位信息的离散特征点。
选择二维码图形的中心点作为参考点,将离散特征点的坐标转换为对此参考点的相对坐标。得到48个离散特征点的x、y坐标及颜色标志值lab。
步骤103:以参考点为基准,对48个离散点,在旋转变量alf、平移变量x、y构成的三维空间进行旋转、平移的数学变换。每次变换求取48个离散点与二维码图形的匹配指标。变换后的离散特征点与对应图像上的点光学特征一致,该点为匹配点,否则为不匹配点。将不匹配点的个数作为评价值,匹配指标=48-评价值。在步骤101确定的二维码在票据图像中的区域所界定的三维空间进行搜索获得评价值最小的空间点(alfd、xd、yd)。其中alfd是旋转角度,xd、yd是参考点的坐标,根据此空间点得到变换后的48个离散特征点确定了二维码图形在票据图像中的粗略位置。
根据基本元素符号的长度,在获得最大匹配指标的48个离散特征点附近搜索对应基本元素符号的中心点。获得二维码图形的精确定位。本实施例中,方向定位信息是数据元素定位信息S1、S3、X1、X3兼用的,所以S0到S4、X0到X4是连续的黑色基本元素符号,精确定位方法是通过定位S0和S4,然后在小范围内按平均值定位S1、S2、S3。按同样方法定位X1、X2、X3。
综合定位信息的离散特征点与对应图像点光学特征一致的判定是在BMP图像上进行的。根据二维码基本元素符号的特征,主要是判定点是黑或是白。首先根据票据图像上亮度的中间值,确定黑、白点的亮度判定阈值,当图像点不是彩色点且亮度低于该阈值,判定该点为黑点;当图像点不是彩色点且亮度高于该阈值,判定该点为白点。然后根据综合定位信息的离散特征点的标志判定光学特征是否一致。
步骤104:根据FZ码的特征,数据元素符号布置在数据元素定位信息符号之间。通过Si、Xi相对的数据定位信息dws[i]、dwx[i],可按列定位每一个数据元素符号。本实施例中,FZ码数据元素定位信息符号之间有8行数据符号。按下式计算第i列第n行数据元素SJ[i,n]的坐标:
dix=(dwx[i].x-(dws[i].x)/9;diy=(dwx[i].y-(dws[i].y)/9;
SJ[i,n].x=dws[i].x+dix*n;SJ[i,n].y=dws[i].y+diy*n;
其中,dix、diy是该列数据符号x、y坐标的增量。由于FZ码这种短距离、双向数据元素定位信息的定位方法,按上式计算就能获得数据元素的准确定位。
本实施例中,数据区共有24字节数据,经编码、纠错、加密、掩码等处理后获得24字节的192个位流数据。排放规则定为:按字节顺序排放在对应数据定位信息元素的对应列,每列数据由Si向Xi排列,字节数据低位在前高位在后。上面计算的数据元素SJ[i,n]的坐标,对应此排列规则的顺序是:SJ[0,1]...SJ[0,8]SJ[1,1]...SJ[1,8]SJ[2,1]...SJ[2,8].........SJ[23,1]...SJ[23,8]。
按照这种方法获得的数据元素坐标的位流顺序与实际二维码图像的旋转方向无关。
步骤105:根据票据图像上亮度的中间值,确定黑、白点的亮度判定阈值,当图像上数据元素坐标点亮度低于该阈值,判定该点为黑点;当亮度高于该阈值,判定该点为白点。按步骤104确定的数据元素符号的定位信息的顺序,确定每一个数据元素的数值,并按生成排列规则,将位流数据恢复到24字节的数据区中。
针对变形较大的二维码图形,本发明实施例提供另一种二维码符号数据的识读方法,本方法与上述二维码符号数据的识读方法的区别在于,本方法在抽取标准二维码图形中综合定位信息对应的各元素符号的特征点后,需要根据待识读二维码的边界特征点和各边界特征点对应的元素符号长度,对抽取的各个特征点进行线性变形处理,将线性变形处理后的特征点的信息作为综合定位信息的离散特征点信息。
参见图4,本发明实施例提供另一种二维码符号数据的识读方法,具体包括以下步骤:
步骤40:选取标准二维码图形中的整体定位信息和数据元素定位信息对应的元素符号作为综合定位信息,抽取综合定位信息的各元素符号的特征点;
步骤41:根据确定的待识读二维码的边界特征点和各边界特征点对应的元素符号长度,对抽取的各个特征点进行线性变形处理,将线性变形处理后的特征点的信息作为综合定位信息的离散特征点信息;
步骤42:确定待识读二维码所在的区域,根据综合定位信息的离散特征点信息在待识读二维码所在区域内查找待识别二维码的综合定位信息对应的元素符号;
步骤43:根据查找到的待识别二维码的综合定位信息中数据元素定位信息的元素符号在待识读二维码所在区域内的位置,以及二维码中各个数据元素与数据元素定位信息的各元素符号的位置关系,确定各个数据元素的位置信息;
步骤44:根据各个数据元素的位置信息按照二维码数据元素的排放顺序,读取待识读二维码中的数据元素。
步骤41中,待识读二维码的边界特征点和各边界特征点对应的元素符号长度的确定方法可以如下:
首先,对待识读二维码进行边界搜索,将搜索得到的反映边界变形特征的数据点作为待识读二维码的边界特征点;然后,对于各个边界特征点,确定该边界特征点对应的元素符号的长度。
步骤41中对抽取的特征点进行线性变形处理,将线性变形处理后的特征点的信息作为综合定位信息的离散特征点信息,其具体实现可以包括以下步骤A2~步骤C2:
步骤A2:从待识读二维码的各边界特征点中选择一个边界特征点作为线性变形的基准点;
步骤B2:在待识读二维码的各边界特征点中,选择与基准点同行或同列的另一个边界特征点,根据选择的两个边界特征点的元素符号长度确定变形系数,根据该变形系数对选择的两个边界特征点之间的综合定位信息的各元素符号的特征点的位置坐标进行线性变形;
这里,根据选择的两个边界特征点的元素符号长度确定变形系数的方法可以为:变形系数等于后一边界特征点的元素符号长度减去前一边界特征点的元素符号长度,其结果再除以两个边界特征点之间的综合定位信息对应的元素符号的个数。根据计算得到的变形系数对两个边界特征点之间的综合定位信息对应的第i个元素符号的特征点的位置坐标进行线性变形的方法为:计算第i个元素符号和第i个元素符号之前的各元素符号的符号长度,将计算得到的各符号长度相加即为对第i个元素符号的特征点的位置坐标线性变形后的结果;其中,第j个元素符号的符号长度等于变形系数与j的乘积再加上前一边界特征点的元素符号长度的结果,j大于等于1并且小于等于i。
步骤C2:在待识读二维码所在的区域中选取一个数据点作为参考点,将线性变形后的各个特征点的位置坐标转换为对该参考点的相对坐标,转换后的各个特征点的相对坐标和该特征点的光学特征标志构成综合定位信息的离散特征点信息。
较佳的,在步骤43之后、步骤44之前,对于步骤43确定的数据元素的位置信息,若该数据元素的前一行和/或前一列的对应数据元素的位置信息已确定,则按照所述对应数据元素的位置信息和该数据元素与所述对应数据元素的线性关系,对该数据元素的位置信息进行修正。
较佳的,在对数据元素的位置信息进行修正之后,对于确定的数据元素的位置信息,若与该数据元素相邻的四个数据元素的光学特征标志不完全相同,则根据元素符号的长度,对该数据元素的位置信息进行修正。
下面以具体实施例对上述方法进行说明:
实施例二:
对于变形较大的二维码图像如图5所示,其变形特征一般都是线性的或准线性的,为了提高识读的准确性,具体包括如下步骤:
步骤201:对票据图像中FZ二维码图形的边界进行搜索,获得FZ二维码图形外轮廓的形状、方向定位信息及基本元素符号的长度。由于FZ二维码的标准外形轮廓是矩形,经线性变形后,外形轮廓至少保持四边形的特征。搜索后得到由p0、p1、p2、p3四个边界特征点间直线构成四边形轮廓形状。四边形的4个边界特征点坐标反应了二维码图形的变形特征。方向定位信息S 1、S3、X1、X3分别位于p0、p3点附近。搜索得到的基本元素符号的长度在p0、p1、p2、p3四点附近是不同的,分别为d0、d1、d2、d3。根据搜索到的四边形轮廓形状也界定了二维码图形的区域。
步骤202:由图3中边界S0到S23和X0到X23黑色或白色方块符号构成FZ二维码的综合定位信息。
根据FZ二维码中方向定位信息与二维码图形的位置关系,可确定特征点p0附近的综合定位信息对应的图形符号的标示序号是S0。选择边界特征点p0,作为线性变形的基准点。为综合定位信息的离散特征点设计数据结构DM,声明DM dms[24],dmx[24],以描述综合定位信息的离散特征点:
在p0、p1、p2、p3四个边界特征点附近,按搜索得到的元素符号的长度d0、d1、d2、d3,分别求取对应标示序号S0、S23、X23、X0的四个点的坐标p0s、p1s、p2s、p3s,其中
p0s.x=p0.x+d0/2;p0s.y=p0.y+d0/2;p1s.x=p1.x-d1/2;p1s.y=p1.y+d1/2;
p2s.x=p2.x-d2/2;p2s.y=p2.y-d2/2;p3s.x=p3.x+d3/2;p3s.y=p3.y-d3/2;
顺序对p0与p1和p3与p2点之间的综合定位信息的离散特征点的坐标进行线性变形处理。
首先求取对应标示序号S0、S23、X23、X0的四个点的坐标dms[0]、dms[23]、dmx[23]、dmx[0],设dms[0]的x、y坐标都为0。以p0点对应的p0s、dms[0]点坐标为基准,求p1点对应的p1s点以p0s为极点的极坐标矢量L1∠st1(极值是L1,极角是st1);求p2点对应的p2s点以p0s为极点的极坐标矢量L2∠st2;求p3点对应的p3s点以p0s为极点的极坐标矢量L3∠st3;线性变形后dms[23]点是以dms[0]为极点的极坐标矢量L1∠st1;dmx[23]点是以dms[0]为极点的极坐标矢量L2∠st2;dmx[0]点是以dms[0]为极点的极坐标矢量L3∠st3。
线性变形后p0与p1点对应的综合定位信息的离散特征点dms[0]、dms[23]之间,符号元素的大小是不同的。按照线性变形关系计算得到变形系数:
K1=(d1-d0)/23;第i个符号元素的长度ysi=d0+i×K1。以dms[0]为极点dms[i]点极坐标矢量表示为sli∠st1,其中sli是ys1到ysi的累加和,
sli=i×d0+(1+2+...+i)×K1;且有ys1到ys23的累加和等于L1。
按上式求取dms[1]到dms[22]的点坐标。
以dmx[0]点为极点求dmx[23]点的极坐标矢量
L5∠st5=L2∠st2-L3∠st3。
线性变形后p3与p2点对应的综合定位信息的离散特征点dmx[0]、dmx[23]之间,符号元素的大小是不同的。按照线性变形关系计算得到变形系数:
K2=(d2-d3)/23;第i个符号元素的长度yxi=d3+i×K2。以dmx[0]为极点dmx[i]点极坐标矢量表示为xli∠st5,其中xli是yx1到yxi的累加和,
xli=i×d3+(1+2+...+i)×K2;且有yx1到yx23的累加和等于L5。
按上式求取dmx[1]到dmx[22]的点的坐标。
设置p0、p1、p2、p3四点界定形状的几何中心点为离散特征点dms[0]~dms[23]和dmx[0]~dmx[23]的参考点,将离散特征点坐标转换为对此参考点的相对坐标,并为离散特征点信息设置符号光学特征标志,完成综合定位信息的离散特征点的线性变形。
步骤203:以参考点为基准,对48个离散点,在旋转变量alf、平移变量x、y构成的三维空间进行旋转、平移的数学变换。每次变换求取48个离散点与二维码图像的匹配指标。变换后的离散点与对应图像上的点光学特征一致,该点为匹配点,否则为不匹配点。将不匹配点的个数作为评价值,匹配指标=48-评价值。在步骤201确定的二维码在票据图像中的区域所界定的三维空间进行搜索获得评价值最小的空间点(alfd、xd、yd)。其中alfd是旋转角度,xd、yd是参考点的坐标,根据此空间点得到变换后的48个离散点确定了二维码图形在票据图像中的粗略位置。
在获得最大匹配指标的48个离散点附近搜索对应基本元素符号的中心点,获得二维码图形的精确定位。本实施例中,方向定位信息是数据元素定位信息S1、S3、X1、X3兼用的,所以S0到S4、X0到X4是连续的黑色基本元素符号,精确定位方法是通过定位S0和S4,然后在小范围内按平均值定位S1、S2、S3。按同样方法定位X1、X2、X3。
综合定位信息的离散特征点与对应图像点光学特征一致的判定是在BMP图像上进行的。根据二维码基本元素符号的特征,主要是判定点是黑或是白。首先根据票据图像上亮度的中间值,确定黑、白点的亮度判定阈值,当图像点不是彩色点且亮度低于该阈值,判定该点为黑点;当图像点不是彩色点且亮度高于该阈值,判定该点为白点。然后根据综合定位信息离散点的标志判定光学特征是否一致。
步骤204:根据FZ码的特征,数据元素符号布置在数据元素定位信息符号之间。通过Si、Xi相对的数据定位信息dms[i]、dmx[i],可按列定位每一个数据元素符号。本实施例中,FZ码数据元素定位信息符号之间有8行数据符号。按下式计算第i列第n行数据元素S J[i,n]的坐标:
dix=(dmx[i].x-(dms[i].x)/9;diy=(dmx[i].y-(dms[i].y)/9;
SJ[i,n].x=dms[i].x+dix*n;SJ[i,n].y=dms[i].y+diy*n;
其中,dix、diy是该列数据符号x、y坐标的增量。由于FZ码这种短距离、双向数据元素定位信息的定位方法,即使在图像变形的情况下,短距离也能获得数据元素的定位。
本实施例中,数据区共有24字节数据,经编码、纠错、加密、掩码等处理后获得24字节的192个位流数据。排放规则定为:按字节顺序排放在对应数据定位信息元素的对应列,每列数据由Si向Xi排列,字节数据低位在前高位在后。上面计算的数据元素SJ[i,n]的坐标,对应此排列规则的顺序是:SJ[0,1]...SJ[0,8]SJ[1,1]...SJ[1,8]SJ[2,1]...SJ[2,8].........SJ[23,1]...SJ[23,8]。
按照这种方法获得的数据元素坐标的位流顺序与实际二维码图像的旋转方向无关。
步骤205:在图像变形的情况下,符号数据识读前要进行二次定位。如果当前数据元素求取顺序的前一行和/或前一列对应数据元素已求取完成,根据同行的上一列和/或同列的上一行数据元素坐标,按线性关系计算当前数据元素点坐标;如果当前数据元素与四周数据元素不完全相同,根据当前元素符号的长度,对当前数据元素的x和/或y坐标作进一步校正。
这里,对上一步骤中确定的数据元素的位置进行修正的具体实现方法可以如下:
步骤1:根据当前数据元素求取顺序的前一行和/或前一列对应数据元素的位置偏移量,修正当前数据元素的位置;在不存在所述前一行和/或前一列对应数据元素时,所述位置偏移量为0;若当前数据元素的光学特征与前一行和前一列对应数据元素的光学特征不完全相同,将光学特征与当前数据元素一致、并且中心点距离修正后的位置坐标最近的元素符号的位置,确定为当前数据元素的准确位置;若当前数据元素的光学特征与前一行和前一列对应数据元素的光学特征完全相同,将修正后的位置坐标作为当前数据元素的中心点,并根据当前数据元素的元素符号长度确定当前数据元素的准确位置(由于数据元素符号为矩形,在中心点和元素符号长度确定的情况下,数据元素的准确位置即可确定);
步骤2:将当前数据元素的中心点确定为当前数据元素的特征点,求取当前数据元素的特征点与修正前位置坐标的差值,将该差值作为当前数据元素的位置偏移量;将当前数据元素的下一数据元素作为当前数据元素,返回步骤1。
步骤1中修正当前数据元素的位置的方法可以为:若根据当前数据元素求取顺序的前一行对应数据元素进行修正,修正方法为将当前数据元素的位置坐标Y与该位置偏移量ΔY、以及当前数据元素与前一行对应数据元素的元素符号在Y方向长度的差值d1-d2相加,即Y+ΔY+d1-d2;若根据当前数据元素求取顺序的前一列对应数据元素进行修正,修正方法可以为将当前数据元素的位置坐标X与该位置偏移量ΔX、以及当前数据元素与前一列对应数据元素的元素符号在X方向长度的差值d1-d2相加,即X+ΔX+d1-d2。
根据票据图像上亮度的中间值,确定黑、白点的亮度判定阈值,当图像上数据元素坐标点亮度低于该阈值,判定该点为黑点;当亮度高于该阈值,判定该点为白点。按步骤204确定的数据元素符号的定位信息的顺序,确定每一个数据元素的数值,并按生成排列规则,将位流数据恢复到24字节的数据区中。
图2所示的二维码是FZ码的基本图形,扩展的FZ码可容纳更多的数据信息,但扩展后的FZ码其基本图形部分不变,因此基本图形部分的综合定位信息也不变。对任意版本FZ码符号数据的识读都是从基本图形开始,识读方法完全一样。基本图形识读后,根据FZ码版本信息进一步识读扩展数据。
实施例三:
本实施例说明本发明的二维码符号数据的识读方法,怎样应用于其它各种二维码。
以DM二维码为例,如图6所示,(a)是DM码的符号结构图,(b)的边缘符号是寻像图形和数据元素定位信息。将DM码的边缘符号都设置标示序号,构成本发明方法的综合定位信息,提取其离散特征点信息,经最佳匹配搜索后,根据离散点坐标及标示序号,即可确定DM码的旋转方位,并可根据数据元素定位信息的离散点坐标,进一步计算的数据元素符号的坐标、计算获得数据元素的数值。比较DM码与FZ码在数据元素符号的定位,可知,DM码只能通过相邻边的数据元素定位信息来定位数据元素符号的坐标,在图像变形的情况下,很难准确定位。FZ码的双向数据元素定位信息,即使在图像变形的情况下,也可以很准确定位。
以龙贝码为例,如图7所示,(a)是龙贝码的符号结构图,(b)的边缘符号是寻像图形和数据元素定位信息。将龙贝码的边缘符号都设置标示序号,构成本发明方法的综合定位信息,提取其离散特征点信息,经最佳匹配搜索后,根据离散点坐标及标示序号,即可确定龙贝码的旋转方位,但由于龙贝码寻像图形和数据元素定位信息的设计,不能准确判定其二维码图形的旋转角度(可能相差180度)。龙贝码可利用其专利技术判定识读方向,并根据双向数据元素定位信息的离散点坐标,进一步计算的数据元素符号的坐标、计算获得数据元素的数值。比较龙贝码与FZ码在数据元素符号的定位,可知,龙贝码通过双向的数据元素定位信息来定位数据元素符号的坐标后,还需要识读方向的判定。基本二维码图形的数据定位信息多余FZ码。
综上实例说明,各种二维码都可使用本发明的方法实现二维码符号数据的识读。也可获得较好的识读效果。但是由于各种二维码符号结构的不同,在数据元素定位、方向判定等方面,其使用效果不及在FZ码的使用效果。
参见图8,本发明实施例还提供一种二维码符号数据的识读装置,该装置包括:
离散特征点抽取单元80,用于选取标准二维码图形中的整体定位信息和数据元素定位信息对应的元素符号作为综合定位信息,抽取综合定位信息的各个元素符号的特征点,构成综合定位信息的离散特征点信息;
综合定位信息确定单元81,用于确定待识读二维码所在的区域,根据所述综合定位信息的离散特征点信息在所述区域内查找待识别二维码的综合定位信息对应的元素符号;
数据元素定位单元82,用于根据查找到的待识别二维码的综合定位信息中数据元素定位信息的元素符号在所述区域内的位置,以及二维码中各个数据元素与数据元素定位信息的各元素符号的位置关系,确定所述各个数据元素的位置信息;
数据元素读取单元83,用于根据所述各个数据元素的位置信息按照二维码数据元素的排放顺序,读取所述待识读二维码中的数据元素。
所述离散特征点抽取单元80用于:
抽取选取的各个元素符号的中心点作为综合定位信息的特征点,并获取所述各个特征点的位置坐标和光学特征标志;
在所述待识读二维码所在的区域中选取一个数据点作为参考点,并将所述各个特征点的位置坐标转换为对所述参考点的相对坐标;
按照所述待识读二维码的分辨率与所述标准二维码的分辨率的比例对所述各个特征点的相对坐标进行转换,转换后的各个特征点的位置坐标和光学特征标志构成综合定位信息的离散特征点信息。
所述综合定位信息确定单元81用于:
在所述待识别二维码所在的区域,对所述离散特征点信息中的特征点的位置坐标进行平移和/或旋转的数学变换,每次数学变换后,求取离散特征点信息与所述待识别二维码的匹配指标;
对于求取得到的多个匹配指标中的最大匹配指标对应的数学变换,确定该数学变换后的各个位置坐标在所述区域内对应的数据点;
根据综合定位信息对应的各元素符号的位置关系和步骤B2确定的各元素符号在所述区域内的数据点,确定待识别二维码的综合定位信息对应的各元素符号在所述区域内的准确位置。
所述数据元素定位单元82用于:
获取二维码数据区按位流顺序的各个数据元素与二维码中数据元素定位信息对应的各元素符号的位置关系;
在所述综合定位信息确定单元查找到的综合定位信息对应的元素符号中,提取数据元素定位信息对应的元素符号;
根据提取的元素符号的中心点的位置坐标和所述各个数据元素与数据元素定位信息对应的各元素符号的位置关系,计算得到数据区按位流顺序的各个数据元素的位置坐标,将该位置坐标作为对应数据元素的位置信息。
该装置进一步包括:
二维码位流恢复单元84,用于对于读取到的各个数据元素,将该数据元素的光学特征与设置的所述待识别二维码所在区域光学特征的阈值进行比较,根据比较结果确定该数据元素的光学特征标志;将确定的各个数据元素的光学特征标志按照二维码数据元素的排放顺序存入数据区,完成二维码位流数据的恢复。
参见图9,本发明实施例还提供一种二维码符号数据的识读装置,该装置包括:
离散特征点抽取单元90,选取标准二维码图形中的整体定位信息和数据元素定位信息对应的元素符号作为综合定位信息,抽取综合定位信息的各元素符号的特征点;
离散特征点变形单元91,用于根据确定的待识读二维码的边界特征点和各边界特征点对应的元素符号长度,对所述抽取的各个特征点进行线性变形处理,将线性变形处理后的特征点的信息作为综合定位信息的离散特征点信息;
综合定位信息确定单元92,用于确定所述待识读二维码所在的区域,根据所述综合定位信息的离散特征点信息在所述区域内查找待识别二维码的综合定位信息对应的元素符号;
数据元素定位单元93,用于根据查找到的待识别二维码的综合定位信息中数据元素定位信息的元素符号在所述区域内的位置,以及二维码中各个数据元素与数据元素定位信息的各元素符号的位置关系,确定所述各个数据元素的位置信息;
数据元素读取单元94,用于根据所述各个数据元素的位置信息按照二维码数据元素的排放顺序,读取所述待识读二维码中的数据元素。
所述离散特征点变形单元91用于:
对所述待识读二维码进行边界搜索,将搜索得到的反映边界变形特征的数据点作为所述待识读二维码的边界特征点;对于各个边界特征点,确定该边界特征点对应的元素符号的长度。
所述离散特征点变形单元91用于:
从所述各个边界特征点中选择一个特征点作为所述线性变形的基准点;
在抽取的各个边界特征点中,选择与所述基准点同行或同列的另一个边界特征点,根据选择的两个边界特征点的元素符号长度确定变形系数,根据该变形系数对所述两个边界特征点之间的所述综合定位信息的各元素符号的特征点的位置坐标进行线性变形;
在所述待识读二维码所在的区域中选取一个数据点作为参考点,将所述线性变形后的各个特征点的位置坐标转换为对所述参考点的相对坐标,转换后的各个特征点的相对坐标和该特征点的光学特征标志构成所述综合定位信息的离散特征点信息。
该装置进一步包括:
第一位置修正单元95,用于对于所述数据元素定位单元确定的数据元素的位置信息,若该数据元素的前一行和/或前一列的对应数据元素的位置信息已确定,则按照所述对应数据元素的位置信息和该数据元素与所述对应数据元素的线性关系,对该数据元素的位置信息进行修正。
该装置进一步包括:
第二位置修正单元96,用于在对数据元素的位置信息进行修正之后,对于确定的数据元素的位置信息,若与该数据元素相邻的四个数据元素的光学特征标志不完全相同,则根据元素符号的长度,对该数据元素的位置信息进行修正。