基于机器视觉的数码管显示单元缺陷检测系统

2023-02-08 06:06王红英樊维涛郭俊丽
关键词:测温仪数码管字符

崔 颖,王红英,樊维涛,郭俊丽

(1.西安文理学院 机械与材料工程学院,西安 710065;2.西安市和其光电科技股份有限公司,西安710077)

LED数码管以LED发光二极管作为发光单元,颜色有红、黄、蓝、绿、白等色彩,由于其具备功耗小,无热量,耐冲击,长寿命等优点,被非常普遍地应用于仪表设备的显示单元,配合各类控制芯片使用,显示数据信息或者其他状态信息.现有各型号温控系统使用荧光光纤温度传感器测量温度,再将测得的温度实时显示在数码管上.激光测温仪采用8段LED数码管显示其测出的温度数字,并显示仪器自检信息字符,显示的内容包括0~9和其他一些特殊字符.产品在生产完毕后必须进行缺陷测试,一般持续48~72小时,测试的主要内容包括:LED数码管能否正确显示仪器发出的数字、LED数码管在显示过程中是否有显示不全的现象.

目前的检测过程,主要靠人工检测.检测人员面对多台机器,肉眼观察LED数码管的显示是否正确.由此带来的问题是检测人员的工作强度大,无法实现长时持续检测,且当LED数码管显示出现故障时,无法有效地检出偶发的错误显示,无法保证仪器质量可靠,给出厂产品的质量带来隐患.

本套数码管显示单元缺陷检测系统是基于机器视觉[1]和OCR[2]技术相结合而实现的.主要包含三个模块:机器视觉模块主要负责图像的采集、滤波、图像处理及字符区域的定位,主要使用的技术包括:特征波长滤波,图像二值法[3-4]处理、“闭”运算、腐蚀运算[5]处理.OCR识别模块主要负责字符区域的分割,识别,主要使用的技术包括:特征参数分割字符区域,通过训练生成识别字符集,字符识别.控制模块主要负责机器视觉模块、OCR识别模块及待检测的仪器之间的协同工作,并负责通信的可靠,主要使用的技术包括:CRC-16校验算法[6]保证通信可靠,事件驱动数据总线保证系统的响应速度.

1 LED数码管显示单元缺陷检测系统的设计

本系统设计基于机器视觉技术,通过工业摄像机获取仪器显示的数字图像,采用OCR识别技术将显示的数字识别出来,并与命令字对照,来确定LED数码管显示的数字是否正确.

每台测温仪的外形如图1所示.测温仪为长320 mm×宽175 mm,在测温仪表面共有8组温度显示的LED数码管显示单元.每组有四位数字符号,其中前三位为测试数字的整数位,后一位是测试数据的小数位,第三位的数字后面有小数点显示.每个数字为高16 mm×宽8 mm,显示颜色为橙红色.

图1 待测仪表的LED数码管显示区域

系统设计每次至少能同时完成9台测温仪的缺陷测试,测试全程无人值守,系统能够自动完成测试过程,并记录测试过程中出现的仪器错误.

LED数码管显示单元缺陷检测系统的结构如图2所示.工业摄像机选择大恒光电的水星MER-1070-10GC工业相机,相机分辨率为1 000万像素,通过100 M以太网与PC相连;镜头选择10倍光学镜头;缺陷检测系统的软件部分采用LabVIEW 2016开发;软件与测温仪通过USB转RS485总线网关相连.

图2 系统组成示意图

2 机器视觉识别和OCR技术原理

机器视觉识别系统利用高分辨率工业摄像机获取检测图像并转化为数字信号,再通过计算机硬件、软件技术对图像数据信号进行处理,从而获取所需要的各种目标图像特征值,并由此实现产品零件分类识别、缺陷检测和视觉测量的功能.

OCR,即Optical Character Recognition,光学字符识别.是指通过电子设备(一般工业应用常用数码摄像机)检查介质上打印或显示的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机可识别的文字的过程.在OCR的实现过程中,如何除错或利用辅助信息提高识别正确率,是OCR最重要的指标.衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度,系统的稳定性等.

