APP下载

基于SSD目标检测的视频水位检测算法

2019-05-17肖卓陶青川沈建军

现代计算机 2019年9期
关键词:水位边缘图像

肖卓,陶青川,沈建军

(四川大学电子信息学院,成都 610065)

0 引言

水利相关部门在河流、湖泊等地建立视频监控系统,加速了水利信息化建设的步伐[5]。其中水标尺读数的读取能提供预测山洪的有效方法。传统水位测量方式主要有安装水尺目测读数和使用传感器自动采集水位相关的模拟量再转换为水位量两种。其中目测测量方式效率低、及时性差以及恶劣情况下无法读取,而使用传感器测量方式成本高、难以维护、受环境影响大[1]。通过数字视频处理技术可以实时观测河道水库的情况,提供直观的图像信息,同时可以改善测量工作人员的工作环境,做到无人值守[2]。水利视频监控采集的视频图像信息,利用图像处理算法对水利视频监控图像进行水位提取比人工检测更直观,也更节省人力成本[3]。

在依靠传统机器视觉的水尺识别算法中,普遍通过形态学变换提取水尺边缘、多帧水尺图像处理得到水尺位置、RGB空间转HSV空间根据颜色提取水尺位置、人工预设感兴趣区域等方法用来定位水尺目标等方法[4-7]。然而在实际应用场景中,安防监控具有场景复杂,图像噪声多,目标不明显等特点。形态学变换提取水尺边缘和RGB色彩空间转换至HSV色彩空间的方法都会受到周围复杂场景的影响。无论是场景的边缘和场景的颜色,都会对水尺定位造成很大的影响。而多帧水尺图像处理得到水尺位置的方法是在摄像头静止不动的前提下。由于当前安防摄像头大部分均由云台控制等功能,在摄像头受到环境影响产生抖动、视角被调离水尺区域或云台自动巡航时,多帧水尺图像处理得到水尺位置的方法会直接失效。

本文提出一种基于SSD目标检测的水尺检测算法,通过深度学习训练提取水尺特征,能较好地检测到水尺位置。多帧判断综合确定当前水尺的位置,能非常准确的定位到水尺的具体位置。检测到水尺位置后,边缘检测来获取水尺边缘信息,形态学处理,填充水尺中心;计算非零像素占比来矫正倾斜的水尺,使水尺垂直于水平面;再重新进行x轴的边缘检测获取水尺中“E”的刻度,并通过形态学处理获得完整的刻度信息。算法流程如图1所示。

图1 算法流程图

1 SSD水尺目标检测

SSD(Single Shot Mulitbox Detector)是一种基于卷积神经网络的目标检测算法,由Wei Liu在2016年提出,拥有比Fast R-CNN更好的速度及更高的准确率,是目前主流的深度学习目标检测网络之一[8]。SSD目标检测网络结合YOLO回归思想以及Faster R-CNN的anchor机制做到速度与准确率并存[9]。SSD目标检查网络使用VGG-16作为基础网络,并增加了新的卷积层来获取更多的特征图。由于使用的是全卷积结构,相对于Faster R-CNN包含的全连接层网络结构,使网络计算量急剧减少,提高了运算速度。并使用多尺度特征图方式,对各个尺寸大小的目标特征进行检测。网络模型如图2所示。

在本文中,由于水尺大小在图片中各不相同,所以需要提取不同尺度的特征图进行预测,大尺度特征图用来检测小目标,小尺度特征图用来检测大目标。并在特征图上的每一个点生成一系列的候选框,每个框都会生成自己的回归和分类。由于水尺目标形状的特殊性,在视频监控场景下,水尺目标普遍是长条状,垂直于水平面。本文去掉横向的矩形框,使用多个不同比例的竖条状矩形框作为候选框。保持原始网络中的各尺度特征图中候选框数量,并去除横向矩形框,增加竖向矩形框,能更好地与原始框进行匹配,如图3所示。

