APP下载

基于传统图像处理算法和YOLOv4的水位识别方法研究

2022-08-02周伍光邹应全

计算机测量与控制 2022年7期
关键词:水尺摄像头灰度

马 睿,周伍光,邹应全

(1.西南交通大学 信息科技与技术学院,成都 611756;2.都江堰水利发展中心 东风渠管理处,成都 611756)

0 引言

水是生命之源,水利对社会和经济发展有着重要意义,水情监控也是国家水利部门关注的重点问题,水位监测在洪涝灾害预警、减少经济损失等方面有着重要意义。目前的水位测量技术分为接触式测量方式及非接触式测量方式。

常用的接触式测量方式有浮子式水位计、压力式水位计和电容式水位计等。接触式水位测量传感器长期与水流接触,往往损坏速度较快,安装和维护过程也较为繁琐,建设运维成本高且自动化程度低,因此逐渐被非接触式测量方装置取代。

超声波水位计、雷达水位计和光纤式水位计是目前常用的非接触测量装置。3种水位计通过测量发出和反射的脉冲时间来计算水位,但该类设备价格昂贵,因此在国内的使用并不广泛[1]。

近几十年来,数字图像处理技术的快速发展,基于图像处理的技术已经广泛应用在交通、医学、航天航空的各个方面,同时,随着机器学习、计算机视觉等技术的兴起和快速发展,通过神经网络对图像的内容进行学习归纳,由计算机对图像进行处理并识别水位的方法也成为了水位检测的重要发展方向[2]。

文献[3]通过添加运动物体帧图像及帧平均法降低水位线检测中的干扰,提高了检测的准确性。文献[4]通过霍夫变换检测对河流表面进行统计跟踪,产生一个估计的水位线。文献[5]提出的基于数字图像处理的水位检测方法分割水尺和水域图像,通过多模板匹配算法以及序列验证算法识别水尺字符,降低了测量误差。文献[6]利用水尺刻度对相机进行标定,用图像差分法提取水位变化区域,计算图像水位线坐标,根据相机标定结果算得实际水位高度。文献[7]通过分割水尺后对水尺刻度进行边缘检测,对水尺字符进行匹配识别等技术进行水位识别。

传统的图像处理方法对于背景、环境、光线、拍摄角度等要求较高,在处理环境复杂情况下的水位检测时存在误差较大的问题。因此机器学习的引入,有效的提高了基于图像处理的水位检测方法的精度。例如,文献[8]通过字典学习和卷积神经网络对水尺进行识别和读取。文献[9]基于深度学习算法,结合YOLOv3和ResNet网络算法检测水尺对象和识别水尺刻度,大大提高了基于图像处理的水位检测的速度和精度。

2020年,Alexey Bochkovskiy提出的YOLOv4算法通过综合现有的优化算法实现了在单个CPU条件下训练数据并探测目标,在保证速度的前提下提高了算法的精度。

本文使用海康摄像头进行数据采集,通过萤石云协议提供的API获取水尺视频以及实时水位图片,通过传统图像处理算法对水尺位置进行定位,基于YOLOv4算法识别水尺刻度线并计算当前水位值。从实验结果看,本文提出的水位识别方法的误差仅在±2 cm以内,提供了一种高精度、低成本、易维护的水位识别方法。

1 水位识别算法设计

1.1 水位识别流程

本文算法采用YOLOv4深度学习算法对图像进行处理,识别水位,具体步骤分为:①通过海康摄像头提供的萤石云协议接口采集视频流,得到水尺图像帧,日间获得的水尺图像为RGB彩色图像,夜间获得的水尺图像为灰度图像;②判断图像是否为三通道彩色图像,对彩色图像进行灰度化处理;③使用不同的结构元素分别对日间和夜间的图像通过开操作增强图像对比度;④通过阈值分割方法分离水尺与背景,提取水尺区域;⑤对提取出水尺区域进行连通域去噪;⑥将提取出的水尺区域的图像输入YOLOv4网络,检测出水面以上的刻度线数量;⑦通过水尺总长计算当前水位。水位识别流程如图1所示。

图1 水位识别流程图

1.2 水尺图像预处理

1.2.1 图像灰度化和增强

