基于机器视觉的呼出气体酒精含量检测仪自动检定装置
2024-01-04张湖波邹细勇邵建文赵存彬
张湖波,邹细勇,邵建文,赵存彬,骆 蕾
(1.中国计量大学光学与电子科技学院,浙江 杭州 310018;2.浙江省计量科学研究院,浙江 杭州 310018)
0 引 言
呼出气体酒精含量检测仪(以下简称酒检仪)是交通执法部门巡查驾驶员酒驾、醉驾时的检测工具。目前,酒检仪的计量检定人员往往是手动记录数据并填入原始记录表,经过三级审查审批程序后出具检定证书[1],耗费大量的时间和精力。为了实现模拟人体呼出酒精气体的要求,设计恒温恒流的配气装置,气源选择来自国家一级标准物质的空气中乙醇气体(以下简称乙醇钢瓶气)。依据文献[2],每检定一台酒检仪,后续检定需要用酒检仪测量52 个数据作为检定点,首次检定需要超过100 个检定点,人工读数工作量大,这不符合计量技术和智慧检测的发展趋势。
为了实现工业自动化和智能化,采用机器视觉技术代替人眼视觉对图像进行识别处理已经应用在工业电子装配缺陷检测、汽车制造、食品监控、交通、纺织加工等多个领域[3],在计量行业主要应用于尺寸检测[4]、水表检定[5]、指针式仪表检定[6]、仪表数字字符识别[7]等领域。文献[8]基于彩色图像的颜色判定、字符分割、字符粗细判定、字符手写体或打印体判定的方法,实现对复杂背景下的票据字符类型的识别。文献[9]基于LabVIEW 设计了一套适用于多表位数字温湿度计的自动校准系统,通过Niblack 算法进行动态阈值分割,通过NI Vision Assistant 视觉助手中OCR 字符训练功能训练后进行字符识别。文献[10]通过图像传感器采集存储钢板板坯喷标字符图像,采用开源平台实现了板坯字符在线自动识别。文献[11]针对出租车计价器七段码类别的图像数字,提出采用SIFT 特征匹配算法识别计价器型号,为了减小视角形变,对匹配出来的计价器图像进行图像矫正,再进行跳表数字定位与识别,提高了识别准确率。酒检仪品牌型号众多,屏幕存在反光、尺寸大小不一等问题,为了实现对酒检仪示值字符的识别,设计了稳定的机器视觉系统,对多型号酒检仪酒检仪示值字符进行在线实时识别,对数据进行保存和处理,自动生成报表。经人工核查比对,在实现自动化检定工作的同时提高了工作效率。
1 自动检定装置总体设计
1.1 自动检定原理分析
呼出气体酒精含量检测仪自动检定装置由配气装置和机器视觉系统及设计的上位机软件组成。配气装置的进气口使用国家一级标准物质的空气中乙醇气体作为输入气体,向酒检仪通入气体时,酒检仪进气管对准配气装置的出气口。开始检定时,检定装置产生恒温恒流的乙醇气体,通入被检酒检仪,同时相机采集酒检仪的示值图像。由软件内设计的识别算法识别出结果,进行数据保存和处理。按照检定规程的要求,完成所有检定项目后,自动生成相关的报告并保存。
1.2 实现指标
检定装置实现指标包括:
1)通过上位机软件控制配气装置,实现对各气体管路的选通控制,实现对气体管路内气体的恒温恒流控制,实现流量在(6~36)L/min 连续可调和温度稳定在(34±0.5)℃的要求;
2)采用机器视觉技术设计识别算法,在软件内选择酒检仪的型号,应用相应型号酒检仪的识别程序实现对酒检仪示值的准确识别;
3)软件具有用户登录和历史数据查询功能,能够进行查询、删除和预览记录的操作,能够对配气装置和工业相机进行实时控制,能够自动生成原始记录表和检定证书。
1.3 总体结构
如图1 所示,系统的硬件组成主要包括配气装置、机器视觉系统、计算机和被检酒检仪等部分。计算机通过USB 转RS 485 线连接现有检定装置,通过Modbus RTU 协议收发指令。计算机控制现有检定装置,将恒温恒流气体输入至被检酒检仪中,被检酒检仪显示示值。计算机通过GigE 网口连接工业相机,通过机器视觉系统采集图像,识别被检酒检仪的示值,传输至计算机中。
1.4 配气装置
配气装置主要包括:单片机、人机界面、六路钢瓶气和对应的减压阀、一路压缩空气钢瓶气和对应的减压阀、六路电磁阀、六路气动阀、质量流量控制器、两级温度控制器、三处温度传感器和开关电源等。
如图2 所示,开始工作时,打开外接的一路压缩空气钢瓶气,气体输入至六路电磁阀处,在软件中选择某路气体管路后,开启对应的电磁阀,压缩气体进入对应的气体管路,相应的气动阀达到压力范围,自动打开对应输入气体管路的开关,使得该路的输入气体进入气体管路。输入气体经过质量流量控制器,流量被控制为15 L/min。经过两级温度控制模块的控制,出气口输出温度为(34±0.5)℃的气体,温度由PT100 温度传感器进行测量,温度传感器位于两级温度控制器和出气口这三处。在人机界面可以对各项参数进行手动修改,使单片机实现控制功能。
配气装置实物图如图3 所示,装置左侧为外接钢瓶气的进气口(六路)和压缩空气钢瓶气的进气口,右侧为出气口,装置正面的右上侧为人机界面,右下侧为电源开关。
图3 配气装置实物图
1.5 机器视觉系统
机器视觉系统精度高、速度快,系统包括工业相机、镜头、光源和支架等,支架用于固定工业相机和光源的位置。
不同品牌型号酒检仪需要不同大小的拍摄范围,屏幕尺寸较小的谷雨S80 型号的屏幕尺寸为3.5 cm×3 cm,屏幕尺寸较大的大帝730Li 型号的屏幕尺寸为11.1 cm×6.3 cm。根据实际测量,相机与酒检仪的垂直距离约为20 cm 时,适配各型号酒检仪。
工业相机选择分辨率为1 280×960 像素,最高帧率为45 f/s 的映美精工业相机,型号为23GM021。相机通过GigE 网口向上位机软件传输图像,由软件程序识别结果。选取焦距为6 mm,最大光圈为F16 的镜头。根据实际需要,为了环境稳定,选择条形LED 光源,将两个条形光源平行安装于相机的两侧,均匀照射被拍摄的目标区域,如图4 所示。
图4 机器视觉系统
1.6 软件设计
上位机软件使用C#语言开发,该软件可以控制配气装置中的下位机和机器视觉系统中的工业相机,下位机即配气装置中的单片机。上位机软件通过Modbus 串口通信协议与下位机建立通信,对功能的各个地址位赋值进行控制。利用MySQL 数据库开发数据库,在上位机软件中设计用户登录功能,并设计后续的检定信息填写功能。设计串口设置模块用于连接下位机,在实时数据模块中设计对温度、流量、阀门等的控制和读取。在Halcon 中开发针对酒检仪示值的识别方法,然后嵌入上位机软件中进行实时识别和数据处理。通过编写Spire组件的程序,处理识别得到的数据,并生成至模板中,自动得到原始记录表和检定报告证书。图5为软件总体结构。
图5 软件总体结构
上位机软件界面如图6 所示,用户注册登录界面为起始界面,登录成功后进入检定界面。检定界面上的主要功能分为检定设置和报告生成,主要模块分为串口设置、实时数据、气路设置、检定项目、图像等功能模块。
图6 上位机软件界面
对被检酒检仪进行单次检测时,软件控制的实现流程如图7 所示。登录软件后,填写检定信息,然后连接串口,装置开始预热,预热完成后,选择手动模式或自动模式,然后分别实现手动和自动选择气路,经由图像识别得到示值结果,然后对数据进行保存和处理。
图7 软件实现流程
手动模式由人工判断是否结束,人工选择下一次需要的气体管路和通气时间。自动模式通过软件自动进行检定项目的执行,如在示值误差的检定中,软件自动选择通和断的时间,一次结束后自动进行下一次工作。完成所有需要的检定项目后,最后点击生成报告。
2 图像识别
2.1 图像识别算法结构
对于酒检仪的示值图像识别主要分为两个部分[12]:示值字符定位、示值字符识别。进行图像处理首先要去除非目标区域,从而得到需要的感兴趣(Region of Interest, ROI)区域。酒检仪示值字符的定位是通过定位提取酒检仪屏幕区域,然后在这个ROI 区域中提取出字符的。图像识别算法流程如图8 所示。
图8 图像识别算法流程
2.2 示值字符定位
2.2.1 图像采集
为了节省资源,使用黑白工业相机省去了彩色图像的灰度化过程,因此采集的图像为灰度图像。图9a)为采集的酒检仪示值原图像(以谷雨S80 为例),图像中酒检仪以外的区域为背景。
图9 提取屏幕区域
2.2.2 边缘检测
图像边缘是图像中灰度值导数较大的区域边界,也就是灰度值变化剧烈的区域,在图像中观察到酒检仪的屏幕具有明显的边缘特征。边缘检测是一种图像滤波算法,可以分割出边缘区域。典型的算子包括Roberts、Sobel、Prewitt、Kirsch 和Canny 算子等[13]。酒检仪有多种品牌型号,但通过图像边缘检测均可提取出屏幕所在区域。
Canny 边缘算子具有较好的边缘检测性能,被视为最成功的边缘检测算法之一[14]。原理是先用高斯滤波器平滑图像;然后采用非极值抑制技术处理得到需要的边缘图像;调用edges_sub_pix 算子得到图像中的边缘,如图9b)所示得到多个边缘;再调用select_contours_xld算子根据特征选择酒检仪屏幕区域的边缘;最后再调用gen_region_contour_xld 算子填充边缘内的区域,如图9c)所示。
2.2.3 倾斜校正
由于人眼的视觉误差,酒检仪的摆放会有不同程度的倾斜,采集到的图像一般会存在小于5°的倾斜,但最大一般不超过30°。图10a)即为倾斜摆放的酒检仪,为了便于后续的识别,屏幕区域及其中的字符区域需处于水平位置。由于图像为平面图像,所以考虑进行图像的旋转变换。图像的旋转是指图像以某一点(一般是图像的中心)为原点旋转一定的角度,图像上所有像素或灰度值都会随之旋转。图像旋转的原理是将输入图像绕笛卡尔坐标系逆时针旋转一个角度θ,旋转校正主要是依靠检测区域旋转的角度来生成一个旋转矩阵[15],旋转变换后的图像坐标可以表示为:
图10 图像倾斜校正
为了确定旋转角,需要寻找图像中直线的倾斜角,或区域的倾斜角,采用orientation_region 算子计算ROI区域的方向,得到倾斜角的大小,再利用area_center 算子找到区域中心作为原点。调用vector_angle_to_rigid算子进行旋转,然后用affine_trans_image 算子得到旋转后的屏幕区域图像。
2.2.4 字符提取
在屏幕区域提取出示值字符,首先要进行阈值分割,将灰度值较低的区域筛选出来,实际筛选灰度范围为0~25。筛选出的图像通过连通域操作,打断不同的像素区域,形成多个连通域。观察图像,为了避免字符断裂的情况出现,利用形态学的闭运算处理图像。闭运算是形态学中的一种,可以弥合较窄的间断和细长的沟壑[16],使得提取的示值字符更加完整。接着对字符区域进行特征筛选,实际筛选的参数范围为高度在20~35 像素之间,宽度在70~135 像素之间。提取出示值字符后,进行字符分割,采用partition_dynamic 算子以距离的长度和百分比对字符进行动态分割。
在屏幕区域的定位提取过程中,可以采取和示值字符提取相似的方法,先对全局进行阈值分割,再利用连通域操作分割区域,利用区域提取区域。由于图像不可避免会有少量的灰度不均衡存在,阈值分割对测试的图像分割效果不太理想。利用Canny 边缘检测的方式解决了这一问题,该定位方式极大地削弱了光线的影响,提高了系统的鲁棒性。准备数据集时,需要二值化单字符,将图11 中提取出的字符进行二值化处理,得到白底黑字的图像。
图11 示值字符定位提取
2.3 示值字符识别
多层感知器(Multi Layer Perceptron, MLP)也被称为人工神经网络,属于前馈人工神经网络[17]。在多层感知器中,层与层之间是全连接的。如图12 所示,最左侧是输入层,接收网络外部信息;中间是隐含层;最右侧是输出层,输出网络的结果。神经网络的训练过程如图13 所示。
图12 神经网络结构图
图13 神经网络训练过程
Halcon 中有许多预训练字体,可以对提取成功的字符进行识别,但受到字体的影响较大,识别正确率无法保障。在拍摄的1 500 张图像中,将1 000 张划为训练集,其余500 张作为测试集。将1 000 张训练图像中分割出的二值化单字符图像分别存放在对应数字的文件夹中,在Halcon 中训练并得到了分类器[18]。利用MLP 分类器对500 张测试图像进行识别实验,观察识别准确率、识别速度等,与软件自带的预训练字体作比较。图像识别实验的测试原理如图14 所示,成功识别的图像如图15 所示,示值字符被成功分割,打上方框,标注正确的结果。
图14 图像识别的测试原理
图15 示值字符识别成功
3 实验结果及分析
3.1 图像识别实验
由于不同品牌、型号的酒检仪的屏幕尺寸、示值所在区域和字体等均不相同,需各自设计算法进行识别,然后由人工选择型号。以两种型号为例,用第2 节中相同的处理方法设计对应算法,测试的结果如表1 所示。
表1 图像识别实验结果
实验结果表明,MLP 分类器对谷雨S80 识别正确499 张,每张图像的平均耗时为197.2 ms,识别正确率达到99.5%。软件内置的预训练字体对谷雨S80 识别正确487 台,平均耗时185.4 ms,识别正确率为97.4%。对于大帝730Li,MLP 分类器识别正确500 台,平均耗时150.6 ms,预训练字体对大帝730Li 识别正确468 张,识别正确率仅为93.6%,所以,采用MLP 分类器进行图像分类与识别。对其他三种型号的测试过程中,也得到了和大帝730Li 接近的识别准确率和时间。五种品牌型号的酒检仪对测试图片的识别准确率达到了99.5%以上,平均耗时200 ms 以下。
3.2 自动检定测试
呼气中酒精浓度可以按照式(2)换算为实际状态质量浓度。
式中:C为呼气中酒精浓度,单位为mg/L;P为检定时大气压,单位为kPa;M为酒精分子的摩尔质量,取46.07 g/mol;R为气体常数,取8.314 5 L·kPa/(mol·K);T为酒精气体温度,取307.15 K;x为呼气中酒精浓度,单位为μmol/mol。
在检定中,C可以简化为:
呼气中酒精质量浓度(单位为mg/L)的数值是血液中酒精质量浓度(单位为mg/100 mL)数值的220 倍。因此,只需要读取大气压和钢瓶上标示的呼气中酒精浓度,即可根据式(3)得到出口气体的实际状态质量浓度。测量的大气压为101.3 kPa,呼气中酒精浓度为钢瓶气上标示的示数,血液中酒精质量浓度如表2 所示。
表2 浓度转换结果
以送检的五种型号各选取一台进行测试,以后续检定中的示值误差、重复性和记忆残留效应这三项检定项目,对自动检定装置进行测试,测试结果数据如表3 所示。
表3 酒检仪检定的测试结果
结合人工复核,可保证自动检定工作正确运行。由于大部分业务为后续检定,以30 台酒检仪的后续检定为例,对酒检仪进行所有呼气测试的时间为操作时间,从开始测试酒检仪到审核完成并出具检定证书为全过程时间。漂移的检定需要间隔4 h,对全过程时间有一定影响。手动检定30 台酒检仪一般需要横跨2 个工作日,平均操作时间共为9 h,平均全过程时间为3.5 个工作日。而使用本文装置的自动检定方式,平均操作时间为3 h,平均全过程时间为1.5 个工作日即可完成工作,大大提升了工作效率。对于首次检定中的呼气阻力检定项目,本装置采用外置差压计进行检定。
4 结 语
本文设计了基于机器视觉技术的呼出气体酒精含量检测仪自动检定装置,可选手动或自动检定模式,实现酒检仪的自动化检定。该自动检定装置解决了呼出气体酒精含量检测仪手动检定过程中气体获取方式繁琐、装置预热时间过长、操作精度低等问题,缩短了获得气体的时长。该装置结构实用且符合自动化要求,能够满足多种型号酒检仪的检定工作。实验结果表明,该装置的上位机软件可以实现五种型号酒检仪示值的识别,对测试图片的识别正确率达到了99.5%,单台平均识别耗时200 ms 以内。将检定平均全过程时间从3.5 个工作日压缩为1.5 个工作日,平均操作时间从9 h 降为3 h,为酒检仪的自动化检定提供了可行性方案,在未来的研究中,可以对酒检仪的型号进行自动识别。