吴国栋,张爱梅,黄 晓,姚鹏威
(郑州大学 机械工程学院,河南 郑州 450001)
随着计算机视觉和视频监控的广泛应用,智能交通得到了快速发展,在目前的智能交通视频监控中,检测车辆运动状态是主要任务之一.在检测车辆时,由于车辆的阴影跟车辆本身具有相同的运动属性,车辆的阴影也常常被误检测为车辆本身,造成运动目标的合并、几何变形、消失等,从而影响检测结果,降低了目标检测准确率,给后续的工作带来麻烦.因此车辆的阴影去除对正确检测车辆目标至关重要,也是目前研究的热点之一.
目前已经有很多国内外学者对阴影去除进行了深入的研究,文献[1]给出了基于图像序列的阴影检测方法综述,将现有的检测方法按照所使用的特征进行分类,其中最常见的是基于阴影特征的检测方法,它直接利用阴影的颜色、纹理等固有属性特征来识别阴影区域.文献[2-3]利用阴影在颜色空间的特征来进行检测,但当车辆颜色和阴影颜色较为近似时,容易造成误检.文献[4-5]利用阴影的纹理不变性进行阴影检测,但对于纹理特征不明显的车辆,误检率较高.文献[6-7]利用阴影的边缘特征进行阴影检测,但是在阴影区域内包含复杂背景时,检测效果就不太理想.虽然检测阴影的方法很多,但因为道路交通的复杂性,基于单一特征的检测方法很难做到精确检测,阴影检测率较低.文献[8-10]通过将两种阴影特征融合的方法实现阴影消除,但检测率提升有限.因此笔者应用一种多特征融合的阴影检测方法,来解决单一特征阴影检测率较低的问题.应用多特征检测可以结合多种特征的优点,对误检部分进行抑制,能更好地适应多种复杂环境,进一步提升阴影检测率.
首先,通过高斯混合背景建模的方法进行背景建模和前景运动目标提取;然后,根据阴影在HSI(hue-saturation-intensity)颜色空间的特点,将前景中像素点的H、S、I分量分别与背景中对应像素点的三个分量进行比较,初步检测出目标的疑似阴影区域,再对前景运动目标进行纹理和边缘提取.由于一种方法都只能提取部分运动目标,而两种方法结合可以得出真实的运动目标.最后,再与前面提取出的疑似阴影区域结合,剔除非阴影的真实目标区域,得出全部的真实阴影区域,从而实现消除目标阴影得到真实运动目标.这种算法通过对广为使用的阴影检测基准视频进行测试,测试结果良好,证明该方法是可行的.本文算法框图如图1所示.
图1 本文算法框图
针对运动车辆图像序列,在读入原始图像Fr后,如图2(a)所示,首先进行混合高斯背景建模,提取前景运动目标,再经过形态学滤波操作后,寻找并绘制填充前景轮廓,得到前景运动目标区域,包括车辆本身和车辆阴影区域F,如图2(b)所示.
图2 运动目标检测
在研究物体阴影时,按照人们的视觉感知系统对阴影的认识,可以知道阴影区域的像素点的亮度明显降低,色调和饱和度变化不大.根据阴影在HSI颜色空间的特点,首先将图像转换到HSI颜色空间,然后将前景像素的H、S、I分量按公式(1)分别与背景中对应像素的三个分量进行比较.
(1)
图3 基于HSI颜色空间的候选阴影检测S1
纹理是一种反映图像中同质现象的视觉特征,当背景区域被阴影所覆盖时,虽然像素值发生改变,但其纹理特征仍然保持不变.局部二值模式(LBP)是一个具有很强局部纹理描述能力的算子[10].它的原理是选取一个局部区域,以它为中心定义一个邻域,将其中心像素的灰度值作为阈值,然后将其邻域像素与阈值进行比较,大于阈值记为1,否则记为0,将邻域像素二值化后,按照一定顺序将二值化的结果转化成一个8位二进制数,其数学公式定义为:
(2)
其中,
(3)
式中:R为邻域的半径;P为以R为半径的邻域像素的个数;(xc,yc)为邻域的中心像素C的坐标;像素值为gc;i为邻域内按顺序标记的第i个像素.算法取P=8,R=1.
但是,当邻域内像素的灰度值非常接近中心像素值时,LBP算子便不能很好地处理这些平面区域.为了使其能够处理平面区域内这些可忽略的像素值的变化,修改了算子的阈值化方案,使其鉴别能力更加稳定且具有更强的鲁棒性.将S(gi-gc)改进为S(gi-gc+a),其中a是一个常数.本文中分别取a=0,5,7,10,做LBP处理,如图4所示.从结果可以看出,a的绝对值越大,则算子对像素灰度值的变化越不敏感,在复杂光照条件的情况下具有较强的适应性.为有效检测纹理特征同时保证算子的有效性,本文中选取a=7对前景运动区域进行LBP纹理检测,再经过图像处理得出车辆本身的部分区域C1,如图4(c)所示.
图4 基于纹理特征的车辆区域检测C1
车辆阴影的边缘相比于车辆自身的边缘更清晰简洁,而且阴影的边缘密度小,车辆的边缘密度大,因此,将阴影边缘去掉即得到车辆的部分内部边缘信息.本文算法采取Canny算子对前景目标区域进行边缘检测.
2.4.1 前景区域边缘检测
根据前面的算法,已经得到原始图像和前景运动区域,图5(a)表示原始图像Fr,图5(b)表示前景运动区域F.对前景区域进行Canny算子边缘检测,得到前景区域内所有的边缘E1,如图5(c)所示.
2.4.2 车辆内部边缘获取
对图5(b)获得的前景运动区域F进行腐蚀处理,缩小区域获得Fs,如图5(d)所示.E1减去Fs即可得到外轮廓边缘E2,如图5(e)所示.为保证后续的删除外轮廓边缘操作准确,防止外轮廓删除不充分,将得到的外轮廓边缘E2进行膨胀处理,扩大外轮廓边缘目标得到E3,如图5(f)所示.为获取车辆内部边缘,将E1边缘去掉E3边缘即可得到内部边缘E4,如图5(g)所示.
2.4.3 车辆内部边缘填充
在提取出车辆内部边缘后,对E4分别进行水平填充和垂直填充,填充方法为在内部边缘区域内,进行逐行扫描,找出每行的第1个像素点和最后1个像素点,把两者之间所有的像素点都设置成1,同理进行逐列扫描并垂直填充.在经历了先水平填充后垂直填充和先垂直填充后水平填充两次填充后,取两次填充结果的交集即可得到填充好的车辆内部区域C2,如图5(h)所示.
图5 基于边缘特征的车辆区域检测C2
在进行基于边缘特征的目标检测后,得到车辆内部区域C2,但在得到过程中,我们删除了外轮廓边缘,导致C2区域不是完整的车辆区域,特别是缺失车辆边缘的信息.车辆边缘部分就是车辆与背景像素变化较大的区域,而纹理检测对局部区域内像素的变化特别敏感,所以通过LBP算子可得到车辆边缘信息C1,在基于HSI颜色空间的阴影检测中,已经得到候选阴影区域S1,删除掉S1中属于C1和C2的像素点,即可得到最终的阴影区域ST,再将前景区域F减去阴影区域ST,即可得到完整的运动车辆目标FC,如图6所示.
笔者使用OpenCV3.2进行编程实验,采用三段含有阴影干扰的运动车辆视频测试:Highway1、Highway2和Road,这三段视频包含的阴影面积分别为较大、较小、中等,阴影强度分别为中等、较强、较弱,可以比较全面地测试本文算法.对三段测试视频进行实验测试,实验结果如图7所示.图中A为原始图像;B为阴影去除前车辆目标;C为检测出的阴影;D为阴影去除后车辆目标.
图7 本文算法测试过程
从图7测试结果来看,前两组Highway1的测试结果:整体上阴影检测和消除效果较好,但部分阴影存在于车辆底部,导致小部分阴影未检测到或小部分车辆底部被认为阴影区域获取不完整.中间两组Highway2的测试结果:图像中汽车较多且面积较小,阴影颜色较深且与车辆本身颜色相近.从测试结果来看,算法成功检测并消除大部分阴影,但车辆底部因与阴影颜色较为接近,被误检为阴影而消除.算法对这段测试视频检测整体效果良好,但误检率较高.最后两组Road的测试结果:车辆阴影的颜色与路面颜色几乎一致,阴影面积较大但边界不明显,算法对视频中车辆的阴影检测和去除效果明显,车辆本身一小部分及轮胎部分被误检去除,两辆白色车辆之间的连接部分未被去除.
从这三段测试视频的检测结果来看,阴影在不同强度及不同面积下,本文算法都能将阴影检测出来并消除阴影.但针对车辆底部的阴影,检测效果不佳.为保证实验测试结果的可靠性,笔者采用文献[11]提出的性能评价公式进行性能分析,具体定义为:
(4)
(5)
表1 本文算法的实验结果
由实验结果的对比可以看出,在基于特征的阴影检测方面,本文算法优于近年出现的优秀算法.文献[13]提出的卷积神经网络对阴影的检测率可达到95%,略高于本文算法.但基于深度学习的方法需要大量的原始图像数据集来进行模型训练,前期训练工作较为复杂;而基于特征的阴影检测不需要寻找大量样本进行训练,可以直接对待检测对象进行阴影检测,所以,本文算法在基于特征的阴影检测方面,优于近年出现的优秀算法.虽然检测率略低于基于深度学习的方法,但二者检测率差距很小,检测结果差距可以忽略不计;同时,本文算法不需要大量数据集进行训练模型,可直接对目标进行检测,工作量较少,具有一定优势.
基于多特征融合的车辆阴影去除算法,在基于HSI颜色空间阴影检测的基础上,又加入了纹理特征和边缘特征的检测,多种特征能更加准确地消除阴影,使检测率进一步提高.通过实验分析,该算法能够有效处理复杂道路情况下的车辆阴影去除,阴影消除效果良好,弥补了基于单一特征阴影检测识别率低的缺陷,具有良好的准确性和鲁棒性.