海康摄像头拍摄到的水尺日间图片为RGB彩色图像,夜间图片为灰度图像,无须灰度化处理。日间图片通过将水尺图像灰度化处理的方式一方面能够去除日间彩色图像中所包含的不必要的颜色信息,提高图像处理速度,另一方面能够减少日间和夜间图像的差异,提高算法的通用性。

为了将水尺与背景分离,通过形态学方法增强图像对比度。采用开操作对图像进行背景提取,将原始图像与背景图像相减,以达到增强水尺图像的效果。灰度化后的日间彩色图像与夜间灰度图像仍然存在较大的差别,因此需要分别采用不同的结构元素对灰度化后的彩色图像及夜间原始灰度图像进行处理。

结构元素的选取对图像处理的结果有至关重要的作用,如果结构元素选取过大,会导致水尺与背景区分度不明显;如果结构元素过小,会导致水尺结构被破坏,二者均会导致无法准确分离水尺与背景。经过多次试验,使用半径为15 px的圆盘作为结构元素对灰度化后的日间彩色图像进行处理时效果最佳,处理后的图像如图2所示,使用半径为70 px的圆盘作为结构元素对夜间原始灰度图像进行处理时效果最佳,处理后的图像如图3所示。

图2 图像增强后的日间图像 图3 图像增强后的夜间图像

1.2.2 图像分割

图像分割的目的是将水尺与背景分离,去除杂乱无用的背景信息。目前传统的图像分割方法有区域分割、边缘分割和阈值分割等[10],其中阈值分割是最常用的方法,通过一个确定的阈值作为分割线,将目标与背景分离。阈值分割法根据应用范围是否为整张图像可分为局部阈值法和全局阈值法。

局部阈值法将整张图片均分为若干子图像,针对子图像范围内的灰度值确定子图像的阈值,对子图像进行阈值分割后再将子图像拼接成完整图像。但局部阈值要切割图像并对每张图像单独进行阈值分割处理,处理时间长且图像拼接边缘往往存在突变的现象,在分离水尺与背景的试验中,背景占据较大的空间,采用局部阈值法会导致对背景的大量无效计算。

全局阈值法通过统计整幅图像的灰度级,选取一个阈值对整张图像进行分割[11]。OTSU阈值分割法是一种常见的自适应阈值分割法,其中心思想是选取能使图像分割产生的区域类内方差最小、类间方差最大的阈值。OTSU算法的具体内容如下:

假设存在阈值k将图像所有像素按照灰度级大于k和小于k分割为C1和C2两个部分,C1、C2可分别表示背景区域和目标区域。灰度级为i的像素点个数在整幅图像中的概率为pi:

pi=ni/N

(1)

其中:ni表示图像中灰度级为i的像素个数,N表示整幅图像的像素总数。灰度级i的范围为0~255。

则C1和C2的所含像素占整幅图像像素的概率分别为:

(2)

(3)

pi的和应为1,则有:

P1+P2=1

(4)

图像全局均值:

(5)

C1和C2的均值分别为:

(6)

(7)

根据方差的概念,可推类间方差表达式:

σ2=P1(avg1-avg)2+P2(avg2-avg)2

(8)

化简后可得:

σ2=P1P2(avg1-avg2)2

(9)

求得使使式(9)的类间方差最大的阈值k即为OTSU算法的最佳阈值。

对图2~3采用OTSU算法二值化后的结果如图4~5所示。水尺区域与背景区域灰度级相差很大,通过OTSU算法能够很好地分离水尺区域与背景区域。

图4 二值化后的日间图像 图5 二值化后的夜间图像

1.2.3 噪声处理

图4~5中二值化处理后的水尺图片仍然存在许多噪声物体,为了去除噪声,对水尺图像分别进行连通域去噪和形态学去噪。对图4~5的图像先采用连通域去噪,将图像中连通域面积小于给定值的噪声过滤。由于图像中水尺所占连通域面积最大,所以连通域去噪的阈值面积可设置较大值,能有效滤除图片中的噪声而不影响水尺区域。连通域去噪后图像中仅保留了水尺所在区域。

连通域去噪后,选择半径为10 px的圆盘作为结构元素再对图像进行闭合、开启的形态学处理,平滑水尺的边缘,通过闭-开操作后的图像效果如图6~7示。

图6 形态学处理后的日间图像 图7 形态学处理后的夜间图像

根据水尺区域的边缘选取包含水尺部分的边长最小的矩形,最终提取出的水尺部分图片如图8所示。

