基于 Opencv的数字仪表识别系统设计

/ 4

基于 Opencv的数字仪表识别系统设计

封居强,伍龙 , 杨伟虎,刘长帅

淮南师范学院机械与电气工程学院,安徽 淮南, 232038

摘 要:本文针对图像识别技术在工业自动化检测领域的广泛应用,提出一种基于Opencv的远程数字仪表识别系统。该系统以Rspberry 3B+为主控板,以智能车为快速移动载体,搭载的USB摄像头为采集模块。对不同设备的数字仪表进行图像采集,预处理后采用穿线法快速识别数字。实验结果表明识别率均高达98.6%,满足各种数码管仪表的识别需求。

关键词:Rspberry 3B+;数字识别;Opencv;远程控制

中图分类号:TN99 文献标识码:A 文章编号:

作者简介:封居强(1985-),男(汉),江苏徐州人,工程师,硕士研究生,主要研究方向为信号检测与处理。

基金项目:2018年淮南师范学院校级项目(2018xj32);2019年淮南师范学院课外创新实践项目(2019XS073)。

引言

随着科技的发展,我国已逐渐进入了工业信息化以及科技化的时代,工业自动化是实现工业现代化的重要基础,是发展的必要趋势[1],其涵盖了自动化控制、计算机网络通信、仪表等领域。数字仪表在各个领域得到了广泛应用,但很多数字仪表并没有提供与微处理器的通讯接口[2],仍然采用人工记录,而在一些恶劣环境下人工抄表存在很大的安全隐患,甚至存在人工无法查看的现象,比如一些狭窄的空间里。以上现象会导致记录时出错,记录工作效率低。然而机器视觉技术的应用可完全改变这种情况,并且可长时间在特殊环境下工作,提高工作效率。

目前国内外科研人员就机器视觉在数字仪表识别上的应用做了深入研究。林剑萍[3]等提出基于Opencv和LSSVM的数字仪表自动识别,能够准确地识别数字仪表;陈刚[1]等使用特征检测算法实现对各种数字仪表的检测;王舒憬[4]等针对数字万用表进行识别,基于Opencv有效地降低了误识率;李素萍[5]等基于图像处理的基本识别方法进行数字仪表识别,可以减轻生成强度;杨志勇[6]等将树莓派应用到远程过程控制中,实现智能拍照,为智能远程控制提供了参考。本文结合以上技术,针对工业自动化特殊场合,设计了基于Opencv的数字仪表识别系统。该系统能够在众多特殊场合,实现移动监控分析并实时传输结果,对于工业自动化特殊场合的生产具有重要意义[7-9]

系统方案设计

本设计研究的主要内容包括:智能车的设计、数字仪表的识别、移动智能端设计等模块。采用摄像头实现仪表数字的采集,基于Opencv对图片做一系列预处理,使用穿线法识别数字;移动终端实现远程控制,使得搭载有摄像头的智能车能够移动式精准的采集数字仪表图像。总体方案设计图如图1所示。

5e1d5324a5670_html_b167870cbb74666.gif

图1 总体方案设计图

硬件系统与上位机设计

本设计以Rspberry 3b+为主控制板,使用L298控制电机转动。本系统需要达到硬件控制目标如下:

(1)移动终端可以控制小车的前进、后退、左转、右转;

(2)移动终端要实现对摄像头云台进行左右、上下移动调节摄像头角度的控制;

(3)控制智能车的同时智能车要同时具有一定的避障功能;

(4)摄像头采集仪表图片,使用Opencv对图片进行二值化、去噪、数字定位等预处理,将处理后的图像采用穿线法实现数字的识别。

根据硬件控制目标要求设计系统流程图如图2所示。

5e1d5324a5670_html_daaed6ee31a7ceb.gif

图2 硬件系统设计流程图

数字仪表识别

数字仪表识别流程

数字仪表识别流程主要分为图片预处理和数字识别两大部分。摄像头采集到的图像经过二值化、膨胀等预处理,将图像中数字进行分割,采用穿线法对分割出的数字进行识别。数字仪表识别流程图如图3所示。

5e1d5324a5670_html_d1a4aafb482cd86c.gif

图3 数字仪表识别流程图

图像预处理

