基于机器视觉的快速水尺刻度提取技术
2018-04-24黄林陶青川沈建军
黄林,陶青川,沈建军
(四川大学电子信息学院,成都 610065)
0 引言
水资源和水安全问题严重影响国民经济的发展,因此国家水利部门急切需要建立一套有效的水情监控系统,并能精确、实时地对江河、水库和大坝等进行水位的监测。目前国内大多水文检测站使用传统测量方法进行水位测量。
传统水位测量方式主要有安装水尺目测读数和使用传感器自动采集水位相关的模拟量再转换为水位量两种[1]。其中目测测量方式效率低、实时性差以及恶劣情况下无法读取等缺点;而使用传感器测量方式成本高、难以维护、受环境影响大等缺点。
目前,国内很多监控水位监控站点建设有摄像头并配备了标准的水尺,为通过图像处理的方式识别水位提供了硬件条件。国内外许多学者采用不同的图像处理的方法对水尺识别做了一些研究工作[1-7]。但是,目前水尺水位的提取存在无法有效分隔清澈水面上水尺倒影和水尺本身[2-3]、识别刻度采用K-means聚类算法无法满足实时性的要求[1]、在复杂背景的江面上需要人工辅助定位[4]以及基于双目视觉需要两个摄像头且需要水平面参考基准[5]等问题。国内学者提出的基于色调的能量函数方法[7]实现水尺定位,而该方法对于背景相对单一的场景具有很好的效果。而本文场景是基于河流、湖泊以及水库背景相对较复杂的场景上述方法无法有效的定位出水尺,例如图1(a)所示的图中,基于色调的能量统计图如图1(b)所示。
图1 基于全局色调能量函数结果图
本文首先在嵌入式设备中获取摄像机的实时视频,然后检测和矫正水尺图像并准确分割水尺和倒影,最后快速准确地得出了水尺刻度,研究表明该算法具有很大的工程实际意义。算法系统框图如图2所示。
1 水尺目标定位
水尺定位是准确获取水尺刻度线的关键。所以,水尺定位的目标是精准定位水尺在图像中的位置,并有效检测和分割水面上的水尺和水下的倒影,消除水尺倒影的影响,同时裁剪图像中水面上的水尺。此过程主要有:预处理、水尺定位和裁剪以及倾斜矫正。
图2 算法系统框图
1.1 预处理
水尺在清澈的水面上容易形成清晰的倒影,造成算法容易将水尺倒影误识别为刻度。而基于色彩空间模型的水位识别算法的理论基础是在不同的光照中,场景中待检测目标物的色彩亮度有明显的差异,然而它们的色调基本能够保持一个比较稳定的值[4]。因此在HSV色彩空间下能够有效地分割水尺和水尺倒影。
解码后的数据常为RGB格式,因此需要将水尺图像按式(1)、式(2)、式(3)将其转换到 HSV色彩空间,以便于后续的图像的二值化。
将从摄像机采集到分辨率为958×1280的原始图像f(x,y),见图3(a),对其转换到HSV色彩空间,然后对图像按照表1对红色取值范围内的色彩进行二值化,得到图3(b)所示的二值图像。
其表 1,Hmin,Hmax,Smin,Smax,Vmin,Vmax分别是各个颜色的HSV分量的最小和最大值。
1.2 水尺定位和裁剪
由图3(b)可知,水尺在二值图像中所占面积最大。因此利用形态学处理将水尺图像膨胀使得水尺在图像中连通,提取最大的连通区域即可粗略定位水尺。
表1 各个颜色HSV对照表
图3 原始图像的预处理
膨胀在数学形态上是连接物体的边缘点,使得边界向外扩展的过程[8],其数学表达式如下:
对3(b)的二值图像经过膨胀操作,其膨胀后的图像见图 4(a),并计算图 4(a)中连通区域的面积,其最大的外接矩形即为水尺目标所在的区域;然后在原始图像f(x,y)上剪切最大外接矩形所在区域的水尺目标,得到图 4(b)所示。
图4 外接矩形粗略定位
基于膨胀裁剪的水尺图像使得比真实水尺图像略大,同时在清澈水面下剪切的水尺图像的下边界还存在部分的倒影。该倒影会严重影响对水尺刻度的识别精度。如4(b)所示水尺图像上的刻度具有很强的水平边缘信息以及周边环境几乎没有水平边缘信息特点,利用水平边缘信息和扫描线法[9]再次裁剪水尺的左右区域。常见的边缘信息获取算子有Roberts、Sobel、Pre-witt以及Canny等。本文基于算法的复杂度以及实际效果考虑,采用了Sobel算子进行水平边缘的检测,然后对图像的每一列进行扫描,其示意图如图5(a)所示,统计像素跳变次数,统计方法如式(5)所示,即上一像素与下一像素逻辑异或处理,最后确定跳变次数连续大于阈值C的扫描线中的起始位置x1和终止位置x2,并再次裁剪得到如图5(b)所示,阈值设定为10。
其中,代表x行y列的像素值,Nx代表x列的像素跳变个数,^代表逻辑异或。
同时,色度和亮度是相互独立的,在水面上下部分,物体的颜色的亮度会呈现比较大差异,见图5(c)。
故对水尺图像的饱和度(Saturation)进行建模,设计统计函数Ey对每一行的饱和度进行累加,如式(6)所示。
其中,height为水尺图像的高,x1和x2分别为扫描线确定的起始和终止位置。
由于膨胀操作使得截图部分尺寸大于真实的水面水尺,为减少运算量,故式(6)是从截取图像的下半部分对饱和度进行能量统计,并对Ey归一化,得到如图5(e)所示能量函数图。由图5(e)能量统计图观察知,倒影部分的能量明显偏低,故设定阈值即可找到水尺的下边界,取阈值为0.25,重裁剪后的水尺图像如图5(d)所示。
1.3 倾斜矫正
图像的倾斜矫正的核心在于如何确定待检目标的倾斜角,目前倾斜角的检测主要分为5类:基于变换的方法,基于投影特征的方法,基于交叉相关性的方法,基于变换的方法和最近邻簇方法[11]。
目前常用的5种倾斜角度检测方法都存在计算复杂度高的缺点,并且这些方法一般适用于文档图像和车牌图像的校正,对于水尺图像倾斜校正缺乏适应性,存在较大的误差[11]。考虑嵌入式设备的计算能力和效果,该五类算法并不能适用于水尺刻度的矫正。本算法根据水尺几何特性,利用水尺定位和裁剪过程中的最大连通区域的最小包围矩形,获取该连通区域的倾斜角θ。其最小包围矩形不用循环迭代方式即可获取到倾斜角,适用于嵌入式设备,其最小包围矩阵如图6(a)。
假设图像某点坐标P(x0,y0),矫正坐标为P1(x,y)则旋转矩阵如式(7)所示:
矫正前后的水尺图像对比图如图6(b)、6(c)所示:
图6 矫正前后对比图
2 水位刻度提取
水尺的左半部分的数字会影响正确识别水尺水位识别结果,所以算法首先需要消去数字字符,然后进行连通处理,最后获取连通区域的个数,其个数即为水上的水尺刻度个数。此过程主要分为:消除字符、连通性分析提取水尺刻度。
图5 水尺裁剪过程
2.1 消除字符
如图6(c)所示,将水尺图像分为左右部分,利用闭操作对水尺的右半部分做形态学处理,使得右半部分能够完全填充字符区域同时不影响右半部分的空白区域,然后利用右半部分消去左半部分的数字。
闭操作能使得轮廓平滑,同时能够消、消弭狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓中的断裂[8]。根据水尺图像的特点,可采用大小为水尺图像宽的1/4作为形态学处理的核,有效地将右半部分刻度区域填充。
使用结构元素B对集合A进行闭操作,表示A∙B,其数学定义如下:
假定原水尺图像为f(x,y),闭操作后的左半部分和右半部分水尺图像分别为 f1(x,y)、f2(x,y),则用右半部分的像素取反后与左半部分进行逻辑与就可以消去左半部分的字符,按式(9):
水尺消去数字前后如图7(a)和图 7(b)所示。
2.2 连通性分析提取水尺刻度
水尺图像在消去数字后,可能存在部分左右刻度线连接在一起的情况。因此,需要先断开左右部分的刻度连接。形态学开操作能够有效地消除细小的突出物以及在纤细处分离物体[8]。
使用结构元素B对集合A进行开操作,表示A∘B,其数学定义如下:
然后采用算法复杂度比较低的Sobel算子做水平边缘检测,断开水尺刻度之间的连接处,同时采用大津法(Ostu)对图像做二值化。其二值化图如图7(c)所示。
最后统计图7(c)中的连通区域个数就是水尺的刻度。连通区域检测结果如图7(d)所示。
3 实验结果
本文算法的验证实验在树莓派嵌入式设备,Ubuntu 64操作系统、OpenCV3.2.0版本的开源库进行,采用最小刻度1cm的红色水尺,并用手机采集了分辨率为958×1280,不同水位高度、拍摄角度以及水面清澈程度下的118张图像,来识别图像中水面部分的水尺的刻度个数,并以此计算水位高度。典型实验如图8所示以及部分水位提取结果分析如表3所示。
图7 连通性提取水尺刻度
图8 典型实验结果图
表2 不同场景下部分水位提取结果分析表
从表2可以看出,算法的误差大概在1cm左右,并能有效地解决倒影问题,适用于工程水尺水位检测的误差要求,同时算法的平均识别速度82.18141ms,基本达到实时要求,可以对视频每5-10帧做一次水位检测。
4 结语
本文是基于机器视觉提出的水尺测量算法,可广泛运用于各监测站点的水位测量系统中,能快速和较小误差获取水尺刻度。水尺刻度提取方法将标定好的摄像机采集到的水尺图像在HSV色彩空间下,使用扫描线以及形态学处理的方式定位并分割水尺与倒影,同时裁剪水面上的水尺图像,然后通过最小外接矩形矫正水尺图像,最后采用连通性分析得到水尺的刻度。实验结果表明,该算法能够快速和较小误差的识别水位刻度,其水位刻度误差在1cm左右,满足水利行业对水位高度计算的要求。算法在夜晚存在颜色无法提取使得不能识别水尺刻度的弊端,有待于后续的改进。
参考文献:
[1]仲志远.一种基于图像识别的水位测量算法[J].国外电子测量技术,2017(6):96-99.
[2]李翊,兰华勇,严华.基于图像处理和BP神经网络的水位识别研究[J].人民黄河,2015(12):12-15.
[3]高姗姗,周新志,雷印杰.基于图像处理和稀疏表示的水位识别研究[J].人民黄河,2016(12):52-56.
[4]王莹.基于图像处理的水位监测系统的研究与实现[D].西安电子科技大学,2014.
[5]石晗耀,陶青川.基于双目视觉的水位测量算法[J].现代计算机,2017(8):55-59.
[6]张阳.基于计算机视觉的河流水位测量系统设计[D].太原理工大学,2014.
[7]高晓亮,王志良,王馨,等.基于HSV空间的视频实时水位检测算法[J].郑州大学学报(理学版),2010(3):75-79.
[8]冈萨雷斯.数字图像处理(MATLAB版)[M].北京:电子工业出版社,2004.
[9]石贵民.基于扫描线的新型车牌定位方法研究[J].科学技术与工程,2014(8):218-221.
[10]ZhangZhenyou.Flexible Camera Calibration by Viewinga Planefrom Unknown Orientation,International Conferenceon Computer Vision[C].Kerkyra:IEEEXplore Digital Library,1999.
[11]姜兵.基于图像识别的远程水位监测系统研究[D].西安电子科技大学,2011.