复杂背景下多种字符和数字混合的叠加二维码的识别方法与流程

文档序号:14357714阅读:1175来源:国知局

本发明涉及一种复杂背景下多种字符和数字混合的叠加二维码的防伪识别方法。



背景技术:

二维码技术标准在全球范围的应用和推广,其技术标准普及应用为企业带来了可观的经济效益。手机与二维码的结合,进一步拓展了二维码应用价值,促进了行业的融合。随着市场、产业链、商业模式的不断成熟,手机二维码将为通信、媒体以及其他传统行业带来更多的机会,手机二维码将在未来走进更多人的生活。手机二维码的发展,将带来丰富的应用,根据诺达咨询的归类,手机二维码可以细分位类:手机二维码识读应用、手机二维码增值业务引擎应用。正是由于应用的差别,所以不同应用下的产业链和商业模式都会有所不同,另外,由于技术厂商在对待技术的策略不同,也将会带来商业模式的差异。从手机二维码本身发展看,未来将呈现如下趋势:手机二维码标准将会多标准并存;支持多种手机二维码标准的解码软件将出现大众市场的一般性应用编码将向用户开放商业模式将呈现多样化特点。如图1-3所示三种二维码,实际上是由一种二维码演化而来。

目前的二维码识别方法有两大类,第一类是直接用单纯的二维码扫描识别,达到防伪效果;第二类是用二维码加可刮擦数字条码混合,来达到扫码识别的效果。随着技术的不断更新和发展,以上两类防伪识别方法,都不能很好的杜绝被防伪码被仿冒、仿制。给商品的防伪工作造成了混乱,给生产企业带来了大量的经济损失。同时企业的相关知识产权也得不到有效的保护。大量仿冒、仿制防伪码的出现,势必导致假冒商品在消费市场的泛滥,给正常的商品销售市场带来极大的冲击。扰乱了正常的商品销售次序。



技术实现要素:

本发明的目的在于针对上述现有技术中存在的问题,提供一种复杂背景下多种字符和数字混合的叠加二维码的识别方法。

本发明通过如下技术方案予以实现:

基于二维码的多种字符和数字混合叠加的防伪识别方法,包括叠加二维码所在区域提取、复杂背景下的叠加二维码识别和变形情况下的叠加二维码识别,具体步骤如下:

(1)、叠加二维码图像色度化

以多重二维码中心为轴建立空间直角坐标系,彩色图的每个象素的颜色用该三维空间的一个点来表示,而色度图的每个象素的颜色用直线上的一个点来表示,釆取加权平均法,将三个分量以不同的权值进行加权平均,得色度级图像;

(2)、叠加二维码图像二值化

将图像上的像素点的色度值设置为域,将整个图像呈现出明显的黑白效果,将色度级图像转化为二值图像;

(3)、叠加二维码图像去嗓

首先对有含有噪声的图像进行开运算,将背景上的噪声去除,然后对得到的图像进行闭运算,将图像上的噪声去掉;

(4)、叠加二维码位置探测矢量图形提取

1)位置探测图形估计

对去噪后的二值图像的每一行从左到右,扫描,如果像素值变化,记录上一像素区间的像素个数,得到一个个数矩阵,再从左到右判断个数矩阵,如果一行中连续5个像素个数满足大约1:1:3:1:1的比例将此区域对应的像素涂成白色,以此类推处理每一行,得到水平方向满足比率1:1:3:1:1的区域图,同理,对每一列从上到下扫描,得到垂直方向满足1:1:3:1:1比率的区域图;

2)位置探测图形提炼

①i=1(i是将要执行以下判断的区域号);

②判断区域i的重心c像素值是否为黑色,如果是继续执行,否则跳到(6);

③重心c作为种子点,与邻近像素比较,如果邻近像素与种子点像素值相同,加入种子区域,继续生长,直到区域生长结束,把得到的连通区域标记为x,如果该区域在位置探测图形内,则标识为红色区域;

④将上一步得到的连通区域y设为白色,以c为种子点,结合区域增长,得到包含区域y的连通区域如果该区域在位置探测图形内,则标识为红色区域;

⑤将上一步得到的连通区域y设为黑色,以c为种子点,结合区域增长,得到包含区域y的连通区域z如果该区域在位置探测图形内,则标识为红色区域;

⑥将i加1,跳到(2);