3 LED数码管显示单元缺陷检测系统实现技术路线

图3为LED数码管显示单元缺陷检测系统实现的技术路线.系统主要包含两部分内容,第一部分是保证数码管能够正确响应命令字,能够根据命令字正确地显示字符.在实现这个功能的过程中,设定已知的待显示字符数组,使用CRC校验算法生成命令字,再通过一根RS485总线,分时将各台测温仪的命令字发送给仪器,待所有仪器都接收到命令字后,启动以太网相机获取所有仪器的实时显示图像,OCR识别后,将识别的字符与已知字符进行逐位比较,从而验证数码管能否正确响应命令字.

图3 数码管显示单元缺陷检测系统实现技术路线图

在OCR识别过程中,需要使用红色滤光片消除绿色LED指示灯和仪器状态灯的干扰,采用二值形态学中的“闭”运算消除LED数码管在显示时出现的断码现象,通过增加训练样本的方法消除小数点的影响,采用尺寸参数和布局参数提高多台仪器同时检测时的OCR识别率.

第二部分是完成缺陷检测过程中检出数码管出现的显示缺陷.该过程主要通过定时循环和错误日志来实现.

4 LED数码管显示单元缺陷检测系统实现过程

4.1 基于机器视觉的OCR功能模块设计

图4为检测系统的工作流程图,具体步骤如下:

图4 系统工作流程图

(1)检测软件通过网关向测温仪发送需要显示的数字,和每台测温仪地址一并代入测温仪的CRC校验算法获取每台测温仪的特征字,然后与测温仪地址、功能码等字段组合成命令字;由于每台测温仪的地址不同,因此每台测温仪的控制字也不同.

(2)测温仪根据收到的命令字来显示数字.

该模块主要用于检测测温仪能否根据命令字的要求,准确地显示需要显示的字符.在测试过程中,为了方便检测,命令字的设计是要求测温仪循环显示000.0、111.1~999.9的字符,既方便人工检测,也简化检测过程.

(3)高清摄像机采集测温仪的实时图像.

(4)检测程序从摄像机中获取采集图像信息,通过视觉算法OCR模块识别图像中的数字.

(5)将通过OCR识别出的数字与发送的命令字中的数字进行逐位比较,用比较的结果判定LED数码管的工作状态;若所有数字都匹配,则认为数码管工作正常.

(6)如果出现不匹配情况,记录不匹配的数字的位置和图像信息,方便后续查看.

(7)在完成0~9的一个检测循环后,检测程序进入等待定时;定时时间到,检测程序启动下一个检测循环.

按照每次检测9台测温仪测算,完成一次000.0~999.9的循环检测,时间<30秒.

4.2 CRC校验算法

为了保证通讯数据的可靠,网关与测温仪之间采用RS485接口连接,数据通信采用Modbus通信协议,采用CRC-16校验算法对传输数据进行编码,以保证通信的可靠.

4.2.1 CRC校验码的生成

CRC校验码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定.其原理是将任意一个由二进制位串组成的代码转化为一个系数仅为“0”和“1”取值的多项式.例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式x5+x3+x2+x+1对应的代码为101111.

在采用Modbus协议传输时,其通讯信息发送形式如表1所示.

表1 命令字结构

CRC校验是前面几段数据内容的校验值,为一个16位数据,发送时,低8位在前,高8位在后.

4.2.2 命令字结构

检测系统的命令字具体结构如下:

0x01 0x05 0x00 0x01 0x00 0x55 xx xx//显示55点亮的数码管显示

第一字节(01)测温仪地址;

第二字节(05)设置功能码;

第三、四字节(00 01)设置字节长度;

第五、六字节(00 ff/00/AA/55)需要显示的数值;

第七、八字节(XX XX)CRC 16 校验值,低字节在前,高字节在后.

4.2.3 命令字生成方法

命令字生成采用查表法,生成方法如图5所示.采用C语言编写[7],提高运算效率.

图5 命令字生成方法

