本发明属于工业视觉检测技术领域,尤其涉及一种喷码字符检测方法。
背景技术:
在商品生产过程中,需要在商品包装表面对生产日期、产品批号等信息进行喷码。由于生产环境中不确定因素的干扰,喷码过程中往往会出现漏喷、重码、喷码字符缺失、喷码字符错误等情况。人工检测喷码产品是否合格,速度慢,效率低,且会耗费大量人力成本。
目前常采用机器视觉方法检测喷码字符,用图像传感器采集流水线上的商品包装的喷码图像,再传输给字符检测模块处理。在商品喷码和图像采集过程中,由于机械抖动等原因,图像中喷码字符的位置会发生偏移,导致无法准确定位喷码字符的区域;在工业环境中采集的喷码图像存在噪声、不均匀光照、不均匀背景、低对比度、字符粘连等问题,会影响喷码检测的精度;在实际生产中,有时会将字符喷码在油壶、饮料瓶等曲面物体上,造成字符的弯曲变形;此外工业检测要求较高的准确性和实时性,这些都给喷码字符检测带来了挑战。
近年来随着深度学习的发展,自然场景文字检测与识别技术已经取得了较大进展,但常用的基于深度学习的场景文字检测方法如ssd(singleshotmultiboxdetector,单次多框检测器)、yolo(youonlylookonce)、ctpn(connectionisttextproposalnetwork,连接文本提议网络)、east(efficientandaccuracyscenetext)等,网络结构复杂,参数多,计算量大,应用于喷码字符检测问题中实时性不足。专利申请号为cn201810607169.1,名称为“一种基于深度学习的包装喷码检测方法”,采用语义分割神经网络定位字符区域,使用旋转矩形对字符区域进行倾斜校正,采用对折切分的方式将两行字符切分为单行字符,该方法可以较好地提取字符区域。但由于采用了语义分割神经网络对整幅图像进行分割,运算量较大;旋转矩形仅能对字符进行倾斜校正,无法校正弯曲的字符;采用对折切分的方式将两行字符切分为单行字符,无法适应存在多行喷码字符的情况。此外由于连续采集的待检测喷码图像背景相似,喷码字符位置偏差不大,上述方法将每一张待检测的图像视为独立的,未能考虑到这些喷码图像间的关联性。
技术实现要素:
针对现有技术的缺陷和改进需求,本发明的目的在于提供一种复杂场景下的喷码字符检测方法,在噪声、不均匀光照、不均匀背景、低对比度等场景下准确定位喷码字符的区域;并将喷码字符区域内的多行字符分割为单行;校正喷码在曲面上形成的倾斜、弯曲的字符;保证较高的喷码字符识别精度和处理速度。
为实现上述目的,本发明提供了一种复杂场景下的喷码字符检测方法,所述方法包括如下步骤:
步骤(1)采集一幅合格样品的喷码图像作为基准图像。
步骤(2)在基准图像上画框选择待检测的字符区域。
步骤(3)采集流水线上待检测的喷码样品图像。
步骤(4)如果当前图像的字符区域相对于基准图像的字符区域位置存在偏差,则采用基于特征点匹配的目标跟踪算法,跟踪待检测的字符区域。
步骤(5)如果待检测的字符区域中包含多行文字,则将字符区域图像输入至语义分割神经网络中,将多行文字区域分割为单行。
步骤(6)校正扭曲和/或倾斜的单行文字。
步骤(7)采用改进的crnn算法识别单行文字。
步骤(8)判断是否检测完所有样品,若未完成,重复步骤(3)-(8),否则结束检测。
进一步地,所述步骤(4)包括如下子步骤:
步骤(4.1)采用特征点检测算法检测基准图像的特征点,并使用二进制特征描述子对特征进行描述,得到特征点集合o:
其中
根据特征点的坐标是否位于画框选择的区域内,将特征点划分为前景特征点和背景特征点,得到前景特征点集合of和背景特征点集合ob,o=of∪ob。
步骤(4.2)采用与步骤(4.1)相同的特征点检测算法与特征描述子,对当前图像进行特征检测,得到特征点集合
其中
步骤(4.3)采用k最近邻(k-nearestneighbor,k-nn)匹配算法对当前图像的特征集合o与基准图像的特征集合p进行特征匹配。
对特征集合p中的每一个特征点
其中xor表示异或运算,
返回特征集合o中与特征点
步骤(4.4)对匹配结果进行筛选,剔除误匹配的特征点。匹配点筛选算法为:
若
其中ai表示特征集合p中检测到的特征点,mi表示特征集合o中与ai对应特征点的索引,|k|表示集合k中的特征点对的总数目。
步骤(4.5)根据匹配结果,计算当前图像文字区域相对于基准图像文字区域的旋转角度和当前图像文字区域的中心坐标。
其中旋转角度的计算方法为:
对于特征集合k中的任意两个特征点对(ai,mi),(aj,mj),记特征点ai,aj的水平距离
当前图像文字区域中心坐标的计算方法为:
根据旋转角度θ生成旋转矩阵r:
使用层次聚类算法对预测点集合v进行聚类,得到包含元素最多的子集vc,计算vc中所有点坐标的均值
根据文字区域中心和旋转角度,计算当前图像的文字区域。
进一步地,所述步骤(5)包括如下子步骤:
步骤(5.1)将字符区域图像输入至语义分割神经网络中,将图像中的每个像素分为文字、背景、文字与背景的边界三类,得到一幅三通道的像素概率图,三个通道分别对应当前像素属于文字、背景、边界的概率。
步骤(5.2)对像素概率图进行阈值化,生成文字分割二值图,将黑色像素所在区域作为背景,白色像素区域作为字符区域。
步骤(5.3)文字分割二值图中可能还存在一些伪文字区域,对文字分割二值图做连通域分析,标记出图中所有的连通域,去除图中宽度、高度、面积超出阈值的连通域,输出文本行分割结果。
进一步地,所述步骤(5.1)中的语义分割神经网络的结构为,该神经网络共包括五个子模块,前三个子模块均包含3个卷积层和相应的relu激活函数进行特征提取,卷积层的输出经过一个大小为2×2且步长为2的最大池化层进行下采样,输入图像经过前三个模块后共经过了8倍下采样,输出一组大小为w/8×h/8的特征图像。
第四个子模块包含3个卷积层和相应的激活函数relu,对上一模块的特征图像进行编码,针对文本行的长度大于宽度的特点,将3个卷积层的卷积核大小分别设置为3×3,1×3,1×1,更多地编码图像水平方向的信息。
第五个子模块包含1个卷积层和3个反卷积层,每个卷积层和反卷积层均经过激活函数relu激活,对上一模块编码的特征图像进行解码。每个反卷积层的卷积步长均为2,以实现对上一层输出的2倍上采样,编码的特征图像共经过8倍上采样,使得输出特征图尺寸与卷积神经网络的输入图像尺寸相同,最后经过一个softmax层将每个像素分为3类:文本类,边界类,背景类。输出这个像素属于文字、文字与背景的边界、背景的概率p1、p2、p3,得到文字像素概率图p=(p1,p2,p3)。
softmax函数公式为:
上式中xi代表特征图上某一点在第i类上的输出值,si代表点在第i类上的softmax值,k表示分类类别总数。
进一步地,所述步骤(5.1)中的语义分割神经网络的损失函数采用多分类的交叉熵损失函数:
其中yi代表样本的真实概率,si代表神经网络的预测概率,e代表交叉熵函数的损失值,k表示分类类别总数。
进一步地,所述步骤(5.2)中的像素概率图进行阈值化的方法为:对于步骤(5.1)中得到的像素概率图p中的每一个像素点(x,y),若其属于文字类的概率p1(x,y)大于第一阈值thr1或属于边界类的概率p2(x,y)大于第二阈值thr2,则将该像素(x,y)视为文字像素,将文字分割二值图m中的对应位置的像素值置为1,否则置为0。
m(x,y)=1,if(p1(x,y)>thr1)or(p2(x,y)>thr2)
m(x,y)=0,else
进一步地,所述步骤(6)中的扭曲和/或倾斜字符校正方法为:对步骤(5.3)中得到的连通域的每一列,计算连通域在这一列上的高度h=yt-yb,和中点坐标
计算中点纵坐标的平均值
计算平均高度
将连通域作为掩膜提取原始的文本行图像,对文本行图像的每一列,提取以中点yi为中心,高度为havg的像素区域,将其映射到以yavg为中心,高度为havg的范围内,得到校正后的文本行图像。其映射公式如下:
g(x,y)=f(x,y-(yi-yavg)),
进一步地,所述步骤(7)中的字符识别方法使用改进后的卷积循环神经网络(convolutionalrecurrentneuralnetwork,简写为crnn)算法,crnn算法首先使用一组卷积层cnn进行特征提取,再将卷积特征输入至一组双向长短时记忆网络(bilstm),提取文字序列特征,使用联结主义时间分类算法(connectionisttemporalclassification,简写为ctc)计算损失函数,实现对字符序列的端到端识别。
本发明中对crnn算法的主要改进在于:将原始crnn网络中的双向长短时记忆网络层(bilstm)部分替换为两个卷积核大小为3,卷积核数目为512的一维卷积层conv1d进行文字序列特征提取,在仅牺牲较小识别精度的情况下,减少了神经网络的运算量,提高了字符识别速度,以满足喷码检测的实时性要求。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
本发明提出了一种复杂环境下的喷码字符检测方法。首先,根据连续采集的待检测喷码图像背景相似,喷码字符位置偏差不大的特点,采用一种基于特征点匹配的目标跟踪算法,准确定位待检测的文字区域,该方法相对于基于神经网络的文字检测算法速度更快,同时保证较高的准确性;其次,对于提取的文字区域,设计了一个轻量级的语义分割神经网络将多行文字分割为单行,该神经网络相比于常见的语义分割神经网络如fcn、u-net等,使用了较少的卷积核数目和卷积层数,同时仅将待检测的文字区域图像作为输入,相比于将采集的整幅原始图像作为输入,运算量更小,速度更快,在图像存在噪声、不均匀光照、不均匀背景低对比度,文本行粘连时也能准确分割;再次,本发明提出了一种扭曲喷码字符校正方法,可以准确校正扭曲倾斜的喷码字符;最后,本发明采用改进的crnn算法识别校正后的单行喷码字符,在保证识别精度的情况下提高了网络的运算速度。
附图说明
图1为本发明实施例中一种喷码字符检测方法的流程示意图;
图2为本发明实施例中采集的基准图像;
图3为本发明实施例中待检测区域跟踪方法的流程示意图;
图4(a)为本发明实施例中一种待检测图像文字区域的定位效果图;
图4(b)为本发明实施例中另一种待检测图像文字区域的定位效果图;
图5为本发明实施例中提取的文字区域;
图6为本发明实施例中语义分割神经网络的结构图;
图7(a)为本发明实施例中语义分割神经网络输出的文字部分的像素概率图;
图7(b)为本发明实施例中语义分割神经网络输出的文字与背景边界部分的像素概率图;
图7(c)为本发明实施例中语义分割神经网络输出的背景部分的像素概率图;
图7(d)为本发明实施例中对像素概率图进行阈值化后生成文字分割二值图;
图8为本发明实施例中文本行分割结果示意图;
图9为本发明实施例中经过扭曲校正后的单行字符。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供了一种喷码字符检测方法,包括:
步骤(1)采集一幅合格样品的喷码图像作为基准图像。如图2所示,为本发明实施例中采集的基准图像
步骤(2)在基准图像上画框选择待检测的字符区域。
步骤(3)采集流水线上待检测的喷码样品图像。
步骤(4)当前图像的字符区域与基准图像的字符区域位置存在偏差,采用基于特征点匹配的目标跟踪算法,跟踪待检测的字符区域。
具体地,如图3所示,对待检测区域进行跟踪的方法包括:
步骤(4.1)采用fast特征点检测算法检测基准图像的特征点,并使用256位二进制brisk特征描述子对特征进行描述,得到特征集合o:
其中
根据特征点的坐标是否位于画框选择的区域内,将特征点划分为前景特征点和背景特征点,得到前景特征点集合of和背景特征点集合ob,o=of∪ob。
步骤(4.2)采用与步骤(4.1)相同的特征点检测算法与特征描述子,对当前图像进行特征检测,得到特征集合
其中
步骤(4.3)采用k-nn匹配算法对当前图像的特征集合o与基准图像的特征集合p进行特征匹配,其中k-nn算法的参数k=2,对特征集合p中的每一个特征点
其中xor表示异或运算,
返回特征集合o中与特征点
步骤(4.4)对匹配结果进行筛选,剔除误匹配的特征点。匹配点筛选算法为:
若
则将特征点对
其中ai表示特征集合p中检测到的特征点,mi表示特征集合o中与ai对应特征点的索引,|k|表示集合k中的特征点对的总数目。
步骤(4.5)对于特征集合k中的任意两个特征点对(ai,mi),(aj,mj),记特征点ai,aj的水平距离
取dθ分布的中值θ作为旋转角度:θ=med(dθ)
根据旋转角度θ生成旋转矩阵r
将基准图像文字区域中心点记为c,对特征点集合k中的每一对特征点(a,m),计算m相对于中心c的相对坐标rm=m-c。集合k中的每一对特征点(a,m)都对当前图像文字区域中心进行预测,其预测公式为:h(a,m)=a-rrm,得到一组预测点集合
使用层次聚类算法对预测点集合v进行聚类,得到包含元素最多的子集vc,计算vc中所有预测点坐标的均值
根据文字区域中心和旋转角度,计算当前图像的文字区域。如图4(a)所示为本发明实施例中一种待检测图像文字区域的定位效果图;图4(b)所示为本发明实施例中另一种待检测图像文字区域的定位效果图。
步骤(5)截取步骤(4)得到的待检测图像文字区域,如图(5)所示,待检测的字符区域中可能包含多行文字,将字符区域图像输入至语义分割神经网络,对字符区域进行文本行分割。
步骤(5.1)将字符区域图像输入至如图6所示的语义分割神经网络中,将图像中的每个像素分为文字、背景、文字与背景的边界三类,输出这个像素属于文字、文字与背景的边界、背景的概率p1、p2、p3,得到文字像素概率图p=(p1,p2,p3)。
如图6所示,所述步骤(5.1)中的语义分割神经网络的结构为,该神经网络共包括五个子模块,前三个子模块均包含3个卷积层和相应的relu激活函数进行特征提取,卷积层的输出经过一个大小为2×2且步长为2的最大池化层进行下采样,输入图像经过前三个模块后共经过了8倍下采样,输出一组大小为w/8×h/8的特征图像。
第四个子模块包含3个卷积层和相应的激活函数relu,对上一模块的特征图像进行编码,针对文本行的长度大于宽度的特点,将3个卷积层的卷积核大小分别设置为3×3,1×3,1×1,更多地编码图像水平方向的信息。
第五个子模块包含1个卷积层和3个反卷积层,每个卷积层和反卷积层均经过激活函数relu激活,对上一模块编码的特征图像进行解码。每个反卷积层的卷积步长均为2,以实现对上一层输出的2倍上采样,编码的特征图像共经过8倍上采样,使得输出特征图尺寸与卷积神经网络的输入图像尺寸相同,最后经过一个softmax层将每个像素分为3类:文本类,边界类,背景类。输出这个像素属于文字、文字与背景的边界、背景的概率p1、p2、p3,得到文字像素概率图p=(p1,p2,p3)。
softmax函数公式为:
上式中xi代表特征图上某一点在第i类上的输出值,si代表点在第i类上的softmax值,k表示分类类别总数。
语义分割神经网络的损失函数采用多分类的交叉熵损失函数:
步骤(5.2)对于步骤(5.1)中得到的像素概率图p中的每一个像素点,若其属于文字类的概率大于第一阈值thr1或属于边界类的概率大于第二阈值thr2,则将该像素视为文字像素,将文字分割二值图m中的对应位置的像素值置为1,否则置为0。
m(x,y)=1,if(p1(x,y)>thr1)or(p2(x,y)>thr2)
m(x,y)=0,else
如图7所示,为本发明实施例中语义分割神经网络输出的结果示意图,其中图7(a)为文字部分的像素概率图;图7(b)为文字与背景边界部分的像素概率图;图7(c)为背景部分的像素概率图;图7(d)为对像素概率图进行阈值化后生成文字分割二值图。
步骤(5.3)文字分割二值图m中可能还存在一些伪文字区域,对文字分割二值图m做连通域分析,标记出图中所有的连通域,去除图中宽度、高度、面积超出阈值的连通域,输出文本行分割结果。如图8所示,为本发明实施例中文本行分割结果示意图。
步骤(6)对步骤(5.3)中得到的连通域的每一列,计算连通域在这一列上的高度h=yt-yb,和中点坐标
计算中点纵坐标的平均值
计算平均高度
将连通域作为掩膜提取原始的文本行图像,对文本行图像的每一列,提取以中点yi为中心,高度为havg的像素区域,将其映射到以yavg为中心,高度为havg的范围内,得到校正后的文本行图像。其映射公式为:
g(x,y)=f(x,y-(yi-yavg)),
如图9所示为本发明实施例中经过扭曲校正后的单行字符。
步骤(7)采用改进的卷积循环神经网络(convolutionalrecurrentneuralnetwork,简写为crnn)算法识别文本行。对crnn的具体改进在于:将原始crnn网络中的双向长短时记忆网络层(bilstm)部分替换为两个卷积核大小为3,卷积核数目为512的一维卷积层conv1d进行文字序列特征提取。
步骤(8)判断是否检测完所有样品,若未完成,重复步骤(3)-(8),否则结束检测。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种喷码字符检测方法,其特征在于,所述方法包括如下步骤:
步骤(1)采集一幅合格样品的喷码图像作为基准图像;
步骤(2)在基准图像上画框选择待检测的字符区域;
步骤(3)采集流水线上待检测的喷码样品图像;
步骤(4)如果当前图像的字符区域相对于基准图像的字符区域位置存在偏差,则采用基于特征点匹配的目标跟踪算法,跟踪待检测的字符区域;
步骤(5)如果待检测的字符区域中可能包含多行文字,则将字符区域图像输入至语义分割神经网络中,将多行文字区域分割为单行;
步骤(6)校正扭曲和/或倾斜的单行文字;
步骤(7)采用改进的卷积循环神经网络算法识别单行文字;
步骤(8)判断是否检测完所有样品,若未完成则重复步骤(3)-(8),否则结束检测。
2.如权利要求1所述的喷码字符检测方法,其特征在于,所述步骤(4)包括如下子步骤:
步骤(4.1)采用特征点检测算法检测基准图像的特征点,并使用二进制特征描述子对特征进行描述,得到特征点集合o;
步骤(4.2)采用与步骤(4.1)相同的特征点检测算法与特征描述子,对当前图像进行特征检测,得到特征点集合p;
步骤(4.3)采用k最近邻匹配算法对当前图像的特征集合o与基准图像的特征集合p进行特征匹配;
步骤(4.4)对匹配结果进行筛选,剔除误匹配的特征点;
步骤(4.5)根据匹配结果,计算当前图像文字区域相对于基准图像文字区域的旋转角度和当前图像文字区域的中心坐标。
3.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(5)包括如下子步骤:
步骤(5.1)将字符区域图像输入至语义分割神经网络中,将图像中的每个像素分为文字、背景、文字与背景的边界三类,得到一幅三通道的像素概率图,三个通道分别对应当前像素属于文字、背景、边界的概率;
步骤(5.2)对像素概率图进行阈值化,生成文字分割二值图,将黑色像素所在区域作为背景,白色像素区域作为字符区域;
步骤(5.3)文字分割二值图中可能还存在一些伪文字区域,对文字分割二值图做连通域分析,标记出图中所有的连通域,去除图中宽度、高度、面积超出阈值的连通域,输出文本行分割结果。
4.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(4.1)具体为:
根据特征点的坐标是否位于画框选择的区域内,将特征点划分为前景特征点和背景特征点,得到前景特征点集合of和背景特征点集合ob,合并前景特征点集合of和背景特征点集合ob得到特征点集合o=of∪ob;其中
5.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(4.3)具体为:
对特征集合p中的每一个特征点
返回特征集合o中与特征点
6.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(4.5)具体为:
旋转角度的计算方法为:
对于特征集合k中的任意两个特征点对(ai,mi),(aj,mj),记特征点ai,aj的水平距离
当前图像文字区域中心坐标的计算方法为:
根据旋转角度θ生成旋转矩阵r:
使用层次聚类算法对预测点集合v进行聚类,得到包含元素最多的子集vc,计算vc中所有点坐标的均值
根据文字区域中心和旋转角度,计算当前图像的文字区域。
7.如权利要求3所述的喷码字符检测方法,其特征在于,所述步骤(5.1)中的语义分割神经网络包括五个子模块,前三个子模块均包含3个卷积层和相应的relu激活函数进行特征提取,卷积层的输出经过一个大小为2×2且步长为2的最大池化层进行下采样,输入图像经过前三个模块后共经过了8倍下采样,输出一组大小为w/8×h/8的特征图像;
第四个子模块包含3个卷积层和相应的激活函数relu,对上一模块的特征图像进行编码,针对文本行的长度大于宽度的特点,将3个卷积层的卷积核大小分别设置为3×3,1×3,1×1,更多地编码图像水平方向的信息;
第五个子模块包含1个卷积层和3个反卷积层,每个卷积层和反卷积层均经过激活函数relu激活,对上一模块编码的特征图像进行解码,每个反卷积层的卷积步长均为2,以实现对上一层输出的2倍上采样,编码的特征图像共经过8倍上采样,使得输出特征图尺寸与卷积神经网络的输入图像尺寸相同,最后经过一个softmax层将每个像素分为3类:文本类、边界类和背景类,输出这个像素属于文字、文字与背景的边界、背景的概率p1、p2、p3,得到文字像素概率图p=(p1,p2,p3);
softmax函数公式为:
上式中xi代表特征图上某一点在第i类上的输出值,si代表点在第i类上的softmax值,k表示分类类别总数。
8.如权利要求3所述的喷码字符检测方法,其特征在于,所述步骤(5.2)中的像素概率图进行阈值化的方法为:对于步骤(5.1)中得到的像素概率图p中的每一个像素点,若其属于文字类的概率大于第一阈值thr1或属于边界类的概率大于第二阈值thr2,则将该像素视为文字像素,将文字分割二值图m中的对应位置的像素值置为1,否则置为0;
9.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(6)中的扭曲和/或倾斜字符校正方法为:
对步骤(5.3)中得到的连通域的每一列,计算连通域在这一列上的高度h=yt-yb,和中点坐标
计算中点纵坐标的平均值
计算平均高度
将连通域作为掩膜提取原始的文本行图像,对文本行图像的每一列,提取以中点yi为中心,高度为havg的像素区域,将其映射到以yavg为中心,高度为havg的范围内,得到校正后的文本行图像,其映射公式如下:g(x,y)=f(x,y-(yi-yavg)),
10.如权利要求1或2所述的喷码字符检测方法,其特征在于,所述步骤(7)中的字符识别方法使用改进后的卷积循环神经网络(convolutionalrecurrentneuralnetwork,crnn)算法,crnn算法首先使用一组卷积层cnn进行特征提取,再将卷积特征输入至一组双向长短时记忆网络,提取文字序列特征,使用联结主义时间分类算法计算损失函数,实现对字符序列的端到端识别。
技术总结