通过①到⑥的处理,找到了满足以上条件的区域i,区域i就是位置探测图形之一,找出二维码上的三个位置探测图形,计算区域z的重心w,和区域的面积位置探测图形的面积s,一个位置探测图形是由7x7模块组成的正方形,根据公式u=s/17,我们得到大致的模块宽度u;

(5)、叠加二维码图像孔洞填充

1)对去噪后的二值图像的每一行,从左到右依次扫描,如果两个黑色区域之间的白色区域长度小于2u,用黑色像素点填充此白色孔洞,得到图像i1;

2)对图像的每一列,从上到下依次扫描,如果两个黑色区域之间的白色区域长度小于2u,用黑色像素点填充此白色孔洞,得到图像i2;

3)用逻辑与操作连接图像i1与i2,得到i3;

(6)、叠加二维码区域提取

1)以一个位置探测图形的重心为种子点,设该像素为(x,y);

2)以(x,y)为中心,检查它的邻域像素,将色度值与中心点相同的像素合并起来;

3)以新合并的像素为中心,返回到步骤2);

4)直到邻近的像素不能合并,区域不能进一步扩张,生长结束,得到连通阈;

(7)寻找二维码关键点:

通过角点检测提取二维码的准确位置:

1)将8条不同的直线分为2组,组1包括线1、线2、线3、线4;组2包括线5、线6、线7、线8;

2)将组1中的四条直线从不同方向由远及近靠近二维码区域,直到与二维码区域相切,记下4条直线的切点坐标,并且计算线1、线2、线3、线4与二维码区域切点个数:n1,n2,n3,n4(n1,n2,n3,n4>0);

3)直线从不同方向由远及近靠近二维码区域,直到接触到二维码区域,记下条直线的切点坐标,并且计算线5、线6、线7、线8与二维码区域切点个数:n5,n6.n7,n8(n5,n6.n7,n8>0);

4)比较第一组直线与二维码区域切点个数n1,n2,n3,n4之和与第二组直线与二维码切点个数n5,n6.n7,n8之和多少,切点少能够更好地描述二维码轮廓,如果n1,n2,n3,n4>n5,n6.n7,n8,选择组2的切点作为候选角点,否则选择组1的切点;

5)计算叠加二维码区域4个角点的坐标值,4个坐标值包含在四条直线对应的连接点中,在n1中如果n1>1,选择线1与二维码区域切点的重心作为一个角点坐标,如果n1=1,此切点坐标即为角点坐标,对于n2~n4我们进行同样的处理,处理之后得到四个角点坐标:(x1,y1),(x2,y2),(x3,y3),(x4,y4);

(8)、叠加二维码反透视变换

在获取叠加二维码图像数据时,对失真图像进行反透视变换,以矫正叠加二维码的形状;

优选的,所述寻找二维码关键点部分,可以以位置探测图形边长n为板桥的长度,进行叠加二维码关键点提取,步骤如下:

1)以左端点为起点,以起点为圆心,长为n的线段顺时针旋转,直到线段与二维码上边界接触;

2)如果接触点的个数大于1个,选择离起点距离最近的切点记录其坐标,并在下次迭代时以此切点为起点;如果接触点的个数为1,记录其坐标,并在下次迭代时以此切点为起点;

3)直到起点的坐标与上边界另一个端点的距离小于n,迭代结束,所有的变形情况下的二维码识别起始点,即为我们求得的关键边缘点;

通过搭桥法,我们求出了二维码四条边界的关键轮廓点,从而得到边缘轮廓;

4)叠加二维码边缘曲线拟合

用最小二乘法曲线拟合每组边缘关键点,得到边缘拟合线。

本发明分别以复杂背景和变形情况下的二维码为主要研究对象,对其进行二维码区域提取及二维码校正。复杂情况下的二维码识别主要工作集中在二维码区域提取,变形情况下的二维码识别主要工作集中在二维码校正。主要贡献如下:

1、改进了已有二维码识别算法以适应复杂背景下的识别:利用形态学的区域增长算法,求出位置探测图形候选区域对应的三个依次增大的连通阈,并结合重心检测及面积比,排除背景区域干扰,提炼出真正的位置探测图形区域。提出了变形二维码识别算法,包含如下创新点:

