一种基于二维码解码的快速定位识别的方法_2

文档序号:9217527阅读:来源:国知局
行在可编程工业相机内,外加一套光源即可完成扫描处理并将结 果传出,系统运行在自制的基于DSP的工业相机上极大的降低了成本。
[0019] 5、本发明能够处理低分辨率图像(320X240),通过步骤三从整幅图像上截取二 维码区域图像,步骤三之后的所有步骤都是针对二维码区域图像处理,极大减少了运算量, 提高了工作效率。
【附图说明】
[0020] 下面结合附图和【具体实施方式】来详细说明本发明: 图1为一种基于二维码解码的快速定位识别的方法的流程图。
[0021] 图2为横向纵向搜寻二维码边界示意图。
[0022] 图3为二维码坐标系转换示意图。
[0023] 图4为二维码分别向X、Y坐标方向投影的示意图。
[0024] 图5为获取二维码黑白方块重心坐标示意图。
[0025] 图6为Ml至M10以及N1至N10在xoy坐标系下的坐标图。
【具体实施方式】
[0026] 为了使本发明技术实现的措施、创作特征、达成目的与功效易于明白了解,下面结 合具体图示,进一步阐述本发明。
[0027] 图1为一种基于二维码解码的快速定位识别的方法的流程图。
[0028] 如图1所示,一种基于二维码解码的快速定位识别的方法,包括如下步骤: 步骤一,对工业相机取得的整幅图像做中值滤波处理,减少干扰噪点的影响度; 步骤二,对图像分别做横向和纵向扫描,判断当前图像是否存在二维码,若存在,则 取得二维码在图像中的区域坐标,执行步骤三,若不存在,则结束本次操作,具体操作步骤 为: 图2为横向纵向搜寻二维码边界示意图,如图2所示,特制的二维码周围有规则的分布 四条狭长边界,每条扫描线穿过二维码区域必然会符合一个条件,以横向扫描为例,首先穿 过黑色边界AB,其次穿过中间的条码区,最后穿过另一条黑色边界⑶;A、B、C、D四个点在 整条扫描线中属于和相邻点对比灰度值变化最大的一类点,|AB|和|⑶|的长度相近或 相等,而且在整条扫描线中A、B点率先出现,C、D点最后出现,竖向扫描与横向扫描原则相 同;根据此二维码特征原则,可以判断出图像分别做横向和纵向扫描时,扫描完毕后通过判 断符合特征的扫描线数量来确认当前图像中有无二维码存在;若存在,则取得二维码在图 像中的坐标位置,即保存A点和D点的坐标,用于确认二维码在整幅图像中的位置; 步骤三,从整幅图像中截取二维码图像; 步骤四,将二维码图像做自适应二值化处理; 步骤五,以白色像素点为背景,将所有能够通过相邻黑色像素点依次连接在一起的黑 色像素点归为一个连通域; 步骤六,过滤所有的连通域,筛选出4个边界,具体步骤为: 首先,在系统调试阶段取得4个边界各自黑色像素点的数量,计算得出每个边界黑色 像素点数量的平均值为pixCount,进而设置4个边界黑色像素点的数量阈值为pixCount ; 然后统计每个连通域的像素点数量,并依次与pixCount对比,保留像素点数量与pixCount 相近的连通域; 进一步地,在系统调试阶段取得4个边界各自的特征值,计算得出每个边界特征值的 平均值为k,进而设置4个边界的特征值阈值为k,对保留下来的连通域做奇异值分解运算 SVD,将剩余连通域各自的特征值依次与k值对比,即可筛选出最接近二维码四个边界的连 通域; 最后,在系统调试阶段取得4个边界各自的重心X、Y坐标,4个重心能够组成一个正方 形,取得该正方形的边长为shortLen和对角线长度为longLen ;计算筛选出的连通域的重 心X、Y坐标,如果一个连通域的重心能够与其它3个连通域的重心一起组成一个四边形,将 该四边形的边长与对角线长度分别与shortLen值、longLen值对比,若均为相近值,则表明 4个边界被筛选出来;否则筛选下一个连通域,直至全部筛选完成; 二维码图像包括4个边界在内的连通域个数大于等于5个,经过筛选仅保留代表边界 的4个连通域; 步骤七,将二维码图像从基于图像的坐标系转换到基于二维码的坐标系,具体步骤 为: 图3为二维码坐标系转换示意图,如图3所示,首先,建立基于图像的坐标系X0Y,设平 行的2条边界在基于图像的坐标系内的重心坐标分别为(XO, Y0)、(XI,Y1); 进一步地,计算二维码相对于X0Y坐标系的偏转角度,具体公式为: angle=atan2 (Y1-Y0, X1-X0),angle 表示二维码偏转角度; 进一步地,在靠近二维码边界区域选择2个边界的交点〇 (oxl,oyl),此时〇点的坐标是 基于图像坐标系X0Y下,通过公式转换〇点的坐标; ox=oxlXcos(angle)-oylXsin(angle); oy=oxlXsin(angle)+oylXcos(angle); 进一步地,通过以下公式转换二维码区域所有像素点的坐标,建设以〇为原点,基于二 维码的坐标系xoy,x、y与X、Y的关系为: x=XX cos (angle) - YX sin (angle)-〇x ; y=XX sin (angle) + YX cos (angle)-〇y ; 步骤八,二维码分别在新坐标系下沿着x轴和y轴进行投影,获得二维码的方向性以及 取得是二维码实边界的长度、实边交叉坐标、黑白块的宽度,具体步骤为: 图4为二维码分别向X、Y坐标方向投影的示意图,如图4所示,首先,在基于二维码xoy 坐标系下,将不包含4个边界的二维码区域图像分别向x、y方向做投影,投影柱最高的部 分是二维码的实边部分,进而判断出二维码的方向性,即二维码的左边界和下边界均为实 边界,依此规则判断二维码的上、下、左、右4个方向; 进一步地,利用投影结果取得xoy坐标系下二维码实边界长度len(图4)和黑白块的 宽度wid (图4)以及实边界交点坐标P0 (图5); 步骤九,获取二维码所有黑、白方块的重心坐标,具体步骤为: 图5为获取二维码黑白方块重心坐标示意图,如图5所示,首先,根据步骤八中求出的 二维码实边界长度len (图4)和黑白块的宽度wid (图4)以及实边界交点坐标P0 (图5), 依次推断正方形其余三点的坐标; 若P0点坐标为(px,py),则其它三点的坐标为, PI (px, (py+len-wid)), P2 ((px+len-wid), (py+len-wid)), P3 ((px+len-wid), py); 进一步地,二维码的大小为len/wid,那么图5中的M系列点和N系列点的坐标为: Ml ((px+widX 1), (py+len-wid)),...... M10 ((px+widX 10),(py+len-wid)),得出 M 系 列的点y坐标相同,x坐标依次加wid, N1 ((px+len-wid), (py-widX 1)),...... N10 ((px+len-wid),(py-widX 10)),得出 N 系 列的点x坐标相同,y坐标依次减wid ; 进一步地,连接做出2条扫描线,即一条线穿过点P1和点P2,另一条线穿过点P2和点 P3,每条扫描线均穿过虚边界的黑方块和白方块,确定每个方块的重心坐标; 进一步地,校验取得的方块重心坐标是否有效,统计扫描线上的黑、白方块信息,确定M 系列点和N系列点的灰度值,若为255则该点所在的方块为白色方块,若为0则该点所在的 方块为黑色方块,查看M系列和N系列点各自所在方块是否是黑白间隔排列,因为DM码一 个独特特征是虚边界黑白方块依次间隔排列,若符合则表明二维码虚边界每个黑、白方块 重心坐标获取成功,即M系列点和N系列点均为有效点,否则失败退出; 进一步地,将2条扫描线上的所有黑、白方块重心坐标进行交叉组合,得到整个二维码 所有黑、白方块的重心坐标; 图6为Ml至M10以及N1至N10在xoy坐标系下的坐标图,如图6所示,Ml (xl,y0), N10(xll,yl0),线JN10与线JM1的交点为J,则点J的坐标为(xl,yl0),同理,点P的坐标 为(x2, y5),点G的坐标为(xlO, yl)。从图6可看出二维码虚边界方块重心点Ml至M10、点 N10至N1,分别包含了二维码信息方块的所有x坐标和y坐标,如图所示横坐标xl至xlO, 纵坐标yl至yl〇组成100个坐标点,点J、P、G即为其中的三个点,此100个点是二维码所 有信息方块(已扣除DM码实边界和虚边界)的重心点。
[0029] 通过虚边界黑白方块重心点的x、y坐标交叉组合,则得到二维码所有黑白方块的 重心坐标。
[0030] 步骤十,判断黑、白方块的灰度值,进而获取整个二维码信息矩阵,具体步骤为: 通过步骤九中的重心点查找到对应的信息块,取得当前信息块的颜色值,设黑色二维 码信息块数值为1,白色为0,得出如下表的矩阵:
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1