应用图像处理技术的舱室液位识别算法研究
2021-03-25罗光宇
臧 涛,罗光宇
(1.海军驻武汉地区第二军代室;2.武汉理工大学自动化学院,湖北武汉 430070)
0 引言
船舶在正常使用或战斗过程中,会发生许多安全事故(例如舱底浸水、火灾、通海管道破损等),即损坏管制(简称“损管”)[1],这些问题如果得不到处理,将影响该船舶的正常航行,严重时甚至可能导致沉船事故发生。因此,如何迅速准确、有效地定位受损隐患,并及时对不同损害采取有效措施,是一个亟待解决的难题。
针对舱室浸水问题,需要系统对舱室液位进行识别检测。目前,自动测水方法主要有浮子式、压力式、超声式和雷达式水位测量[2]。王德利等[3]设计了一套利用浮子式液位计进行液位测量的校准系统,其通过提升装置带动液位变化,虽然减少了环境对液位检测的影响,但是存在建设维护费用高的问题;姜继生等[4]利用压力式液位计对水箱液位进行测量,虽然模拟测试效果好,但是此装置易受环境影响,一旦应用在船舶复杂运行环境下,遭遇外界风浪时,采用此方式进行液位检测就存在较大误差;白琳[5]利用超声波设计了一套液位测量系统,虽然该系统具备较高的精确度,但是面对船舶运行中其他介质的干扰,此方法易出现误检测情况,从而影响检测结果;徐俊等[6]阐述了雷达式液位测量技术在船舶中的应用,该方法具有高精度、低功耗的特点,且不受外界环境影响,但需要较多软硬件单元联合建立,维护费用较高。
上述方法都存在自动化程度较低、建设维护费用高、易受现场环境影响、适应性差等问题。为了提高舱室液位检测精度,减少建设维护费用及外界环境影响,提高液位检测方法的适应性,本文提出一种应用图像处理技术的舱室液位检测算法,并运用自矫正技术使系统具有较强的自适应和抗干扰性能,最后通过模拟实验将系统测得的液位与实际液位进行对比,得出相对误差并作分析。
1 舱底液位检测系统设计
1.1 算法流程设计
本文将水箱模拟为船舱舱室,实现对船舱内水位高度的判断。由于水箱高度已知,只需要识别出液位与箱身在图像中的高度之比即可推出液位检测高度。工具采用QT和OpenCV。
图像处理算法包含对获取图像的预先处理、对图像颜色进行阈值分割、轮廓检测、对获取的图像与预先设置的标准进行比对,从而得到所需结果[7]。本文提出的船舶舱室液位识别检测系统还具有自适应中值滤波、直方图分析,以及透视失真的自矫正功能,提高了液位检测的抗干扰性和自适应性。针对船舶舱室的液位检测算法流程如图1 所示。
Fig.1 Liquid level detection algorithm flow图1 液位检测算法流程
1.2 设备选择
本文船舶液位检测系统的硬件部分由舱室照明灯、舱室摄像机、计算机系统组成,如图2 所示。
Fig.2 Device Selection图2 设备选择
为了保证光源可靠和高寿命,照明灯部分采用了发光二极管(光源发射二极管,led)的圆顶光源。为了降低阴影部分对图像采集效果的干扰,利用漫射的正面照明。为了提高图像采集系统的分辨率和集成性,舱室摄像机部分采用了金属氧化物半导体(Complementary Metal Oxide Semi⁃conductor,CMOS)的高像素摄像头,分辨率为1 080×1 920。在选择与计算机接口的摄像头和电脑接口时,为了保证视频数据的快速传输和收集,采用串行总线(Universal Serial Bus,USB)进行数据传输。
2 图像处理流程
2.1 基于ROI 的图像采集
本文采用的图像为CCD 相机在有光源的环境中拍摄而来,图像尺寸为1 920×1 080,色彩信息为BGR 存储。由于拍摄视野较大,目标对象在采集过程中只占一定区域,为了降低需要处理的数据,在不失去主要信息的情况下,对源图像进行ROI 选择[8]。经观察,主要部分分布于图像上部,选取的图像大小为500×1 500,利用此方法可以提高图像处理效率。
2.2 图像预处理
由CCD 相机采集到的图像在经下一步分析之前,需利用图像预处理技术对获取的图像进行操作。通过图像预处理操作可以使得图像信息简单、层次、重点突出。简单即去掉图像中所需的或多余干扰信息,有层次是使所保留的信息在层次上更加清晰,轮廓更明显,重点突出就是突出研究对象,这样对特征信息的提取和物体匹配的识别更方便,也更加稳定[9]。
本文通过高分辨率工业CCD 相机收集液位图像信息,在拍摄时可能由于场景照明不均匀、CCD 相机内部光学成像畸变,以及周围环境温度、湿度等因素影响,在获取液位图像信息时,通常会夹杂着噪声,因此在作深入研究前,首先应经过一些环境照明,以便进行深入研究。通过一系列图像预处理操作,去除采集图像中的噪声和背景,从而增强与液位刻度和数字字符相对应的信息。
由于摄像头原始图像有噪点且为彩色BGR 图像,不易处理,需要首先对图像进行去噪和灰度化处理。
2.2.1 去噪
在液位图像探测系统中,CCD 相机所获取的液位图像受到多种形式噪声的影响,此时需要使用图像滤波处理图像。通过滤波技术可以在减少图像噪声的同时保持图像细节的纹理特征,以便后续对图像作进一步分析和处理,图像去噪效果好坏取决于图像滤波效果好坏。因此,选择适当的滤波法对于图像去噪处理非常重要。本文采用滤波技术对像素周围的像素值和滤波算子进行卷积计算[10],以确定该像素最终输出值。可用式(1)计算图像滤波。
其中,K为滤波器,也称为核。
本文基于双边滤波原理设计非线性滤波法,既考虑到图像空间的邻近性,又考虑到像素的相似度,同时考虑到灰度的相似度和空域信息,是一种折中处理方法。此种滤波方法在保证边缘信息的基础上实现噪声去除,具有简单、局部、非迭代的性质[11]。
双边均值噪声滤波法可对高频图像的边缘纹理信息节点进行模糊处理,并准确保存高频图像纹理模糊信息。此函数实现主要是由于双边高斯滤波器需要增加高斯方差,指一个基于图像两边空间的高斯滤波器函数,它能够充分考虑到一个图像两边空间的像素分布,因此离放在边缘更远的每个像素对放在边缘的每个像素不会产生过大影响,这样可以有效地确保放在边缘附近的每个像素的取值。在邻域双边像素滤波器中,滤波后的双边像素函数值由邻域双边像素的两个加权函数组合计算得到,公式定义如式(2)。
采用中值滤波器作进一步去噪预处理,可有效消除图像中的脉冲噪声,有利于边缘尖锐度保留。中值矩形滤波器通常可将一幅图像的每个矩形像素转换成一个围绕该矩形像素的一个整数矩形邻域和其中一个矩形中值[12]。如图3 所示。
Fig.3 Median filtering principle图3 中值滤波原理
2.2.2 灰度转化
图像中的灰度转换处理是通过3 个灰度分量中的r、g、b 对彩色图像的灰度、颜色、大小进行灰度转换,获得图像灰度处理信息的一个过程。而且,这种颜色改变使获得的那些灰色色彩图像仍可以继续保持高于原图的颜色饱和性、亮度等重要特征。此外,彩色图像数据灰度化分析能将彩色三通道图像数据同时转化成一个彩色单通道,数据损失较少,在彩色图像灰度分析中,计算量减少,提高了在图像分析处理时的效率。
灰度化的颜色处理实现方法很多,本文主要采用液位加权值的平均值对一个液位中的图像颜色进行一次灰度化颜色处理,实现过程如下:根据亮度rgb 和亮度yuv 两个颜色分量空间之间的亮度变化,建立图像亮度y 和分量r、g、b 颜色分量之间的亮度对应变化关系,利用其亮度对应描述液位图像的颜色性质。
输入的图像是rgb 彩色图像,不方便处理,需要将其转换为灰色图像,对每个像素点的转换公式如式(3)。
预处理后的图像如图4 所示。
Fig.4 Grayscale image after preprocessing图4 预处理后的灰度图
2.3 直方图均衡化
为了增强对比度,使灰度图中液体与液位上部瓶身灰度区分更加明显,采用直方图作均衡化操作[13]。算法原理为:
首先对灰度图所有像素进行扫描,计算出图像的归一化直方图H,如式(4)。
其中,n是图像总数,nk是图像的第k个灰度级别(k=0,1,2,…,255)。
第二步计算直方图积分,公式如式(5)。
最后认为查询表是图像转换结果,如式(6)。
变换后的结果如图5 所示。
Fig.5 Image after histogram equalization图5 直方图均衡化后的图像
2.4 二值化图像分割
图像分割本质上是一种分类,将目标图像划分为感兴趣区域和余下区域,然后提取感兴趣区域,并作进一步研究和分析。图像分割实现算法很多,大致可以分为基于像素阈值的分割方法、基于边缘的分割法、基于区域分裂和合并的算法、区域生长算法、特征聚类、匹配等。其中,以阈值为基础的图像分割法是图像分割中最简单、稳定的方法,适合于液位区域分割。由于阈值分割方式存在最大类间误差法、最小误差法和最大熵法[14-15],且以上3 种方法都是基于全局的阈值分割方法,对于舱底液位检测而言,由于存在外部自然光照及内部照明灯,其对阈值分割效果较差。基于文献[16]研究结果,本文采用基于局部自适应的阈值分割方法对舱底液位图像信息进行分割。
本文设计基于局部自适应的二值分割法,与全局阈值分割不同,它通过像素窗函数中的像素值确定该像素位置的二值分割阈值,是一个局部分割法。因此,每个像素位置的二值化阈值并非定值,而是动态变化的,它依赖于邻域像素分布。显然,在图像中明亮度更高的像素区间中,局部自适应产生的阈值也较大,在明亮度更低的像素区间,局部自适应产生的阈值将适当缩小。利用该方法,图像中亮度不同、细节纹理及对比度不同的局部图像区域将会有相应的局部二值化阈值。
常用的局部自适应阈值分割方法有两种:①将该点局部窗口函数的平均值设为该点二值化的阈值;②对计算该取值点的一个局部窗口化学函数的值进行高斯加权,作为计算该取值点的二次取值点在化学函数下的值[17]。
本文所设计的局部自适应阈值分割是采用邻域块的高斯加权计算的二值阈值。经计算后结果如图6 所示。
Fig.6 Image after threshold segmentation图6 阈值分割后图像
2.5 滤波与形态学操作
阈值分割后液体和箱顶能大致凸显出来,但液位上方仍有很多干扰,因此需要再经过滤波和形态学操作对图像作进一步处理。
滤波依然采用中值滤波[18],邻域尺寸选择7 像素点,效果如图7 所示。
Fig.7 Filtered image图7 滤波后图像
这样,液位上方的干扰完全消失,而液体和瓶盖的白色部分也存在黑洞,有些在黑色部分中也有微型的白块。为了确保后轮廓识别的唯一性,需要将图像进行形态学操作,将图像划分为几个独立的完整区域。
形态学操作[19]包含腐蚀和膨胀。膨胀操作是一项卷积操作,将目标元素的值替换成卷积核所覆盖的区域和局部最大值,如式(7)。
腐蚀与膨胀相反,如式(8)。
利用上述方法,先对滤波后的图像进行3×3 的核腐蚀,再利用15×15 的核连续进行3 次膨胀,操作后得到的图像如图8 所示。
Fig.8 Image after morphological manipulation图8 形态学操作后的图像
2.6 轮廓检索与矩形逼近
在已经得到的二值图像中,液体区域对应下方白色区域,箱顶(对应舱顶)对应上方小块白色区域,背景对应像素为黑色,现对此液位图像轮廓进行检索。
轮廓检索选择多边形近似方法,对于一条闭合边界,当多边形的边数目等于边界上的点数时,这种近似会变得很精确,此时每对相邻点定义了多边形的一条边。寻找到的轮廓用线条标出。
轮廓寻找到后,为了方便像素距离计算,需要对轮廓绘制边界框。矩形边界框的提取基于Douglas-Peucker 算法[20],原理如图9 所示。
Fig.9 Principle of Douglas-Peucker algorithm图9 Douglas-Peucker 算法原理
Step1:将连续曲线首尾两点设为A、B,直接相连后形成一条直线AB;
Step2:得到曲线上离该直线段距离最大的点C,计算其与AB 的距离d;
Step3:将d 和预先设定的阈值进行对比,如果d 小于此阈值,则将AB 作为此曲线的近似,算法结束,否则继续进行下一步;
近年来,新疆生产建设兵团第一师食品药品监督管理局全面贯彻落实党的十八大和十八届三中、四中、五中、六中全会精神,深入学习贯彻习近平总书记系列重要讲话精神,以“四个最严”为统领,落实“四有两责”,切实履行食品药品监督管理工作职能,落实“控、防、打、建”一体化要求,切实保障了人民群众“舌尖上的安全”。
Step4:若d 大于此阈值,则利用C 将曲线分成AC 和CB两条曲线,执行Step1-Step3 步骤;
Step5:所有曲线处理完毕后,依次将所有分割点相连形成的折线即可近似为原曲线,从而完成轮廓提取。
最终液位检测结果如图10 所示。
Fig.10 Final liquid level detection图10 最终液位检测
3 结果计算及分析
可以看出,最终检测出了一条水平线(见图10 中绿色,彩图扫OSID 码可见),整体图像矩形框出了箱头,下面框出箱底,输出为一个Rect 变量和一个绿色线高度,这是Opencv 中的一种数据类型,包含成员变量(x,y)(矩形左上角顶点)、width(矩形宽度)、height(矩形高度)。最终结果通过式(9)-式(11)计算:
其中关系对应如表1 所示。
Table 1 Variable relationship correspondence表1 变量关系对应
计算时需要先输入水箱(舱室)实际高度,可预先通过标准直尺测量,输入20(cm)。
Table 2 Device and software version model表2 设备及软件版本型号
本文利用水箱模拟船舱,基于上述算法对舱底液位进行检测试验,其结果如表3 所示。
Table 3 Test results表3 试验结果
经试验发现,本文设计的船舶舱底液位识别系统对液位测量的相对误差达3.27%,正确率达96.73%,具有良好的精确度。
4 结语
本文将图像处理技术应用于船舶舱室液位识别,将水箱模拟为船舶舱室,将提取的液位图像信息利用图像预处理实现图像去噪及灰度转化,然后利用图像阈值分割技术及滤波和形态学操作对图像作进一步细化处理,最后通过Douglas-Peucker 算法实现液位图像的轮廓提取。对提取的液位高度与实际高度进行对比分析,结果显示测量相对误差达3.27%,此方法已初步应用于部分损管项目。
该识别方法具有准确率高、泛化能力强、识别速度快、环境适应能力强等特点,可以取代浮子、压力式、超声波和雷达自动水位式等传统检测方法,且该识别方法可封装成智能识别系统,利用Java 接口提供第三方服务,部署灵活、适应能力强。未来可以继续深入挖掘舱室液位图像信息,将现场检测的干扰因素作为识别目标,实现环境自动检测异常预警,提高检测识别运行效率。