自适应角点检测算法:通过找到三个位置探测图形之间的最长距离的线段,以两条与这条线段平行的直线,两条与这条线段垂直的直线,从远处逼近,以得到二维码的四个角点。此方法在一定程度上可以排除二维码变形及拍摄角度对二维码角点检测的影响,实现自适应。位置探测图形角点检测算法:根据之前提取出的位置探测图形中心,结合三次区域增长,分别求出位置探测图形最内、中、外三个正方形区域,用两组直线逼近发求出位置探测图形外正方形区域的角点。

2、二维码边缘轮廓关键点提取:用搭桥法求出二進码四条边界的边缘关键点,再根据关键点的距离,排除过于密集的关键点,得到稀疏的边缘关键点。

3、对应点确定算法:利用积分,求出变形二维码关键点之间的曲线长度,再通过伸缩比,求出变形二维码上的关键点在校正图像上的对应坐标。

4、为企业带来了一种全新的防伪识别方法,有效保护了合法厂家的相关知识产权和经济利益。

5、提供了一种可追溯的防伪识别方法。

6、随着此种方法的推广,将逐步杜绝假冒商品进入正常的商品流通市场。

附图说明

图1是普通二维码。

图2是渐变的液态二维码。

图3是渐变的圆角二维码。

图4是叠加二维码。

图5是变形二维码。

具体实施方式

下面将结合本发明实施例中的附图1-5,对本实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是对本发明一部分实例,而不是全部的实例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

伴随着经济和计算机技术的不断发展,人们对商品质量的要求越来越高,以往每种商品上贴一种标签的方式已经不能满足我们的需求,更向每个商品有一个独立的防伪标识需求发展。为此提出了基于二维码的多种字符和数字混合叠加的一种叠加二维码及其防伪识别算法。此算法主要是基于寻找位置探测图形,嵌入到广告中的二维码、字母、数字,由于复杂的背景中极可能存在满足位置探测图形条件的信息,干扰防伪码的扫描,基于此,本发明第一部分研究复杂背景下的防伪码识别。

二维码贴在物品上给我们探索物品的来源的同时也带来了另一个问题,传统的二维码识别算法都是基于平面二维码的假设,对贴在非平面上的变形二维码没有相应的识别算法,因此找出一个能够校正变形二维码以用来识别的算法是一个重要的研究方向。基于此,本发明第二部分研究二维码、数字、字符混合叠加情况下的防伪码识别算法。

根据叠加二维码在电子商务领域的应用,本发明方法提出了一种基于形态学复杂背景下的叠加二维码识别算法;根据二维码在产品溯源方面的应用,提出了变形情况下的二维码识别算法,无论是复杂背景还是变形情况均可识别,叠加二维码识别包括二维码定位、二维码校正、译码三部分。

复杂背景下的叠加二维码由于背景干扰因素多,二维码定位是关键。叠加二维码通过位置探测图形定位,传统的位置探测图形定位算法通过判断某些区域是否在水平和垂直方向满足比率。为了排除复杂背景的干扰,我们在原有位置探测图形定位基础上通过位置探测图形的面积比和重心检测从众多候选区域中提炼出真正的位置探测图形,进而结合区域增长算法提取二维码区域。最后,通过角点检测及反透视变换得到校正叠加二维码图形。

变形情况下的二维码识别由于二维码发生非线性变形,二维码校正是关键。在通过前述二维码定位算法获得二维码区域后,本算法提出了非线性变形二维码校正算法。此方法首先根据改进的直线逼近及位置探测图形区域增长获得变形二维码的角点及部分位置探测图形角点作为对应点,然后通过搭桥求出代表二维码边缘轮廓的关键点结合曲线拟合得到四条边缘的拟合曲线,再运用微积分知识计算出变形二维码上的对应点在校正图形上的坐标,最后通过非线性变换关系,得到校正图像。

复杂背景下基于二维码的多种字符和数字混合叠加的防伪识别方法,是通过一种特定的算法,结合生产端的矢量制版及识别端的算法升级来实现。

由于至今二维码解码算法的研究很成熟,解码软件也很多样,因此本算法着重介绍二维码定位和二维码校正部分,解码部分不作介绍。寻找位置探测图形是二维码定位的关键。传统的寻找位置探测图形算法是根据位置探测图形以任何方向扫描都满足黑白黑白黑比例的特点。实际情况如果二维码处于复杂背景下背景区域中有可能也满足的比例条件,因此单用传统方法定位找到的满足条件区域可能不是探测图形,如果选择了错误的区域直接会导致二维码区域的定位错误以及二维码的提取失败。