图像预处理是为了消除图片中一些无用的信息,突出图片中有用的信息,有利于计算机的分析。预处理的好坏直接影响对数字的识别效果。

图像定位

在实际应用场景中,拍摄的仪表会有很多多余的背景,需要限制拍摄区域,只有待识别内容在区域内才进行拍摄。后期就可以直接提取边界内区域的信息进行预处理与识别。

灰度化处理

灰度化是为了将图片从RGB格式转为单通道。灰度图片的像素值在0~255范围内,可以有效减少原始数据量,从而缩短后期图像的处理时间。原图与灰度化后图像对比如图4所示。

5e1d5324a5670_html_253bfc450a7c1f35.png

图4 原图与灰度化对比

2)图像二值化

经过灰度化处理后图像的像素点值任为0~255,包含较多无用信息,对于仪表数字识别问题过于复杂。综合考虑,需对图像进行二值化处理。合理的选择阈值能够有效提取有用信息,将识别的目标与背景区分开。二值化后如图5所示。

5e1d5324a5670_html_3adfb33238ea1a0c.png5e1d5324a5670_html_adb42c62d940586.png

图5 二值化后图像 图6 数字膨胀后图片

膨胀处理

由于大部分数字仪表采用7段式数码管,数字不连续、被割裂。在识别过程中容易导致无法识别或误差率较高等现象。因此在数字分割之前,需要仪表数字的笔画连接起来。根据图像处理技术可知,膨胀能够有效的解决这种现象。所谓的膨胀处理就是对图像中高亮部分进行膨胀,效果图拥有比原图更大的数字区域。但是又不能膨胀过度,否则就会使相邻的数字连起来,同样也是无法分割。数字膨胀后效果图如图6所示。

轮廓提取

根据图6可知,膨胀处理后的独立数字实现了连接。为了准确的找到每个数字的位置,需对图像进行轮廓提取。将提取信息都存储起来,同时拟合出矩形轮廓。

然而位置信息存储的顺序不是按照实际坐标的位置存储的,需要重新进行排列。重新排列的方法很多种,本文根据轮廓所在列信息(x)进行重排的。轮廓提取后如图7所示。

5e1d5324a5670_html_a418651a2b28ed35.png5e1d5324a5670_html_698d3b87d9b87f56.png

图7 轮廓提取 图8 数字分割效果图

图像滤波

实际应用中,采集到的图像不可避免的存在噪声,因此在得到所有的轮廓之后还需要进行滤波处理,除去干扰的噪声。消除噪的方法较多,比如非线性滤波、中值滤波和双边滤波。考虑中值滤波具有运算简单、速度快、除噪效果好等优点,本文采用中值滤波。中值滤波是把图像或序列中心点位置的值用该域的中值替代,在去除滤波噪声的同时还能保留图片的细节部分。中值滤波公式为:

5e1d5324a5670_html_35775f4f19be5432.gif (1)

其中5e1d5324a5670_html_2836b5f9de8dacd6.gif 为输入的图像,5e1d5324a5670_html_738fa8b2b22f6217.gif 为经过中值滤波处理后的图像。

数字分割

经过中值滤波后的图像作为被分割的对象,分割方法主要包括相似性分割和非连续性分割。非连续性分割基于不连续原理检出物体边缘的方法、是基于点相关的分割技术。本文采用非连续性分割将提取轮廓后的图像按照边界进行分割。分割数字效果图如图8所示。

穿线法数字识别

如图9为穿线法识别数字的示意图,该方法使用3根线将一个7段数码管进行分区。1号线将数码管分为左右两个部分,2、3号线将数码管分上、中、下3个部分。数字0-9与数字1、2、3号线的交点不同可以对其进行简单地判断识别。如数字6与1号线有6个交点,与2号线有2个交点,与3号线有4个交点。

5e1d5324a5670_html_a0a76f6c8c07eb52.png

图9数字穿线示意图

根据上述原理,可以以此推出0-9与1、2、3号线交点数如表1所示

表1 数字与各线段的交点数

号线

0

1

2

3

4

5

6

7

8

9

.

1

4

4

6

6

2

6

6

2

6

6

2

2

4

2

2

2

4

2

2

2

4

4

0

3

4

2

2

2

2

2

4

2

4

2

0

