基于YOLO-v5和ResNet的舱底水液位识别算法

2020-01-03 03:28王坤1房玉吉刘华龙1刘帅余淞洋
船海工程 2020年6期
关键词:液位灰度滤波

王坤1,房玉吉,刘华龙1,刘帅,余淞洋

(1.海装沈阳局驻大连地区第一军事代表室,辽宁 大连 116001;2.中国舰船研究设计中心,武汉 430064)

外板破损、通海管路破裂等因素会导致舱内浸水,要确定进水量的大小,预测浸水的发展趋势及破口的大小,确定损害管制措施,都需要能对浸水量进行快速准确的识别。目前,舱底自动测水方法主要是浮子式,压力式,超声式和雷达式水位测量[1],以及传统图像识别法。这些方法存在环境适应性较差、自动化程度不高,前期投入较高,后期维护工作量大等问题。为此,提出一种基于YOLO-v5[2]和ResNet[3-4]算法的舱底水液位识别算法。

1 液位检测系统设计

1.1 流程设计

为了实现对船舱内水位高度的判断,考虑通过对水箱液位检测进行模拟,在水箱高度已知的条件下,需要识别出液位与箱身在图像中高度之比即可推出液位实际高度。

工具采用QT和Opencv。图像的处理算法包含了对获取的图像的预先处理、对图像的颜色进行阈值分割[5]、通过改进的Canny进行图像的边缘检测、对获取的图像与预先的模板进行匹配,并提出通过窗口来搜索的对峰值进行检测的算法,分别将采集图像、液位界面提取、数字识别、摄像头自定位集合在一起,从而使液位图像数字化。流程见图1。

1.2 设备选择

整个检测系统由照明光源、光学摄像头、计算机处理与分析系统组成,见图2。

其中,采用由发光二极管(光源发射二极管,led)组成的圆形光源顶部照射的形式,保证光源的可靠性;利用明场照明漫反射形式的正向照明,防止形成镜面反射,控制视场中产生阴影而对检测结果产生干扰。为了提高系统的分辨率和集成性,摄像机镜头选用高分辨率(1 080×1 920)的互补金属氧化物半导体图像传感器。摄像机与计算机之间的信息传输采用现场总线的形式,保证了视频传输的快速性。

1.3 模型算法

舱底水液位对象检测算法采用YOLO-v5算法模型。此版本的YOLOv5每个图像的推理时间最快0.007 s,即每秒140帧(FPS),但YOLOv5的权重文件大小只有YOLOv4的1/9。延迟是在V100 GPU上对5 000个COCO-val2017中的数据进行测试的结果,包含数据预处理、模型推理、后处理以及NMS。平均NMS时间为1.6 ms/image。

在舱底的水液位检测中,选用resnet 34层网络结构。网络中每个残差块采用跳层链接,解决了层次增加、学习退化和深度梯度扩散等问题。

2 算法训练

2.1 图像采集

采用图像作为ccd相机拍摄在有光源的环境中,图像尺寸为1 920×1 080 ,色彩信息为bgr存储。由于拍摄视野较大,目标对象在采集过程中只占一定的区域,为了降低需要处理的数据,在不失去主要信息的情况下,对源图像进行roi选择。经观察,主要部分在图像的上部,选取主要部分进行处理,见图3,提高了图像处理效率。

图3 采集源图像与ROI后图像

2.2 图像预处理

通过高分辨率工业ccd相机收集液位信息,在拍摄时可能会由于场景照明不均匀,ccd相机内部的光学成像畸变,周围环境温度,湿度等因素影响,在获取液位图像信息时,通常会夹杂着噪声,因此需要进行一系列图像预处理,去除噪声和背景,从而增强与刻度和数字字符相对应的信息[5]。通常,预处理的步骤有灰度图像,数学形态处理,二值化,数据平滑,复原,增强,等等。

2.2.1 去噪

