一种基于计算机视觉的数据中心机房设备巡检系统设计
扫描二维码
随时随地手机看文章
引言
数据中心机房内装载了大量计算机硬件设备,为保证这些设备的安全稳定运行,需要对其进行7×24h实时监控与巡检。常规的人工巡检方式通过查看计算机设备前后面板上的指示灯了解设备的当前运行状态,如电源指示灯、硬盘/IDE设备活动指示灯、网卡指示灯、系统异常指示灯等,根据不同颜色的指示灯代表的不同意义来判断设备是否发生异常。由于机房的设备数量较多,加上设备类型不一,品牌型号繁杂,巡检人员完成一次常规巡检需要耗费很长时间。此外,巡检人员工作强度大、内容枯燥,其间很容易产生视觉疲劳,出现人为漏检、误检的情况。鉴于此,为避免人为因素给数据中心带来风险,许多运维管理方开始尝试智能巡检方式。
目前,针对计算机设备的智能巡检大多采用动态识别设备的状态指示灯方式,即通过机器人上搭载的摄像头实现实时监测,并与设备正常指示灯状态的图像进行分析对比,如发现问题立即记录并报警。由于机房内环境、机器人位置及摄像头角度等都会对视频图像的获取产生一定影响,这就给图像处理增加了不小的难度,同时还降低了检测效率与准确率。为解决上述问题,本文研制了一种基于设备指示灯轮廓及颜色识别的智能巡检系统。
1系统工作原理及检测算法
本系统通过视觉系统对计算机设备前后面板进行检测,根据指示灯轮廓与颜色来判断当前设备的运行状态,发现异常后记录并报警。系统检测算法流程如图1所示。
2系统组成
2.1视频采集
本系统采用VideoCapture()函数调用外置摄像头获取视频图像,使用cap.read()函数按帧读取视频,通过调用cv2.resize()函数调整图像的尺寸,如图2所示。由于摄像头以30帧/s的速率采集视频,为减少图像处理时间,提高检测效率,本系统按0.5s的时间间隔截取视频。
图2视频图像采集
2.2图像颜色空间转化
HSV颜色模型采用色调(Hue)、饱和度(Saturation)、亮度(Value)3个属性来表示,它是一种比较直观的颜色模型,便于颜色对比,常用于指定颜色的分割识别。在opencv中默认读取图像是RGB通道,现需要转化到HSV颜色空间,本文采用cvtColor函数对颜色空间进行转换。
本文试验采集的设备指示灯主要有橙色、绿色与蓝色,其中绿色与蓝色为正常工作状态,橙色为异常状态。将上述3种颜色的RGB色彩值转化为HsV值后,可以浮动得到上下阈值,如表1所示。
2.3图像二值化处理
为了便于异常指示灯检测,需要选取合适的阈值对采集的图像进行二值化处理。在HsV颜色空间中,橙色阈值的上限与下限分别是[25,255,255]与[ll,43,46]。采用cv2.inRange函数设置阈值,去除背景部分,即将图像中低于橙色阈值下限的图像值变为0,将图像中高于橙色阈值上限的图像值变为0,介于两者之间的值变为255。
为了便于观察目标轮廓,本文利用cv2.bitWiwenots(函数对图像做取反处理,如图3所示,黑色区域表示图像中所有橙色部分的轮廓。
图3二值化图
2.4滤波处理
由于故障指示灯灯光通过机柜网孔门时会产生反射作用,因此采集的图像上产生了许多与目标颜色相同的区域或离散点,这对故障灯的识别产生了一定的干扰,为减少系统在上述情况下的误判,本文引入滤波处理方式。
常用的滤波方式有均值滤波、高斯滤波、双边滤波与中值滤波。
(1)均值滤波是一种线性滤波,主要是利用目标像素及周围像素的平均值代替目标像素值,公式如下:
(2)高斯滤波是一种线性平滑滤波,利用高斯函数计算出每一个像素点本身和邻域内的其他像素点的值,然后进行加权平均的过程。
(3)双边滤波是一种非线性滤波,利用空间距离的权重与灰度信息的权重的乘积得到最终的卷积模板。相比高斯滤波,其增加了灰度信息的权重,即在邻域内灰度值与中心点灰度值相差小的点权重更大,而灰度值相差大的点权重更小。
(4)中值滤波是一种非线性滤波,其主要原理是对图像中的目标点及该点的邻域中各个像素值进行排序,取中值来代替目标点的像素值。
采用上述4种滤波方式对二值化图像进行处理,如图4所示。
均值滤波、高斯滤波、双边滤波均未能过滤掉图像中的黑点,而中值滤波能够在滤除孤立噪声点的情况下较好地保留纹理信息,目标像素周围更接近真实值,图像质量较高。
2.5异常指示灯轮廓识别
由于报警灯外轮廓为圆形,而机柜门反光产生的图像轮廓为不规则图形,因此本系统采用cv2.HoughCircles()函数对中值滤波后的图像进行霍夫圆检测,它是基于图像梯度的方法实现的。其原理为对图像进行边缘检测,对边缘中的每一个非零点计算局部梯度,该梯度方向就是圆切线的垂线,三条垂线可以确定一个圆心,通过累加器得到重合度最高的圆心,从该中心的最小距离算起,选择非零像素最支持的一条半径,以此确定报警灯外圆。
如图5所示,图像左侧的干扰区域被系统过滤,报警灯处的区域被获取并进行圆心标记。
图5异常指示灯识别与标记
2.6报警
在系统识别出计算机设备指示灯出现异常时,采用cv2.rectangle()与cv2.putText()函数在监控视频图像右上角显示alarm报警信息,同时调用winsound模块来播放报警声音,向外界传递示警信号。运维人员可在第一时间关注到报警事件的发生并及时应对响应,极大地提高了设备故障处理效率。
2.7存储
为了便于运维人员后续处理、记录与查阅,本系统采用cv2.imwrite()函数对报警图像进行保存,并按时间依次命名文件。
3结语
本文设计的基于设备指示灯轮廓及颜色识别的视觉巡检系统,能方便运维人员及时准确地掌握机房设备运行状态,发现问题并立即处置,有效提升了人员对机房设备的远程管控能力,确保了数据中心机房的安全稳定运行:同时,还提高了人员的工作效率,降低了巡检成本。