如图3-4所示,由于多重叠加二维码已经不是原来简单的二维码,而是由两种方式来实现:图3所示第一种是在原来的二维码众多的识别点上选取三个识别点,叠加了数字和字符。二维码上的数字和字符的组合按照厂家特定的商品编码规则,进行随机编码。数字和字符包括0-9和26个英语字母的大小写。图4所示第二种是通过矢量图形与二维码叠加进行组合。通过多重叠加二维码的使用,为厂家提供了一种全新的商品防伪方法。同时多重叠加二维码的使用大大增加了二维码被仿冒的难度。

在此基础上提出了改进算法通过原有算法找到满足条件候选位置探测图形区域后,申请人考虑了复杂背景的干扰,从一些候选区域中选择离图像中心最近的区域作为位置探测图形。此方法在一定程度上排除了复杂背景的干扰,提高了位置探测图形定位正确率,但要求使用者在拍摄二维码时将二维码区域置于屏幕的中央,如果二维码位置过偏,会影响二维码的识别,给用户带来了麻烦二维码定位后要对二维码进行校正,二维码由于拍摄角度、自身变形等原因,会发生不同程度的变形,己有算法对发生线性变形情况通过寻找二维码的四个角点,根据反透视变换求出校正图形。二维码识别算法都是基于平面情况下,没有涉及非线性变形的二维码校正。己有的图像识别算法涉及过变形情况:一种算法是用两个摄像头以不同角度对变形物体拍照,此方法需要用两个摄像机使用不方便;另一种是假设图像发生的是柱面变形,通过求出圆柱的半径来求出校正图形但是实际的二维码变形复杂此方法只能适用二维码贴在柱面上的情况。

一、叠加二维码所在区域提取

叠加二维码识别即通过图像的采集设备,得到二维码的图像,此后主要经过提取二维码区域、二维码校正、解码三个步骤实现二维码的识别。

叠加二维码定位:叠加二维码定位是实现二维码识别的基础,在一幅图像中如果找不到待识别的条码,后面的工作就无法完成。叠加二维码的定位就是找到叠加二维码的图像区域,对有明显二维码特征的区域进行定位。二维码校正得到叠加二维码所在区域之后,由于拍摄角度或二维码本身的变形,原本为正方形的二维码发生了形变,因此需要对二维码进行校正。通过求出叠加二维码的关键点及对应校正图形上的坐标,根据映射关系,求出标准二维码图形。

解码:得到一幅标准的叠加二维码图像后,对该图像进行网格采样,对网格每一个交点上的图像像素取样并根据闽值确定是深色块还是浅色块。构造一个位图,用二进制的“0100”表示深色像素,“1011”表示浅色像素,从而得到条码的原始二进制序列值,然后对这些数据进行纠错和译码,最后根据条码的逻辑编码规则把这些原始的数据位流转换成数据码字。

具体实施操作如下:

1、叠加二维码图像色度化

含有二维码的图像通常由嵌入式系统采集,以彩色图像形式显示。然而,实际的二维码区域只是由深浅交错的模块组成,彩色图像没有特别的意义。色度化处理后的图像需要的计算时间和计算空间更少,可以大大提高处理速度,因此首先对图像进行色度化处理。

对彩色图像进行色度化的方法一般为:分量法、最大值法、平均值法、加权平均法。在mbn模型中,如果m=b=n时,则色彩表示一种色度颜色,其中m=b=n的值叫色度值,因此色度图像每个像素只需一个字节存放色度值,色度范围为0100-0300。以多重二维码中心为轴建立空间直角坐标系,则彩色图的每个象素的颜色可以用该三维空间的一个点来表示,而色度图的每个象素的颜色可以用直线上的一个点来表示。彩色转色度图的本质就是寻找一个三维空间到一维空间的映射,最容易想到的就是射影,即过彩色空间的一个点向直线及做垂线,色度可以说是亮度的量化值,而模型定义是客观的三个波长值,转换时需要考虑人眼对不同波长的灵敏度曲线,所以系数不相等。

本算法釆取加权平均法,根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此按三个分量进行加权平均能得到较合理的色度级图像。

2、叠加二维码图像二值化

为了获得高质量的图像,我们将色度级图像转化为二值图像。图像二值化就是将图像上的像素点的色度值设置为域,也就是将整个图像呈现出明显的黑白效果。选择合适的阈值对叠加二维码二值化图像质量影响至观重要。