探测系统中成像ccd相机所获取的液位图像受到多种形式噪声的影响,此时需要使用图像滤波来处理图像。图像滤波能够在保持图像细节的纹理特征的前提下削减图像噪声。图像过滤可以强化或改变图像。通过滤波,可以加强某些有用的特征,或者去除图像中的一些不相关部分,滤波是邻域操作算子,它利用对像素周围的像素值和滤波算子进行卷积的计算,以确定该像素最终的输出值。

本文设计的双边滤波法是一种非线性滤波方法,同时考虑了像素的相似度和图像空间的邻近性,属于一种折中的计算方法。将空域信息及灰度相似度统筹考虑,折中处理,在保证边缘信息的同时再次去噪声,具有简单,局部,非迭代的性质[6]。

常用双边均值噪声滤波,高斯滤波和衰减噪声等处理同时对高频图像的边缘纹理信息节点进行模糊,双边均值滤波器很好地充分考虑了这个复杂点,很好地准确保存了高频图像纹理模糊信息[9]。

之后采用中值滤波器进行进一步的去噪预处理,可有效地消除图像中的椒盐噪声,有利于边缘保留尖锐度。

关于灰度化的颜色处理,主要采用液位加权值的平均值对一个液位中的图像颜色进行一次灰度化颜色处理,实现方法过程概要如下:根据亮度rgb和亮度yuv两个颜色分量空间之间的亮度变化,建立图像亮度y与分量r、g、b颜色分量之间的亮度对应变化关系,利用它的亮度对应来描述液位图像的颜色性质。

输入的图像是bgr彩色图像,不方便处理,需要将其转换为灰色图像,对每个像素点的转换公式如下为:

Gray=R*0.299+G*0.587+B*0.114(1)

图像预处理后的图像见图4。

图4 预处理后的灰度图

2.3 直方图均衡化

为了增强对比度,使灰度图中液体与液位上部瓶身灰度区分更加明显,采用直方图均衡化操作。

首先对灰度图所有像素进行扫描,计算出图像的归一化直方图H。

(2)

式中,n是图像的总数,k是图像的第k个灰度级别(k=0,1,2,…,255);nk是该灰度级的个数。

再计算直方图积分。

(3)

最后进行图像转换。

dst(x,y)=H′(src(x,y))

(4)

变换后的结果见图5。

图5 直方图均衡化图

2.4 二值化图像分割

图像分割可以将目标图像划分成感兴趣的区域和余下的区域,然后将感兴趣的区域提取,进一步分析。本文以常见最大型间误差(otsu)、最小型误差(最大型误差)、局部型自适应阈值(局部型)分割方法为主。

2.4.1 最大类间误差法

根据灰度值的不同,对感兴趣的目标和对不感兴趣的背景进行区分。如果目标和背景的类之间的差距越大,说明两者的区别越小,当类之间的方差越大时,错误的分类可能性越小。因此,用每个灰度值作为阈值来计算不同的分割类之间的方差,相应的阈值为阈值。

2.4.2 最大熵方法

这种最大阈量数值分割选择的基本原理也就是,对阈值分割之后的一个有效感兴趣的该目标信息类和不感兴趣的目标背景信息类之间的总值和熵值分别进行最大的阈值分割,从而可以使其当中所含的背景信息数量最大化。

2.4.3 自适应阈值化

本文设计的是基于局部自适应的二值分割法,与全局阈值分割不同,它通过像素窗函数中的像素值来确定该像素位置的二值分割阈值,是一个局部分割法。因此,每个像素位置的二值化阈值并非定值,而是动态变化的,它依赖于邻域像素分布,这是选择的这种方法的优点所在。显然,在图像中明亮度更高的像素区间中,局部自适应产生的阈值也较大,在图像中,明亮度更低的像素区间中,局部自适应产生的阈值将适当地缩小。利用此方法,图像中亮度不同,细节纹理,对比度不同的局部图像区域将会有相应的局部二值化阈值。