本文采用SSD 300通过监督学习,训练样本,提取网络特征的方式,训练模型。在具体算法中,将视频监控输出图像下采样到300×300的分辨率,并根据网络输出分类及概率,使用多帧判断输出结果,可以有效解决因日照变化和摄像头抖动造成的检测失败等问题。

图3 SSD候选框示意图

首先使用将视频流解码成单帧RGB格式,然后对单帧图像进行下采样,下采样至分辨率为300×300,将下采样后的图像数据输入至SSD300目标检测网络中。输出检测目标的分类、概率及目标框信息。

由于光照的影响及摄像头的抖动转动,可能会影响SSD目标检测网络的结果。本算法使用多帧结合判断,在当前帧未检测到目标框时有两种可能,一个是摄像头云台旋转,视角切换到了看不到水标尺的位置,一种就是网络误判不存在水尺。在上一帧目标框基础上,对比当前帧与上一帧,求差分,并使用形态学腐蚀滤掉由于摄像头抖动造成的边缘。计算非零点占比,当百分比较大时确定当前帧的视角与之前的视角不一致,则当前SSD网络输出的结果是正确的,否则使用之前的网络输出结果对当前帧进行下一步计算。检测效果如图4所示。

2 水位识别

2. 1 图片增强

图2 SSD网络模型图

由于水尺所持环境光照的变化,安防监控摄像头获取到的图像可能出现曝光过度或者曝光不足的情况,变现在图像上就是水尺边缘不清晰,对于分离出水尺刻度造成非常大的影响。

图4 SSD网络输出水尺分类矩形框

本文使用三通道直方图均衡的方式,将图像进行非线性拉伸,使图像峰值部分对比度得到增强[10]。单通道直方图均衡如公式(1)所示,其中Sk表示灰度为k的像素均衡后的像素值。L表示位深度,灰度范围为[0,L-1],MN分别表示图像的宽高。nj表示灰度值为j的像素值总数。

增强后的图片,图像边缘更加清晰,并且图像的灰度在灰度范围内均衡分布,能较好地提取出水尺的边缘信息。原图与增强后的图如图5(a)、(b)所示。

图5 水尺识别效果图

2. 2 水尺倾斜矫正

对于增强后的图像而言,需要进一步缩小水尺范围。去除水尺周边复杂的场景边缘信息对水尺读数造成的影响,并矫正水尺的角度,使水尺垂直于水平面。

如图5(b)所示,在实际应用场景中,水尺的角度各异,周边情况不尽相同,SSD模板检测网络能有效地检测到水尺的大致范围,但对于复杂场景中,水尺周边的边缘信息复杂,对水尺的检测会造成很大的影响,所以必须进一步精确提取水尺的位置,并对偏移的水尺目标做矫正,使水尺能够垂直于图像水平面。为后续的水尺刻度读数提高精度。

(1)Sobel边缘提取

Sobel算子主要用来做边缘检测上,是离散型差分算子,用来运算图像亮度函数的灰度近似值,在图像任一地方使用此算子,均会产生灰度矢量或其法矢量,并能很好地抑制图像中的噪声,减少噪声对实际边缘信息造成的干扰[10]。Sobel卷积核如公式(2)所示。

Gx、Gy为两组3×3的矩阵,分别为横向和纵向,将之与图像作平面卷积,即可分别得到横向与纵向的高度差分近似值。

水尺目标中“E”的目标相对于背景有着很明显的边缘特征,通过边缘提取能够分离出水尺的边缘,使ROI图中的E更醒目,由于输入图是彩色的,包含更多的信息,使用Sobel算子,对上一步的结果图进行边缘检测提取。边缘提取后效果如图5(c)所示。

(2)提取水尺

Sobel边缘提取后,水尺周围包含很多场景的噪声及其他物体边缘的影响,通过中值滤波去除周围减小的噪声,平滑独立的像素点,并通过形态学闭操作和膨胀填充水尺中“E”的空隙。如图5(d)所示,水尺依然是倾斜的,并且水尺周围存在很多的干扰点,直接通过联通区域找到最大外界矩形是不恰当的,会包含很多水尺外的噪声点,所以我们通过旋转图片,矫正图片使水尺垂直于水平面。

