彭 刚,杜 兵
(1.华中科技大学自动化学院,湖北 武汉 430074;2.图像信息处理与智能控制教育部重点试验室,湖北 武汉 430074)
变电站的巡检系统通过整合图像识别、机器人应用、模式识别等技术,实现对二次设备的自主检测[1-2]。对于实际应用,有些数显仪表不具备数据通信接口[3]。目前有多种方法处理定位问题。文献[4]提出边缘检测法。文献[5] 提出颜色检测法,文献[6]和文献[7]使用最大稳定极值区域法,文献[8]和文献[9]采用笔画宽度变换法等算法。但在复杂环境下,无法通过单一的颜色特征或边缘特征准确定位。而最稳定极值区域(maximally stable extremal regions,MSER)算法要求被识别字符是连通的,但样本不一定能够满足。笔画宽度变换(stroke width transform,SWT)算法必须保证数码管与背景有边界。由于数码管的发光特性,容易造成边界模糊。针对数显式仪表在复杂环境中定位问题,本文提出的算法不仅可以在复杂环境定位大小、颜色、亮度不同的数码管,而且能够适应一定的光照变化。
本文设计的粗检测器由以下三部分构成。①数显仪表特征图:通过颜色空间变换,根据颜色特征得到数显仪表的特征图。②阈值-标记分水岭算法:通过阈值的大小对区域进行标记,然后使用标记分水岭算法得到含有数码管区域的子图。③大津-分水岭算法:通过大津阈值法得到一个基准阈值,以基准阈值为基础使用标记分水岭算法,最终得到数码管区域。输入图片像素为2 976×3 968,而粗检测的定位不需要这么高的精度。为了加快处理速度,使用8倍下采样处理输入图片。粗检测器检测流程如图1所示。
图1 粗检测器检测流程图
特征图是指能够反映数码管显著特征的图像。在数码管不存在曝光过度的情况下,颜色是数码管的显著特征之一。数码管颜色特征可以通过一定的运算转化为某种颜色空间。对于RGB图片来说,红色数码管的红色分量远大于蓝色和绿色分量,绿色数码管的绿色和红色分量远高于蓝色分量。此外,图片背景环境多为纯色或有一定纹理的设备控制柜,一般不存在RGB某一分量过高的情况。即使有部分存在这种情况,也可以通过机器学习的方法排除。因此特征图为三个通道(R,G,B)的最大值减去最小值,如式(1)所示。
F(x,y)dif=f(x,y)max(R,G,B)-f(x,y)min(R,G,B)
(1)
式中:F(x,y)dif为显著特征图;f(x,y)max(R,G,B)为输入图像中每个像素R、G、B三个通道中的最大值;f(x,y)min(R,G,B)为输入图像中每个像素R、G、B三个通道中的最小值。
得到显著特征图以后,需要一个合适的阈值划分数码管区域和非数码管区域。当图像存在大量噪声或者局部不规则时,分水岭算法就存在过分割的问题,因此采用标记分水岭算法对其进行改进。标记分水岭算法预先对分水岭进行一定的标记。该算法将图像标记为三种类别:前景区域、背景区域、未知区域。算法流程如下。
①选择像素灰度值大于100的为前景区域。
②选择像素灰度值小于50的为背景区域。
③其他像素为未知区域。
上述处理过程只针对图片样本中的数码管不存在过度曝光的情况。如果数码管曝光过度,数码管的RGB分量就会很大,按照上述方法处理就会存在数码管漏检的情况。因此,还需要对分水岭算法处理完成的图片进行区域合并处理。其计算方法如式(2)所示。
W(x,y)=Watershed[F(x,y)dif∪f(x,y)max(R,G,B)]
(2)
式中:Watershed为分水岭算法处理函数;W(x,y)为领域合并后的图像。
在得到分水岭算法处理的图像后,有可能存在数码管区域断开的问题。因此,采用图像形态学的方法进行邻域合并,再通过连通域查找算法得到子图。为了防止数码管区域断开,对图像使用闭运算,再通过腐蚀运算去除图像的边缘毛刺及孤立斑点。
经过上述操作,可以得到多个数码管区域。每个数码管区域内部含有多个字符。下一步则是对数码管进行分割。
首先,进行图像灰度化。灰度化的方式有很多种,如最大值、最小值、普通灰度和平局值。但是对于样本来说,不能选择单一灰度化的方法。因为不同图像样本的数码管亮度不一致,由于数码管的发光特性,对于高亮度的图像来说,如果选择最大值算法进行灰度化,会导致数码管的边缘消失、相邻字符连接在一起,不利于图像分割。如果选择普通灰度化,则有的数码管区域过暗,导致同一个数码管字符被分割成两块区域。本文根据图像样本平均灰度值进行灰度化,具有较好的自适应性。灰度化公式如式(3)所示。
(3)
式中:f(x,y)mean(R,G,B)为图像中每个像素R、G、B三个通道的平均值;I(x,y)为算法输出的灰度图。
不同图片有不同的灰度级范围。为了便于后续的算法处理,图像必须具有相同的灰度级范围,因此对图像进行灰度拉伸。将8位灰度图像的灰度级归一化为0~255。灰度拉伸方法为:
(4)
式中:A=min [I(x,y)],为图像灰度值的最小值;B=max [I(x,y)],为图像灰度值的最大值;H(x,y)为拉升后的图像。
在得到拉伸后的灰度直方图后,即需要对图像进行前景与背景分割。一般使用大津阈值法[10]对图像进行二值化。这种方法对于大多数图片来说,有着不错的效果。但是如果图片过小且图像分布不均匀,则二值化效果差,将导致投影分割失败。大津阈值法错误结果如图2所示。
图2 大津阈值法错误结果图
导致错误结果的原因在于:大津阈值法以类间方差最大化为原则计算出阈值;而实际上,因数码管的光晕,图像样本的前景区域和背景区域有时会存在一个过渡的区域。由于不同变电站二次设备控制柜的数码管区域大小有时也不一致,标准大津阈值法并不能完全适用于所有图片。该方法清晰、较大的数码管区域处理效果较好,而对较小或者模糊的图像样本则处理效果较差。
本文提出了一种大津阈值法与分水岭算法结合的方法[11]。该方法采用分水岭算法来标记数码管边界,在大津阈值法算出的阈值基础上,再加上一个适当的固定值得到上界,减去一个适当的固定值得到下界。具体步骤如下。
①通过大津阈值法求出图像分割的阈值,记为C;
②将灰度值大于(C+80)的标记为前景区域;
③将灰度值小于(C-50)的标记为背景区域;
④其他的像素标记为不确定区域;
⑤通过分水岭算法确定区域。
为了验证算法的可行性,本文对2组不同变电站二次设备控制柜图像样本进行数码管字符分割试验,并以是否能通过投影分割得到正确字符个数作为评判依据。分割结果如表1所示。这种采用大津阈值法与分水岭算法结合的方法,对数码管分割具有很好的效果。方法1为普通的阈值分割,而方法2为大津阈值法和分水岭算法结合的算法。
表1 分割结果
细检测器检测流程如图3所示。
图3 细检测器检测流程图
得到二值图像后,对图像进行投影分割[12],可得到数码管的单个字符; 只要找到图像中的间断点,就可以完整地分割图像。但是初检测器只是检测有一点颜色和有一定边缘的问题,而在控制柜也存在如此特征的非数码管区域,因此需要将其排除。本文直接排除较小或者长宽比例等不符合数码管几何特征的区域。而对于其他的区域,本文采用局部二值特征(local binary pattern,LBP)[13]作为区域的特征,然后使用支持向量机(support vector machine,SVM)[14]进行分类。
LBP是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性等优点。LBP特征计算简单、效果较好。LBP特征在特征提取中得到了广泛的应用。在不同的图像样本中,数码管会存在一定的颜色变化。因此,采用具有灰度不变性的LBP特征,会有很好的效果。由于LBP特征也会产生二进制模式过多的问题,因此,Ojala提出了一种“等价模式”来对LBP算子的模式种类进行降维[15]。他在统计观察中发现,实际图像中最多只包含2次1到0或者0到1的跳变。因此,等价模式的定义为:当LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变。该LBP所对应的二进制就称为一个等价模式类,这会使LBP模式大量减少。对于3×3邻域内8个采样点来说,二进制模式由原始的256种减少为58种。特征提取流程如下。
①将投影分割后的单个数码管字符区域图像归一化为32×48像素。
②区域分为2行3列、大小为16×16像素的区域。
③区域中每个像素,提取等价模式的LBP特征。
④计算每一个小区域的统计直方图,然后对区域作归一化处理。
⑤由每个小区域的统计直方图可得维度为58的特征向量,总的输入特征向量的维度为348维。
得到图像特征以后,使用SVM通过图像特征对图像进行二元分类[16]。
SVM的基本思想是通过非线性变换,把原数据空间变换到某一高维的特征空间;然后在这个空间中求取最优线性分类面,使得该超平面将两类样本正确无误地分开,且使分类间距最大。这种非线性变化通过定义适当的内积函数来实现。SVM 的特点在于:根据有限的样本信息,在模型的复杂性和学习能力之间寻求最佳折中,以获得最好的泛化能力。
选择SVM核函数为线性核函数。为使其具有较好的泛化能力,采用交叉验证和网格搜索确定参数[17]。交叉验证可以有效选取SVM的最优核参数和最优惩罚系数,同时避免过度拟合。网格搜索法的基本原理是让参数在一定的范围划分网络,并遍历网格内的所有点进行取值,最终取使得训练集验证分类准确率最高的参数作为最佳的参数。
本试验取正样本图片594张、负样本图片372张。其中:400张为正样本、240张负样本为训练样本。训练结果如表2所示。
表2 训练结果
为了验证算法的有效性,在Interi7-5500U(2.4 GHz)、4 GB内存、Ubuntu 14.04(64 bit)环境下,使用C++实现该算法。为了保证数据与真实环境一致,采用了30张来自真实环境的数显式仪表。30张样本图片的处理结果由人工进行判断,识别算法采用“穿线法”,定位结果如下。
数码管区域个数72个;数码管字符个数261个;多定位字符个数1个;无漏定位字符个数。
由以上结果可以看出,算法具有很好的鲁棒性,不仅能适应一些模糊的图像和光照变化的场景,而且能适应不同大小或颜色的数码管。
由于不同图像所含数码管字符的个数不同,因此,单个样本的执行时间大不相同。对于一个典型样本,4个数码管字符的样本算法执行时间平均为820 ms。该结果满足项目要求。
本文在分析数码管颜色特征的基础上,使用分水岭算法实现了数码管区域粗定位。采用结合数码管的颜色特征和边缘信息的算法,使用大津阈值法和分水岭算法实现前景与背景的分离。在前景图片上,使用投影分割的方法对数码管区域进行有效的分割;对于非字符区域,则采用LBP特征提取和SVM分类算法进行排除。该设计能较好地实现数码管字符定位。本文所提出的方法不仅适用于变电站二次设备智能巡检系统,而且适用于其他场合的数显仪表图像定位与识别系统。