3、叠加二维码图像去噪

图像去噪的方式有很多,如均值滤波器、自适应维纳滤波器、中值滤波器、形态学噪声滤除器、小波去噪等。其中形态学噪声滤波器ⅰ将开运算和闭运算结合起来可用来滤除噪声,首先对有含有噪声的图像进行开运算,可选择结构要素矩阵比噪声的尺寸大,因而开运算的结果是将背景上的噪声去除。然后是对得到的图像进行闭运算,将图像上的噪声去掉。根据此方法的特点可以知道,此方法适用的图像类型是图像中的对象尺寸都比较大,且没有细小的细节,对这种类型的图像除噪的效果会比较好。这种方法保留了大部分包含信号的小波系数,因此可以较好地保持图像细节。

1)开运算:先腐烛后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

2)闭运算:先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

腐蚀操作会去掉物体的边缘点,细小物体所有的点都会被认为是边缘点,因此会整个被删去。再做膨胀时,留下来的大物体会变回原来的大小,而被删除的小物体则永远消失了。

膨胀操作会使物体的边界向外扩张,如果物体内部存在小空洞的话,经过膨胀操作这些洞将被补上,因而不再是边界了。再进行腐蚀操作时,外部边界将变回原来的样子,而这些内部空洞则永远消失了。

连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。

4、叠加二维码位置探测矢量图形提取

与传统算法相同,为了提取出二维码所在区域,我们要找到位置探测矢量图形所在区域,由于背景复杂,在提取出二维码候选区域之后我们还要用形态学的方法提炼位置探测图形区域,排除背景的干扰。

1)位置探测图形估计

前面对图像的色度化,二值化,去噪处理之后,得到了较清晰的二值图像。现要确定三个位置探测图形的中心点及二维码模块的大致宽度。

每一个二维码上有三个位置探测图形,寻找位置探测图形是二维码提取的关键。位置探测图形由三个大小不同的黑、白、黑同心正方形组成。可以发现每条红线上的黑白比率都大致为:1:1:3:1:1的比率,无论从什么方向扫描位置探测图形都满足黑白黑白黑大致的比率,与扫描角度无关。以行为例,对二值图像的每一行从左到右,扫描,如果像素值变化,记录上一像素区间的像素个数,得到一个个数矩阵。再从左到右判断个数矩阵,如果一行中连续5个像素个数满足大约1:1:3:1:1的比例将此区域对应的像素涂成白色。以此类推知道处理每一行,得到水平方向满足比率1:1:3:1:1的区域图。同理得到垂直方向满足1:1:3:1:1比率的区域图。

2)位置探测图形提炼

不是所有的区域都是位置探测图形。这些满足比率的区域有可能是背景或者二维码非位置探测图形部分。因此,我们要从这些候选区域中提炼出真正的位置探测图形。通过观察位置探测图形,我们可以发现,位置探测图形由4-6个同心正方形组成,并且这些正方形的面积满足17:28:36:65。通过判断每个区域是否满足以上条件可以排除背景干扰,找到真正的位置探测图形。算法如下:

(1)i=1(i是将要执行以下判断的区域号);

(2)判断区域i的重心c像素值是否为黑色,如果是继续执行,否则跳到(6);

(3)重心c作为种子点,与邻近像素比较,如果邻近像素与种子点像素值相同,加入种子区域,继续生长,直到区域生长结束。把得到的连通区域标记为x,如果该区域在位置探测图形内,则标识为红色区域。

(4)将上一步得到的连通区域y设为白色,以c为种子点,结合区域增长,得到包含区域y的连通区域如果该区域在位置探测图形内,则标识为红色区域。

(5)将上一步得到的连通区域y设为黑色,以c为种子点,结合区域增长,得到包含区域y的连通区域z如果该区域在位置探测图形内,则标识为红色区域。

(6)将i加1,跳到(2)。

通过(1)到(6)的处理,找到了满足以上条件的区域i。

显然区域i就是位置探测图形之一。我们要求出二维码的模块宽度为接下来图像分块部分做准备。计算区域z的重心w(位置探测图形的中心)。并得出区域的面积位置探测图形的面积s。在iso标准,一个位置探测图形是由7x7模块组成的正方形。根据公式u=s/17我们得到大致的模块宽度u。

5、叠加二维码图像孔洞填充