CRC校验算法采用C语言编写,编译生成动态链接库CRC.dll文件,然后通过LabVIEW中的调用动态链接库的方法,实现CRC.dll的调用.调用函数为:“Call Library Function”[8].

4.3 软件与测温仪之间的通信

软件与测温仪之间采用RS485通信,通信协议为Modbus协议.RS485的通信参数为:

通信速率:4 800 bps,数据位:8位,停止位:1位,校验:无校验.其工作过程如图6所示.

图6 RS485通信流程

测温仪的核心CPU采用STM32单片机,通信反应有一定的时间限制,所以在每个设备发送完命令字后,需要等待150 ms后才能给下一个设备发送命令字.如果等待时间小于该值,后续的设备无法收到命令字,测温仪也不能显示命令字符.

由于系统采用USB转RS485网关实现协议转换,在项目实施工程中就会出现一个问题,当该网关分别安装到设计计算机和生产计算机后,其RS485的端口号是不确定的,而操作人员不具备在系统中寻找端口号的能力.因此在系统中增加了一个寻找通信端口的功能,允许运行人员逐一进行测试,找出正确的端口号.

在LabVIEW中通过“VISA Find Resource Function”函数[9]来寻找系统的端口资源,其返回值为一个端口列表,运行人员可以通过下拉窗口,按照端口号选择端口进行测试.

4.4 高清摄像机与PC之间的通信

工业摄像机选择大恒光电的水星MER-1070-10GC工业相机,相机分辨率为1 000万像素,通过100 M以太网与PC相连.当采用高清摄像机时,以太网的数据流量大,为了保证摄像机的图像能够流畅地显示在显示器上,PC上的以太网卡需要采用“巨帧模式”[10].在PC的设备管理器中,打开网卡的属性,在高级界面中,将“Jumbo Packet”的值设置为“9014 bytes”.重新启动后,PC即可接收到流畅的高清摄像机画面.

4.5 采用红色滤光镜片消除测温仪指示灯的影响

如图7(a)所示,为摄像机采集的测温仪显示图片信息,其中除了用于显示温度信息的橙红色LED数码管外,还有16盏采用绿色LED二极管显示的通道状态灯,3盏采用绿色LED二极管显示的测温仪状态灯和1盏采用红色LED二极管显示的测温仪状态灯.

图7 采用红色滤光片去除绿色LED数码管的影响

视觉OCR识别时,首先要把彩色图像通过红色RGB通道颜色阈值转化为二值图像,如图7(b)所示.在图片中可以清楚地看到,红色部分的数字被完整且清楚地抽取出来,但是绿色状态灯色彩中的红色通道也被抽取出来,给OCR识别带来了大量干扰信息.尤其当有多台测温仪同时进行检测时,这种干扰信息直接影响系统正常工作.为了消除绿色LED二极管的影响,选择了红色滤光镜头来实现.

绿色发光二极管的波长为555 nm~570 nm,而红色LED数码管的波长在600 nm~700 nm之间,在测温仪和工业摄像机之间增加一块625 nm~665 nm的红光高透滤光镜,红色滤光片的带通参数如图8所示,这样即可过滤掉进入摄像机的绿光,实现只采集单纯红光的目标.

图8 红色滤光片的带通参数

经过滤光后,摄像机采集的图像如图7(c)所示,此时,只有右下角的红色LED二极管测温仪状态灯出现在图像中,其他绿色LED二极管的通道状态灯、仪器状态灯全部被消除了.

4.6 LED数码管中断码的处理

采用LED数码管显示数字时,由于其结构的原因,各个笔画之间是不相连的.

尤其如图9中的三个字符,由于没有中间横码的联接,断码现象尤其突出.在进行OCR识别时,会识别为多个字符,造成识别误差,对此情况采用二值形态学中的“闭”运算来解决.所谓“闭”运算就是对图像首先进行“膨胀”算法,再进行“腐蚀”算法的过程.

图9 数码管中的断码

