基于ESP-32的水表摄像直读系统

2021-06-30 08:43左瑞娟武永华张涛
电子测试 2021年5期
关键词:水表轮廓摄像头

左瑞娟,武永华,张涛

(1.福建师范大学 数学与信息学院,福建福州,350117;2.福建江夏学院 电子信息科学学院,福建福州,350108)

0 前言

近几年在中国电表的智能计量、数据采集、远程控制在大部分地区已经普遍实现了,而水表的自动化、智能化发展的进度却比较迟缓。传统的水表一般都是机械水表,机械水表不会被磁场干扰,方便安装,维修简单,受环境干扰的影响小,因此大部分地区都普遍使用传统的水表。随着时代发展,越来越信息化、智能化,传统的水表已经慢慢逐渐被替代了。传统水表信息记录、统计起来相对比较麻烦[1]。传统水表记录员要挨家挨户,走街串巷的去查看各家各户的水表,工作量十分大,效率低[2],进度慢,也可能在一定程度上打扰了居民的休息。传统的查水表工作,有可能被一些不法分子利用,作为虚假身份,进行一些违法行为。因此随着社会发展,自动抄表系统[3]开始出现,自动抄表系统的出现提高了抄表工作的效率,使得管理更加的方便,数据更加确,解决了人工抄表的一些弊端。因此,抄表自动化技术应用前景非常广阔[4][5]

本设计通过ESP-32[6]驱动OV2640[7]摄像头采集水表表盘图像后,水表图片进行压缩并且传输到数据采集器。数据采集器通过RS485收集各数据采集设备采集的数据。数据采集器再将数据传输到PC端进行基于OpenCV[8]图像处理和数字识别,识别出图像中的水表数字,并且将识别出来的水表数字存放到数据库当中。PC端软件的流程如图1所示。此系统可以省去很大一部分人工劳动力,降低了水表采集工作在一定程度上对居民生活的打扰。

图1 PC端软件流程图

1 系统硬件设计

本设计通过ESP-32开发板驱动OV2640摄像头,采集水表图像。然后将采集到的水表图像进行JPEG压缩,通过串口RX、TX传输到PC端,同时通过LED CTR管脚控制补光灯。本设计的硬件电路图,如图2所示。

图2 系统硬件电路图

ESP-32是安信可摄像头模组里面最新发布的小尺寸的开发板。ESP-32拥有达到最低6mA的深度睡眠电流,是物联网应用的理想解决方案,内部拥有体积超小的802.11b/g/n Wi-Fi + BT/BLE SoC模块。

OV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。通过SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。

2 水表表盘图像的预处理

本设计采用OpenCV对图像进行预处理,表盘的原始图片如图3所示。由于摄像头采集到的图片都会含有噪声,通过使用OpenCV中的cv.GaussianBlur()函数,对采集的图片进行高斯模糊去噪,如图4所示。使用OpenCv中的cv.cvColor()函数,来对进行高斯模糊去噪后的图像进行灰度化处理,减小原始图像的数据量,如图5所示。本设计采用全局阈值的方法通过使用OpenCv中的cv.threshold()函数将转化为灰度的图像进行二值化处理,从而方便进行轮廓的识别,如图6所示。图像的膨胀和腐蚀,就是对图像中的白色部分进行处理。通过图像的膨胀,可以扩大二值化图像中白色的部分,通过图像的腐蚀,可以缩减二值化图像中白色的部分,本设计通过使用OpenCv中的cv.dilate()函数和cv.erode()函数将转化为二值化的图像进行膨胀或腐蚀的处理,如图7所示。图像的轮廓提取是对二值化图像的操作,是基于图像边缘提取的基础寻找对象轮廓的方法。本设计通过使用OpenCv中的cv.findContours()函数对转化为二值化的图像进行轮廓的提取,如图8所示。

图3 原始图像

图4 图像高斯模糊

图5 图像灰化

图6 图像二值图

图7 膨胀或腐蚀处理后的图像图

图8 轮廓提取的图像

3 水表表盘数字识别

表盘数字的识别有模板匹配、结构特征、神经模糊等方法。本设计采用模板匹配的方法来实现表盘数字识别。启动ESP32开发板,打开摄像头,获取水表表盘图片,然后通过RS485接口传输到PC端。PC端进行高斯模糊去除噪声,转为灰度图像,将图像进行二值化,通过腐蚀操作后,导入模板图片,进行模板匹配,识别出图中全字的水表数字。然后切割剩下的半字区域,将半字图片,切割成上半部分和下半部分,分别于模板图片进行匹配,找出相似度最高的模板图片作为半字识别的结果。然后将识别出来的水表数字按照在图片中的位置,按顺序排列调整好,将数据放入数据库中并显示。

3.1 水表数字全字的识别

表盘全字通过模板匹配来识别。选择全字效果较好的表盘图片,通过高斯模糊去噪、图像灰度化、图像二值化、腐蚀膨胀、轮廓识别,分割出相同尺寸大小0-9十个数字的模板。然后从0-9个数字模板中分别对导入进来的待识别的水表图片,进行模板匹配。在模板匹配中,可通过差值平方和匹配法CV_TM_SQDIFF、相关匹配法CV_TM_CCORR以及标准相关匹配法CV_TM_CCORR_NORMED等方法来寻找相似度。本设计采用标准相关匹配法,通过cv.matchTemplate(methond=CV_TM_CCORR_NORMED)和cv.minMaxLoc()函数在待识别的水表图片中找出0-9个数字模板中,找出相似度较高的几个全字模板。将匹配到的这些数字模板图片如图9所示,水表全字识别如图10所示。

图9 匹配的数字模板图片

图10 全字识别结果的图片

3.2 水表数字半字的识别

因为水表表盘上的数字可能有些位数会出现半字的情况,即由两个数字的上半部分和下半部分组成。本设计中对半字识别采取的方法是:先用全字识别后识别出一些区域,剩下的区域就是半字区域,如图11所示。将半字区域分割出来,如图12所示,将半字图片通过再一步的轮廓识别后,分割为下半部分和上半部分,如图13所示。这些半字图像的组合形式有以下几种(0,1),(1,2),(2,3),(3,4), (4,5),(5,6),(6,7),(7,8),(8,9),(9,0)。将分割出来半字区域的上半部分和下半部分,分别再与全字的模板图片进行逐一的模板匹配。然后通过在0penCV当中的cv.match Template(methond=CV_TM_CCORR_NORMED)和cv.minMaxLoc()函数找出与之相似度最高的两个数字模板。对比两个匹配到的数字模板所对应的数字,将数值较高的数字作为识别结果。

图11 半字区域图片

图12 半字区域二值化

图13 半字区域分割

4 结语

本设计中通过ESP-32开发板,驱动OV2640摄像头,将采集到的图片数据传输到PC端,PC端通过OpenCV对表盘图像进行预处理,然后进行全字和半字的识别,将识别的结果提取出来并保存到数据库,为后续智慧水务的应用提供基础数据。

猜你喜欢
水表轮廓摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
OPENCV轮廓识别研究与实践
水表普查与水表挂接子系统建设
基于实时轮廓误差估算的数控系统轮廓控制
水表检定装置不确定度分析计算的相关思考
防冻水表
高速公路主动发光轮廓标应用方案设计探讨
水表在检定周期内超差原因与解决措施
奔驰360°摄像头系统介绍