我们想要得到的只是二维码所在区域,其它背景是干扰因素。处理后的二值图像,由于白色孔洞的存在,二维码没有在一个连通阈中,为了将二维码区域提取出来,使用约束步长算法逐行逐列填充二值图像中的孔洞,以使二维码在一个连通阈中。

步长算法的关键是求约束变量。如果约束变量过大,可能会导致二维码与背景区域粘连。如果约束变量过小,可能会导致二维码区域所在连通阈数目大于9。因此为了准确地提取二维码区域,约束变量的选择十分重要。通过观察我们假设二维码区域与背景的距离大于两倍模块的宽度,并将算法的约束变量设置为二维码模块大小两倍。图像分块的具体步骤如下所示:

(1)对图像的每一行,从左到右依次扫描,如果两个黑色区域之间的白色区域(即孔洞)长度小于2u,用黑色像素点填充此白色孔洞,得到图像i1。

(2)对图像的每一列,从上到下依次扫描,如果两个黑色区域之间的白色区域(即孔洞)长度小于2u,用黑色像素点填充此白色孔洞,得到图像i2。

(3)用逻辑与操作连接图像i1与i2,得到i3。

为了更准确地分块,我们使用两次图像分块算法,得到所需图像。

6、叠加二维码区域提取

如图4二维码,图像孔洞填充算法将二维码区域大致划分到一个连通阈中,接下来,我们要提取出二维码对应的连通阈。观察图左侧可知,位置探测图形的中心一定在二维码所在的连通阈中,可以运用区域增长算法得到连通阈。

区域生长是一种古老的图像分割方法。区域生长的基本思想是将具有相似性质的像素集合起来构成区域。区域生长方法是根据同一物体区域内象素的相似性质来聚集象素点的方法,从初始区域(如小邻域或甚至于每个象素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象素的相似性度量可以包括平均色度值、纹理、颜色等信息。

区域生长的好坏决定于初始点(种子点)的选取;生长准则;终止条件。结合图左侧,我们将区域增长的三个准则定位:位置探测图形作为种子点;如果邻近像素与中心点相同则将邻近像素合并近来;如果区域不再增长,则终止算法。具体步骤如下:

1)以一个位置探测图形的重心(图4中数字及字母符号位置)为种子点,设该像素为(x,y);

2)以(x,y)为中心,检查它的邻域像素,将色度值与中心点相同的像素合并起来;

3)以新合并的像素为中心,返回到步骤2);

4)直到邻近的像素不能合并,区域不能进一步扩张,生长结束,我们得到了连通阈;

二、复杂背景下的叠加二维码识别

通过第一步的叠加二维码区域提取,我们得到了二维码所在区域,接下来要校正二维码。校正二维码就是要找到待校正二维码上的一些关键点,再求出关键点在校正图像上的对应点坐标,最后根据对应关系,得到校正二维码。

由于复杂背景下的二维码发生的形变主要来自于拍摄角度问题为透视变换,找到四组对应点就可以根据映射关系求出校正图形。有二维码的角点是二维码重要关键点,较容易求出,因此我们以二维码的四个角点作为二维码的关键点。已知校正图像边长的情况下,二维码的四个角点在校正图像上的对应点坐标为(1,1),(1.n+1),(n+1,1),(1,1),映射关系为透视变化,因此接下来是对二维码关键点即四个角点的寻找,及映射关系即反透视变换的系数。

1、二维码关键点

接下来,我们通过角点检测提取二维码的准确位置:

(1)将8条不同的直线分为2组,组1包括线1、线2、线3、线4;组2包括线5、线6、线7、线8。

(2)将组1中的四条直线从不同方向由远及近靠近二维码区域,直到与二维码区域相切,记下4条直线的切点坐标,并且计算线1、线2、线3、线4与二维码区域切点个数:n1,n2,n3,n4(n1,n2,n3,n4>0)。

(3)直线从不同方向由远及近靠近二维码区域,直到接触到二维码区域。记下条直线的切点坐标,并且计算线5、线6、线7、线8与二维码区域切点个数:n5,n6.n7,n8(n5,n6.n7,n8>0)。

(4)比较第一组直线与二维码区域切点个数n1,n2,n3,n4之和与第二组直线与二维码切点个数n5,n6.n7,n8之和多少,切点少能够更好地描述二维码轮廓。如果n1,n2,n3,n4>n5,n6.n7,n8,选择组2的切点作为候选角点,否则选择组1的切点。本算法1中的例子选择组的切点作为候选角点。