采用“膨胀”算法时,使用49点矩形膨胀的方法,使得字符区域的范围变大,每个字符都长宽各膨胀7个像素,使得LED数码管上的所有笔画相连,形成一个完整的字符,经过“膨胀”算法处理后的字符如图10所示.

图10 经过膨胀算法处理后的数字

经过膨胀后,所有的字符都变得厚重且清晰,但是对于“8”这样的字符,如图11所示,膨胀后中心的空白区域也变小,当仪器表面与摄像机不完全垂直时,中心的空白区域无法识别,发生识别错误的几率很高,因此还要进行一次“腐蚀”算法操作.

图11 经过膨胀算法处理后的数字“8”

采用“腐蚀”算法时,使用25点矩形膨胀的方法,使得字符区域的范围变小,每个字符都长宽各缩小5个像素,使得膨胀后的笔画变清晰,如图12所示.与图9中的字符相比较,每个字符的长宽各扩大了2个像素,整体字符与原大小相差不大,但是已经完全将断码处补充完整,具备进行OCR设别的条件.

图12 经过腐蚀算法处理后的数字

4.7 小数点的处理

在字符的第三位后有一个小数点,用于分割显示数值的整数部分和小数部分,如图9所示.在进行断码处理时,该小数点已经与第三位数字彻底融合为一个字符,如图13所示.

图13 由于小数点引起的识别错误

此时,经过“闭”运算处理后的图像在进行OCR识别时,造成识别错误的绝大部分原因是由于第三位字符造成的.

当出现此类识别错误后,将该错误图像以样本的方式提交给OCR训练样本集[11].由于被识别的对象是稳定不变的,经过不断地累积,可以持续提高第三位字符的识别率.

4.8 大场景中字符的识别

当系统同时检测多台仪器时,需要增加摄像机的视野,而且由于仪器摆放的角度问题,在摄像机获取到的画面中字符的形状会变形,且字符的显示会变小.

如图14(a)所示,此时画面中的字符数量增加,且每个字符的像素变小,而右下角的仪器状态指示灯也成为干扰因素,阻碍字符的正确识别,因此需要增加更多的识别参数来保证识别的正确率.在此处,增加字符的尺寸参数和布局参数来提高识别率,降低干扰.增加的尺寸参数有:

图14 三台测温仪在摄像机中的图像

字符宽度区间:规定每个字符的最小宽度和最大宽度,min 9~max 80 pixs;

字符高度区间:规定每个字符的最小高度和最大高度,min 33~max 100 pixs;

垂直方向二个字符之间的最大距离:5 pixs.

通过尺寸参数的限制,如图14(b)所示,消除了仪器状态灯对系统识别的干扰,限制了字符的尺寸范围,保证了每个字符得以被完整、准确识别.

5 实际使用效果

在实际测试时,布置3台测温仪,呈品字形分布,每台有32个LED数码管显示字符.摄像机与测温仪的距离为2 m,镜头与测温仪的屏幕基本垂直,镜头的中心与中间一台仪器的中心线基本保持水平.所有算法开启,尺寸参数按照字符宽度区间:min 9~max 80 pixs;字符高度区间:min 33~max 100 pixs;垂直方向二个字符之间的最大距离:5 pixs.系统采用无人值守的方式运行,共连续运行12小时,误码率为万分之2.37.

6 结语

通过基于机器视觉的数码管显示单元缺陷检测系统的应用,极大地降低了测试人员的工作强度,提高了测试的准确性和全面性.系统可以识别所有类型的LED显示数字,对于LED数码管在仪器上的排列不敏感,可以同时完成多行多列LED数码管的检测与识别,整个检测过程对被检设备无附加零配件,检测过程可以实现无人值守,使得产品的检验模式由抽检改为全检,保证了产品的质量和运行可靠性,降低了企业的运行成本.

猜你喜欢
测温仪数码管字符
微课教学设计之“数码管动态显示”
字符代表几
一种USB接口字符液晶控制器设计
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
HBM电子称与西门子S7-200系列PLC自由口通讯
消失的殖民村庄和神秘字符
红外测温仪检定误差原因剖析及对策
基于SPCE061A单片机的红外测温仪设计