常用的局部自适应阈值分割方式有如下两种:一种是将该点的局部窗口函数的平均值设为该点二值化的阈值。还有一种是对计算该取值点的一个局部窗口化学函数的值进行高斯加权,作为计算该取值点的二次取值点在化学函阈下的值。

本文所设计的局部自适应阈值分割是用邻域块的高斯加权计算的二值阈值,其方法是邻域块的高斯加权。结果见图6。

图6 阈值分割图

2.5 滤波和形态学操作

阈值分割后液体和瓶盖能大致凸显出来,但液位上方仍有很多干扰,因此需要再经过滤波和形态学操作。

滤波依然采用中值滤波,邻域尺寸选择7像素点,效果见图7。

图7 中值滤波图

这样的液位上方的干扰就完全消失了,而液体和瓶盖的白色部分中也存在着黑洞,有些在黑色部分中也有微型的白块。为了确保后轮廓识别的唯一性,需要将图像进行形态操作,将图像划分为几个独立的完整区域。

对滤波后的图像进行先用3×3的核腐蚀,再使用15×15的内核膨胀3次,操作后得到的图像见图8。

图8 形态学操作后图像

2.6 轮廓检索与矩形逼近

在已经得到的二值图像中,液体区域对应下方白色区域,瓶盖(即瓶身顶部)对于上方小块白色区域,背景对应像素为黑色,现在对轮廓进行检索。

轮廓检索选择多边形近似的方法,对于一条闭合边界,当多边形的边数目等于边界上的点数时,这种近似会变得很精确,此时每对相邻点定义了多边形的一条边。寻找到的轮廓用绿色线标出。

轮廓寻找后,为了方便计算像素距离,需要对轮廓绘制边界框。矩形边界框的提取基于Douglas-Peucker算法,原理见图9。

图9 Douglas-Peucker算法原理

1)将连续曲线的中段首尾为起点利用a,b之间的一条直线线将ab连接起来,这条线是一条连续曲线的正弦;

2)得到曲线上离该直线段距离最大的点C,计算其与AB的距离d;

3)对该原点距离和直线预先确定的原点threshold的直线大小距离进行直线比较,如果没有大于零的threshold,则将该距离直线大小作为近似处理曲线,对该段直线进行近似处理;

4)若距离超过阈值,则用 c 将曲线划分为ac和bc两段,并分别处理两段取弦,分别处理为13;

5)在所有的分割曲线点都处理好后,依次将各个被分割出的点所需要形成的两条折线连接起来,即可形成作为近似点的曲线。

3 结果计算及分析

最终检测出一条水平线,整体图像矩形框出了箱头,下面框出箱底,输出为一个Rect变量和一个绿色线高度,这是Opencv中一种数据类型,包含成员变量(x,y)(矩形左上角顶点)、width(矩形宽度)、height(矩形高度)。最终结果通过以下式子计算:

(5)

Hw=Rect[2].height

(6)

Hb=Rect[2].y+Rect[2].height-Rect[1].y

(7)

式中量与符号说明见表1。

表1 变量对应关系

计算时需要先输入瓶身的实际高度,这个可以预先通过标准直尺测量,这里输入20。

采用的设备及试验结果见表2。

表2 试验设备及结果

经实验室测量,测量系统具有良好的精确度,能够保持原仪表的精确度等级。

4 结论

将YOLO-v5和ResNet算法应用于舱底水液位识别,试验验证表明,该模型算法识别结果相对误差仅为3.27%。模型算法具有自学习能力,随着学习训练样本的不断增加,识别准确率也将不断提高,将来有望取代浮子、压力式、超声波和雷达自动水位式等传统的监测方法。

猜你喜欢
液位灰度滤波
航空滤光片阵列多光谱图像条带灰度调整算法
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
采用改进导重法的拓扑结构灰度单元过滤技术
天津港智慧工作平台灰度发布系统和流程设计
除氧器液位控制器切换异常原因分析及应对措施
Arduino小车巡线程序的灰度阈值优化方案
天然气车辆液位测量系统相关性的研究
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
TEP除气装置液位控制及故障分析