基于线结构光的发动机缸盖表面字符识别*
2021-07-02潘海鸿徐大斌王耀玮董秦汉梁旭斌
潘海鸿,徐大斌,王耀玮,董秦汉,梁旭斌
(广西大学 a.机械工程学院;b.工程实践与训练中心,南宁 530004)
0 引言
工业自动化生产线中有大量的零件需要识别和分拣,传统的方法是由人工来完成,但人工操作存在工作量大、效率低下、出错率高等问题[1]。通过机器视觉对零件进行识别和分类,可极大地提高生产线自动化程度[2-3]。机器视觉检测被广泛应用在质量检测、机器人抓取位置判断、字符信息提取(零件型号识别)、产品数据采集等方面[4-5]。
目前对字符信息提取研究较多,Islam R等[6]提出基于HOG和SVM的车牌字符提取与识别算法,字符识别准确率达94.6%。陈甦欣等[7]针对环状零件表面字符检测,使用卷积神经网络和SVM对字符进行分类识别,识别准确率95%以上。李阳等[8]利用NCC模板匹配准确的特点快速匹配到轮胎上的固定编号,驱动机器人完成分拣工作,识别准确率96%左右。Oni O J等[9]研究获取一组约鲁巴标准打印文本的扫描图像,开发出一种适用于该图像的光学字符识别模型,准确率为96.862%。Bora M B等[10]使用CNN-ECOC和SVM进行手写字符识别,准确率最高达到97.71%。上述研究的识别对象背景清晰,工况环境较好,使用普通的2D相机即可进行识别。但在实际工业环境中,环境较复杂,上述方法具有局限性。
在实际工业现场对汽车发动机缸盖表面字符(型号、铸件号、状态标识等信息)识别存在以下难点:①缸盖是黑铁铸造,表面涂有防锈油,使用光源打光拍摄时,缸盖表面发生漫反射导致拍摄效果很差。②缸盖表面起伏较大,而字符区域较小,使用2D相机拍摄时字符特征不明显。③因铸造时精度要求不高,缸盖表面字符凸起不明显,相邻字符间互相粘连,造成字符识别难度大。为此,提出基于线结构光的发动机缸盖表面字符识别方法。设计并搭建一套基于结构光扫描的系统用于识别缸盖表面字符。该系统利用激光三角测量法计算得到缸盖表面字符的深度图像,并采用YOLOv4识别出缸盖字符的信息,通过实验验证所提出的方法对缸盖表面字符识别的准确率。
1 基本原理与识别算法
激光结构光具有能量集中、单色性好、不易受外界环境光影响等优点,为此引入线结构光解决以上汽车发动机缸盖表面字符识别难的问题。基于线结构光的3D相机成像稳定,可准确获取物体图像,尤其针对缸盖表面字符凸起高度较小的情况,可直接提取顶部像素数据进行处理。
1.1 线结构光测量系统数学模型
线结构光测量系统的工作原理以激光三角法为基础[11],如图1所示,通过激光器投射结构光到被测物体表面形成一条结构光条纹,使用CCD摄像机采集结构光条纹的形变图像计算被测物的坐标和轮廓信息。
图1 结构光测量系统模型
结构光投影在被测物体表面π1上,点P为线结构光上一点。设P在相机坐标系下坐标为(xc,yc,zc),其在相机成像平面π2上映射的像点为P′,P′在像素坐标系下的坐标为(u,v)。根据相机的成像模型,有式(1)成立:
(1)
其中,s>0为投影尺度因子;dx、dy分别为图像x和y方向单位像素的物理尺寸(mm/pixel);(u0,v0)为图像坐标系原点在像素坐标系下的坐标;f为相机焦距。因点P在线结构光平面方程Axc+Byc+Czc+D=0上,其中{A,B,C,D}为结构光平面参数,可得式(2)。
(2)
联立式(1)与式(2)可得到式(3),至此即可求解被测物体上的任意点P在相机坐标系下的坐标。
(3)
1.2 图像预处理
图像预处理是图像信息提取的关键步骤,通过图像预处理可以将图像中需要的信息突显出来,缩短信息提取时间,提高检测结果的准确性和有效性。拍摄图像时由于光照条件、拍摄角度、平台抖动等不可避免的因素为图像带来了模糊和噪声,所得图像不能直接使用,需对图片进行滤波降噪等一系列预处理。
针对相机拍摄得到的图像进行预处理包括以下几个步骤:
(1)图像降噪:受外界环境影响,相机拍照所得图像噪点较多,使用高斯滤波降噪,得到低噪点灰度图。
(2)图像增强:由于相机导出的原图是深度图,字符特征不明显,需要对图像进行增强处理来突显字符特征,在这里使用直方图均衡化处理。
(3)倾斜校正:相机拍摄的图片难免有所倾斜,这对字符的识别率会有影响,使用Hough变换转正字符方向。
1.3 YOLOv4算法
YOLO(You Only Look Once)[12]基于一个单独的端到端网络,创造性地将候选区和对象识别这两个阶段合二为一,如图2所示,输入一次图像就能识别出对象以及它们的位置。YOLOv4具有更大的网络输入分辨率,更深的网络层,更多的参数,更快的检测速度,更高的检测精度。YOLOv4可以适用于单GPU训练,它通过单一网络即可进行预测[13]。为此,采用YOLO实现对目标的自动检测,能够快速定位识别。
图2 YOLO目标检测网络结构
2 字符识别流程
字符识别具体流程为:
(1)轮廓仪实时采集图像:使六轴机器人带着3D激光轮廓仪以v(mm/s)的速度水平移动,拍摄得到字符区域的深度图像。
(2)图像预处理:轮廓仪得到的原图是16位单通道深度图。使用OpenCV计算机视觉库和C++对图像进行降噪、图像增强和倾斜校正处理。
(3)YOLOv4识别:在windows10 64位,CPU型号为Intel(R) Core(TM) i9-9900K,显卡型号为NVDIA Geforce RTX 2060,内存16GB的计算机上进行神经网络训练(学习率置为0.01,训练次数为100 000次)。
(4)输出识别结果:输出识别的字符和置信度。
3 实验结果与分析
搭建的基于线结构光的发动机缸盖表面字符识别系统如图3所示,将3D激光轮廓仪(ATC5-2040CS-23-63)安装在六轴机器人末端,使轮廓仪距离字符高度保持在90 mm~110 mm的区间内。通过机器人移动带动轮廓仪扫描缸盖字符区域,得到深度图像。识别对象为广西某公司的发动机缸盖,如图4所示。
图3 基于线结构光的发动机缸盖表面字符识别系统
图4 发动机缸盖图
3D激光轮廓仪80 mm/s的速度水平移动,拍摄的深度图原图如图5a所示,图像处理后的字符特征较明显,如图5b所示。
(a)深度图原图 (b)图像处理后图5 图像处理前后对比
图5b中图像字符灰度值与背景灰度值非常接近,难以对其进行前景背景分离,且字符间还出现粘连情况,采用传统图像处理算法较难识别图中的字符。采用YOLOv4实现对字符识别,其能自动定位字符区域并进行分割,输出所识别字符和置信度判断。
将图像预处理后制作成数据集,训练集样本数为92个。YOLOv4训练完成后,用25个测试样本验证字符的识别正确率和检测时间,见表1。图6是部分图像的字符识别结果,对于图6c、图6d、图6e铸造字符轮廓不明显也能准确识别。系统对缸盖表面字符的平均识别正确率达到99.677 9%,每张图片的检测时间大约50 ms。其中,识别字母的平均正确率为99.573 1%,识别数字的平均正确率为99.815 5%。表明所设计的系统能够获得较好的识别效果。如果有更多的训练样本,识别正确率还会进一步提升。
(a) KJ10 (b) J56
(c) BK21 (d) K06C
(e) BL24图6 部分图像字符识别结果
表1 部分字符识别结果统计
续表
4 结论
针对目前发动机缸盖表面字符识别的难题,搭建设计一套线结构光发动机缸盖表面字符识别系统。从实际工程应用出发,结合激光三角测量法和深度卷积神经网络YOLOv4算法对发动机缸盖表面字符进行识别。实验结果表明,该方案能够快速识别出缸盖表面的型号、铸件号、状态标识等信息,平均识别准确率达到99.6%以上。将其应用于生产线不同型号缸盖的识别和分拣,可提高分拣效率,提高整个生产、检测流程的效率。该方法可适用于字符表面反光较强、字符前景背景色对比度不明显、字符之间相互粘连、字符外形轮廓不清晰等情况的字符识别,具有十分重要的应用价值和实际意义。