磨损二维条码图像识别方法

阅读:649发布:2020-05-14

专利汇可以提供磨损二维条码图像识别方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种磨损 二维条码 图像识别 方法,依次对图像进行大津 阈值 分割及形态学开预处理,最大连通域识别,码区粗 定位 ,旋转校正码区,采用图像均衡 算法 进行均衡处理,码区精确定位,校正畸变图像,网格划分,边界修复,信息提取,最终金属上磨损DM码数据识别完成,可以将提取出的信息传递给后续的解码算法以解析出信息。本发明对任意 角 度旋转倾斜,轻度或中度几何畸变,轻度或中度光照不均, 对比度 不强,轻度或中度磨损的金属上的DM码都有较高的识别率。,下面是磨损二维条码图像识别方法专利的具体信息内容。

1.一种磨损二维条码图像识别方法,其特征在于包括下述步骤:
(1)将输入的宽度为w像素、高度为h像素的图像A进行大津阈值分割,将原图像A转化为二值图像A1,然后对A1做形态学二值开运算,得到图像A2,形态学二值开的结构元素取边长为h/45像素的正方形结构;
(2)最大连通域识别,具体步骤如下:
(a)新建一个栈,从图像首位像素开始扫描图像A2,如果遇到灰度值为255的像素点则停止扫描,将该像素点入栈并将灰度值置为0,建立一个新的数据缓冲区,即为一个新的连通域,将此点记入该连通域;如果没有灰度值为255的点转到步骤(c);
(b)判断栈是否为空,如为空,此次循环识别的连通域识别完毕,转到步骤(a);不为空则将栈内首个像素点出栈,以该像素点为中心检查它的8邻域像素点并将像素值等于255的任意一个8邻域像素点入栈;循环执行本步骤;
(c)比较所记录的所有连通域,目标点最多的一个连通域即为最大联通域,将最大联通域的所有点的像素值设为255,扫描图像A2中其他点都设为0,得到一幅新的图像A3;
(3)根据上步得到的最大连通域,从图像A3的上,下,左,右四个方向进行扫描得到图像A4,图像A4包含一组外边缘点,然后对扫描得到的边缘点,利用改进的霍夫变换法即加邻域模板的霍夫变换法识别出最长的两边;
所谓加邻域模板的霍夫变换法包括以下步骤:
(a)对图像A4霍夫变换,得到ρ-θ坐标系下的霍夫变换域,其中ρ是极半径,取值范围 θ是极,取值范围
(b)利用模板遍历霍夫变换域,模板是一个5像素*5像素正方形区域,设中心点对应的霍夫点为(θi,ρi),则正方形区域中点(θi-1,ρi),(θi+1,ρi),(θi,ρi-1),(θi,ρi+1)对应的权值p0=0.6,点(θi+1,ρi+1),(θi+1,ρi-1),(θi-1,ρi+1),(θi-1,ρi-1)对应的权值p1=0.4,点(θi-2,ρi),(θi+2,ρi),(θi,ρi+2),(θi,ρi-2)对应的权值p2=0.2,模板最中间模对应的是遍历的目标点,其他模块对应的是目标点周围的坐标,模板横向是θ轴,纵向是ρ轴,遍历霍夫变换域中(θi,ρi),根据模板计算公式求取模板值,模板计算公式如下所示:
其中m(θ,ρ)是点(θ,ρ)对应的值,T(θ,ρ)是通过邻域模板法求得的值简
称模板值,在模板遍历霍夫域的过程中,如果模板中的点(θ1,ρ1),ρ1超出ρ轴的范围 舍去此模板点;如果θ1超出θ轴的范围 则将此点代换为
或 得到新的点,并将此新的点
的值代入模板计算公式求取模板值;
(c)用模板遍历完霍夫域后,假设点(θj,ρj)对应的 最大,则(θj,ρj)对应的图像坐标系中的直线ρj=x cosθj+y sinθj为最长直线;
(d)求取 模板上的所有的点在图像坐标系中对应的直线,并检测图像坐标系中
在这些直线上并灰度值等于255的点,记录这些点并根据这些点做最小二乘拟合,拟合直线即为DM码最长实边缘;
(e)在检测完最长的一条直线之后需要在霍夫域中清空前面检测出的最长直线的
(ρ0,θ0)及其领域,然后再利用模板法循环检测下一条最长直线即为第二条实边缘;
检测完最长的两条直线之后,通过两条直线方程求出交点坐标,即码的左上角点(x0,y0),然后判断图像A4在两条直线方向距左上角点的的最远点,得到两条实边的终点(x1,y1),(x2,y2),至此较精确的得到DM码的三个顶点
(4)利用两条实边对角线中点与DM码左上顶点的连线与X轴的夹角为3π/4校正,旋转角度θ=atan2[y0-(y1+y2)/2,x0-(x1+x2)/2]-3π/4,其中atan2函数为反正切函数;将原图像A以θ角度逆时针旋转得到旋转后的图像A5;
计算出(x0,y0),(x1,y1),(x2,y2)在旋转后的新图像中的坐标(x0′,y0),(x1′,y1′),(x2′,y2′),并根据矢量四边形法求出第四个顶点(x3′,y3′),x3′=x1′+x2′-x0′;
y3′=y1′+y2′-y0′;
设x0′,x1′,x2′,x3′中最大值为xmax,最小值为xmin,y0,y1′,y2′,y3′中最大值为ymax,最小值为ymin,重新赋值:
然后根据新的xmax,xmin,ymax,ymin为基准裁切整个图像A5,得到裁切后的图像A6;根据裁切图像重新计算图像中的坐标(x0′,y0′),(x1′,y1′),(x2′,y2′)的新值,并根据这三个坐标点求出两条实边边缘的直线方程l1和l2;
(5)采用图像均衡算法对图像A6进行均衡处理,得到图像A7;
(6)码区精确定位,包括以下步骤:
(a)首先对图像A7进行大津阈值分割和形态学开运算得到图像A8;
(b)按照从左向右、从下向上的顺序扫描图像A8,得到边缘点图像A9,并对图像A9进行加邻域模板的霍夫变换运算,求出最长的两条直线l3和l4,连同步骤(4)中求出的l1和l2,即可用这四条直线精确定位图像中的DM码,求出这四条直线的交点坐标,左上定点、右上顶点、左下顶点和右下顶点的坐标值分别赋值给(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3);
(7)建立一个空白图像A10,图像A10的高为m,宽为n,并且m=n=h,利用公式
求取图像A10在图像A7中的对应点,对于非整数对应点用双线性插值法插值,最终求得经过几何畸变校正后的图像A10;其中(x,y)代表图像A7中的点,(x,y)代表图像A10中的点;
(8)网格划分,包括以下步骤:
(a)循环选取8×8,10×10,12×12,14×14,16×16,18×18,20×20,22×22,24×24
这9种DM码模块划分方式,假设本次选取的是i×i划分,则得到2i-1个虚边模块;二维条码的虚边是由黑白交替的模块组成的,右侧虚边的理论属性是:奇数模块为白色模块,偶数模块为黑色模块;
(b)循环阈值化划分好的虚边模块,若循环完毕转到步骤(d),否则设本次阈值化的虚边模块是Mj,0≤j≤2i-1,阈值化区间是Mj及其相邻最近的两个虚边模块Mj-1及Mj+1,阈值化方法选取大津阈值分割,然后只对Mj实行阈值化结果;
(c)对于阈值化好的虚边模块,先判断其理论属性值,若是黑色模块则计算此模块中黑色像素值的个数: dj是Mj像素个数,若Mj第n个像素的灰度值等于0,pjn=1,
否则为0;若是白色模块则 若Mj第n个像素的灰度值等于255,qjn=1,否则为
0;计算匹配度ηj=εj/dj,转到步骤(b);
(d)计算i×i划分的平均匹配度:
(e)判读所有划分的平均匹配度,最大的φi对应的划分方式就是本次识别的DM码的最佳网格化分方式ibest×ibest;
(f)设初始值H0=h,i=0;
(g)判断i≤ibest,若否则迭代完毕,否则hi=Hi/(ibest-i);
(h)Hi+1=Hi-hi,重设i=i+1,转到步骤(g);
所以网格的划分方式可以用下面矩阵表示:
矩阵中每个坐标点代表划分的每个网格,横坐标代表此网格宽度,纵坐标代表此网格高度,设MMij代表矩阵中第i(0<i<ibest)行j(0<j<jbest)列的待识别模块;
(9)对于输入图像A10进行白色模块边界修复包括以下步骤:
(a)遍历虚边上白色模块,计算Mi的平均灰度值 Mi是第i个白色模块边缘;
(b)计算Mi+1的平均灰度值
(c)计算 和 的平均值
(d)比较 和 的大小,将 赋值给较小者中灰度值小于 的像素;
(e)i加1,直至循环完所有白色模块;
同理黑色模块边界修复类似于上过程,只是在将步骤(d)改为比较 和 的大
小,将 赋值给较大者中灰度值大于 的像素,最终得到边界修复好的图像A11;
(10)信息提取,包括以下步骤:
(a)赋值给虚边模块和实边模块其自身的属性值,黑色模块赋值为0,白色模块赋值为
1,并将虚边模块和实边模块可信度初始值都设为1,即百分之百可信,DM码中非边缘模块可信度设为0,所谓可信度是指本次所识别模块的识别出的正确率,分块识别,先识别右下四分之一DM码区域;
(b)对待识别模块Mij识别前保证其邻区域中有三个已识别出的即可信度不为0模块,在(a)中已说明边缘模块的属性值为已知,所以都是初始已识别出来的模块,实际操作中应从靠近边缘的地方识别起;设这三个模块设为Ma,Mb,Mc,可信度为εa,εb,εc,则本次识别的模块的可信度设为: 选取邻域要保证三个邻区域模块属性值有0也
有1;并保证使εij取最大值;
(c)计算Ma、Mb和Mc这组中白色模块的平均灰度值得到 再计算黑色模块的平均灰
度值 最后求取Mij的平均灰度值
(e)计算 和 与 和 的方差,比较方差大小,如果 和 方差小,将本次识别
小模块的属性设为1,否则设为0;
(f)判断是否是最后一个识别模块,如果是则信息提取完成,否则转回步骤(b);
(g)重复步骤(a)~(f),依次识别左下四分之一DM码区域,右上四分之一DM码区域,左上四分之一DM码区域;
至此,金属上磨损DM码数据识别完成,可以将提取出的信息传递给后续的解码算法以解析出信息。

