一种环形码的边缘检测与定位识别方法与流程

文档序号:20875974发布日期:2020-05-26 16:32阅读:232来源:国知局
一种环形码的边缘检测与定位识别方法与流程
本发明涉及二维码
技术领域
,特别是指一种环形码的边缘检测与定位识别方法。
背景技术
:传统方形二维码通常在三个角落嵌入双层方形作为定位区域,其黑白比例为1:1:3:1:1,利用矩形的各向等比性,很容易在真实场景中定位二维码位置,同时依据方形边缘,能框出数据码的编码区域,随后按照特定位置与顺序提取数据区黑白块,达到解码目的。利用此各向不变性,能够抗拍摄时场景的旋转、缩放等对二维码识别的干扰,但是一旦定位区域被污染,如外层矩形框被加粗,丢失像素等,很容易得到错误的数据区域,导致解码失败。新型二维码,如微信小程序中所使用的射线型“菊花码”,利用双层环形作为定位符。在实际使用中,依旧是依据某个比例找到找到定位符,确定二维码所在区域,随后依据每条射线上的黑白块获取二进制信息,虽然编码区域并非由定位区域划分,相对于传统二维码提高了定位准确度,但是按照比例寻找定位符的方式通常具有一个弊端:一般真实场景中的光照、污渍等干扰稍微影响到定位符的黑白比,就会导致解码失败。技术实现要素:本发明提出一种环形码的边缘检测与定位识别方法,解决了现有技术中若二维码被污染,基于比例寻找定位符很容易得到错误的数据区域,导致解码失败的问题。本发明的技术方案是这样实现的:一种环形码的边缘检测与定位识别方法,具体包括以下步骤:s1,获取待测图像;s2,对待测图像进行预处理,通过分象限迭代中心算法确定环形码的中心坐标和半径,框选环形码最大外接圆和环形码的外接矩形,根据外接矩形从待测图像中截取环形码图像;s3,对环形码图像进行预处理,通过择优算法筛选识别定位符并通过透视变换算法矫正。作为本发明的一个优选实施例,步骤s2对待测图像进行预处理,具体包括以下步骤:对待测图像进行滤波二值化处理;提取二值图像中的连通区域,并滤除面积小于阈值的连通区域;将剩余连通区域的中心点存储至列表。作为本发明的一个优选实施例,对待测图像进行滤波二值化处理具体包括通过中值滤波法消除待测图像的部分噪点,通过大津算法进行图像二值化处理,通过开运算滤除小噪点和修复轮廓。作为本发明的一个优选实施例,步骤s2中通过分象限迭代中心算法确定环形码的中心坐标和半径,框选环形码最大外接圆和环形码的外接矩形,具体包括以下步骤:求中心点的平均点并将其作为坐标原点,划分四个象限;从三个象限中离平均点最近的点坐标,求取上述三个点坐标的圆心坐标,将该圆心坐标作为新的坐标原点划分四个象限进行迭代运算,迭代到中心位置较小范围内波动,确定为环形码中心位置坐标;根据最近的点坐标拟合圆或椭圆求取外切矩形,根据外切矩形得到环形码的内环半径;根据环形码中心位置坐标、内环半径、半径增量和半径增加数获得环形码最大半径,求取环形码的外接矩形。作为本发明的一个优选实施例,步骤s3中对环形码图像进行预处理具体指的是对环形码图像进行滤波二值化处理;提取二值图像中的连通区域,并滤除面积大于或小于阈值的连通区域。作为本发明的一个优选实施例,对环形码图像进行滤波二值化处理具体包括通过中值滤波法消除待测图像的部分噪点,通过大津算法进行图像二值化处理,通过开运算断开二值化图像中素材边缘的狭窄连接。作为本发明的一个优选实施例,步骤s3中根据定位符的设定形状获取候选定位符集合,通过择优算法筛选识别定位符设所有定位点集合为c,从定位点集合中选取三个点为一组求取圆心,将圆心与环形码的中心坐标进行对比,距离最近的圆心对应的三个点为定位符;通过点乘算法确定三个定位符的排序;根据三个定位符通过算术平均算法确定矫正符。作为本发明的一个优选实施例,通过三个定位符和矫正符的坐标对应环形码图像的坐标进行透视变换矫正。本发明的有益效果在于:为环形码设定形状,摒弃使用具有黑白比的形状作为定位符,抗干扰和变形能力较强,增强环形码的定位准确度。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为环形码一个实施例的结构示意图;图2为本发明一种环形码的边缘检测与定位识别方法的流程图;图3为步骤s2的流程图;图4为步骤s3的流程图;图5为环形码解码流程图;图6为环形码定位放大与畸变矫正示例图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1展示了环形码各区域的结构图,其中各环黑点代表编码为1,白色区域代表编码为0,其余各模块功能为:装饰区仅为环形码装饰作用,可用于传递产品信息;定位区用于确定环形码所在位置,以及初始编码位置与编码方向;矫正区配合定位区可组成图像畸变矫正所需的参数变量,辅助信息区域则存储了传输内容类型,数据总长度,纠错参数等信息,在解码过程中可依据辅助信息区域确保传输信息的正确性;数据编码区为第二内环至最外环区域,包含传输信息以及纠错字的二进制编码。如图2所示,本发明提出了一种环形码的边缘检测与定位识别方法,环形码即为上述环形码,具体包括以下步骤:s1,获取待测图像;s2,对待测图像进行预处理,通过分象限迭代中心算法确定环形码的中心坐标和半径,框选环形码最大外接圆和环形码的外接矩形,根据外接矩形从待测图像中截取环形码图像;(1)由于使用摄像头拍摄二维码时容易受到环境噪声的影响,因此可先使用中值滤波消除部分噪点,随后使用大津算法进行图像二值化,使用开运算滤除小噪点与轮廓修复。(2)提取上述经过处理后的二值图像中的连通区域,计算各连通区域面积,滤除面积过小的轮廓。由于编码点都是实心黑圆构成,设其外接最小矩形的高为l,宽为w,初步滤除宽高比不满足0.6<w/l<1.8的区域。同时,利用最小外接矩形跟轮廓面积之间的比例可进一步筛除噪点区域,设cnt_area为轮廓面积,ret_area为小外接矩形面积,对不满足abs((cnt_area/rct_area)-1)<0.2条件的点滤除,将剩下的轮廓中心点集储存在列表里。(3)为了估算环形码的中心点,从环形码的形状与编码分布设计了一个利用算术平均点求取外圆轮廓的算法。经试验,在各种背景下步骤(2)中筛选得到的点集列表中所有点位置的算术坐标平均基本都会落在环形码内环内部,设点集为p={p1,p2,…pn},算术平均点求取公式为:以此算术平均点为坐标原点将点集划分四个象限,分别选三个象限各取离算术平均点最近的点坐标,公式为:依据三个点可以确定一个圆的方程,用这三点求解圆方程,即圆心,设pmin_1=(x1,y1),pmin_2=(x2,y2),pmin_3=(x3,y3)求解公式推导:求解上述三元二次方程,设a=2*(x2-x1),b=2*(y2-y1),c=x2*x2+y2*y2-x1*x1-y1*y1,d=2*(x3-x2),e=2*(y3-y2),f=x3*x3+y3*y3-x2*x2-y2*y2.则圆心坐标可表示为:x=(b*f-e*c)/(b*d-e*a),y=(d*c-a*f)/(b*d-e*a)再以此中心(x,y)划分象限按上述方法求取最近点算圆方程求中心,迭代到中心位置在较小范围内波动,即可确定环形码中心位置坐标。(中心图标噪点少的话此中心就接近为内环的中心,噪点多也不影响后面检测外框)。(4)以(3)所述停止迭代的中心为圆心,进行半径增量的检测。由环形码的结构可知,随半径增大,圆内包含的点集数量也越多,半径增量的确定是通过(3)计算的最近点,将最近点拟合圆或者椭圆求取外切矩形,将外切矩形的长宽相加除以4可近似作为内环半径,半径增量为内环半径的六分之一。随着半径增量的扩大,点集增加的数量不超过5,则停止扩增。此时将此最大半径内的点集作为整个环形码数据区域,即为环形码的最外层编码环的外接矩形。(5)将外接矩形作为感兴趣区域对应坐标按一开始的缩放比例返回原图,截取环形码,进行原图放大,统一缩放尺寸为800*800的图像。至此完成了待测图像中二维码的定位与外圆框选放大步骤,此步骤可以剔除背景,方便后续定位点与矫正符号的检测。s3,对环形码图像进行预处理,通过择优算法筛选识别定位符并通过透视变换算法矫正。①由于使用摄像头拍摄环形码时容易受到环境噪声的影响,因此可先使用中值滤波消除部分噪点,随后使用大津算法进行图像二值化。而拍摄角度的影响使得部分相邻素材的边界会被连接起来,因而需要使用开运算断开二值化图像中素材边缘的狭窄连接。②提取上述经过处理后的二值图像中的连通区域,计算各连通区域面积,通常情况下面积呈正态分布,大部分面积大小为填充素材的外接矩形面积,而其余的较大或者较小的面积出现在因二值化不规范导致的中断区域,所以对所有轮廓面积进行排序,滤除过大或者过小的面积,随后计算外接矩形的长宽比,由于关键点图标的长宽比接近1:1,对于长宽比异常的轮廓进行滤除。定位点由三个三角形组成,对于三角形的检测使用opencv的多边形趋近算法跟最小外接矩形跟轮廓面积之间的比例进行检测。为了提高检出率会把检测的阈值尽量放宽,这样带来的后果是会出现误检测,为此设计了三角形定位点的择优算法排除错检的定位点,算法依据是三个三角形定位点都位于内环上,三者与圆心的连线互呈直角,即使图像变形,三个定位点求取的圆方程圆心也应该在内环中心附近。将环形码区域内的点集利用opencv的fitellipse函数拟合椭圆e,求取中心点ecenter。如果三角形定位点检测超过三个则对其进行组合,设候选点集合为c={a1,a2,…an},则总共有个组合,每三个点为一组进行圆方程求取,求取的圆心集合pc={pc1,pc2…pck}与椭圆e拟合出的中心点ecenter比对距离,最近距离的一组为真正的定位点ctruth:ctruth=min_distance{ecentertopc}三个定位点求出来后需要对其进行排序确定起始点,其中长弧沿逆时针方向的末端位置为信息编码的起始点,即图1中最下方的三角形定位符,三个定位点的排序是通过点乘算法确定。同样如果矫正点检测出多个也使用择优算法筛选,矫正点与三个定位点构成的是一个正方形,对角线交点为各自端点的中点,具体流程为:如果检测的矫正点多于一个,设候选点集为pcorrect={b1,b2…bn},则将每个矫正点与排序第二的定位点ctruth_2进行算术平均d={d1,d2…dn},来跟第一第三的定位点ctruth_1,ctruth_3算术平均的结果c13比对,距离最近的为矫正点pcorrect_truth:pcorrect_truth=min_distance{c13tod}③图6(c)所示为利用定位符与矫正符的四个坐标对应原图6(b)四个定位点坐标进行透视变换矫正的结果。此步可用于矫正环形码的旋转与变形,透视变换使用的是opencv内置函数warpperspective。与其他二维码不同的地方是,本环形码的定位点跟矫正符坐标是随编码数的变化而变化的,编码数越多,定位点跟矫正符所在的内环半径就越小。所以不同于其他二维码是固定定位点坐标。所以本发明采用相对坐标式来确定透视变换后的编码点。如图5环形码解码流程图所示,确定定位符三个位置区域后,将长弧逆时针方向的末端作为起始编码位置,沿着半径为r的圆周间隔读取图像块数据,以圆周长的四十分之一作为读取间隔的步长以及图像块宽高,若图像块内灰度覆盖面积大于块面积的一半,则存储的编码字节为1,反之为0。据此便能得到内环编码数据,按照表格1解码后便可得到辅助指示信息。其中再通过rs纠错,获取辅助信息区的编码信息后,为核对信息准确性以及环数,设内环解码得到的模式指示符为m,传输字符长度为p,通过上述的第一步能计算得到编码字节数q,若q=k,则内环解码数据正确,否则解码失败。表格1辅助指示码(位数)编码模式指示符传输字符长度编码总长度数据块数辅助指示码纠错码268816内环数据解码无误后,第9-16位记录了编码数据总长度n,依据内环初始存储量与各环固定的存储增量,能够计算出环形码环数以及传递编码信息的数据长度。展示了依据环数、半径增量、存储增量获得的各环信息编码块,同样按照灰度面积占比得到编码数据,从内部第二个环依次往外读取编码块,各环的起始编码位置与圆心处于同一条直线上,将最终得到的编码进行rs(n,k)编码纠错,与掩码做异或操作后,取前8n个编码位即为所传递信息的二进制编码。最后通过编码模式所规定的信息编码位数,对二进制数据进行分组解码。针对不同的编码模式的解码过程中,所实施的分组准则具体如下表所示:本发明的有益效果在于:为环形码设定形状,摒弃使用具有黑白比的形状作为定位符,抗干扰和变形能力较强,增强环形码的定位准确度。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1