(5)计算叠加二维码区域4个角点的坐标值。4个坐标值包含在四条直线对应的连接点中。在n1中如果n1>1,选择线1与二维码区域切点的重心作为一个角点坐标。如果n1=1,此切点坐标即为角点坐标。对于n2~n4我们进行同样的处理。处理之后得到四个角点坐标:(x1,y1),(x2,y2),(x3,y3),(x4,y4)。

2、叠加二维码反透视变换

在获取叠加二维码图像数据时,可能会因为相机拍摄角度等原因造成图像几何失真,导致叠加二维码发生透视变形,例如获取的叠加二维码图像为任意四边形。我们须对失真图像进行反透视变换,以矫正叠加二维码的形状。

三、变形情况下的叠加二维码识别

通过第一步的叠加二维码区域提取,我们得到了叠加二维码所在区域,接下来要校正叠加二维码。校正叠加二维码就是要找到待校正二维码上的一些关键点,再求出关键点在校正图像上的对应点坐标,最后根据对应关系,得到校正二维码。

由于复杂背景下的二维码发生的形变主要来自于拍摄角度问题,为透视变换,找到四组对应点就可以根据映射关系求出校正图形。而变形情况下的叠加二维码校正,由于同时有叠加二维码变形及拍摄角度等原因,在图像上表现的变形为非线性,四组对应点不足以求出映射关系,因此我们在叠加二维码的四个角点做为关键点的同时,还要寻找其它边缘关键点。同时要求出变形叠加二维码关键点在校正图形上的对应关系,通过映射函数求出校正图形。

1、变形叠加二维码区域提取

图像预处理:色度化、经过二值化、去噪。找到水平方向满足:1:1:3:1:1的区域,垂直方向满足1:1:3:1:1的区域。对图形进行相关操作,得到图像中水平垂直方向都满足1:1:3:1:1的区域。

图中的白色区域中有的是二维码区域,有的是二维码其它位置或背景区域,找出图中三个最大的区域,即为位置探测图形区域。并补洞算法求出连通阈,通过区域增长算法求出二维码对应的连通阈。

2、二维码关键点

边缘是图像最基本的特征。所谓边缘是指图像周围像素色度有阶跃或屋顶状变化的像素集合,它存在于目标与背景、目标与目标之间。在图像分析与处理中,边缘是图像分割的重要依据,也是纹理分析和图像识别的重要基础。在集中经典的边缘检测算子中,算子方法简单,处理速度快并且所取得的边缘光滑、连续。

算法主要思想:算子是基于一阶微分的边缘检测方法,首先进行邻域平均或加权平均,然后进行一阶微分处理,检测出边缘点。

3、自适应角点检測

正常未变形情况下,二维码的三个位置探测图形中心的连线为一个等腰直角三角形。因此无论以何种角度拍摄二维码,用两组直线逼近的方法都可以找到二维码的角点,然而,对于当变形二维码发生了非线性形变,如果再使用传统的两组直线逼近的方法求角点有可能会将变形边界上的点误当作角点。红色星号为用传统方式求出的二维码角点。其中左下的红星号只是下边界点,由于下边界变形严重,误将其看作角点。发生这种错误会严重影响图像的进一步处理。在变形情况下,原本应为直线的四条边界发生了形变,三个位置探测图形的中心组成的三角形可能不是直角三角形。这是因为图像变形及拍摄角度等使得二维码图像各部分的伸缩比例有变化,三个位置探测图形之间的距离变化比例也会不相同。最长的距离变化之后的稳定变形情况下的二维码识别性越高,因此我们找出最长的两个位置探测图形的距离。根据前面求出的三个位置探测图形的中心坐标,将三个中心点相连,求出任意两点之间的距离。

如果其中一条直线与二维码轮廓的切点为一个,则该切点为二维码的一个角点;如果其中一条直线与二维码轮廓的切点不只一个,计算这组切点的重心作为角点。得到二维码的四个角点。

4、位置探测图形的角点

由于曲线下的凹域使曲线拟合发生偏差,因此我们通过比较边界点与曲线的对比。以一个位置探测图形为例,以该位置探测图形的中心为种子点,利用区域增长算法,求出该位置探测图形中心所在的连通阈,即位置探测图形最里层的黑色区域。并令该区域为白色,以中心点为种子点,利用区域增长算法,求出该位置探测图形中心所在的连通阈,即位置探测图形里层内白色区域。并令该区域为黑色,以中心点为种子点,利用区域增长算法,求出该位置探测图形中心所在的连通阈,即位置探测图形最外层内黒色区域。即得到一个位置探测图形。