说明书全文

磨损二维条码图像识别方法

技术领域

[0001] 本发明涉及对金属上磨损的DataMatrix二维条码(以下都简称DM码)进行信息提取的方法,属于自动识别技术领域。

背景技术

[0002] 直接零件标识DPM(Direct Part Marking)技术是一种可直接在产品的表面形成包括文字、符号或图案等形式的永久标识技术,利用DPM技术在产品表面形成的一维条码或二维条码符号,是实现产品可追溯性标识的重要技术手段,在条码符号的选择上,考虑到产品表面面积有限、提高符号识读率等因素,目前多选用二维DataMatrix条码作为产品的二维条码永久标识,这是因为DataMatrix条码编码容量大、密度高、纠错能强。 [0003] 在DPM生成的二维条码符号的读取上,由于条码符号直接标记在产品表面,产品表面与标记的符号之间的对比度降低从而影响了条码符号的识读率。现有的二维条码识读大部分是在对比明显的印刷品上,如专利号为03114633.3的中国专利中公开的二维条码身份证件防伪系统自动识读方法。对于标记在产品表面上的对比不是很明显,且背景比较粗糙或反光比较严重的二维条码的识读,目前大部分技术是通过硬件方面进行改善的,如识读设备自带光源照明,或是制作识读工装,但这样一方面增加了成本,另一方面增加了操作复杂度。如果被标识的零件长期在恶劣的环境下工作,会使其上的二维条码出现磨损和污染划痕或锈斑,这样即使通过改良识读设备的硬件条件也不能改善。
[0004] 在对DM码的边界定位时,目前大多数方法利用传统的霍夫变换进行直线检测,进而定位边界,但DPM生成在产品或零件上的DM码,若背景粗糙不平或磨损变形,DM码的边界就有可能不是直线,而是类似于锯齿状的线型,传统检测方法失效。目前对于DM码行数的确定是利用黑白模交替边界的投影特性确定码的尺寸,但由于磨损码边界有划痕污染或光照不均的存在,此方法就不再可靠。在对于DM码的信息提取时,目前的方法大多都是先将源图像转化成二值图像,再选取采样点提取信息。这样做有两个缺点:1、信息损失严重,不论采取什么样的阈值化方法阈值化原图像,都会有信息损失。2、鲁棒性差,由于选用采样点的方法,如果在采样点处有噪声干扰, 采样就会失败导致该模块识别失败。

