彩色图片二维码解码方法
【专利摘要】一般彩色图像采用R\G\B三原色记录数据,本发明提供的一种彩色图片二维码解码方法通过对R\G\B分量判断图像边缘,尽兴深色、浅色的边界分割,再通过位置探测图形的特征,区分出深色与浅色,并进行后续的解码,得到最终解码结果。本发明利用彩色二维码的R\G\B分量确定边缘,并通过二维码位置探测图形判断深色模块和浅色模块,并最终解码,使解码方法支持彩色图像的解码,提高产品的市场竞争力。
【专利说明】
彩色图片二维码解码方法
技术领域
[0001 ]本发明涉及一种对彩色二维码进行解码的方法。
【背景技术】
[0002]比较常见的二维码图片为灰度图像。但随着近几年的发展,已出现多样化的二维码,其中彩色二维码就是其中一种新的样式。与普通灰度图像的二维码图片相比,彩色图像的二维码图片的码图区域和背景区域不再是黑或者白,而具有一定的色彩,若采用灰度图像的二维码对彩色图像的二维码图片进行解码算法,则需要先将彩色图像转换为灰度图像,然后再进行解码。上述方法可能出现灰度对比度太低,甚至深色模块、浅色模块形成反差的现象(原来应为深色模块的表现为浅色模块,或原来应为浅色模块的表现为深色模块)。例如,RVAB彩色图像转换为灰度图像时,如果采用转换公式0.299R+0.587G+0.114B,如果深色的颜色(1?,6,8) = (235,0,0),浅色的颜色(1?,6,8) = (0,120,0),那么灰度转换后,深色和浅色的灰度都约等于70,完全看不出存在二维码。
【发明内容】
[0003]本发明的目的是提供一种彩色二维码的解码方法。
[0004]为了达到上述目的,本发明的技术方案是提供了一种彩色图片二维码解码方法,其特征在于,包括以下步骤:
[0005]步骤1、获得带有二维码的彩色图片后,对彩色图片中的像素点逐行扫描,得到每行像素点行的所有边缘位置,对于任意一行像素点行而言,所有边缘位置的获取方法包括以下步骤:
[0006]步骤1.1、设定第一阈值及第二阈值,将最大值MAX初始化为0,将当前像素点行中的第一个像素点设定为当前像素点;
[0007]步骤1.2、判断当前像素点是否为像素点行的最后一个像素点,若是,则退出当前像素点行的计算,若不是,则将当前像素点的下一个像素点设定为当前相邻像素点;
[0008]步骤1.3、计算当前像素点与当前相邻像素点的RGB三分量落差之和FALL,FALL=P2.R-P1.R| + |P2.G-P1.G| + |P2.B-P1.B,式中,P2.R、P2.G及P2.B为当前相邻像素点的RGB三分量,Pl.R、P1.G及Pl.B为当前像素点的RGB三分量;
[0009]步骤1.4、判断RGB三分量落差之和FALL是否大于第一阈值,若否,则将当前相邻像素点设为当前像素点后,返回步骤1.2,若是,则进入步骤1.5;
[0010]步骤1.5、将当前像素点记录为边缘线段开始位置ST;
[0011 ]步骤1.6、比较最大值MAX与RGB三分量落差之和FALL的大小,若RGB三分量落差之和FALL不大于最大值MAX,进入步骤1.8,若RGB三分量落差之和FALL大于最大值MAX,则将最大值MAX更新为RGB三分量落差之和FALL,进入步骤1.7;
[0012]步骤1.7、将当前相邻像素点的下一个像素点设为当前相邻像素点,计算得到当前像素点与当前相邻像素点的RGB三分量落差之和FALL后返回步骤1.6;
[0013]步骤1.8、判断最大值MAX是否大于第二阈值,若是,则将当前相邻像素点的上一个像素点记录为边缘线段结束位置SD,进入步骤1.9,若否,则将最大值MAX初始化为O后,并将边缘线段开始位置ST的下一个像素点设为当前像素点后返回步骤1.2;
[0014]步骤1.9、取边缘线段开始位置ST与边缘线段结束位置SD的中点作为一个边缘位置,将边缘线段结束位置SD设为当前像素点,并将最大值MAX初始化为O后,返回步骤1.2;
[0015]步骤2、得到一行像素点行的所有边缘位置后,计算连续边缘的距离,并判断是否存在连续距离的比例接近位置探测图形的特征比例,若存在,则判断为位置探测图形,并局部地将中点所在位置判断为深色模块;
[0016]步骤3、依次找出图像中所有满足条件的位置探测图形,并根据位置探测图形应有的位置关系,判断位置探测图形组;
[0017]步骤4、分别对位置探测图形组进行解码,此时将位置探测图形的中心判断为深色模块,并根据边缘位置,间隔地将图像依次判断为深色模块、浅色模块。
[0018]优选地,在所述步骤2中,局部地将中点所在位置判断为深色模块后,对是否为位置探测图形进行进一步确认。
[0019]优选地,所述步骤4包括:
[0020]步骤4.1、根据位置探测图形,计算出二维码的最小单元模块宽度;
[0021]步骤4.2、根据最小单元模块宽度,将二维码图区域分割成若干行、若干列,每个行区域宽度刚好为最小模块宽度;
[0022]步骤4.3、以每个行、列的中心所在的直线进行边缘检测,并以位置探测图形的中心为深色模块为基础,判断每个模块为深色模块或者是浅色模块;
[0023]步骤4.4、按照深色模块为I,浅色模块为0,并根据二维码对应的协议标准进行解码,得出解码结果。
[0024]本发明利用彩色二维码的R\G\B分量确定边缘,并通过二维码位置探测图形判断深色模块和浅色模块,并最终解码,使解码方法支持彩色图像的解码,提高产品的市场竞争力。
【附图说明】
[0025]图1为以QR码为例的过程参考图;
[0026]图2为模块划分图。
【具体实施方式】
[0027]为使本发明更明显易懂,兹以优选实施例,并配合附图作详细说明如下。
[0028]本发明提供了一种彩色图片二维码解码方法,包括以下步骤:
[0029]步骤1、获取彩色二维码图像,每个像素点存在R\G\B三个分量。
[0030]步骤2、对彩色图片中的像素点逐行扫描,得到每行像素点行的所有边缘位置,对于任意一行像素点行而言,所有边缘位置的获取方法包括以下步骤:
[0031]步骤2.1、设定第一阈值及第二阈值,将最大值MAX初始化为0,将当前像素点行中的第一个像素点设定为当前像素点;
[0032]步骤2.2、判断当前像素点是否为像素点行的最后一个像素点,若是,则退出当前像素点行的计算,若不是,则将当前像素点的下一个像素点设定为当前相邻像素点;
[0033 ]步骤2.3、计算当前像素点与当前相邻像素点的RGB三分量落差之和FALL,FALL =P2.R-P1.R| + |P2.G-P1.G| + |P2.B-P1.B,式中,P2.R、P2.G及P2.B为当前相邻像素点的RGB三分量,Pl.R、P1.G及Pl.B为当前像素点的RGB三分量;
[0034]步骤2.4、判断RGB三分量落差之和FALL是否大于第一阈值,若否,则将当前相邻像素点设为当前像素点后,返回步骤2.2,若是,则进入步骤2.5;
[0035]步骤2.5、将当前像素点记录为边缘线段开始位置ST;
[0036]步骤2.6、比较最大值MAX与RGB三分量落差之和FALL的大小,若RGB三分量落差之和FALL不大于最大值MAX,进入步骤2.8,若RGB三分量落差之和FALL大于最大值MAX,则将最大值MAX更新为RGB三分量落差之和FALL,进入步骤2.7;
[0037]步骤2.7、将当前相邻像素点的下一个像素点设为当前相邻像素点,计算得到当前像素点与当前相邻像素点的RGB三分量落差之和FALL后返回步骤2.6;
[0038]步骤2.8、判断最大值MAX是否大于第二阈值,若是,则将当前相邻像素点的上一个像素点记录为边缘线段结束位置SD,进入步骤2.9,若否,则将最大值MAX初始化为O后,并将边缘线段开始位置ST的下一个像素点设为当前像素点后返回步骤2.2;
[0039]步骤1.9、取边缘线段开始位置ST与边缘线段结束位置SD的中点作为一个边缘位置,将边缘线段结束位置SD设为当前像素点,并将最大值MAX初始化为O后,返回步骤2.2。
[0040]为更好的理解,举例如下:设某一个像素点行的像素点Pl至P13(R、G、B)数据如下:
[0041]P1(50,0,0)、P2(50,0,0)、P3(50,30,0)、P4(50,20,0)、P5(50,60,0)、P6(50,70,0)、P7(50,90,0)、P8(50,80,0)、P9(50,90,0)、P10(50,70,0)、P11(50,30,0)、P12(50,0,0)、P13(50,0,0)o
[0042]P1P2 = 0(以P1P2简记,表示三分量落差之和);
[0043 ] P2P3 = 30,超过第一阈值,则记 ST = P2;
[0044]P2P4 = 20,比P2P3小,表示达到最大值,但P2P3 = 30,小于第二阈值,则丢失这些数据,继续寻找下一个阈值;
[0045]P3P4 = 10;
[0046]P4P5 = 40,超过第一阈值,则记 ST = P4 ;
[0047]P4P6 = 50;
[0048]P4P7 = 70;
[0049]P4P8 = 60,比P4P7小,表示达到最大值,P4P7大于第二阈值,则确定一个边缘,ED =P7,取P4、P7的中点作为边缘位置;
[0050]P7P8 = 10;
[0051]P8P9 = 10;
[0052]P9P10 = 20,超过第一阈值,ST = P9;
[0053]P9P11=60;
[0054]P9P12 = 90;
[0055]P9P13 = 90,与P9P12相等,表示达到最大值,P9P12大于第二阈值,则确定一个边缘,ED = 12,取P9、P12的中点作为边缘位置。
[0056]步骤3、得到一行像素点行的所有边缘位置后,计算连续边缘的距离,并判断是否存在连续距离的比例接近位置探测图形的特征比例,若存在,则判断为位置探测图形,并局部地将中点所在位置判断为深色模块。
[0057]以QR码的为例,位置探测图形的特征比例为1:1:3:1:1,所述“接近”的判断方法,参照现有技术判断位置探测图形的方法,若接近该特征比例,则初步判断为位置探测图形,并局部地将中点所在位置判断为深色模块,并进一步进行确认是否为位置探测图形。所述进一步确认,也参考现有技术判断位置图形的方法。包括垂直于水平方向、以及与水平方向成45度、90度的方向上,以上述方法进行确定边缘,并检测边缘之间的距离是否接近特征比例。以QR码为例,参考图1,图1中小圈圈均表示检测到的边缘,在同一直线上连续的边缘之间的距离比例,均接近位置探测图形的特征比例,则判断为检测到位置探测图形。
[0058]步骤4、依次找出图像中所有满足条件的位置探测图形,并根据位置探测图形应有的位置关系,判断位置探测图形组。
[0059]以QR码为例,一共有3个位置探测图形,为等腰直角关系。
[0060]步骤5、分别对位置探测图形组进行解码,此时将位置探测图形的中心判断为深色模块,并根据边缘位置,间隔地将图像依次判断为深色模块、浅色模块。
[0061]步骤5.1、根据位置探测图形,计算出二维码的最小单元模块宽度;
[0062]步骤5.2、根据最小单元模块宽度,将二维码图区域分割成若干行、若干列,每个行区域宽度刚好为最小模块宽度;
[0063]步骤5.3、以每个行、列的中心所在的直线进行边缘检测,并以位置探测图形的中心为深色模块为基础,判断每个模块为深色模块或者是浅色模块;
[0064]参考图2,直线I及直线2为穿过每一行、列模块的中心线,通过该中心线的边缘,确定深色模块、浅色模块。如图2中的直线I,穿过位置探测图形的中心,可确定位置探测图形的中心为深色模块,按照边缘位置,可间隔地确定该行各个分割区域的模块属于浅色还是深色的,然后再以此为基础,可以确定竖向各个分割区域的模块属于浅色的还是深色的。
[0065]步骤5.4、按照深色模块为I,浅色模块为0,并根据二维码对应的协议标准进行解码,得出解码结果。
[0066]步骤6、输出解码结果。
[0067]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种彩色图片二维码解码方法,其特征在于,包括以下步骤: 步骤1、获得带有二维码的彩色图片后,对彩色图片中的像素点逐行扫描,得到每行像素点行的所有边缘位置,对于任意一行像素点行而言,所有边缘位置的获取方法包括以下步骤: 步骤1.1、设定第一阈值及第二阈值,将最大值MAX初始化为O,将当前像素点行中的第一个像素点设定为当前像素点; 步骤1.2、判断当前像素点是否为像素点行的最后一个像素点,若是,则退出当前像素点行的计算,若不是,则将当前像素点的下一个像素点设定为当前相邻像素点; 步骤1.3、计算当前像素点与当前相邻像素点的RGB三分量落差之和FALL,FALL =P2.R-P1.R| + |P2.G-P1.G| + |P2.B-P1.B,式中,P2.R、P2.G及P2.B为当前相邻像素点的RGB三分量,Pl.R、P1.G及Pl.B为当前像素点的RGB三分量; 步骤1.4、判断RGB三分量落差之和FALL是否大于第一阈值,若否,则将当前相邻像素点设为当前像素点后,返回步骤1.2,若是,则进入步骤1.5; 步骤1.5、将当前像素点记录为边缘线段开始位置ST; 步骤1.6、比较最大值MAX与RGB三分量落差之和FALL的大小,若RGB三分量落差之和FALL不大于最大值MAX,进入步骤1.8,若RGB三分量落差之和FALL大于最大值MAX,则将最大值MAX更新为RGB三分量落差之和FALL,进入步骤1.7; 步骤1.7、将当前相邻像素点的下一个像素点设为当前相邻像素点,计算得到当前像素点与当前相邻像素点的RGB三分量落差之和FALL后返回步骤1.6; 步骤1.8、判断最大值MAX是否大于第二阈值,若是,则将当前相邻像素点的上一个像素点记录为边缘线段结束位置SD,进入步骤1.9,若否,则将最大值MAX初始化为O后,并将边缘线段开始位置ST的下一个像素点设为当前像素点后返回步骤1.2; 步骤1.9、取边缘线段开始位置ST与边缘线段结束位置SD的中点作为一个边缘位置,将边缘线段结束位置SD设为当前像素点,并将最大值MAX初始化为O后,返回步骤1.2; 步骤2、得到一行像素点行的所有边缘位置后,计算连续边缘的距离,并判断是否存在连续距离的比例接近位置探测图形的特征比例,若存在,则判断为位置探测图形,并局部地将中点所在位置判断为深色模块; 步骤3、依次找出图像中所有满足条件的位置探测图形,并根据位置探测图形应有的位置关系,判断位置探测图形组; 步骤4、分别对位置探测图形组进行解码,此时将位置探测图形的中心判断为深色模块,并根据边缘位置,间隔地将图像依次判断为深色模块、浅色模块。2.如权利要求1所述的一种彩色图片二维码解码方法,其特征在于,在所述步骤2中,局部地将中点所在位置判断为深色模块后,对是否为位置探测图形进行进一步确认。3.如权利要求1所述的一种彩色图片二维码解码方法,其特征在于,所述步骤4包括: 步骤4.1、根据位置探测图形,计算出二维码的最小单元模块宽度; 步骤4.2、根据最小单元模块宽度,将二维码图区域分割成若干行、若干列,每个行区域宽度刚好为最小模块宽度; 步骤4.3、以每个行、列的中心所在的直线进行边缘检测,并以位置探测图形的中心为深色模块为基础,判断每个模块为深色模块或者是浅色模块; 步骤4.4、按照深色模块为I,浅色模块为O,并根据二维码对应的协议标准进行解码,得出解码结果。
【文档编号】G06K7/14GK105975892SQ201610288694
【公开日】2016年9月28日
【申请日】2016年5月4日
【发明人】刘宁
【申请人】上海皇和信息科技有限公司