利用前面所述的两组直线逼近的角点检测算法,找到三个位置探测图形的第四种变形情况下的二维码识别角点,共12个角点。

二维码位置探测图形角点中有四个也是二维码的角点。分别求出二维码位置探测图形的12个角点到二维码的四个角点的欧拉距离,找出距离最小的三个点,即为位置探测图形角点与二维码角点的重合点。再除去离二维码边缘距离最远的三个点,即得到变形图像上的对应点。

5、叠加二维码边缘拟合

根据前面求得的二维码外围轮廓及个角点,我们想要得到二维码四条边缘的拟合曲线,以求出变形二维码上基准点在校正图像上的对应坐标。

有许多衡量拟合优度的标准,最常用的一种做法是选择参数使得拟合模型与实际观测值在各点的残差或离差的加权平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。直接对二维码的边缘点进行曲线拟合。

6、叠加二维码边缘关键点提取

如何能够填补这些凹域提取出非凹关键点是我们讨论的重点,在尝试的过程用到了以下方法:拟合线一侧点提取、形态学平滑、直线逼近、搭桥法(本算法采用)。

搭桥法具体内容如下:

以上三个方法都存在一定的不足,对于左、下、右边界的处理较理想,但是对于上边界(整体趋势为凹)处理不理想。我们要寻找到一种方法,无论四条边界整体趋势是凸还是凹,都能找到轮廓的关键点。

通过观察二维码上边界并结合生活常识,可以假设上边界的线是一条从左到右先下坡后上坡的路,路的中间位置有两个深井。如何在这段路上行走才能不掉到井里并且知道此路的大致趋势,满足上诉条件的行走路径即是我们要求得的二维码上边界关键轮廓,我们可以在遇到深井前搭一个板桥,在板桥上行走就可以不掉到井里,可是如何选择搭板桥的起始点,用多长的板桥,由于我们在行走前不会预先知道路的哪里有井洞,井口的直径长度,因此我们采取的谨慎的走法,即从路的最左端,开始位置就用固定长度的板桥。

板桥的长度确定很重要,如果板桥过短,板桥可能会掉进井里或板桥的一端掉进井里,行人还是会掉到井里。如果板桥过长,例如采用无限长的板桥,板桥会架在路左右两端的凸边缘上,虽然不能掉到井里,也不能探测出这段路的整体轮廓。由于二维码包括功能图形和编码区域,功能图形中的位置探测图形在二维码的边缘。而编码区域由于在后期进行过掩模处理即使边界位置出现空白区即井洞,其空白区长也不会大于二维码位置探测图形的边长,基于此,板桥的长度设为位置探测图形的边长。

因此我们选择长为位置探测图形边长的板桥,从路的最左端开始使用,板桥的一端固定在起点,一端靠重力顺时针落到地上,记录板桥与地面的切点,如果切点的个数不只一个,记录离起点最近的切点,并以这个切点为下次搭板桥的起点;如果切点的个数为一个,以该切点为下次搭板桥的起点。依次类推,直到走完所有的路。

具体方法如下:以叠加二维码下边界为例

1)二维码区域提取过程中的位置探测图形提炼部分,我们已经估计了位置探测图形边长n,即为板桥的长度。

2)以左端点为起点,以起点为圆心,长为n的线段顺时针旋转,直到线段与二维码上边界接触。

3)如果接触点的个数大于1个,选择离起点距离最近的切点记录其坐标,并在下次迭代时以此切点为起点;如果接触点的个数为1,记录其坐标,并在下次迭代时以此切点为起点。

4)直到起点的坐标与上边界另一个端点的距离小于n,迭代结束。所有的变形情况下的二维码识别起始点,即为我们求得的关键边缘点。

通过搭桥法,求出了二维码四条边界的关键轮廓点,从图4-5中可以看出,边界上的凹点(即干扰边缘点)已被我们去除掉。而得到的红色点可以代表关键的边缘轮廓。

7、叠加二维码边缘曲线拟合

上面己经找到二维码组边缘关键点,分别为a1,a2,a3,a4,用最小二乘法曲线拟合每组边缘关键点,得到边缘拟合线。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1