由于水尺目标的特点,水尺在图片中包含了大量的白点,其他白点是水尺周围物体的边缘。图6为二值图中每列像素包含的非0点个数,可以看出,在40~100中间包含了大量的非0点,而40则为水尺左边界,100为右边界。通过计算非0像素在边界范围内的面积比,找出面积比最大的一个角度,此时的水尺接近于垂直水平面。并且可以通过计算列像素的梯度提取出水尺的左右边界。获得倾斜矫正后的水尺图片后,对图片的行像素进行同样的处理,去除噪声及其他边界,就此得到水尺原图。旋转后的二值图如图5(e)所示。

图6 二值图y轴非0点个数

2. 3 水位识别

对增强后的图片进行相同的倾斜矫正和图片截取。图片中水尺位置垂直水平面,并通过使用Sobel算子x方向边缘检测,由于水尺矫正后,x轴方向梯度变化较大。通过Sobel算子x方向边缘检测,能很好地过滤掉y轴的边缘信息,而保留x轴的边缘,从而能很好地提取出水尺x方向的边缘信息。如图5(f)能看出,虽然能很好地提取出水尺刻度,但仍然有水尺边缘及水尺上数字的干扰。通过降噪消燥和形态学处理如图5(g)(h),能很好地保留水尺的刻度信息,再通过寻找连通区域来确定水尺刻度如图5(i)。

3 实验结果

3. 1 数据集

本文数据集分为SSD目标检测网络训练集和算法测试集。例图如图7所示。

SSD目标检测网络训练集包括互联网上抓取的水尺图片和四川大学校内拍摄的水尺图片,通过对图片进行截取、旋转、翻转和对比度调整等操作,扩充水尺图片数据。并根据数据集制作样本。

算法测试集采用手机拍摄视频,通过晃动和移动手机模拟实际水利场景下的监控摄像头抖动及云台控制。视频采集于成都市九眼桥,使用最小刻度为1cm的红蓝两种颜色的水尺在不同场景下录制视频。

3. 2 实验结果

实验环境如表1所示。

表1 实验环境

实验使用FFMpeg对分辨率为1280×720、帧率为30的输入视频进行解码、使用SSD300-Caffe版本进行水尺目标检测,使用OpenCV3.2对水尺目标区域图像进行处理识别水位值。对红蓝两种水尺,两个不同场景下共四个视频片段进行水位检测。本文算法能做到单帧目标检测加识别在80ms内,水尺定位实验结果如表2所示、水位检测部分实验结果如图7所示。

表2 SSD多帧水尺定位实验结果表

图8 水位检测效果图

从表2、图8可以看出,对两个不同场景下的红蓝两种不同颜色的水尺进行视频水位检测,本文算法能做到水尺目标检测准确率在95%以上,水位检测误差在2cm以内。并且视频抖动和移动都不会对算法结果造成太大的影响。符合当前水利视频监控的特征,对水位检测系统有一定的帮助。

4 结语

本文采用深度学习目标检测网络SSD,能准确定位到安防监控中的水尺位置,并结合传统机器视觉算法,计算最大像素占比来对水尺图像进行倾斜矫正,再经过边缘检测,使用连通区域计算图像中的水尺刻度数。经实验结果表明,该算法能准确地定位水尺并识别水尺刻度,水位误差低,并能良好地适应多种场景下的水尺目标,在监控云台旋转时,也能有效定位及识别。满足行业需求。基于SSD目标检测网络的算法可以在增加目标分类基础上进行扩展,增加诸如漂浮物、人等目标分类。并在此基础上添加越线检测,漂浮物检测等算法。

猜你喜欢

水位边缘图像
基于生成对抗网络的CT图像生成
浅析p-V图像中的两个疑难问题
巧用图像中的点、线、面解题
一张图看懂边缘计算
趣味数独等4则
七年级数学期中测试题(B)
在边缘寻找自我
走在边缘
边缘艺术