基于 OpenCV的数码管字符识别

2021-08-20 17:22叶娜
机电工程技术 2021年11期
关键词:图像处理

摘要:为实现摄像机采集的电梯主板数码管字符图像的识别,研究一种针对数码管字符图像自动识别的方法。数码管图像经过预处理,包括图像灰度化、图像降噪、图像二值化等,并对图像进行字符定位和分割,最后采用穿线识别法对字符进行识别,可有效提高电梯故障识别率。实验结果表明,穿线识别法对数码管字符识别正确率高、效率高、实时性好。

关键词:图像处理;字符识别;穿线识别法;OpenCV

中图分类号:TP391.41文献标志码:A文章编号:1009-9492(2021)11-0196-03

Character Recognition of Digital Tube Based on OpenCV

Ye Na

(Heyuan Technician Institute, Heyuan, Guangdong 517000, China)

Abstract: In order to realize the recognition of digital tube character image of elevator mainboard collected by camera, a method for automaticrecognition of digital tube character image was studied. The digital tube image was preprocessed, including image graying, image noisereduction, image binarization, etc., and the character positioning and segmentation of the image were carried out. Finally, the characterrecognition method was used to identify the characters, which could effectively improve the recognition rate of elevator fault. The experimentalresults show that the threading recognition method has high accuracy, high efficiency and good real-time performance.

Key words: image processing; character recognition; threading recognition; OpenCV

0 引言

数码管是一种显示器件,可以通过对数码管不同的管脚进行驱动使其发光,从而显示数码管能够显示的字符。由于数码管使用简单,价格便宜,在一些设备上得到了广泛的应用[1]。电梯主板上的数码管,其中一个作用就是用来显示电梯发生故障时的故障代码。由于电梯属于特种设备,国家对特种设备的安全有严格的要求,为了获取故障信息,直接改造电梯的主控系统并不可行,而且不同品牌的电梯有自己的保护系统,接口不对外开放,为此,本文设计采用摄像头获取数码管图像信息的方法来获取电梯的故障信息。利用数字图像处理技术和识别技术,可实现数码管显示字符的自动识别[2-4],可以提高故障检测率,同时也能确保故障检测的准确率,提高电梯运行安全系数。本文利用计算机视觉库函数 OpenCV和 C++编程语言[5],通过单片机仿真板模拟显示电梯主板上的七段数码管显示数字的配合使用,实现对数码管字符的处理与识别,其流程主要包括图像的预处理、字符定位与分割、字符识别3个过程。

1 圖像预处理

通过摄像头采集的图像一般输出为彩色图像,并且带有噪声等干扰信息,如果对采集的图像不经过预处理,直接进行 RGB 三通道的图像信息进行处理,由于图像的畸变、噪声、色彩差异等因素的影响,对字符识别的准确率有极大的影响,容易出现识别准确率低,数据误报率高等问题。因此,在进行数码管字符识别之前,需要对图像进行预处理,消除畸变和噪声,降低识别的难度,提高识别的准确率。图像预处理流程如图1所示。

1.1 图像采集

摄像机是采集图像的关键,其成像好坏直接影响到后续字符识别的结果。本设计中,选择的是工业摄像头,像素为300万,曝光时间可以控制,同时匹配定焦镜头,带有 USB接口可以用来与计算机连接,可以利用 OpenCV直接读取摄像头的图像信息。

1.2 图像灰度化

将彩色图像转换成灰度图像的过程称之为图像灰度化[6]。由于摄像头采集的彩色图像均使用 RGB 色彩空间进行描述。在 RGB 色彩空间中,像素的颜色由 R 、G、B 三个分量共同决定,每个分量的取值范围为0~255,这样一个像素点可以有(256×256×256)种颜色变化范围[7],而灰度图像中,一个像素点的变化范围为256种,处理的数据量大大减小,所以要进行图像灰度化。图像灰度化的处理方法主要有3种,分别是最大值法、平均值法和加权平均值法。本设计采用加权平均值法实现图像灰度转换,即利用下式进行处理:

对彩色图像的每一个像素应用式(1) 进行转换,即可将彩色图像转换成灰度图像。如图2~3所示。

图3灰度图 Figure.3 Grayscale image

1.3 图像校正

由于相机和镜头存在几何畸变,为后续的处理带来了一定的困难,所以,在进行图像处理之前,需要对图像进行畸变校正,也就是图像校正。图像校正过程主要处理的是由相机和镜头本身所带来的图像的几何畸变。本文通过张正友平面标定算法,完成相机和镜头的标定,得到了相机的内参数矩阵和畸变参数。通过对图像进行逆变换,可以得到图像的畸变校正结果。

