基于HSV 颜色空间的运动目标识别
2020-08-06付长斐李会军
付长斐,叶 宾,2,李会军,2
(1.中国矿业大学 信息与控制工程学院,江苏 徐州 221116;2.徐州市人工智能与大数据重点实验室,江苏 徐州 221116)
0 引言
运动目标跟踪一直是机器视觉领域的研究热点之一,其在军事侦察、精确制导、火力打击以及安防监控等领域有着广泛的应用前景[1]。感兴趣区域(region of interest,ROI)检测将人类的视觉注意机制引入到图像分析过程中,对于提高现有图像分析系统的工作效率有着积极的作用。雷琳等在目标跟踪算法中利用ROI 图像匹配来克服目标状态匹配误差的影响[2]。选取适当的ROI可以保证在足够的特征识别信息前提下,尽量减少数据量,降低外界噪声的影响,有效地提高识别系统的准确性和有效性[3]。这种技术被广泛应用于各种图像处理相关的算法中,李琦等在手背静脉识别中提出一种消除了平移和旋转影响的ROI 提取算法[4],陈高攀等在前方车辆检测算法中包含了ROI 提取的部分[5],Park 等设计的压力评测算法中以脸部图像为ROI 来评估压力值[6],古新展等将ROI 提取应用于CT 图像处理中用来分析器官和组织[7]。
1 ROI 检测法
本文提出一种基于HSV(hue saturation value)颜色空间、把灰度图像阈值分割和HSV 颜色判别相结合的ROI 提取方法。使用C++开发的程序已被成功应用于2018 年RoboMaster 全国大学生机器人大赛中,实现了对装甲灯柱的实时准确提取以及对移动机器人的实时跟踪。应用结果表明,该ROI 提取方法具有速度快、准确性高、抗干扰能力强等优点。
ROI 检测也是许多机器人比赛中进行动态视觉目标检测与识别的基本环节。快速而准确地识别出敌我双方目标,对于实施精准打击、快速救援等具有重要意义。在RoboMaster 全国大学生机器人大赛中,常见的检测目标是安装在移动机器人四周的4 个装甲,以红色或蓝色灯柱区分,如图1 所示。
图1 RoboMaster 机器人大赛装甲示意图Fig.1 Schematic diagrams of the armors in the RoboMaster robot competition
针对图1 所示红、蓝装甲的彩色灯柱,装甲图案识别之前需要获得灯柱的位置信息来提取装甲ROI。常用的ROI 提取工具有边缘检测算法[8]、阈值分割算法[5,9-11]、几何描述及形状描述[12],这几种方法分别根据边缘信息、亮度信息以及图像区域的形状、面积、长宽比等信息来提取ROI。边缘检测算法在很多领域得到应用,是一种成熟的图像分割算法,同时还衍生出了应用于不同领域的算法,如基于自适应Canny 算子边缘检测的电流互感器裂缝检测算法[8]。然而,一幅像素为640×480 的图像在I7-7700HQ 平台下应用Canny 算子仅仅处理边缘检测部分,且速度较慢,通常都在50 帧/s以下;同时边缘信息还需要结合几何形状描述算法才能达到检测目的,有时这些条件并不具备。此外,灰度阈值分割对于环境光的变化比较敏感,主要依赖于之后的几何描述算法来滤除伪ROI,因此难以实现较好的提取效果,且过于依赖灰度阈值分割,容易因环境光的变化导致系统失效。
上面所述的方法都没有将目标物体的颜色信息加以合理的利用。考虑到人眼对颜色信息十分敏感,比如人眼可以轻易地识别出机器人比赛中的灯柱,同理,可以让计算机去模仿人眼对颜色的辨别,将颜色特征用于ROI 的提取算法中。
本文所述的机器人装甲检测程序在多种复杂比赛环境中,不需要调参即可获得稳定效果。在比赛过程中,利用工业相机每秒钟采集150 张640×480 的图像并送入到I7-7700HQ 嵌入式处理器中,结合灯柱匹配以及SVM 分类算法,每秒能够输出约100 帧的检测结果。当操作员发出跟踪指令时,云台能立即摆动并对准相机前方的敌方机器人装甲。在整个比赛过程中,算法表现稳定出色。
2 HSV 颜色空间
HSV 是由Alvy Ray Smith 在1978 年根据颜色的直观特性创建的一种颜色空间。这种颜色空间在各种图像分析任务中多有应用,例如可以用来做肤色区域分割[13]。HSV 颜色空间通过色度H(hue)、饱和度S(saturation)和明度V(value)3 个分量对色彩进行描述[14]。如图2,色度H用角度度量,绕V轴旋转360°构成一个圆;饱和度S是一个比例值,取值从0 到1,当S为0 时表现为无色[10];明度V表示像素的明亮程度,范围从0 到1。在OPENCV 算法实现时,H被量化为0~180,V和S均被量化为0~255。这种颜色表示方式和孟塞尔表色模型非常接近,与人眼视觉对颜色信息的感受方式相同。鉴于人眼能够轻易地分辨出彩色灯柱,故选用这种颜色模型是有一定优越性的。HSV 颜色空间的3 个分量具有相对独立性,而H和S分量受光照及阴影遮挡的影响很小,这也是选取HSV 颜色空间对目标进行识别的原因之一[15]。
图2 HSV 颜色空间模型Fig.2 HSV color space model
将计算机常用的RGB 模型转换为HSV 模型有一定的计算量,因此对整幅图像进行转换不能满足系统设计的实时性要求;但是用来处理阈值分割和形状描述之后得到的伪ROI,效果很好。在由RGB 颜色空间向HSV颜色空间的转换中,r,g,b分别是RGB 颜色模型中一种颜色的色品坐标,色品坐标值是0 到1 之间的实数。式(1)和式(2)给出了从RGB 模型的r/g/b3 个值到HSV 颜色空间中H/S/V3 个值的转换方法[16],取
则
式中:H∈[0°, 360°];S∈[0,1];V∈[0,1]。
色品坐标r,g,b可由式(3)计算得到[17]:
式中:R,G,B分别表示一个像素在红色、绿色和蓝色3 个通道的数值,取值范围一般为0~255。
RGB 这3 个通道的数值及对应的颜色在图3 中有直观体现[18]。式(2)中的HSV 参数在OPENCV 计算机视觉库中被归一化后,根据选用数据结构的精度进行量化。
图3 RGB 颜色模型Fig.3 RGB color model
3 ROI 提取算法描述
3.1 算法概述
基于HSV颜色空间的图像ROI提取算法如图4所示。首先,将RGB 空间的原图(图5)转化为灰度图像,经过阈值分割可以把图像中较暗的区域滤除。此过程中阈值之所以被设置得较低,是因为在复杂环境中灯柱亮度反映在图像中是在一定范围内变化的。通过矩形度和形状描述,筛选出符合矩形条状的轮廓;用这些轮廓的外接矩形作为掩模,可得图6 所示的伪ROI图像,这时基本上保证伪ROI 中的图像都为较亮的矩形条状或者具有类似的特征。
图4 ROI 提取算法框图Fig.4 Flowchart of the ROI extraction algorithm
图5 带蓝色装甲的移动机器人原图Fig.5 Original image of a moving robot with blue armors
图6 矩形拟合所得伪ROI 图像Fig.6 Pseudo ROI image after rectangle fitting
伪ROI 已经大大减少了数据量,此时将ROI 转换至HSV 空间,提升了整套算法的速度;再结合HSV 滤波的精度,实现了准确度和速度俱佳的ROI 提取算法。整个算法流程如下所示。
输入:一张彩色图片
输出:彩色灯柱ROI
当该帧不为空时:
(1) 对灰度图阈值分割,设置阈值为185,得到二值图并寻找轮廓;
(2)在二值图中提取轮廓,找出所有轮廓的最小包围矩形,计算轮廓面积和最小包围矩形面积;
(3)在面积大于200 且小于5 000 的轮廓中,保留轮廓面积与最小包围矩形面积比值(矩形度)大于0.5 且旋转矩形长宽比大于1.67 的轮廓;
(4) 在面积小于200 的轮廓中,保留面积大于30(确认不是噪点)、旋转矩形长宽比符合要求的轮廓,与第(3)步不同的是,这里对长宽比要求更高,阈值为3 以上;
(5)根据第(3)步和第(4)步所得轮廓,绘制垂直包围矩形并扩大,使其包含大部分光晕,根据垂直矩形获取原图子图,并转换为HSV 空间;
(6)统计每个子图中HSV 及RGB 参数符合条件的像素数量,若该矩形中符合条件的像素占整个区域的比例达到30%,则判定为蓝色灯柱目标。
当该帧为空时:继续采集下一帧图像。
返回彩色灯柱ROI
整个系统中,灯柱检测和左右灯柱匹配为主要耗时部分。在实际应用中,为使单片机稳定地输出电机控制信号,需要视觉识别算法的处理速度达到50 FPS(frames per second)以上。采用该方法检测灯柱的帧率可以达到110 FPS 以上。在ROI 框定之后,用于模式识别的数据量已经很小,且采用SVM 分类耗时不长,视觉处理系统能够为单片机提供较高帧率,从而保证电机控制的连续性和稳定性。
3.2 算法详述
3.2.1 伪ROI 获取
把二值图轮廓分为面积在[30, 200]和[200, 5 000]两种,对轮廓画出最小包围矩形。对于较大面积轮廓,计算轮廓面积为S1,最小包围矩形的面积为S2,那么轮廓矩形度被定义为R=S1/S2。如果R>0.5,并且长宽比大于1.67,则认为形状符合要求。对于较小面积(640×480图像中面积小于200)的轮廓,要求最小包围矩形长宽比在[1/3,3]范围内。因为当目标距离较远时,形状特性已经不明显,只需要轮廓为条状即可。将获得的轮廓保存在轮廓数据结构中,用OPENCV 中的工具画出boundningRect,将矩形框按轮廓比例稍微扩大,使矩形框充分包括光晕,得到图6 中所示区域。
3.2.2 HSV 滤波
根据式(2),将图6 中伪ROI 转换为HSV 颜色空间图像,如图7 所示。区域内同时满足以下条件的像素点可判断为蓝色:
(1)RGB 空间中,R(x,y)<150;
(2)H(x,y)∈[100,124];
(3)S(x,y)∈[150,255];
(4)V(x,y)∈[100,255]。
图7 伪ROI 转换为HSV 颜色空间Fig.7 Pseudo ROI transformed to HSV color space
将矩形框和满足条件的像素点画出,得到如图8 所示的判别结果。筛选像素所用的HSV 颜色模型参数可以由表1 及多次试验获得,表中红色占两列,这表明红色像素的色度值占据两个区间。由图8 可以看出这种颜色判别方法的效果:4 个属于蓝色灯柱的矩形框中有很多蓝色像素被判别正确,而非蓝色灯光轮廓的包围矩形中几乎没有被判定为蓝色的像素点。
图8 颜色像素值判别结果Fig.8 Result of the color pixel value judgement
表1 HSV 颜色空间颜色参数列表Tab.1 List of the parameters in HSV color space
4 实验结果及分析
为验证本文所提算法的有效性和可行性,选择实验平台Intel I7-6700HQ 和操作系统Ubuntu 16.04,采用C++和OPENCV 实现算法。选取该平台对640×480像素的1 000 张RoboMaster 机器人大赛图片进行处理,平均运行速度为102.33 帧/s,灯柱平均识别率为97.4%(识别到灯柱数占组图中总灯柱数的比例)。图9示出其中一幅图片的检测效果,蓝色灯柱都被检测到,并用红色框示出。图中每个框的角度、长宽及中心点位置都被储存在用C++语言定义的旋转矩形类当中。黄色框线框出的是高亮度条状物体,即前面所说的伪ROI;在黄色框线区域内部如果有红色框线,表明此ROI 为符合算法要求的ROI。任意输入一幅符合格式要求的图像,该算法会自动画出黄框和红框,即能得到符合要求的灯柱位置及形状信息。测试结果表明,本文所提算法能够为STM32 单片机实时提供大量目标的角度及坐标信息,结合云台控制算法,可实时跟踪打击移动机器人。
图9 检测效果Fig.9 Result of the detection
5 结语
本文提出了一种基于视觉目标亮度特征、轮廓形状特征和颜色特征的ROI 提取算法,用于识别图像中的彩色灯柱,以此作为机器人装甲识别的基础;结合阈值分割和形状描述得到伪ROI,减少了数据量;利用HSV 颜色空间快速而准确地判定颜色,解决了灯柱本身表现为亮白色而只有周围的光晕表现为彩色所带来的检测困难。实验和实际应用结果表明,本文所提算法鲁棒性强、准确性高、速度快,依此很好地完成了机器人比赛中实时跟踪装甲目标的任务。
该方法在比赛应用中能成功的原因,一方面在于其从多个角度准确地描述了目标的特征;另一方面是其将算法中计算量大的部分(例如从RGB 颜色空间到HSV 颜色空间的转换等)放在算法靠后的部分,这时只需处理图像中少量的感兴趣区域,从而提高了算法的效率。这种结合亮度、形状和颜色的描述对于非目标图像要求很严苛,而对于机器人在移动过程中产生的不同目标子图的要求却很宽松。本方法利用HSV 颜色空间去除亮度与颜色之间相关性的优点,对于颜色和形状特征结合后与背景有明显差别的特征提取具有很好的参考价值。在后续的研究中,将进一步提高算法运行速度,同时克服背景干扰及噪声对算法产生的影响。