发明内容

[0005] 为了克服现有技术DM码图像识读困难及数据还原率低的不足,本发明提供一种磨损二维条码图像识别方法,对于噪声将有一定的抗干扰能力,能够提高DM码的识读率。 [0006] 本发明解决其技术问题所采用的技术方案包括以下步骤:
[0007] (1)大津阈值分割及形态学开预处理
[0008] 先将输入的宽度为w像素、高度为h像素的图像A进行大津阈值分割,将原图像A转化为二值图像A1,然后对A1做形态学二值开运算,得到图像A2,形态学二值开的结构元素取边长为h/45像素的正方形结构。
[0009] (2)最大连通域识别,具体步骤如下:
[0010] (a)新建一个栈,从图像首位像素开始扫描图像A2,如果遇到灰度值为255的像素点则停止扫描,将该像素点入栈并将灰度值置为0,建立一个新的数据缓冲区,即为一个新的连通域,将此点记入该连通域;如果没有灰度值为255的点转到步骤(c);
[0011] (b)判断栈是否为空,如为空,此次循环识别的连通域识别完毕,转到步骤(a);不为空则将栈内首个像素点出栈,以该像素点为中心检查它的8邻域像素点并将像素值等于255的任意一个8邻域像素点入栈。循环执行本步骤。
[0012] (c)比较所记录的所有连通域,目标点最多的一个连通域即为最大联通域。将最大联通域的所有点的像素值设为255,扫描图像A2中其他点都设为0,得到一幅新的图像A3。 [0013] (3)码区粗定位
[0014] 根据上步得到的最大连通域,从图像A3的上,下,左,右四个方向进行扫描得到图像A4,图像A4包含一组外边缘点。然后对扫描得到的边缘点,利用改进的霍夫变换法即加邻域模板的霍夫变换法识别出最长的两边。
[0015] 所谓加邻域模板的霍夫变换法包括以下步骤:
[0016] (a)对图像A4霍夫变换,得到ρ-θ坐标系下的霍夫变换域,其中ρ是极半径, 取值范围 θ是极,取值范围
[0017] (b)利用模板遍历霍夫变换域。模板是一个5像素*5像素正方形区域。设中心点对应的霍夫点为(θi,ρi),则正方形区域中点(θi-1,ρi),(θi+1,ρi),(θi,ρi-1),(θi,ρi+1)对应的权值p0=0.6,点(θi+1,ρi+1),(θi+1,ρi-1),(θi-1,ρi+1),(θi-1,ρi-1)对应的权值p1=0.4,点(θi-2,ρi),(θi+2,ρi),(θi,ρi+2),(θi,ρi-2)对应的权值p2=0.2。模板最中间模块对应的是遍历的目标点,其他模块对应的是目标点周围的坐标,模板横向是θ轴,纵向是ρ轴。遍历霍夫变换域中(θi,ρi),根据模板计算公式求取模板值,模板计算公式如下所示:
[0018]
[0019]
[0020]
[0021] 其中m(θ,ρ)是点(θ,ρ)对应的值,T(θ,ρ)是通过邻域模板法求得的值简称模板值。在模板遍历霍夫域的过程中,如果模板中的点(θ1,ρ1),ρ1超出ρ轴的范围 舍去此模板点;如果θ1超出θ轴的范围 则将此点代换为或 得到新的点,并将此新的点
的值代入模板计算公式求取模板值。
[0022] (c)用模板遍历完霍夫域后,假设点(θj,ρj)对应的 最大,则(θj,ρj)对应的图像坐标系中的直线ρj=x cosθj+y sinθj为最长直线。
[0023] (d)求取 模板上的所有的点在图像坐标系中对应的直线,并检测图像坐标系中在这些直线上并灰度值等于255的点,记录这些点并根据这些点做最小二乘拟合,拟合直线即为DM码最长实边缘。
[0024] (e)在检测完最长的一条直线之后需要在霍夫域中清空前面检测出的最长直线的(ρ0,θ0)及其领域,然后再利用模板法循环检测下一条最长直线即为第二条实边缘。 [0025] 检测完最长的两条直线之后,通过两条直线方程求出交点坐标,即码的左上角点(x0,y0)。然后判断图像A4在两条直线方向距左上角点的的最远点,得到两条实边的终点(x1,y1),(x2,y2),至此较精确的得到DM码的三个顶点
[0026] (4)旋转校正码区
[0027] 利用两条实边对角线中点与DM码左上顶点的连线与X轴的夹角为3π/4校正,旋转角度θ=atan2[y0-(y1+y2)/2,x0-(x1+x2)/2]-3π/4,其中atan2函数为反正切函数。将原图像A以θ角度逆时针旋转得到旋转后的图像A5。
[0028] 计算出(x0,y0),(x1,y1),(x2,y2)在旋转后的新图像中的坐标(x0′,y0′),(x1′,y1′),(x2′,y2′),并根据矢量四边形法求出第四个顶点(x3′,y3′),x3′=x1′+x2′-x0′;y3′=y1′+y2′-y0′。
[0029] 设x0′,x1′,x2′,x3′中最大值为xmax,最小值为xmin,y0′,y1′,y2′,y3′中最大值为ymax,最小值为ymin,重新赋值:
[0030]
[0031]
[0032]
[0033]
[0034] 然后根据新的xmax,xmin,ymax,ymin为基准裁切整个图像A5,得到裁切后的图像A6。根据裁切图像重新计算图像中的坐标(x0′,y0′),(x1′,y1′),(x2′,y2′)的新值,并根据这三个坐标点求出两条实边边缘的直线方程l1和l2。
[0035] (5)采用图像均衡算法对图像A6进行均衡处理,得到图像A7。
[0036] (6)码区精确定位,包括以下步骤:
[0037] (a)首先对图像A7进行大津阈值分割和形态学开运算得到图像A8,方法同步骤(1)一样。
[0038] (b)按照从左向右、从下向上的顺序扫描图像A8,得到边缘点图像A9,并对 图像A9进行加邻域模板的霍夫变换运算,和步骤(3)中的方法相同,求出最长的两条直线l3和l4,连同步骤(4)中求出的l1和l2,即可用这四条直线精确定位图像中的DM码。求出这四条直线的交点坐标,左上定点、右上顶点、左下顶点和右下顶点的坐标值分别赋值给(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3)。
[0039] (7)校正畸变图像
[0040] 建立一个空白图像A10,图像A10的高为m,宽为n,并且m=n=h。利用公式 [0041]
[0042]
[0043] 求取图像A10在图像A7中的对应点,对于非整数对应点用双线性插值法插值,最终求得经过几何畸变校正后的图像A10。
[0044] 其中(x,y)代表图像A7中的点,(x,y)代表图像A10中的点。
[0045] (8)网格划分,包括以下步骤:
[0046] (a)循 环 选 取 8×8,10×10,12×12,14×14,16×16,18×18,20×20,22×22,24×24这9种DM码模块划分方式,假设本次选取的是i×i划分,则得到2i-1个虚边模块。
二维条码的虚边是由黑白交替的模块组成的,右侧虚边的理论属性是:奇数模块为白色模块,偶数模块为黑色模块。
[0047] (b)循环阈值化划分好的虚边模块,若循环完毕转到步骤(d),否则设本次阈值化的虚边模块是Mj(0≤j≤2i-1),阈值化区间是Mj及其相邻最近的两个虚边模块Mj-1及Mj+1。阈值化方法选取大津阈值分割,然后只对Mj实行阈值化结果。
[0048] (c)对于阈值化好的虚边模块,先判断其理论属性值,若是黑色模块则计算此模块中黑色像素值的个数: 是Mj像素个数,若Mj第n个像素的灰度值等于0,pjn=1,否则为0;若是白色模块则 若Mj第n个像素的灰度值等于255,qjn=1,
否则为0。计算匹配度ηj=εj/dj,转到步骤(b)。
[0049] (d)计算i×i划分的平均匹配度:
[0050] (e)判读所有划分的平均匹配度,最大的φi对应的划分方式就是本次识别的DM码的最佳网格化分方式ibest×ibest。
[0051] (f)设初始值H0=h,i=0。
[0052] (g)判断i≤ibest,若否则迭代完毕,否则hi=Hi/(ibest-i)。
[0053] (h)Hi+1=Hi-hi,重设i=i+1,转到步骤(g)。
[0054] 所以网格的划分方式可以用下面矩阵表示:
[0055]
[0056] 矩阵中每个坐标点代表划分的每个网格,横坐标代表此网格宽度,纵坐标代表此网格高度。设Mij代表矩阵中第i(0<i<ibest)行j(0<j<jbest)列的待识别模块。 [0057] (9)边界修复
[0058] 对于输入图像A10进行白色模块边界修复包括以下步骤:
[0059] (a)遍历虚边上白色模块,计算Mi的平均灰度值 Mi是第i个白色模块边缘。 [0060] (b)计算Mi+1的平均灰度值
[0061] (c)计算 和 的平均值
[0062] (d)比较 和 的大小,将 赋值给较小者中灰度值小于 的像素。
[0063] (e)i加1,直至循环完所有白色模块。
[0064] 同理黑色模块边界修复类似于上过程,只是在将步骤(d)改为比较 和的大小,将 赋值给较大者中灰度值大于 的像素。最终得到边界修复好的图像
A11。
[0065] (10)信息提取,包括以下步骤:
[0066] (a)赋值给虚边模块和实边模块其自身的属性值,黑色模块赋值为0,白色模块赋值为1。并将虚边模块和实边模块可信度初始值都设为1,即百分之百可信,DM码中非边缘模块可信度设为0。所谓可信度是指本次所识别模块的识别出的正确率。分块识别,先识别右下四分之一DM码区域。
[0067] (b)对待识别模块Mij识别前保证其邻区域中有三个已识别出的即可信度不为0模块,在(a)中已说明边缘模块的属性值为已知,所以都是初始已识别出来的模块,实际操作中应从靠近边缘的地方识别起。设这三个模块设为Ma,Mb,Mc,可信度为εa,εb,εc,则本次识别的模块的可信度设为: 选取邻域要保证三个邻区域模块属性值有0也有1;并保证使εij取最大值。
[0068] (c)计算Ma、Mb和Mc这组中白色模块的平均灰度值得到 再计算黑色模块的平均灰度值 最后求取Mij的平均灰度值
[0069] (e)计算 和 与 和 的方差。比较方差大小,如果 和 方差小,将本次识别小模块的属性设为1(代表白色),否则设为0(代表黑色)。
[0070] (f)判断是否是最后一个识别模块,如果是则信息提取完成,否则转回步骤(b)。 [0071] (g)重复步骤(a)~(f),依次识别左下四分之一DM码区域,右上四分之一DM码区域,左上四分之一DM码区域。
[0072] 至此,金属上磨损DM码数据识别完成,可以将提取出的信息传递给后续的解码算法以解析出信息。
[0073] 本发明的有益效果是:对于DM码边缘检测,本发明改进了传统的霍夫变换,利用加邻域模板遍历霍夫域,改进后的霍夫变换不仅检测出最长直线,还对最长直线经过小角度旋转、平移后得到的直线都有加权,所以对于锯齿状排列在同一条直线周围的点都可以识别出来,应用于检测锯齿状的DM码边缘取得很好的效果。在对DM码行数进行确定时,本发明抛弃传统的边缘投影法确定DM码行数,而采用鲁棒性高的最大匹配法匹配DM码行数。由于在DPM中打在金属上的DM码是8×8,10×10,12×12,14×14,16×16,18×18,20×20,
22×22,24×24这9种方式,并且从上到下,从左向右由白到黑依次交替,划分方式确定后边缘理论上对应的模块属性(黑或白)是已知的。所以以这16种方式预划分DM码边缘,计算每种划分方式的边缘匹配度,以匹配度最大的划分作为DM码划分方式。由于采取了对比的方式所以鲁棒性增强,对于边缘有污染时仍能很好的检测出DM码行数。对于最后的DM码数据模块的信息提取,本发明提出一种新的基于最大可信度区域生长算法去迭代提取DM码信息, 这是一种非基于二值化图像而是基于灰度图像的方法,所以是一种信息无损算法。本算法通过小区域逐步对比确定DM码数据模块属性,避免从整幅图像采取阈值鲁莽的分割图像,所以对光照不均有一定的鲁棒性(因为小区域内光照可近似为均匀的)。利用每个数据模块的灰度平均值而非通过采样点的方法判断其属性,避免了采样点选取时的随机误差。经过多次试验表明,本发明能对任意角度旋转倾斜,轻度或中度几何畸变,轻度或中度光照不均,对比度不强,轻度或中度磨损的金属上的DM码都有较高的识别率。识别出来的小模块的正确率一般都在80%以上,质量比较好的图像能达到95%及更高,识别时间在
268毫秒左右。
[0074] 下面结合附图实施例对本发明进一步说明。