图8 提取出的水尺图像日间(左)夜间(右)

1.3 水位识别算法

1.3.1 YOLO概述

目标检测的步骤可以分为两步:

1)检测目标位置,生成候选框;

2)对检测到的目标进行分类。

比较流行的算法按照是否将两个步骤合并,可以分为两大类[12]。一类是两阶段算法,需要先对图片选定可能存在图像的若干候选区,再对候选框进行分类和回归,比较典型的算法是基于Region Proposal的R-CNN算法,以及在其基础上改进的Fast-RCNN、Faster-RCNN等。另一类则是以YOLO系列算法为典型代表的单阶段算法,在检测目标位置的同时对其进行分类。

YOLOv1的核心思想是将两个步骤合二为一[13],先将整张图片划分成N*N个网格,对每个网格生成两个大小不同的候选框,即预定义候选框,再进行边框回归, YOLO具有RCNN算法无法比拟的速度优势且背景误检率远低于Fast-RCNN算法。YOLOv2通过引入批归一化和先验框等方法,从预测更准确、检测速度更快、识别对象更多的3个方面对YOLOv1进行了优化和改进。YOLOv3引入多尺度预测对YOLOv2的先验框进行了进一步改进,很好地改善了YOLOv2对小目标检测效果差的问题。

1.3.2 YOLOv4算法

YOLOv4算法在YOLOv3的基础上,结合了众多目标检测算法的训练技巧,从数据增强、网络结构、激活函数和损失函数等几个方面分别对YOLOv3进行了优化和改进[14]。

在图像预处理阶段引入Mosaic数据增强方法,将4张经过随意旋转或翻转等处理的四张训练图像合并成一张,丰富检测物体的背景。

在网络结构上改用CSP-Darknet53有效缓解梯度消失问题,在保证推理速度和准确度的同时,减小了模型尺寸。YOLOv4 网络结构主要由主干网络(Backbone)、颈部(Neck)和头部(Head)组成。Darknet-53残差网络结构包括不同大小的Resnet残差模块组成,CSP-Darknet53 主干网络将CSPNet网络结构应用于 Darknet-53中的Resnet残差模块,CSPNet将上层特征图二等分,一部分进行残差运算后与另一部分相结合。SPP网络分别使用不同大小的最大池化层对上层特征图进行处理后拼接,提高感受野,PANet则通过融合高层和底层的特征实现多尺度的检测,提高小目标的识别精度。

在卷积层后的激活函数处,YOLOv4采用Mish激活函数替代YOLOv3中的Leaky ReLU激活函数。公式(10)是Mish激活函数的公式,Mish激活函数相比LeakyReLU激活函数能够使神经网络具有更好的准确性和泛化性。

y=x×tanh(ln(1+ex))

(10)

YOLOv4检测算法采用CIoU评价预测框和真实框间的交并比,损失函数计算公式如式(11)所示:

(11)

公式(11)中IoU是指交并比,即预测框(A)和真实框(B)的交集与二者的并集的比值,ρ2(A,B)是真实框和预测框的中心点的欧氏距离;c为是包住它们的最小方框的对角线距离,α是权重函数,v是度量宽高比的一致性的参数,α和v的计算公式如式(12)~(13)所示。

(12)

(13)

其中:w代表框的宽度,h代表框的长度。

将获得的水尺区域的图像使用LableImage对水面上的刻度进行标注,输入YOLOv4算法进行训练,得到检测水尺刻度的模型。将实时获取的水尺图像进行预处理后作为YOLOv4检测模型的输入。

2 测试系统的搭建

2.1 系统架构

系统通过萤石云协议提供的API接口,每五分钟发出截图指令抓取图像,通过萤石云提供的图像URL将水尺图像下载至服务器,将图像经过预处理后送入基于YOLOv4算法设计的刻度线识别算法统计水面上的刻度线条数,根据该水尺的总量程计算当前水位。

系统主要由4个部分组成。

1)前端设备:包括海康摄像头、RTU、太阳能电池板、12 V蓄电池、水尺等。摄像头使用海康高清网络摄像头,支持4G电话卡,监控视频流为H264编码格式,使用TCP/IP协议传输。摄像头支持萤石云协议,通过协议提供的API接口可对摄像头进行图片截取和视频截取。海康摄像头可提供日间的彩色图像,并配备红外功能提供夜间的灰度图像。RTU用于采集当前的流量、流速信息。太阳能电池板和12 V蓄电池可提供夜间摄像头供电。

