基于Hough变换和HSV彩色空间的电气盘柜状态识别
2022-02-16陆小锋刘学锋胡浩棋赵梓辰
戴 威,陆小锋,刘学锋,胡浩棋,赵梓辰
(上海大学 通信与信息工程学院,上海 200444)
0 引言
电气室设备的安全运行对电气化工厂的正常生产有着重要意义。目前,人工巡检仍然是国内进行电气盘柜巡检的主要方式,但人工巡检存在一系列问题[1],如由于工人的经验水平和责任心等因素造成误检、漏检;人工记录容易出现记录不规范、不完整的问题;电气室设备的辐射可能对工人的健康有影响。因此,研究智能化的巡检方法替代人工巡检具有重要的价值与意义。
电气盘柜状态主要由盘柜上的圆形指示灯的状态表示,黄灯亮表示设备处于异常状态,红灯亮表示正常工作状态,绿灯亮表示正常待机状态。可见,电器盘柜状态识别的关键点在于圆形指示灯的提取,指示灯亮灭状态识别,处于点亮状态的指示灯的颜色识别。文献[2]在HSV空间下进行色彩分割,再对候选区进行几何形状滤波,得到指示灯候选区。文献[3]中,在Lab空间进行图像增强来突出红灯和绿灯区域,然后通过镜像对称变换的特点筛选指示灯候选区,该方法的不足在于对黄色灯的识别性能较差。文献[4]利用指示灯灯区和背板特有的几何形状特征进行灯区的检测识别,再在HIS颜色空间中识别颜色类型,该方法的缺点主要是圆形指示灯的误检率较高。文献[5]在HSV颜色空间中,建立“红灯”、“黄灯”和“绿灯”的模型,以此得到各通道的分割阈值,再通过几何形状特征进行筛选操作,从而得到灯区候选去。最后通过CAMSHIFT算法[6]跟踪相邻图像帧中的指示灯。此方法在实际应用时需要学习样本图像的相关参数,从而导致实时性较差。
针对上述方法中的问题,本文提出一种基于Hough变换[7-9]和HSV彩色空间[10-12]的电气盘柜状态识别方法。首先对实时采集的盘柜图像进行预处理,得到二值化的边缘轮廓图像;再利用霍夫梯度法检测出二值化边缘轮廓图像中包含指示灯的圆,并通过RGB阈值筛选、连通域标记法和圆轮廓阈值筛选条件对无效圆进行剔除处理;然后根据这些圆圆心处图像的HSV特征值的V值判断指示灯的亮灭状态;最后根据圆边缘处图像的H、S、V值建立点亮状态的指示灯颜色判别模型,智能判断点亮指示灯的颜色类别(红、绿、黄)。实验表明,该方法能较快速、准确地识别出处于点亮状态的指示灯及其颜色,并且准确度与实时性均能满足实际需求。
1 总体方案
首先对前端巡检小车采集到的盘柜图像进行预处理,包括图像的灰度化、滤波去噪、边缘提取、归一化和二值化处理,从而得到边缘轮廓图像。然后对预处理后的图像进行霍夫变换圆检测得到指示灯区域。再对指示灯轮廓所在区域取HSV颜色空间中V分量判断指示灯的亮灭状态,若检测到无指示灯点亮,则表明盘柜为状态1,即未供电状态;若检测到有点亮的指示灯,则对处于点亮状态的指示灯通过确定圆边缘颜色检测模型和HSV颜色分量范围来进行颜色检测分类,确定指示灯的类别是黄灯、红灯和绿灯中的哪一种。若黄灯亮,则对应盘柜为状态2,即设备异常;若红灯亮,则表明对应盘柜为状态3,即正常工作;若绿灯亮,则表明对应盘柜为状态4,即正常待机状态。通过检测识别出指示灯的各种状态来对应电气盘柜的状态,从而完成识别(图1)。
图1 电气盘柜状态识别总体方案
2 图像预处理
图像预处理的目的是获取原始图像的边缘信息,为圆形指示灯检测做准备。图像预处理的步骤主要包括灰度化、平滑去噪、边缘检测、归一化和二值化等操作。原始图像作灰度化处理后,仅含有图像的亮度信息,即可在不减少有效信息的前提下压缩图像的数据量;平滑去噪过程是指通过滤波平滑技术尽可能减少图像中的冗余噪声;边缘检测是指通过边缘检测算子对滤波去噪后的图像的边缘信息进行提取的过程;归一化和二值化处理按照一定的阈值将图像的像素点转换成只有0和1两个值。
图像的边缘检测中最关键的问题是选择合适的检测算子,应用广泛的算子有Sobel算子和Canny算子[13-14]等,不同算子的应用场景和检测效果有一定的区别。当图像的灰度信息有良好的渐变特性或图像中包含较多噪声时,使用Sobel算子进行边缘检测的效果要更好;Canny算子不易受到冗余噪声的影响,并且能够提取单一像素的边缘信息,可以有效检测图像的弱边缘信息。结合指示灯图像噪声较多和有一定弱边缘的特点,本文选用Canny算子进行边缘检测。
首先通过灰度化处理得到灰度图像,然后使用高斯滤波器对图像进行滤波处理,去除原始图像中存在的噪声,再通过Canny算子对图像进行边缘检测获取图像的边缘信息,并进行归一化处理,最后再进行二值化处理得到像素值为0和1的二值化边缘轮廓图像,其中0代表背景,1代表边缘轮廓(图2)。
图2 图像预处理结果
3 指示灯提取
指示灯外形为圆形,因此,指示灯提取可以归结为圆检测问题。指示灯目标提取通过对预处理后的图像进行霍夫变换圆检测得到图像中的圆形指示灯。本文采用Hough变换圆检测算法从二值化的边缘轮廓图像中提取圆形指示灯。经典圆检测霍夫变换(circle hough transform,CHT)的主要思想是先将图像从空间域变换到参数空间中[15-16],然后通过图像边界点符合的特定参数形式来表示图像中的曲线,利用积累阵列来累加计算,则积累阵列中峰值对应点的信息即为所求。记{(xi,yi)|i=1,2,…,n}为图像中圆周上所有点的集合,(x,y)作为其中的一点,它在参数坐标系(a,b,r)里的方程为:
(a-x)2+(b-y)2=r2
(1)
标准霍夫变换(standard hough transform,SHT)将圆方程改写成极坐标的形式[10]:
(2)
考虑到传统霍夫变换圆检测存在的计算量较大和弱鲁棒性等问题,采用基于霍夫变换梯度法的圆检测方法进行指示灯的检测[17-18]。霍夫变换梯度法主要包括两步,首先为寻找图像中的圆心,然后通过所得圆心推导出圆的半径。由于是对同一个圆周上的点求梯度运算,则圆上所有点的梯度方向都应指向圆心处,所以基于此特征能够实现指示灯圆心的提取,霍夫变换梯度法的识别过程如下:
1)对图像进行边缘识别,计算边缘图像中的所有非零像素点的梯度值,再绘制它们的梯度线;
2)所有像素点的梯度线均存在交点,每个点都是一个累加器,存在一条线经过该点则累加器的数值加一,对所有点进行排序,依据预设阈值找到所有可能的圆心;
3)计算边缘像素点到圆心的距离,再将距离由小到大进行排序,并选择合适的半径;
4)对选择的半径设置累加器,对符合半径要求的累加器进行加1计算;
5)统计出所有可能的半径,继而完成圆的识别。
图3为利用霍夫变换梯度法进行圆检测的结果。
(0-点亮状态指示灯;1-除指示灯外的圆形物体;2-光斑;3-非点亮状态指示灯)图3 霍夫变换梯度法圆检测结果
由于图像中并不只是指示灯的形状为圆形,图3中标识1的物体和标识2的弱光照条件下炫光现象形成的光斑也呈圆形,上述算法也将把它们识别为圆。因此,需要进一步从检测出的圆中提取出与指示灯相关的圆。
针对标识1,其为电气盘柜上的非指示灯物体,与指示灯相比,它的特点相对较单一,即中心区域并不是像处于点亮状态指示灯那样趋近于高亮的白色。针对标识2,其为弱光照条件下采集图像时镜头表面炫光现象导致的指示灯圆形光斑虚像,虽然其中心区域也处于高亮的白色状态,并且其光晕和颜色特征等都与真实指示灯圆高度相似,但它的关键区别在于半径明显小于对应真实指示灯圆的半径。针对于标识3,其为处于熄灭状态的指示灯,它的特点也较单一,即其中心区域并不处于高亮的白色状态。
鉴于此,本文通过阈值筛选提取原始图像中符合指示灯颜色特征的候选区域,用于改进上述识别处理方法,使得在正常光照和弱光照条件下均能够准确有效提取出指示灯圆轮廓。RGB是以基色混合比例表征的且最常用的颜色空间,图像采集设备多使用此空间。通过对一定数量像素的逐一判别后,可确定红色、绿色及黄色指示灯轮廓区域的颜色筛选范围,如式(3)、(4)和(5)所示,RGB阈值筛选结果如图4所示。
R-B≥50 ∩R-G≥50
(3)
G-B≥70 ∩G-R≥70
(4)
|R-B|≥50 ∩ |R-G|≤50
(5)
图4 RGB阈值筛选结果图
弱光照条件下的炫光现象在不同情况下具有不同的形态,导致RGB颜色阈值筛选结果在利用霍夫圆检测之后出现图6(a)的现象,故需再做进一步的处理。指示灯轮廓及炫光在整体上呈现为中空的像素集合,而非指示灯轮廓区域多为实心的像素集合。考虑到指示灯炫光区域存在空洞的现象较普遍,而其他区域基本无空洞的特点,使用连通域标记方法进行搜索标记[19-20],并对每个连通域内包含的零点进行筛选和统计,此处的零点即像素值为零的点。
若某区域内由m行n列像素组成,则从当前区域第1行开始,获取当前行的所有像素点的坐标,记当前行的像素点总个数为T1,其中横坐标中最大值记为X1max,最小值记为X1min,若当前行所有像素点值均为1,则应满足:
X1max-X1min+1-T1=0
(6)
若不满足上式条件,表明其中必有值为零的点存在,同时,该式差值为当前行零点的数量,并记录第1行数值为零点的数量。当式(6)不成立时,对下一行进行同样的操作,即对于下一行,对应式(6)的值即为不为零时,可认为这两行为零的像素为相连的关系,继续记录数值为零点的数量。由区域第一行开始向另一端搜索,直到i=m时,则整个区域被搜索完毕,然后记录区域内部零点的数量,搜索下一个独立连通域。对一个独立的连通域进行搜索的过程如图5所示。
图5 区域内部零点搜索过程
使用连通域标记方法对弱光照下的指示灯样本进行形态特征处理,对每个区域进行标记。对搜索统计后的结果进行计算,判定圆圈内包含零点个数与圆圈内总像素点数量的关系是否满足圆轮廓筛选阈值条件,即圆圈内零点数量与圆圈外接矩形内所包含的总像素点数的比值大于0.8(经验值),若不满足该条件,则为无效圆轮廓(图6(a)中的标识1和3),予以剔除;针对标识2,由于光斑现象为镜头表面炫光导致,但其半径大小要明显小于对应真实指示灯圆的半径,则通过设置半径大小范围即可滤除掉该无效圆。圆轮廓阈值筛选处理结果如图6(b)所示。
图6 圆轮廓阈值筛选处理
4 指示灯状态识别与类别检测
指示灯状态识别指识别指示灯是处于点亮状态还是熄灭状态。首先将原始图像从RGB空间转换为HSV颜色空间。HSV颜色空间中V值代表了图像的亮度信息,指示灯在熄灭状态和点亮状态下,指示灯中心区域的V值具有明显差异,前者V值低,后者V值高。因此,可通过比较指示灯中心区域的V值来识别指示灯的亮灭状态。由于图3和图6中已经得到了圆形指示灯的圆心和半径,可以提取指示灯圆心的V值,判断其数值的大小,若大于预设阈值,则指示灯为点亮状态,否则,指示灯为熄灭状态(图7)。
图7 指示灯状态识别流程
接下来指示灯的类别检测,即判断处于点亮状态的指示灯的颜色。巡检小车采集的图像中处于点亮状态的指示灯中间区域呈现出高亮的白色,边缘区域呈红、绿、黄三种深浅不一、范围大小不一的晕边(与光照强度有关)的特点,统计表明,本文待检测的盘柜图像中,处于点亮状态下的三种圆形指示灯晕边的H、S、V值区间如表1所示。
表1 红、绿、黄三种指示灯在点亮状态下的
可以看出,三种指示灯在点亮状态下的晕边S值和V值区间没有明显差异,主要差异表现在H值不同上。当指示灯周边主要像素点的H值落在0~150和10~179区间时,为红灯,当落在35~90区间时为绿灯,当落在11~25区间时为黄灯。因此,可以提取点亮状态的指示灯边缘一定范围内的像素点,统计落在以上区域的像素点数,多数点对应区域的指示灯颜色就是该点亮状态的指示灯颜色。可见,确定合适的指示灯边缘颜色检测范围成为关键。本文建立图8所示的模型确定指示灯边缘颜色检测范围。
图8 指示灯颜色判别模型
(7)
5 实验结果分析
为了检验该方法的可行性与有效性,针对该方法的执行时间和识别准确度进行实验。图像采集设备为4mm焦距的海康威视高分辨率摄像机,分辨率为1 920×1 080,实验运行配置环境:Intel(R)Core(TM)i7-4790 CPU@3.60 GHz,内存为16 GB,操作系统为Windows10,安装了Visual C++ 2019并配置好OpenCV4.11图像处理库。
考虑到图像采集设备具有的鱼眼式特性,即采集到的原始图像会产生一定的倾斜畸变,于是将实验中的参数设定如下:①原始图像中有效检测区间为中间1/3;②Canny边缘检测中滞后阈值的高阈值和低阈值分别为threshold_h = 50,threshold_l = 40;③Hough变换圆检测中最大半径和最小半径分别为maxRadius = 15,minRadius = 35;④判断指示灯亮灭状态的预设阈值为threshold_v = 230;⑤指示灯颜色分类阈值参数见表1;⑥指示灯圆轮廓筛选阈值为0.8。图9为正常光照和弱光照条件下指示灯的识别结果,下面分别在方法执行时间和识别准确度两方面进行分析。
图9 不同光照下的指示灯状态识别结果
5.1 执行时间
本部分实验通过利用在霍夫梯度基础上结合具体应用场景而改进的本文方法对1 000张采集到的指示灯图像进行处理,然后得到每张图片的平均处理时间(单位为ms),以此来表明该方法在执行时间上的快慢,如表2所示。
表2 方法执行时间 ms
从表2中可看出,本文方法在检测图像的平均处理时间为125 ms,主要耗费时间在指示灯圆检测阶段(98 ms),通过检测指示灯圆形轮廓的边缘信息并结合了其几何特征,减少了不必要的运算,表明了本文方法在执行效率能够满足指示灯检测识别的实时性要求。
5.2 识别准确度
通过处理正常光照和弱光照条件下的1 000张原始图片,对本文方法在指示灯检测识别准确度方面做测试分析,这里的漏检率和错检率分别指的是检测图片中出现漏检测到指示灯的图片个数所占比例与错检测到非指示灯区域的图片个数所占比例,正检率指的是检测图片中各个点亮指示灯均能正常识别到的图片所占比例,各项指标检测结果如表3所示。
表3 方法识别准确度 %
从表3中可看出,红灯、绿灯和黄灯在正常光照和弱光照的条件下的漏检率与错检率均低于1%。三种指示灯在正常光照下的漏检率与错检率均低于弱光照条件下对应的检测率,这也表明方法在弱光照条件下进行检测时准确度会有一定的下降,但其下降幅度很小。本文方法在结合了霍夫变换梯度法的基础上,确定了准确的颜色分类区间并采用了指示灯边缘颜色判别模型,同时,为了解决弱光照条件下出现的过曝光问题,采用了RGB阈值筛选方法和候选圆区域的筛选方法,使得在不同光照条件下红色、绿色和黄色指示灯的识别准确度,即正检率均大于98%,能够更好地满足实际工程应用的检测识别要求。
6 结束语
本文提出了一种基于计算机视觉来检测圆形指示灯状态从而获取电气盘柜状态信息的方法,能够实现实时、有效地对采集图像中的多个红色、绿色和黄色圆形指示灯进行识别分类,对于不同光照条件下和采集视角偏差导致边缘轮廓出现部分畸变和缺失的指示灯图像,本方法也具有良好的识别效果;另外,本文提出的颜色分类检测模型使指示灯状态识别方法简单有效,可以提升识别指示灯状态的准确度。同时,在弱光照条件下出现过曝光时,也能进行准确有效地识别。开展该项研究工作对今后电气盘柜设备系统的智能监测技术进一步的研究发展具有一定的积极意义。