根据表1可将数字0-9进行分组。数字与1号线的交点不同可分为3组:与1号线有2个交点的为一组,为数字4、7和小数点;有4个交点的分为一组,有数字0和1;有6个交点的分为一组,有数字2、3、5、6、8、9。同理与2号线也可以分为3组:1、2、3、5、6、7为一组;0、4、8、9为一组;剩下的小数点为一组。与3号线相交的也分为3组:1、2、3、4、5、7、9为一组;0、6、8为一组;小数点为一组。

其中有三个数字2、3、5与三条线的交点数相同:都与1号线有6个交点,与2号线有2个交点,与3号线有2个交点。此时就需要以交点的位置来判别数字。如数字2和数字3,数字2与3号线的交点的x值小于数字3与3号线交点的x值,可以用这种方法来识别这些交点个数一样的数字。根据上述原理,数字3和数字5可以通过与2号线交点的x值大小进行识别;而数字2和数字5通过与3号线交点的x值大小识别。如图10所示交点位置示意图。

5e1d5324a5670_html_697cf44b13e18b65.png

图10 数字2、3、5与线2、3交点示意图

Fig 12 Diagram of Nodal Points of Numbers 2, 3, 5 and Lines 2 and 3

系统测试

根据上述流程,由智能车搭载摄像头,移动采集数字仪表,在Rspberry 3B+内使用Opencv对采集到的数字仪表进行识别,达到对数字仪表的识别效果。

工业生产过程中使用的数字仪表的类型各式各样,从背景和显示的颜色上区分,主要分为红色数字仪表和绿色数字仪表。为进一步验证本文设计的实用性,采用移动变换的方式模拟工业生产现场,分别对两种数码管显示仪表进行识别,实验结果如表2和表3所示。

表2红色数字仪表实验结果

数字

0

1

2

3

4

5

6

7

8

9

实验次数

100

100

100

100

100

100

100

100

100

100

成功次数

100

98

97

100

97

100

99

100

97

100

识别率

100%

98%

97%

100%

97%

100%

99%

100%

97%

100%

表3绿色数字仪表实验结果

数字

0

1

2

3

4

5

6

7

8

9

实验次数

100

100

100

100

100

100

100

100

100

100

成功次数

100

97

100

98

100

98

100

96

100

99

识别率

100%

97%

100%

98%

100%

98%

100%

96%

98%

99%

通过表2和表3可知,改设计能够有效的识别两种不同仪表的数字。红色数字仪表的正确识别率平均为98.8%,绿色数字仪表的正确识别率平均为98.6%。

总结

本设计基于Opencv方法,通过一系列的预处理,采用穿线法实现工业仪表数字识别。该方法思路较为清晰易懂,设计的手机终端控制系统便于现场人员操作。并对现有的两类仪表进行了模拟识别实验,实验结果较为准确,能够精准的识别仪表数字。能够为快速移动式识别仪表数字的研究提供理论基础,同时为工业生产的智能化发展提供技术参考。

参考文献

[1]陈刚,胡子峰,邓超.基于特征检测的数字仪表数码快速识别算法[J].中国测试,2019,45(4):146-150.

[2]刘雄豪.基于机器视觉的仪表数字识别智能监控系统的设计与实现[D].电子科技大学,2014.

[3] 林剑萍,廖一鹏.基于OpenCV和LSSVM的数字仪表读数自动识别[J].微型机与应用,2017,36(2):37-40.

[4] 王舒憬,杜皎洁.基于OPENCV的数字万用表数字识别方法[J].自动化与仪器仪表,2014,1:62-63.

[5]李素萍.基于图像处理的数字仪表识别技术[J].应用·交流,2013.6:84-90.

[6]杨志勇,黄文峰,刘灿.基于树莓派的远程控制智能拍照小车[J].现代电子技术,2019,42(8):168-174.

[7] 胡志超,孔锦明,魏豪特.基于树莓派的移动监控小车设计[J].科技广场,2019,193:79-80

[8] 陈锐,杨苏等.基于树莓派的环境监控小车设计与实现[J].电子测量技术,2019,48(8):123-126

[9] 韩宇,张磊等.基于嵌入式树莓派和OpenCV的运动检测与跟踪系统[J].电视技术,2017,41(2):6-10.