1.4 图像降噪

将噪声图像中的各种噪声去除或减弱的过程称之为图像降噪。由于摄像头的感光器件 CMOS或 CCD的制造工艺的限制,图像采集过程中,会受到噪声的干扰,使得对原图的处理与分析造成影响,所以必须对图像进行降噪处理。常用的图像降噪方法有均值滤波、中值滤波等算法[8]。

实验证明,采用中值滤波处理有更好的处理效果,能够有效地对图像进行降噪,并保持图像边缘足够清晰,不引入过多的模糊效果。因此本文选择使用中值滤波算法对经过几何校正之后的图像进行降噪处理。其图像降噪处理结果如图4~5所示。

1.5 图像二值化

图像主要是由前景(图案)和背景组成。图像二值化处理就是将前景从背景中分割出来。经过二值化后,图像由原来的由256个值表示的灰度图转成只有0和255两个亮度值的黑白图像。分割图像前景和背景的的具体方法是要设定一个阈值,超过设定阈值的像素为前景,低于设定阈值的像素为背景。选择不同的阈值,将会得到不同二值化效果的图像,因此,图像二值化关键的一步是选择一个合适的阈值。常用的选择灰度阈值的方法有固定阈值法、最大类间方差法(大津算法,又称 OT- SU算法)、实验法、直方图法、最小误差法等。

通过多次实验发现,使用 OTSU 法进行二值化时,能够根据图像的亮度自适应的选择阈值,将目标从背景区域中分离出来[9-10]。因此本文采用 OTSU法进行图像二值化。二值化处理前后图像对比如图6~7所示。

2 字符识别

2.1 字符定位

摄像头拍摄时,可能将非字符区域一起进行成像,而非字符区域并不是本文研究的重点,本文研究的是数码管字符在图像上的成像结果并将其识别为显示的字符。所以,为了消除非字符区域的影响,需要首先对字符进行定位。

字符定位分为粗定位和精确定位,首先通过粗定位确定字符的大概位置,然后通过精确定位得出字符所在的确切位置,为下一步字符分割做好准备。利用人工分割、投影法分别对字符图像进行粗定位和精确定位后,得到的图像如图8所示,大框是粗定位区域,小框为精确定位区域。

2.2 字符分割与归一化

图像经过字符精确定位之后,还是一张带有多个字符的图像,需要对字符进行分割才能进行识别。字符精确定位后,可以得到字符区域的水平方向起始位置和截止位置、垂直方向起始位置和截止位置。将精确定位后的字符区域进行 Y方向投影,可以得到一条 Y方向字符有效像素数目的曲线[11]。该曲线上,有效像素大于0的位置表示该位置是字符笔画覆盖的区域,有效像素等于0的位置表示该位置不处于字符笔画上。因此,可以用有效像素的上升沿作为字符开始的标志,以下降沿作为字符结束的标志。

因此,可以得到字符的分割图如图9所示。图中小线框表示字符分割的结果。从图中可以看出,每一个小线框内,有且仅有一个字符。可以将分割结果进行归一化处理,得到可以进行识别的字符。

由于摄像头与数码管位置间的差别,以及数码管尺寸的不同,会造成数码管在成像时尺寸大小不一致,为了消除模板和待识别字符位置和尺寸上的偏差,需要把字符显示图像移动、旋转、缩放或者变换到规定的位置和尺寸上,这一过程称为图像归一化处理[12-13]。归一化处理不会改变图像的对比度,可以保护图像不受几何变换的影响,能够找出图像中的那些不变量,从而可知这些图像原来就是一样的或者是一个系列的。本文中,对字符图像做的归一化操作是指将分割之后不同大小的字符图像,通过线性变换缩放到指定的尺寸,为后续字符识别提供基础。

2.3 字符识别方法

图像字符识别的方法有多种。穿线法字符识别算法是一种基于识别字符的结构信息的算法[14]。算法的原理是根據七段数码管的特征来进行识别的,对于七段式数码管的字符具有较好的识别结果。

七段数码管显示的笔段如图10所示,数码管显示的每个字符最多由7个笔段构成,每个笔段只有横和竖两类,包括3横4竖,而且相同的笔段尺寸一致。

基于七段式数码管的以上特点,本文采用穿线识别算法。该算法步骤[15-16]如下:

(1) 将数码管显示的字符按垂直方向平均分成3个节;

(2) 对每一节,取水平中心的一列,按照自上而下的方向对这一节进行扫描,由于经过二值化之后笔画区域值为255,所以,如果扫描过程中遇到255的值,可以认为存在笔段,将之记为“1”,否则记为“0”;

(3) 将字符上下平分成2小块,再将每一个小块左右平分,于是一个字符被平分成4小块;

(4)对每一小块,取垂直中心的一行按照自左向右的扫描,如果扫描过程遇到255的值,则认为这一小块存在笔段,将对应的笔段记为“1”,否则记为“0”

(5)通过以上4步,可以确定3横4竖共7个笔段的状态编码,再通过查找编码与字符的对照表,即可判断当前数码管显示的字符内容。

其中,第 5 步需要使用七段式数码管字符编码模版。在实际使用时,为了便于理解,一般只使用七段式数码管显示 0~9 共 10 个数字和部分大写字母。表 1 所示为部分字符在七段式数码管中显示时,数码管的字符编码。

3 实验结果分析

本设计以 VS2016+OpenCV3.4 作为开发环境,单片机仿真板数码管显示字符作为图像来源,对数码管显示的字符进行识别。本实验选取了840张图像作为实验样本,其识别率和识别速度如表2所示。

4 结束语

本文通过利用C++编程语言和OpenCV实现对七段数码管式电梯主板故障信息字符的自动识别,具有较高的识别正确率和识别速度,同时识别的实时性较好。将这一方法应用于电梯故障码图像采集识别系统中,能大大提高电梯的安全运行系数,具有较好的市场前景。

参考文献:

[1] 郭爽.数码管数字仪表自动识别方法的研究[J].通信技术,2012,45(8):91-93.

[2] 何瑶,陈湘萍.基于OpenCV的人脸检测系统设计[J].新型工业化,2018,8(6):83-89.

[3] 王华键,王一智,董芸含,等.基于OpenCV的变电站监控视频智能分析[J]. 新型工业化,2016(8) :31-40.

[4] 李前汭,于力革.基于ARM Cortex-A9字符识别系统设计[J].计算机系统应用,2018(9):256-261.

[5] 毛星云.OpenCV3编程入门[M]. 北京:电子工业出版社, 2015.

[6] 韦星,马智愚.一种基于OpenCV的彩色图像滤波算法设计[J].电子科学技术,2017(4):91-95.

[7] 宋森森,贾振红,杨杰.结合Ostu阈值法的最小生成树图像分割算法[J].计算机工程与应用,2019,55(9):178-183.

[8] 王曉鹏.基于OpenCV的图像处理滤波算法研究[J].现代工业经济和信息化,2018,8(6):61-62.

[9] 卓磊,周律,杨丽红.基于穿线法的计算器数字识别[J].软件工程,2018,21(12):1-3.

[10] Gashti M Z. A modified model based on flower pollination algo?rithm and K-Nearest neighbor for diagnosing diseases[J]. Inter?national Islamic University Malaysia Engineering Journal,2018,19(1).

[11] 曾科,高潮,扶新,等. 多参数数显仪表的自动识别方法研究[J].中国测试, 2018, 44(12):122-128.

[12] 王小丽. 基于 OPENCV 的身份证图像信息提取研究与实现[D].苏州:苏州大学,2016.

[13] 杨伟.车载采集城市街景图像的超分辨率重建[D].成都:西华大学,2017.

[14] 卓磊,周律,杨丽红.基于穿线法的计算器数字识别[J].软件工程,2018,21(12):1-3.

[15] 刘丹,穆林丽,余晓锷. 一种七段数码管式医用仪表的自动识别方法[J]. 科学技术与工程, 2010,10(16):4037-4039.

[16] 魏雄. 基于OpenCV的车牌识别系统中车牌定位的实现[J].电子世界, 2019(3):113-115.

作者简介:叶娜(1981-),女,广东河源人,大学本科,高级讲师,研究领域为电气自动控制技术。

(编辑:王智圣)

猜你喜欢
图像处理
基于图像处理技术的红火蚁检测识别
基于线性源法与图像处理的土壤饱和导水率快速测量方法
“课程思政”视域下职业学校《图像处理》课程教学改革实践
构建《Photoshop图像处理》课程思政实践教学路径的探索
基于图像处理与卷积神经网络的零件识别
基于新一代信息技术的Photoshop图像处理课程开发与建设