昆山市拓恒机电有限公司

冯先生   137-7635-6532

E-mail: kstuoheng@126.com

江苏省昆山市经济技术开发区

金沙江南路16号3号厂房

新闻动态
电子台秤数显仪表自动识别系统研制
[2020-03-22]

1 引言

目前,电子台秤的检测主要依赖人工搬运砝码,存在安全隐患大及工作效率低等问题,考虑这些问题研制了电子台秤自动检测装置。

在此自动检测装置中电子台秤的数显仪表读数的实时读取是该装置至关重要的环节。数显仪表实时正确读取保证控制系统能够实时的接收到电子台案秤的检测数据。在自动检测的过程中快速实时的处理电子台秤数显仪表读数,提高生产效率和减少人为因素造成的误判,利用摄像技术、图像处理技术、图像识别技术以及通信技术,来实现仪器仪表读数的实时自动识别。

目前我国仍没有专门针对电子台秤数显仪表示数识别,尤其针对运动状态的电子台秤数显仪表示数识别。

2 硬件平台搭建

电子台秤自动检测装置如图1所示,总控制系统控制驱动电机驱动大理石平台载着平台秤和相机镜头组成一起沿着轨道运动,配合砝码做电子台秤自动检测工作。鉴于做偏载时砝码会遮挡镜头,故本研究采用两个相机镜头装在平台两侧,对电子台秤数显仪表读数进行采集。

图1 电子台秤自动检测装置

图1 电子台秤自动检测装置   下载原图


3 图像处理算法设计

两个CCD采集的图像,图像中含有红、绿、蓝三通道颜色,通过数据线传输至图像处理平台,图像处理平台首先进行灰度化处理,将彩色图像转换为256级的灰度图像,然后,对该灰度图像进行滤波去噪、图像增强,经过二值化处理后,图像边缘形态显现,然后通过形态学膨胀处理,让数字断裂处连续,提高可读性,通过边框检测检测出字符边框,然后通过几何变换和图像校正,图像经过拉伸校正后,进行图像分割将数码管显示字符抠出来,最后,利用训练过的深度学习框架对字符进行识别。专家评判系统根据抠出的字符完整度来评判选取哪个相机图像处理结果,如图2所示。

图2 图像处理流程图

图2 图像处理流程图   下载原图


4 软件平台搭建

本研究采用OpenCV+MFC进行软件设计。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以根据自己需要对库文件进行修改,可以运行在Linux、Windows、Android和Mac OS操作系统上。它由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,可以实现图像处理和计算机视觉方面的很多通用算法。

人机界面采用MFC微软基础类库是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,在保证程序运行的情况下较大的减少了应用程序开发人员的工作量。

OpenCV和MFC均是在visual studio环境下,使用C和C++语言编写的,在用于工业工作中,稳定性和效率均有较好的表现。

5 项目实例

平台通过USB接口向集成在Logitech摄像头内部的控制模块发送图像采集指令,镜头输出的PAL制或NTSC制模拟视频信号通过内部集成的A/D转换芯片转换成数字视频信号,把数字视频信号存储到静态存储器(SRAM)中,每完成一帧图像的采集便实时通过以太网将图像信号传输给PC机。

图3 数显仪表

图3 数显仪表   下载原图


图4 二值化处理

图4 二值化处理   下载原图


首先对目标图像进行二值化处理然后再细化,在保持原图形的结构性信息的提前下,将图形细化为一个象素宽度,这样即可保证Hough变换所求得倾角的精确性,同时减少了Hough变换所需要处理的象素点,减少Hough变换计算量,从而减少了计算时间。

利用Hough变换精确定位出图3中每个LED数码管中心位置处的坐标。由于图像采集过程中摄像机与被采集目标存在对位偏差,采集到的图像有一小的倾角,在精确定位之前,我们需要通过Hough变换计算出此倾角,然后对图4旋转矫正,得到我们所需要的、无倾斜的图像,然后通过字符分割,精确定位出每个LED数码管中心位置处的坐标,对这些坐标做一变换,则可得到原图4中每个LED数码管中心位置处的坐标。

5.1 利用霍夫变换来确定倾角

Hough变换是一种对噪声干扰不敏感,能够在图像中检测出形状曲线的技术,因此广泛应用于目标检测领域。对于直线上的一个点(xi,yi)来说,它在变换空间(u,v)中应该满足方程式:

 


对于任意方向和任意位置直线的检测,为了避免垂直直线的斜率无限大,往往采用极坐标作为变换空间,其极坐标方程可以写成:

 


在这里我们对图3进Hough变换,寻找出其中一条最长的白色直线,进而求得倾斜角度。具体的算法如下:构造一个二维数组作为计数器,第一维是角度,第二维是距离。先计算出可能出现的最大距离为squar(width×width+height×height),用来确定数组第二维的大小(其中width为图片的宽度,height为图片的高度)。对于每一个白色点(象素为1的点),角度θ的变化范围从-90°到+90°,按上方程求出对应的距离S,相应的数组元素[S][θ]加1所有元素都算完后,找到数组元素中最大的一个,就是要找的最长的那条直线,该直线的对应的θ即是我们所要求的倾角。

5.2 图像旋转

通过Hough变换检测到目标偏斜后,需要根据检测到的偏斜角度对图像进行校正,即对图像进行旋转操作。如图5所示,点(x0,y0)经过旋转θ角后变为(x1,y1)。

 


图5 校正后图像

图5 校正后图像   下载原图


5.3 字符分割

考虑到本文中待分割的对象相对简单,每两字符之间均有明显的间距,本文选用直接的分割法,即把投影分割法。投影法分割的基本思想是把二维图像的像素分布简化为X轴和Y轴的两个一维函数,通过对两个函数的分析,找到我们想要的结果。在二值图像,我们用“1”来表示目标字符,用“0”来表示背景,那么如果某一行中或者某一列都是背景,则该行或者该列的投影为O。在理想的情况下,这个波谷的值应该为零,并且每个字符之间都应该有相应的波谷,根据这个重要特征,我们可以轻松的找到字符间隙,把图像中的字符块分离出来。

 


分别对其进行了图像灰度化、图像增强、二值化以及字符分割及定位处理。

5.4 字符识别

本文采用深度学习TensorFlow框架在分割好的字符集上进行训练。在训练网络前首先要准备好数据训练集,将分割好的大小为28×28大小的字符“0-9”以及“.”分成11类别作为网络的数据训练集对深度学习框架进行训练,另外,取部分分割好的大小为28*28大小的字符“0-9”以及“.”数据集对训练好的模型进行测试、验证。

6 总结

本文方法通过对相机采集的仪表图像做细化处理,得到仅有一个象素宽度的边框线,利用Hough变换检测出边框的倾斜角,对倾斜的待识别目标区域做了旋转校正。紧接着,通过投影法分割出了每个字符,对各字符的LED数码管中心位置进行定位计算坐标值。最后通过训练好的深度学习模型检测得出图像中所显示的数值。


返回
点击这里给我发消息