附图说明

[0075] 图1是本发明处理金属上DM码信息提取总过程的示意图;
[0076] 图2是像素点和其对应的八邻域像素点示意图;
[0077] 图3是改进霍夫变换中邻域模板示意图;
[0078] 图4是θ值接近 或 直线在X-Y坐标系中位置示意图;
[0079] 图5是θ值接近 或 直线在ρ-θ坐标中位置示意图;
[0080] 图6是图像转正示意图;
[0081] 图7是最小长方形凸包集示意图;
[0082] 图8是校正畸变图像示意图;
[0083] 图9是原图像分为四区域示意图;
[0084] 图10是信息提取模块识别顺序示意图;
[0085] 图11是选取实例图像;
[0086] 图12是实例处理分步图。

具体实施方式

[0087] 本发明选用如图11所示的磨损图像作为实施实例,即为图像A,图像大小为183*178像素,即w=183,h=178,包括以下步骤:
[0088] 8.1大津阈值分割及形态学开预处理:
[0089] 先将输入的图像A进行大津阈值分割,大津阈值分割的原理是将原图像直方图在某一 阈值处分割成两组,当被分成的两组间方差为最大时,决定阈值。如果一幅图像的灰度值为0~m-1级,灰度值i的像素数为ni,此时图像像素总数为:
[0090]
[0091] (8.1-1)
[0092] 各值的概率:
[0093]
[0094] (8.1-2)
[0095] 然后用T将其分成两组C0={0~T-1}和C1={T~m-1},各组产生的概率如下: [0096] C0产生的概率 (8.1-3)
[0097] C1产生的概率 (8.1-4)
[0098] C0的平均值 (8.1-5)
[0099] C1的平均值 (8.1-6)
[0100] 其中, 是整体图像的灰度平均值; 是阈值为T时灰度平均值,所以全部采样的灰度平均值为:μ=w0μ0+w1μ1 (8.1-7) [0101] 两组间的方差用下式求出:
[0102]
[0103] 从1~m-1之间改变T,求上式为最大值时的T,即求maxδ2(T)时的T*值,此时,* * *T 便是阈值。然后小于等于T 值的像素全部转换为0像素值,大于T 值的像素全部转换为
255像素值。即将原图像A转化为二值图像A1,如图12中1所示。
[0104] 然后对生成的二值图像做开处理运算,A1为输入图像,设B为结构元素,利用B对A1做开运算,即A1οB=(A1ΘB)⊕B,Θ为二值腐蚀运算,即将结构元素在图像A1内部探测时,找出所有能够放下结构元素B的区域。⊕为膨胀运算,与腐蚀运算相反,在结构元素探测A1内部所有目标点时,将所有在结构元素B中的背景点合并到目标点中。由于DM码大概占整幅图像的70%~80%左右,单个小模块的边长是DM码边长的1/8~1/24之间,所以结构元素取边长为整幅图像高度1/40~1/15之间的正方形结构,本发明中取所取模板边长为图像高的1/36即5pix,模板大小为5pix*5pix。二值开运算可以去除图像中的大部分噪声污染和断开码区与背景污染区的纤细连接,而又保持整幅图像未被消除的目标区域结构不变,设二值开运算得到的图像为A2,效果如图12中2所示。
[0105] 8.2最大连通域识别:
[0106] 由于DM码本身的性质,有两条实边组成的连通区域是最大连通区域,可以通过提取最大连通区域将其提取出来。这样做的好处是因为下步码区粗定位时只需要实边边界信息,通过提取最大连通域可以只在图像中显示实边信息去除了其他目标点的干扰。本发明采用的最大连通域识别方法类似于区域生长算法,但与区域生长不同的是不止生长一个区域,下面是最大连通域识别算法的过程:
[0107] 1.从头开始扫描图像A2,如果遇到灰度值为255的像素点则停止扫描,将该像素点入栈并将灰度值置为0,然后再将此点记入二维数组缓冲区域,如果没有灰度值为255的点转到步骤3。
[0108] 2.判断栈是否为空,如为空,该连通域识别完毕,转到1;不为空则将将栈内首个像素点出栈,以该像素点为中心检查它的8邻域像素点(中心点与八邻域示意图如图2所示),如果像素值等于255则将其入栈并将此像素灰度值置为0,然后再将此点记入二维数组缓冲区域,继续本次循环。
[0109] 3.比较所记录的所有连通区域,目标点最多的一个连通区域即为最大联通区域。将最大联通区域的所有点的像素值设为255,图像中其他点都设为0,得到一幅新的图像A3,效果如图12中3所示。
[0110] 8.3码区粗定位:
[0111] Hough变换是一种检测和定位直线的有效方法,是利用图像全局特性直接检测目标轮廓,将边缘像素连接起来组成区域封闭边界的一种常见方法。Hough变换可以检测已知形状的目标,受噪声和间断的影响较小,对随机噪声不敏感,具有较强的抗干扰能力,允许待检测的边界不连续,且可以使用并行处理。对于矩形DM码图像,利用Hough变换就具有很大的优势。
[0112] 基于Hough变换的直线检测算法的基本原理:
[0113] 设直角坐标系中的一条直线L的方程为:
[0114] y=kx+b (8.3-1)
[0115] 其中,k为该直线的斜率,b为该直线在y轴上的截距。
[0116] 直线L的参数方程可表示为:
[0117] ρ=xcosθ+ysinθ (8.3-2)
[0118] 其中,ρ表示原点到直线l的垂直距离即极半径,θ表示ρ与x轴的夹角即极角。对与X-Y平面内一点(x0,y0),(8.3-2)式可写为:
[0119] ρ=x0cosθ+y0sinθ=Asin(β+θ) (8.3-3)-1
[0120] 其中β=tan (x0/y0), 这在ρ-θ在平面内是一条正弦曲线,其初始角β和振幅A随x0和y0的值而变。
[0121] 相反,对于ρ-θ平面内一点(ρ′,θ′),(8.3-2)式可以写为:
[0122]
[0123] 其中
[0124] 由此可看出X-Y坐标系和ρ-θ坐标系是对偶的。若将平面内在同一条直线上的一个点序列变换到ρ-θ平面内,则所有正弦曲线都经过一点,这点就是这条直线的ρ和θ,且所有这些正弦曲线在ρ-θ平面内其他各处均不相交。所以ρ-θ坐标系中最大累加值点对应的ρ和θ取值是X-Y坐标系中最长直线所对应的极半径和极角。本发明中的ρ取值范围 ρ取整数;θ取值范围 θ取整 数。
[0125] 传统霍夫变换的缺点是只能检测标准的直线,但由于磨损、背景粗糙等因素致使实际的DM码边缘呈锯齿状的,没有严格意义上在同一条直线上。根据此,本发明提出加邻域模板的霍夫变换法去处理,步骤是根据图像A3,从图像的上,下,左,右四个方向进行扫描得到一组外边缘点图像A4,如图12中4所示。然后对扫描得到的边缘点,利用改进的霍夫变换法即加邻域模板的霍夫变换法进行最长两边识别。在遍历霍夫变换域寻找最大值点时,用模板去遍历,模板参见图3。其中p0=0.6,p1=0.4,p2=0.2。
[0126] 加邻域模板的霍夫变换法处理过程:
[0127] 1.对图像A4霍夫变换,得到ρ-θ坐标系下的霍夫变换域,其中ρ是极半径,取值范围 θ是极角,取值范围
[0128] 2.利用模板遍历霍夫变换域。模板最中间模块对应的是遍历的目标点,其他模块对应的是目标点周围的坐标,模板横向是θ轴,纵向是ρ轴。遍历到霍夫变换域中(θi,ρi),根据模板计算:
[0129]
[0130]
[0131]
[0132] 其中m(θ,ρ)是点(θ,ρ)对应的值,T(θ,ρ)是通过邻域模板法求得的值简称模板值。在模板遍历霍夫域的过程中,如果模板中的点(θ1,ρ1),ρ1超出ρ轴的范围 极半径超出图像范围,舍去此模板点;如果模板点超出θ轴的范围 则不能够随意舍去,参见图4的两条直线, limρ2→-limρ1→b,b是
直线与y轴的交点。l1和l2在霍夫域中的位置如图5,由于边界锯齿状的存在,l1和l2上的点和有可能同属于同一个边界,虽然l1和l2在x-y坐标系中相距很近,但在ρ-θ坐标 系中相距很远,甚至是对角线,所以模板上若有模块对应的点的横坐标 或
时,在求模板值时不能将此模板点舍去,而是将此点横坐标置为 或
并此点的值代入求取模板值。
[0133] 由于是检测两条直线,所以在检测完最长的一条直线之后需要在霍夫域中清空一下前面检测出的最长直线的(ρ0,θ0)及其领域,然后再利用模板法循环检测下一条最长直线。检测效果如图12中5所示。
[0134] 检测完最长的两条直线之后,通过两条直线方程求出交点坐标,即码的左上角点(x0,y0)。然后判断边界点在两条直线方向距左上角点的的最远点,得到两条实边的终点(x1,y1),(x2,y2),至此较精确的得到DM码的三个顶点。根据矢量四边形法可求出第4个顶点,四个顶点最终可粗定位DM码区域,本实例中(x0,y0)、(x1,y1)、(x2,y2)三个点求得为(10,105)、(104,169)和(84,7),效果如图12中6所示。本步算法就是以(x0,y0)、(x1,y1)、(x2,y2)三个点作为输出数据,为下步的旋转校正DM码做准备。
[0135] 8.4旋转校正码区:
[0136] 此步算法的输入为上步的识别出的DM码三个顶点坐标,利用两条实边对角线中点与DM码左上顶点的连线与X轴的夹角为3π/4校正。旋转角度θ为:
[0137] θ=atan2[y0-(y1+y2)/2,x0-(x1+x2)/2]-3π/4 (8.4-1) [0138] 其中上式中atan2函数为反正切函数,本实例算得θ=0.59775841。对于旋转中选用的插值法是双线性插值法。旋转示意图如图6所示。
[0139] 将原图像A绕着图像中点以θ角度逆时针旋转,设输入图像函数为f(x,y),旋转θ角后得到输出图像函数g(x′,y′),则输入图像坐标与输出图像坐标点的对应关系为: [0140]
[0141] (8.4-2)
[0142] 其中(c,d)为旋转后中心坐标。
[0143] x,y求出来后有可能是带小数点的值,所以下一步需要用双线性插值法进行插值。设输出图像g(x′,y′)中的一个坐标点(x0′,y0′),根据(8.4-2)求出的在输入图像f(x,y)中的对应坐标点(x0,y0)。[·]表示取整数,令a=x0-[x0],b=y0-[y0]。则双线性插值公式:
[0144] g(x0′,y0′)=(1-a)(1-b)f([x0],[y0])+(1-a)bf([x0],[y0]+1)
[0145] +a(1-b)f([x0]+1,[y0])+abf([x0]+1,[y0]+1); (8.4-3) [0146] 根据(8.4-2)旋转公式和(8.4-3)双线性插值公式可以求出旋转后的图像A5。 [0147] 旋转后根据(8.4-2)计算出(x0,y0),(x1,y1),(x2,y2)在旋转后的新图像中的坐标(x0′,y0′),(x1′,y1′),(x2′,y2′),并根据矢量四边形法求出第四个顶点(x3′,y3′)。矢量四边形法公式如下:
[0148] x3′=x1′+x2′-x0′;y3′=y1′+y2′-y0′ (8.4-4) [0149] 本实例算得四个点分别为(66,183),(72,60),(180,183),(186,60)。由于可能会有平面几何畸变,第四个顶点会不准确,所以以四个顶点的最小x值,最小y值,最大x值,最大y值为基准,分别向左、下、右和上做适当的扩展,设x0′,x1′,x2′,x3′中最大值为xmax,最小值为xmin,y0′,y1′,y2′,y3′中最大值为ymax,最小值为ymin。重新赋值: [0150]
[0151]
[0152]
[0153]3 然3
[0051] 8.5图像均衡:
[0052] 插值完后的图像由于是对原图像的近似,所以图像质量会有所下降,整体对比度降低。本步的目的是将对比度低的图像进行图像均衡,增加对比度。
[0053] 对于离散图像A6,假定数字图像A6中的总像素为N,灰度级总数为L个,第k个灰度级的值为rk,图像中具有灰度级rk的像素数目为nk,则该图像中灰度级rk的像素出现的概率为:
[0054]
[0155] 8.5图像均衡:
[0156] 插值完后的图像由于是对原图像的近似,所以图像质量会有所下降,整体对比度降低。本步的目的是将对比度低的图像进行图像均衡,增加对比度。
[0157] 对于离散图像A6,假定数字图像A6中的总像素为N,灰度级总数为L个,第k个灰度级的值为rk,图像中具有灰度级rk的像素数目为nk,则该图像中灰度级rk的像素出现的概率为:
[0158]
[0159] 对其进行均匀化处理的变换函数为:
[0160]
[0161] 利用式(5.5-2)对图像A6做灰度变换,即可得到直方图均衡化后的图像A7,效果如图12中8所示。
[0162] 8.6码区精确定位:
[0163] 上两步得到大致旋转校正的并经过均衡化后的图像A7,本步将会精确确定码区位置。
[0164] 1.首先对图像A7进行大津阈值分割和开运算得到图像A8,效果如图12中9所示。 [0165] 2.从左向右,从下向上扫描图像A8,得到边缘点图像A9,并对图像A9进行改进的加邻域模板霍夫变换运算,和8.3中的方法相同,求出最长的两条直线l1和l4,连同第8.4步中求出的l1和l2,即可用这四条直线精确定位图像中的DM码。求出这四条直线的交点坐标,左上定点、右上顶点、左下顶点和右下顶点的坐标值分别赋值给(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3),本实例算得四点分别为(4,127)、(10,12)、(113,127)和(119,16),将l1、l2、l3和l4。定位到图像A7中,显示效果如图12中11所示。
[0166] 8.7校正畸变图像:
[0167] 传统上求取平面几何畸变的方法是建立畸变图像和校正图像之间的变换方程,再求取8个变换系数。但这样做需要解一个8元矩阵,计算十分复杂。本发明利用双线性原理,证明出一个简单的变换公式,变换公式如下所示:
[0168] 如果对于空间变换:(原始真图像)f(x,y)→g(x′,y′)(变换后图像),设原DM码的定位直线l1、l2、l3和l4对应在变换后的图像中的直线为l1′、l2′、l3′和l4′如图8所示,设:
[0169]
[0170] (8.7-1)
[0171] 先在x方向上进行线性插值,在l1方向上进行线性插值:
[0172] where R1=(x′,y0′) (8.7-2)
[0173] 在l2方向上进行线性插值:
[0174] where R2=(x′,y1′) (8.7-3)
[0175] 然后在y方向上进行线性插值:
[0176] where R2=(x′,y′) (8.7-4)
[0177] 由(8.7-1)、(8.7-2)和(8.7-3)可知由一维推向二维,假设输出图像为高为m,宽为n的矩形,则将(8.7-4)式整理得:
[0178]
[0179] 同理对y进行双线性插值得:
[0180]
[0181] 由于DM码都假设成正方形的,这里以原白边边长为输出图像宽和高m=n,本实例中m=n=120,建立一个空白图像A100。将图像A7四个点(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3)与空白图像A10的四个顶点对应起来,利用公式(8.7-5)、(8.7-6)可求取图像A10在图 像A7中的对应点,对于非整数对应点用插值法插值,最终求得经过几何畸变校正后的图像A10。效果如图12中12所示。
[0182] 8.8网格化分:
[0183] 从上步可看出,在进行完畸变校正后整幅图像都是码区图像了,这时可以放心的划分网格分离出每个小模块了。网格化分面临的最大一个问题就是如何确定DM码行数。由于DM码边缘的特殊性,一般算法都是根据虚边来确定。由于需边是黑白模块交替的,目前大部分算法都是利用边缘投影法来确定交替的个数,既有几个波峰就交替几次。但是此算法的鲁棒性很差,一个波峰没识别出来识别就失败,由于码区中有划痕污染或光照不均的存在,有的波峰可能很不明显,有的该是波谷的地方由于划痕却干扰变成了波峰。所以根据此本处理过程提出了最大匹配法识别虚边黑白交替模块的方法,原理是在DPM打在金属上的DM码有8×8,10×10,12×12,14×14,16×16,18×18,20×20,22×22,24×24这些种模块划分方式,可以利用DM码虚边最大匹配法识别虚边黑白交替模块个数,所谓DM码虚边最大匹配法是指利用8×8,~24×24这8种方式预匹配DM码虚边缘,采取最佳匹配的为本次识别的DM码划分方式。匹配过程如下:
[0184] 1.循环选取16种模块划分方式,假设本次选取的是i×i划分,则得到2i-1个虚边模块。
[0185] 2.循环阈值化划分好的虚边模块,若循环完毕转到4,否则设本次阈值化的虚边模块是Mj(0≤j≤2i-1),阈值化区间是Mj及其相邻最近的两个虚边模块Mj-1及Mj+1。阈值化方法选取大津阈值分割,然后只对Mj实行阈值化结果。
[0186] 3.对于阈值化好的虚边模块,先判断其理论属性值,若是黑模块则计算此模块中黑色像素值的个数: dj是Mj像素个数,若Mj第n个像素的灰度值等于0,pjn=1,否则为0;若是白模块则 若Mj第n个像素的灰度值等于255,qjn=1,否则为
0。计算匹配度ηj=εj/dj,转到2。
[0187] 4.计算i×i划分的平均匹配度:
[0188] 5.判读所有划分的平均匹配度,最大的φi对应的划分方式就是本次识别的DM码的划分方式,设最佳网格化分方式是ibest×ibest。
[0189] 在判断出DM码行数后,需要划分网格将DM码每个小模块切割出来,理论上来说每个小模块的边长: 但是h不一定是ibest的倍数,如果取近似值的话,由于误差的叠加最后一格将会出现很大的误差。
[0190] 对于DM码网格化分本发明采用迭代网格化分法,该算法过程如下:
[0191] 1.设初始值H0=h,i=0。
[0192] 2.判断i≤ibest,若否则迭代完毕,否则hi=Hi/(ibest-i)。
[0193] 3.Hi+1=Hi-hi,重设i=i+1,转到2。
[0194] 所以网格的划分方式可以用下面矩阵表示:
[0195]
[0196] 矩阵中每个坐标点代表划分的每个网格,横坐标代表此网格宽度,纵坐标代表此网格高度。设Mij代表矩阵中第i(0<i<ibest)行j(0<j<jbest)列的待识别模块。 [0197] 下表格是本实例所求得的8种情况的匹配度值:
[0198]试验行数 8 10 12 14 16 18 20 22
相似度 0.48 0.56 0.50 0.88 0.43 0.39 0.49 0.43
[0199] 红色显示的是正确划分的匹配度,可以看出正确划分方式的匹配度值明显大于其他划分方式。
[0200] 下表格是本实例利用迭代网格化分法所求得的网格高度hi和对应的高度Hi表格:
[0201]0 1 2 3 4 5 6 7 8 9 10 11 12 13
hi 9 9 9 8 9 8 9 8 9 8 9 8 9 8
Hi 120 111 102 93 85 76 68 59 51 42 34 25 17 8[0202] 8.9边界修复:
[0203] 由于在下一步的信息提取中主要是以边界为基础而逐步提取的,但由于污染或者划痕的存在边界有时不那么理想,甚至会显现出相反的信息属性,所以对于网格化分完毕的DM码,需要修复一下边界。修复的原则是:如果是质量比较好的边界码尽量不予改变,对于比较差的边界码尽量保持其纹理的不变并给予修善。边界码的质量好坏的判别是通过与相邻同属性的边界码对比判定的,是相对的。下面是对于输入图像A10修复总过程: [0204] 1.遍历白色边缘模块,计算Mi的平均灰度值 Mi是第i个白色模块边缘。 [0205] 2.计算Mi+1的平均灰度值
[0206] 3.计算 和 的平均值
[0207] 4.比较 和 的大小,将 赋值给较小者中灰度值小于 的像素。
[0208] 5.i加1,直至循环完所有白色模块。
[0209] 同理虚边黑色模块和DM码室白边的修复类似于上过程。最终得到边界修复好的图像A11,如图12中14所示。本步的目的是为下面的信息提取做好准备,并将信息提取的基础边界加以修复,以达到更准确的信息提取。
[0210] 8.10信息提取:
[0211] 传统的信息提取大部分都是先阈值化原图像,再将划分好的网格向下移半个模块高度,选取采样点提取信息。这样做有两个缺点:1、信息损失严重,不论采取什么样的阈值化方法阈值化原图像,都会有信息损失,对于光照不均尤为严重,对于光照比较暗的地方有可能全部阈值化为黑,损失了白色模块信息,光照比较亮的区域正好相反。2、鲁棒性差,由于选用采样点的方法,如果在采样点处有噪声干扰,采样就会失败导致该模块识别失败。本发明提出一种新的最大可信度区域生长算法迭代识别提取DM码信息,这是一种非基于二值化图像而是基于灰度图像的方法,所以是一种信息无损算法。本算法原理是:每个小模块的识别结果是通过与它相邻三个小模块的纹理对比得出的。将原图像平分为四个区域,如图9所示。每个区域从边界开始逐步迭代识别。下面算法过程:
[0212] 1.赋值给边界模块其自身的属性值,黑色模块赋值为0,白色模块赋值为1。并将边 缘模块可信度初始值都设为1,即百分之百可信,内部未识别模块可信度设为0。所谓可信度是指本次所识别模块的识别出的正确率。分块识别,先识别右下四分之一DM码区域。 [0213] 2.对待识别模块Mij识别前保证其邻区域有三个已识别出的模块,即可信度不为0。设这三个模块设为Ma,Mb,Mc,可信度为εa,εb,εc,则本次识别的模块的可信度设为: 选取邻域的原则一是保证三个邻区域模块属性值有0也有1;二是保证
使εij取最大值,这两个条件第一个的优先级大于第二个。实验证明图10中的识别顺序是最佳的,黑色字体表示数据模块的可信度,红色字体表示数据模块的识别顺序。 [0214] 3.计算Ma,Mb,Mc这组中白色模块的平均灰度值得到 再计算黑色模块的平均灰度值 最后求取Mij的平均灰度值
[0215] 4.计算 和 与 和 的方差。比较方差大小,如果 和 方差小,将本次识别小模块的属性设为1(代表白色),否则设为1(代表黑色)。
[0216] 5.判断是否是最后一个识别模块,如果是则信息提取完成,否则转回步骤2。 [0217] 6.之后的识别顺序是左下四分之一DM码区域,右上四分之一DM码区域,左上四分之一DM码区域。识别方法同上一样。
[0218] 至此,金属上磨损二维图像信息提取以完成,最终提取数据如图12中15所示,下表格是本算法处理的正确率及计算时间:
[0219]错误个数 错误坐标 正确率 计算时间
3 (2,1),(8,1),(6,2) 97.92% 268毫秒
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