2)传输网络方案:RTU利用中国移动的通用分组无线电业务(GPRS)网络与服务器通信。海康摄像头则采用4G网络进行视频即图像的传输,图像转存在萤石云服务器,系统可根据萤石云服务提供的URL下载萤石云服务器上存储的图片。

3)服务器:包括阿里云服务器和萤石云服务器,阿里云服务器用于部署数据采集管理平台和水位监测管理平台,萤石云服务器用于提供视频图片截取和短期存储功能。

按照萤石云协议提供的规定,截取后的图片和视频上传至萤石云服务器并存储1小时,用户可通过协议返回的URL地址下载图片和视频。

通过水位识别算法处理获得的水位数据信息会上传至阿里云服务器上所部署的MySQL数据库中,数据库中还存有RTU采集的其他实时水情数据及历史水情数据等。

项目部署的服务器为阿里云服务器,用于存储下载的图片和视频流,以及RTU和网页平台之间的数据交换中心。

4)显示终端:用户可以通过PC端的web网页或手机端访问水位监测管理平台查看水位监测结果。

系统的主要架构如图9所示。

图9 系统架构图

服务器上搭建的数据采集管理平台将获取的水尺图片送入基于传统图像处理算法与YOLOV4算法相结合的水位识别算法模块中进行检测,得到水面上水尺刻度线数量,通过水尺的总长与水面上水尺刻度线数量之间的关系计算当前实际水位,并将水位写入服务器的数据库中,在显示终端显示。

2.2 系统硬件

2.2.1 总体架构

硬件系统基于STM32F103开发,该系统安装在闸门上,主要功能为通过无线通信实现水位数据传输,该水位信息由雷达水位计提供,用以与水位识别算法获得的水位数据进行对比,通过对闸门的启闭控制,可以获取不同水位情况下的水尺图片数据。

硬件系统单片机采用STM32F103,通过串口连接GPRS模块Air202,由GPRS模块通过接入GSM网络实现监控系统远端服务器的数据通信,完成水位数据的获取、摄像头的启闭控制以及闸门的启闭控制[15-17]。

硬件系统总体结构框图如图10所示。

图10 硬件系统总体框图

硬件系统的重要组成部分包括电源模块、GPRS模块、闸门控制及外部RTC。

2.2.2 电源模块

系统中稳定的供电电源是一个系统稳定有效、稳定运行的前提条件,监控系统采用12 V直流电池供电。系统电源架构图如图11所示。

图11 系统电源架构图

系统采用12 V电池供电,闸门电机、摄像头直接由12 V电源供电,由单片机控制电源的开断;GPRS芯片的供电采用开关电源芯片SGM6132将12 V降至4.2 V;STM32芯片的供电采用线性降压芯片将4.2 V降为3.3 V。

2.2.3 GPRS模块

Air202模块是支持四频段GSM/GPRS的模块,支持GPRS多时隙等级10和GPRS编码格式;具有17.7 mm×14.8 mm×2.3 mm的超小尺寸,可以完美集成到尺寸较小的电路板中,Air202功能框图如图12所示。

图12 Air202功能框图

Air202模块在射频发射时可能会产生电源电压跌落的现象,这是由于射频发射时需要大电流,若走线路径上的阻抗较大,就会导致电压跌落,一般难以避免。因此在设计上要特别注意模块的电源设计,尽量减少供电线路阻抗,当电压跌落在3.0 V以下时会有可能导致模块掉电关机或重启。为了防止VBAT电压跌落到3.0 V以下,可以在VBAT输入端并联多个100 μF的钽电容进行储能,以及3个100 nF、33 pF、10 pF的滤波电容,减少电压波动的影响,保证电源的稳定输出,提高系统的稳定性。通过单片机控制模块的开机和复位,使GPRS模块掉线时可以自动重连。

2.2.4 闸门控制

闸门电机通过两个引脚控制,通过三极管拉低相应引脚即可实现电机的开、关闸,硬件电路图如图13所示。

图13 摄像头电源控制电路

图 14 外部RTC电路

2.2.5 外部RTC

