基于机器视觉的环形工件表面字符的提取识别
2022-03-05陈甦欣张闻箫陈康琛
陈甦欣, 张闻箫, 陈康琛
(合肥工业大学 机械工程学院,安徽 合肥 230009)
随着社会的发展进步,计算机技术得到了快速发展,机器视觉技术在工业生产活动和日常的生活中得到了广泛的应用。传统的人工检验固然简单、准确,但效率较低、成本偏高,且对劳动力是一个严重的浪费,不符合现代化社会的要求[1]。机器视觉检验的兴起使得工业检测的准确率和效率有了大幅度提升,提高了工业自动化的水平。
机器视觉是一种非接触的、灵活精确的检验技术,其字符识别技术在工业生产中对于工件型号数据检测、生产数据收集等方面具有重要意义[2-3]。传统的字符多为横向整齐排列,环形排列字符的检验往往是一个难题。
本文以识别工件环形表面上字符为目标,首先通过相机采集照片,对照片进行图像滤波,消除噪声后二值化操作,得到低噪声的二值化图像;然后针对环形区域字符识别的相应问题提出一套解决方案,实现对环形区域字符较为准确的分割;最后对分割后的字符利用模板匹配法实现精度较高的识别。
1 图像预处理
在分析图像中,图像质量的好坏直接影响着识别算法的效果与准确度,因此在图像分析之前,需要对图像进行预处理操作。图像的预处理可以减少和消除在图像采集过程中产生的无关信息,提高图像的质量,增强识别算法的准确性,提高检测质量。
1.1 空间滤波
空间滤波在图像处理领域中应用极为广泛,主要用来增强图像的特征信息,削弱和减少图像中的无关信息,从而改善图像的视觉效果,降低机器检验或人工检验的难度[4]。空间滤波器由一个领域及对该领域所包围的图像像素执行预定义操作组成。常见的线性滤波算法有均值滤波、中值滤波、方框滤波、高斯滤波、双边滤波。通过选择合适的滤波器可以实现图像噪声的减少和消除。原始图像和经过各种算法空间滤波后的图像如图1所示。
图1 图像的空间滤波
1.2 图像二值化处理
图像二值化又称阈值处理,通过选定一个阈值,将灰度图像中高于阈值的像素点的灰度值置为255,低于阈值的像素点置为0。这样原先的图像仅有2个灰度值,有利于后期特征的识别和提取。
1.3 零件圆形的定位
因为待检测位置往往不是固定不动的,所以需要对待检测字符位置进行定位。考虑到拍摄的图片环形缸套表面和背景色明亮程度差距较大,采用梯度算法[5]查找圆形轮廓有较好的效果。在查找轮廓时由于图片中的圆形轮廓较多,应对所需查找的大小范围进行限制,即可得到待提取的圆形轮廓,并通过circle函数将提取出的圆形轮廓画出。待检测圆形轮廓的定位如图2所示,工件边缘的粗圆即为通过梯度算法检测出的待检测圆形轮廓。
图2 待检测圆形轮廓的定位
2 图像特征信息的提取
由于工件的环形特征,对环形工件上字符的直接识别较为繁琐。考虑先将环形进行极坐标展开,再进行字符位置的定位,最后使用卷积算法提取字符的分布特征,提取单个字符。
2.1 环形区域展开
利用梯度算法提取工件轮廓,通过极坐标变换对提取到的圆形轮廓进行展开,再通过OpenCV中boundingRect函数返回指定点集最外面的矩形边界,获得初始感兴趣的区域[6]。通过观察可知,字符区域大致占工件整个圆形区域的1/4,可以选取2次不同角度的展开方式,再分别作极坐标卷积操作,选择卷积较大的一个角度作为展开的结果。展开后图片如图3所示。
图3 展开后图片
2.2 字符区域定位
一般来说,在获取环形展开区域为矩形的基础上,要确定字符识别区域的有效方法是像素投影法。这是一种通过绘制图像局部区域横向或竖向像素值的和,再通过像素和的变化曲线来判断字符分布位置的方法。该方法有较高的准确率,但是在噪声较大的情况下且待检测图像为环形图像时,易出现较大偏差影响结果。
本文采用基于连通区域[7]的方法,通过判断字符区域的特征和连通情况,对字符区域进行合并产生较大的区域并消除噪声,提取出相应的字符区域。膨胀处理图片,让字符按组变成一块块大区域,然后识别整块轮廓,并用矩形框住该轮廓,如图4所示。
图4 字符组区域提取
在提取过程中,可能会出现噪声影响区域提取的情况,因此在采取降噪处理的同时,对字符组提取的宽度w和高度h进行限制。因为所处理的图片是由固定的工业用相机拍摄的,字符的大小和位置在图片中的位置基本固定,所以根据测试图像调整w、h参数,以提取出正确的区域。
2.3 字符分割
字符分割是文本识别的必要前提,对图像信息的提取具有重要意义。将提取出来的字符组分别处理,工件上的字符均分组排列整齐,且保证组内字符间距较小、组间间距较大。
进行到这一步已基本不用考虑噪声的影响,只需对各个字符组分别用上文方法寻找轮廓,再对寻找到的轮廓使用外部矩形边界法将单个字符用矩形框提取出来,按顺序保存处理。
3 字符识别
字符识别的方法主要分为决策理论方法和结构方法2类。第1类是统计模式识别的基础,对图像进行大量统计分析找出规律性,抽取反映目标特征的统计向量进行识别;第2类方法又称句法结构方法,通过定性描绘即一些语言来描绘图像,进行目标匹配实现图像中目标的识别。
考虑到句法结构方法在图像获取过程中受噪声影响较大,且环形工件的字符字体为印刷体,较容易区分辨别,故采用句法模式识别的方法,通过卷积神经网络对特征判别来识别字符。
3.1 基于模板匹配的识别算法
模板匹配算法[8]是在像素层面上的一种相对简单的图像识别方法,同时该方法可以确定对象在图像中的位置。但模板匹配算法具有一定的局限性,在只能平行移动的情况下,当匹配目标的大小尺寸发生变化,就很难得到准确的匹配结果。
工件待识别的字符个数为20个,每个字符随机由0—9 10个数字和A—Z 26个不同的字母组成,则检验2种不同字体的环形工件至少需要72个字符模板。
常见的模板匹配算法分别是基于形状、灰度值和特征点的。基于灰度值的模板匹配算法是其他方法的基础,是以模板与图像之间差值的绝对值或平方等作为匹配的依据。通过计算得到A字符模板对A字符的匹配度达5.632 124×e-5,其他字符的匹配度达0.3左右,选取匹配度最低的结果为匹配结果。检测字符模板如图5所示。
图5 检测字符模板
3.2 卷积神经网络算法
神经网络是模仿人类大脑,以大脑内的神经结构作为出发点的计算模型,可以进行有监督和无监督学习,其目的是通过拟合已有的数据,对输入的数据进行决策和分类。
卷积神经网络[9-10]包含输入层、卷积层、池化层、输出层等,通过各层的拟合和提取,将数据的特征信息提取出来。
识别的字体通常有印刷体和手写体,本文的识别目标为印刷体字符。使用手写字符数据集训练的识别模型来做印刷体的识别任务,必然难以取得满意的分类精度。本文使用tensorflow框架建立对字符数据识别的神经网络层,输入MNIST手写字体数据集,达到了较高精度的识别效果。识别结果如图6所示。
图6 字符识别结果
4 字符识别流程与试验
本文的全部工作过程是在Windows10 64位、8 GiB运行内存、英特尔Core i5-10210U 1.6 GHz、Nvidia GeForce MX250 2 GiB显存配置的电脑上运行实现的。程序采用Python语言的OpenCV3.4.10编程实现。
4.1 字符识别流程
根据上文的介绍,该工件的字符识别流程主要由图像预处理、待检测区域定位、待检测区域极坐标展开、字符分割、卷积神经网络字符识别6个部分组成,识别流程如图7所示。
图7 识别流程
4.2 实验验证
选择5个工件,分别选取10个不同的位置相机进行拍摄,记录其字符分割的准确率、字符识别的准确率。识别结果见表1所列。
表1 识别结果
由表1可知,字符分割和字符识别的准确率均达到95%以上,说明基于连通域的字符区域提取有很好的效果,但是字符识别的准确率稍低,这是由神经网络模型和数据集导致的。若选择训练更好的数据集和算法,识别精度将有更大的提高空间。
5 结 论
本文对工件环形表面字符的识别提取提出一种可行方案。在字符识别前对工件图像使用空间滤波、二值化、字符展开、定位、分割的方法,运用基于连通域分割的方法大大减小因为小面积噪声产生的错误分割的影响,提高了分割的正确率,获取的图像实现了待识别字符区域的分割和定位;提出基于卷积神经网络和模板字符的识别算法,在用手写字符数据集训练的情况下,仍实现了对印刷体字符的高精度识别。实验验证得出,该方法在工业生产领域具有一定的使用价值。