实时数据采集系统中时间的准确性非常重要,需要知道数据是在何时进行的采集,并且可以针对事件发生的时间点进行数据分析,使得数据的特征与时间事件更加地匹配。DS3231是Maxim/Dallas公司推出的一款低成本、高精度的I2C实时时钟芯片,该器件在正常温度范围内,计时精度很高,还具有温补晶体振荡器(TCXO)和1个32.768 kHz的晶体。通过纽扣电池供电,系统关机时仍可精确计时。

2.3 通信方案

设备与数据终端采集管理平台之间通过socket进行通信。网络上的两个程序为了实现数据的交换与要建立一个双向的通信连接,连接的一端称为一个socket,它是支持TCP/IP协议的网络通信的基本操作单元[18-19]。随着 TCP/IP 网络的发展,Socket 成为最为通用的应用程序接口,也是在 Internet 上进行应用开发最为通用的 API。Socket 封装了 TCP/IP 协议,使用 Socket 可以在服务端程序与客户端程序之间建立连接通信[20-22]。利用 Socket 通信的好处在于,不用关心数据底层的实现方式,这些都有协议完成,用户只须在发送/接收数据时按对方约定好的数据格式进行发送,通信双方按一定的方式处理收到的数据就可以了。

2.4 系统软件

网页平台的开发环境是Eclipse,是基于java、css和html5开发的应用,适用于IE、Chorom、火狐等主流浏览器。网页平台面向用户,提供实时水位信息、历史水位信息、实时监控视频以及水位预警信息。用户可以通过PC端web网页或手机端app访问平台,可同时对多个水位监测点进行统一管理。网页平台水位监测页面如图15所示。

图15 网页平台水位监测页面

3 测试结果及分析

3.1 数据采集与标注

本实验采用水尺的最小刻度为2公分,并用海康摄像头采集了分辨率为1 920×1 280的水尺图片,如图16所示。

图16 海康摄像头采集画面

由于图片包含3种不同型号水尺,对图片进行裁剪处理,保留包含单个水尺分辨率为420*1 080的图像,包含日出、日间、夜间以及大雨天气下的夜间4种情况下的图像,根据图1的流程得到不同情境下水尺图片共200 张,对其中140张图片使用Labelimg软件对图片中的待检测目标进行标注,所有图片共包含约9 800个检测目标,典型数据集如图17所示。

图17 典型数据集

3.2 实验结果

本实验在工作站进行数据集的处理及模型的训练,部署在Windows系统上进行验证。实验环境配置信息如表1所示。

表1 实验环境配置信息

配置文件部分参数值如表2所示。

表2 配置文件部分参数值

样本总数共140张图片,共包含约9 800个检测目标,训练集、测试集和验证集数量为8∶1∶1,训练的最大迭代次数为6 000,训练耗费时长约为20小时,训练的平均损失在训练5 000次后基本达到稳定,最终的平均损失收敛在0.25。

检测最终各项评价指标如表3所示。

表3 各项评价指标

采集剩余的60张图片作为测试集输入训练好的模型中进行检测,图片包含日出、日间、夜间及大雨天气的夜间等天气状况下的水尺。

其中部分实验结果数据如表4所示。人工提取水位是通过对图片拍摄的水尺图片进行人工解读获取。

表4 部分实验结果数据

4 结束语

本文提出了基于YOLOv4的图像水位识别方法。该方法通过传统图像算法对图像进行预处理,将水尺与背景分割,再通过YOLOv4算法对水尺图像中的刻度线进行检测,统计水面上的刻度线总数,通过计算获得当前水位。

传统图像处理有效解决了白天和夜间的图像色彩差别问题,提高了检测精度。YOLOv4算法弥补了传统图像检测算法对环境敏感的问题。

实验结果表明,该方法对夜间降雨天气下的水位识别依然准确率很高,测量误差约为2厘米,符合工程水位监测要求,是一种廉价而高效的水位识别方法。

猜你喜欢

水尺摄像头灰度
浙江首试公路非现场执法新型摄像头
采用改进导重法的拓扑结构灰度单元过滤技术
浅析国内海洋渔船与海船载重线、水尺标志勘划的区别
摄像头连接器可提供360°视角图像
基于灰度拉伸的图像水位识别方法研究
海运电厂船舶靠岸侧水尺图像采集实验研究*
水尺标志放样及数控切割解决问题方案
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算
浅析水尺勘划方法及要点