运动目标检测是许多智能视频分析系统的基础环节,如人流量统计、行人重识别、跟踪、行为分析、场景理解等[1]。当环境光照剧烈变化时,目标投射到地面的阴影会引起目标合并、形变甚至丢失[2],造成目标误检或漏检,并进一步造成视频后续处理环节失败,因此,研究投射阴影的检测与去除方法具有重要意义。
目前,已经有许多关于阴影去除的算法被提出。Sanin等[3]根据算法使用的特征将其分为四类:几何法、物理法、颜色法、纹理法。其中,几何法是通过假定场景中只存在单一光源,利用光源、地面、目标三者的几何关系确定阴影的位置[4],但前提是场景和目标形状固定。物理法是根据光源和地面的物理属性,利用亮度衰减后验概率模型检测阴影[5],适用于目标与阴影光谱特征相差较大的场景。颜色法和纹理法是目前使用较多的方法。颜色法主要基于阴影区域亮度变暗而颜色保持不变的假设,如Hsieh等[6]仅利用HSV(Hue,Saturation,Value)空间的亮度分量检测阴影;Serra等[7]提出颜色-阴影(color-shade)模型;Yuan等[1]基于该模型,利用阴影边缘局部空间的平均颜色各向异性检测阴影区域的边缘;Amato等[8]提出基于局部颜色恒常性检测的运动阴影抑制算法,并利用背景与运动前景的亮度比率来分割颜色恒常区域。基于颜色特征的方法计算量较小,对于目标与阴影颜色差别较明显时能较好地去除运动阴影,但当目标中有接近黑色的区域时,如车窗玻璃,行人穿的黑色衣服等,这种方法容易将这些区域误检为阴影,造成目标内部空洞。纹理法是一种基于阴影与背景区域纹理相似的假设来去除阴影的方法[9-10]。基于纹理特征的方法主要存在两方面的难点:一是目标和阴影区域纹理特征的提取;另一个是纹理相似性度测量方法的建立。当监控视频中目标较小时,很难准确提取运动前景的纹理特征,造成目标与背景的纹理差别不大,难以区分二者;当背景纹理丰富时,测量背景与目标间纹理相似性的计算量较大,算法难以达到实时性。近来,基于颜色和纹理相结合的方法相继被提出。Wang等[11]首先在HSV空间提取阴影候选像素,再比较候选像素对应的前景和背景的纹理相似度,最后用几何特征进一步修正目标。文献[12-13]提出将图像分割为互不重叠的子区域,并提取子区域的颜色和纹理特征,利用监督分类的方法区分阴影与目标。将颜色和纹理相结合的方法提升了阴影检测精度,但其计算量也相对增加,而且基于监督分类的方法需要人工标注训练样本,具有一定的局限性。
针对上述方法存在的缺点,本文提出一种基于超像素和局部颜色恒常性的自适应阴影去除算法。通过分析阴影区域的局部颜色特征,利用背景与前景的亮度比率获得阴影候选区域。为了提高算法的处理速度,利用改进的超像素分割算法将由背景建模法ViBe(Visual Background extractor)提取的运动前景分割为若干超像素。通过分析运动前景中阴影和真实目标区域各自超像素内亮度比率的分布情况,本文进一步提出了一种基于拐点的自适应阈值算法。
1 前景提取本文采用背景建模ViBe算法[14]提取运动前景。ViBe算法由三部分组成:背景模型初始化、前景检测和背景像素模型更新。视频第一帧被用来初始化背景第一帧。每一个背景像素点的模型由随机采样历史帧中该位置的8邻域像素点构成。后续输入帧的像素点与背景模型样本值比较从而检测前景和更新背景模型。ViBe检测结果如图 1所示,提取的前景图像包含真实目标与阴影。
超像素是由图像中位置相邻,颜色、亮度等相近的像素构成的小区域。文献[15]提出了针对图片的SLIC(Simple Linear Iterative Clustering)超像素分割算法,该算法分割效果好且速度较快。考虑到本文主要针对视频图像进行处理,结合视频的特征和ViBe提取的运动前景信息对SLIC算法进行改进。根据视频编码的特征,相邻视频帧间的变化很小[16],因此不需要像原始SLIC算法那样将每一帧的中心点都初始化为等间距的点,而是利用前一帧超像素中心点的数据预测下一帧中心点的位置。经过此处理过程,可以极大地减少算法迭代次数,进一步提高超像素分割速度。另外,在SLIC算法中,中心点的迭代选择并未充分考虑待分割目标的边缘信息,易造成目标对象边缘区域分割过大。本文利用ViBe提取的运动前景的边缘信息对超像素分割结果进行修正,从而提高了分割准确度。具体分割过程如下:
1) 初始化中心点。将原始RGB视频图像转换至CIELab颜色空间,如果当前待处理图像是视频的第一帧,则按间距
${{C}_{m}}=\left\{ {{l}_{m}},{{a}_{m}},{{b}_{m}},{{x}_{m}},{{y}_{m}} \right\}$ |
并计算初始化中心点3×3邻域内像素的梯度值,将中心点移动到梯度值最小的位置;否则,用前一帧的超像素的中心点数据加上一定的位置噪声作为当前帧中超像素的预估中心,即
$C_{m}^{'}=\left\{ {{l}_{m}},{{a}_{m}},{{b}_{m}},({{x}_{m}}+noise),({{y}_{m}}+noise) \right\}$ |
其中:noise是随机产生的高斯噪声。赋予每一个中心点一个单独的标签。
2) 相似度衡量。分别计算每一个像素点p(x,y)与以其为中心的2S×2S区域内超像素的中心点Cm的距离dS,将与像素点距离最小的中心点的标签赋给像素p(x,y)。dS是颜色距离dlab与空间距离dxy的融合,其定义为:
$\begin{align} & {{d}_{S}}(p(x,y),p({{x}_{m}},{{y}_{m}})) \\ & ={{d}_{lab}}(p(x,y),p({{x}_{m}},{{y}_{m}}))+\lambda {{d}_{xy}}(p(x,y),p({{x}_{m}},{{y}_{m}})) \\ \end{align}$ | (1) |
其中λ是空间距离的权重,且:
$\begin{align} & {{d}_{lab}}(p(x,y),p({{x}_{m}},{{y}_{m}})) \\ & =\sqrt{{{({{l}_{i}}-{{l}_{m}})}^{2}}+{{({{a}_{i}}-{{a}_{m}})}^{2}}+{{({{b}_{i}}-{{b}_{m}})}^{2}}} \\ \end{align}$ | (2) |
${{d}_{xy}}(p(x,y),p({{x}_{m}},{{y}_{m}}))=\sqrt{{{({{x}_{i}}-{{x}_{m}})}^{2}}+{{({{y}_{i}}-{{y}_{m}})}^{2}}}$ | (3) |
3) 更新聚类中心。计算具有相同标签的像素及其坐标的平均值Cm,将Cm作为超像素新的中心点。计算新的中心点与初始化中心点间的残差,若小于给定阈值则结束迭代;否则重复步骤2)~3)。
4) 修正目标的超像素分割边缘,并增强超像素间的连通性。如果超像素边缘超出了ViBe提取的运动前景的边缘,则将其边缘像素修正为运动运动前景对应的边缘像素。然后将面积较小的超像素的标签用其周围面积最大的超像素的标签来代替,以增强超像素之间的连通性。
视频图像中运动前景的超像素分割结果如图 2所示。
文献[17]详细介绍了阴影的模型及其性质。由标准的RGB彩色摄像头拍摄的视频图像中,目标投射阴影的光照模型可由式(4)表示:
${{L}_{K}}(x,y)={{E}_{K}}(x,y)\rho (x,y)$ | (4) |
其中:K=R,G,B,表示R、G、B三通道;LK(x,y)表示各通道像素在(x,y)处的亮度值; ρ(x,y)表示物体表面(x,y)处的反射率,且阴影区域的反射率相同;EK(x,y)表示各通道像素在(x,y)处的光照强度,且
${{E}_{K}}(x,y)={{C}_{A}}+\xi (x,y){{C}_{B}}cos\theta $ | (5) |
其中:C1和C2分别表示周围环境光源和主光源的光照强度;θ表示光源方向与物体表面法线向量的夹角;ξ(x,y)(0≤ξ(x,y)≤1)是半影的空间过渡参数。
当光照发生变化,目标产生阴影时,视频图像中的任一像素都会发生变化。设LKf(x,y)表示图像中运动区域的像素值,LKb(x,y)表示背景像素值。定义亮度比率RK(x,y)为:
${{R}_{K}}(x,y)=\frac{L_{K}^{b}(x,y)}{L_{K}^{f}(x,y)}$ | (6) |
将式(4)、式(5)代入式(6)得:
${{R}_{K}}(x,y)=\frac{(C_{A}^{b}+C_{B}^{b}cos\theta ){{\rho }^{b}}(x,y)}{(C_{A}^{f}+\xi (x,y)C_{B}^{f}cos\theta ){{\rho }^{f}}(x,y)}$ | (7) |
假设p(x,y)是阴影区域的像素,用p(x+Δx,y+Δy)表示其邻域像素。根据阴影区域反射率相同,即ρb(x,y)= ρf(x,y),并假设ξ和θ 都是缓慢变化的函数(即ξ(x,y)≈ξ(x+Δx,y+Δy),cos θ≈cos(θ+Δθ)),计算阴影区域中相邻像素的亮度比率的差值有式(8)成立:
${{R}_{K}}(x,y)-{{R}_{K}}(x+\Delta x,y+\Delta y)\approx 0$ | (8) |
式(8)表明阴影区域相邻像素的亮度比率近似相等,即阴影区域具有局部颜色恒常性,而对于不属于阴影区域的像素,因其表面反射率不同,通常不满足式(8)。
将运动前景分割为互不重叠的超像素后,检测阴影区域可以视为超像素的分类问题。根据阴影区域具有局部颜色恒常性,可以认为超像素内亮度比率RK(x,y)的离散程度很小,因此本文提出利用超像素内亮度比率的标准差来检测阴影。设运动前景包含N个超像素,用sn表示,超像素内像素的个数用sn表示。根据式(6)对RK(x,y)的定义计算背景与运动前景的亮度比率,得到亮度比图像,计算亮度比图像中超像素范围内亮度比率的均值uK和方差σK。
${{u}_{K}}({{s}_{n}})={{\left| {{s}_{n}} \right|}^{-1}}\sum\limits_{(x,y)\in {{s}_{n}}}{{{R}_{K}}(x,y)}$ | (9) |
${{\sigma }_{K}}({{s}_{n}})=\sqrt{{{\left| {{s}_{n}} \right|}^{-1}}\sum\limits_{(x,y)\in {{s}_{n}}}{{{({{R}_{K}}(x,y)-{{u}_{K}}({{s}_{n}}))}^{2}}}}$ | (10) |
假设sn是属于阴影区域的超像素,根据式(8)可知:
$\sum\limits_{(x,y)\in {{s}_{n}}}{{{R}_{K}}(x,y)}\approx \left| {{s}_{n}} \right|\times {{R}_{K}}(x,y)$ | (11) |
即:
${{u}_{K}}({{s}_{n}})\approx {{R}_{K}}(x,y)$ | (12) |
将式(12)代入式(10),可得:
${{\sigma }_{K}}({{s}_{n}})\approx 0$ | (13) |
因此,本文算法的主要目的是检测标准差恒常的超像素,即给定阈值δK,若超像素sn满足式(14),则sn属于阴影区域。
${{\sigma }_{K}}({{s}_{n}})<{{\delta }_{K}}$ | (14) |
由于光照会随时间、环境的变化而发生改变,不同物体对光照的反射表现不同,因此式(14)中的阈值δK需要自适应计算。以超像素为基本处理单元,分别统计运动前景中阴影区域和真实目标区域中R、G、B三通道的亮度比率RK(x,y)的标准差,将它们按大小排列。图 3是以序列HighwayI第79帧和序列peopleInShade第203帧为例,给出了运动区域超像素分割结果图像和采用自适应阈值去除阴影结果图像,以及这两帧运动前景超像素分割结果图像B、G、R三通道的亮度比率标准差σK(sn)的分布情况。根据式(13)和式(14)可知,属于阴影区域的亮度比率的标准差分布集中,且更靠近0。对比图 3中亮度比率标准差可发现,属于阴影区域的超像素的标准差之间变化相对平缓,且从阴影区域过渡到目标区域时标准差的值会出现一个明显的拐点。因此,可以利用阴影与目标间亮度比率的标准差的拐点作为分割阈值。本文提出基于标准差拐点的自适应阈值算法,具体实现过程如下:
1) 将式(10)计算得到的标准差按大小排序。
2) 计算排序后相邻超像素标准差的差值difK(n)及差值的平均值(dif_avg)K:
$di{{f}_{K}}(n)={{\sigma }_{K}}({{s}_{n+1}})-{{\sigma }_{K}}({{s}_{n}})$ | (15) |
${{(dif\_avg)}_{K}}=\frac{1}{N}\sum\limits_{n=0}^{N-1}{di{{f}_{K}}(n)}$ | (16) |
3) 若difK(n)<(dif_avg)K,则:
${{\delta }_{K}}={{\sigma }_{K}}({{s}_{n}})$ | (17) |
为验证本文算法的准确性与实时性,使用标准阴影测试视频库的三种场景下的视频和自行拍摄的视频进行实验。本文算法在VS2010下利用C++编程实现,PC配置为Intel Core i5-3470 CPU,3.20GHz,4GB内存,Windows 7(64位)操作系统。
4.1 定性分析对不同场景的测试视频进行实验,对比算法选择的是颜色法和纹理法中具有代表性的Amato算法[8]和Sanin算法[9],实验结果如图 4所示。图 4中原始视频帧分别截取自四个不同的视频:1)HighwayI是存在多个运动目标的室外场景;2) peopleInShade是背景本身存在大量静止的阴影,且目标与其投射的阴影颜色和形状均很相近的室外场景;3)Pets2006是在室内灯光下,运动目标投射到反光的地面,产生垂直于地面的阴影的情况;4)自行拍摄视频Mall是自行拍摄的某商业街上的行人视频,视频中目标尺寸较小,且阴影与目标颜色接近。从图 4所示的实验结果可以看出:本文算法能够自适应检测并去除多种情况下的阴影;Amato算法[8]采用的方法对与阴影颜色相近的目标或小目标均不能有效检测阴影,这是因为该方法中目标与阴影的分割阈值根据背景区域的亮度信息与一个经验系数来设定,具有一定的局限性;Sanin算法[9]采用的纹理法会有部分阴影边缘残留。文献[13]虽然结合了颜色法和纹理法,但其主要针对车辆阴影进行处理,且需要人工标注阴影样本并进行训练,阴影检测的准确率依赖于训练样本的数量及种类。
为了能系统评价本文算法对阴影的检测和去除效果,采用阴影检测率η和目标识别率ξ[2]两个评价指标。η和ξ定义为:
$\eta =\frac{T{{P}_{S}}}{T{{P}_{S}}+F{{N}_{S}}}$ | (18) |
$\xi =\frac{\overline{T{{P}_{F}}}}{T{{P}_{F}}+F{{N}_{F}}}$ | (19) |
其中:S表示阴影;F表示前景;TP表示正确分类的像素数目;FN表示没有正确分类的像素数目;TPF表示手动标注运动目标的像素数目与被误检为阴影的运动目标像素数目之差。阴影检测率η越大,表示被正确检测出的阴影越多; 目标识别率ξ越大,表示被误检测为阴影的目标面积越小。
本文算法与Amato算法[8] 和Sanin算法[9]的两种指标对比结果见表 1。
从表 1可以看出本文算法的阴影检测精度较另外两种算法显著提高。另外,本文还对比了三种算法的单帧平均处理时间,见表 2。虽然本文算法比另外两种方法增加了超像素分割步骤,但其分割速度很快,时间复杂度为O(n),且本文后续算法都是以超像素为基本处理单元,也弥补了超像素分割所消耗的时间。因此本文算法仍满足实时性。
本文提出了一种基于超像素和局部颜色特征的阴影自适应去除算法。该算法不需要基于任何关于场景或目标的先验知识,通过将运动前景分割为超像素,利用背景与运动前景的亮度比率的标准差自适应检测阴影。对室内和室外多种真实场景的测试视频进行实验结果表明,本文算法能实时去除阴影,且阴影检测率和目标识别率均超过85%,提高了目标检测精度。进一步的工作是将该阴影去除算法应用于多目标跟踪,提高跟踪准确率。
[1] | YUAN X, EBNER M, WANG Z. Single-image shadow detection and removal using local colour constancy computation[J]. IET Image Processing, 2015, 9 (2) : 118-126. doi: 10.1049/iet-ipr.2014.0242 (0) |
[2] | PRATI I M, TRIVEDI M, CUCCHIARA R. Detecting moving shadows: algorithms and evaluation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2003, 25 (7) : 918-923. doi: 10.1109/TPAMI.2003.1206520 (0) |
[3] | SANIN A, SANDERSON C, LOVELL B C. Shadow detection: a survey and comparative evaluation of recent methods[J]. Pattern Recognition, 2013, 45 (4) : 1684-1695. (0) |
[4] | NICOLAS H, PINEL J M. Joint moving cast shadows segmentation and light source detection in video sequences[J]. Signal Processing: Image Communication, 2006, 21 (1) : 22-43. doi: 10.1016/j.image.2005.06.001 (0) |
[5] | MARTEL-BRISSON N, ZACCARIN A. Kernel-based learning of cast shadows from a physical model of light sources and surfaces for low-level segmentation[C]//CVPR 2008: Proceedings of the 2008 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2008:1-8. (0) |
[6] | HSIEH J W, HU W F, CHANG C J, et al. Shadow elimination for effective moving object detection by Gaussian shadow modeling[J]. Image & Vision Computing, 2003, 21 (3) : 505-516. (0) |
[7] | SERRA M, PENACCHIO O, BENAVENTE R, et al. Names and shades of color for intrinsic image estimation[C]//CVPR 2012: Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2012: 278-285. (0) |
[8] | AMATO A, MOZEROV M G, BAGDANOV A D, et al. Accurate moving cast shadow suppression based on local color constancy detection[J]. IEEE Transactions on Image Processing, 2011, 20 (10) : 2954-2966. doi: 10.1109/TIP.2011.2132728 (0) |
[9] | SANIN A, SANDERSON C, LOVELL B C. Improved shadow removal for robust person tracking in surveillance scenarios[C]//ICPR 2010: Proceedings of the 2010 20th International Conference on Pattern Recognition. Piscataway, NJ: IEEE, 2010:141-144. (0) |
[10] | LEONE A, DISTANTE C. Shadow detection for moving objects based on texture analysis[J]. Pattern Recognition, 2007, 40 (4) : 1222-1233. doi: 10.1016/j.patcog.2006.09.017 (0) |
[11] | WANG J, YAGI Y. Pedestrian detection based on appearance, motion, and shadow information[C]//SMC 2012: Proceedings of the 2012 IEEE International Conference on Systems, Man, and Cybernetics. Piscataway, NJ: IEEE, 2012:750-755. (0) |
[12] | LALONDE J F, EFROS A A, NARASIMHAN S G. Detecting ground shadows in outdoor consumer photographs[C]//Proceedings of the 11th European Conference on Computer Vision. Berlin: Springer, 2010: 322-335. (0) |
[13] | 朱周, 路小波, 卫朋, 等. 基于超像素和支持向量机的车辆阴影检测算法[J]. 东南大学学报(自然科学版), 2015 (3) : 443-447. ( ZHU Z, LU X B, WEI P, et al. Vehicle shadow detection algorithm based on superpixel and SVM[J]. Journal of Southeast University (Natural Science Edition), 2015 (3) : 443-447. ) (0) |
[14] | BARNICH O, VAN DROOGENBROECK M. ViBe: a universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011, 20 (6) : 1709-1724. doi: 10.1109/TIP.2010.2101613 (0) |
[15] | ACHANTA R, SHAJI A, SMITH K, et al. SLIC superpixels compared to state-of-the-art superpixel methods[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34 (11) : 2274-2282. doi: 10.1109/TPAMI.2012.120 (0) |
[16] | MORERIO P, GEORGIU G C, MARCENARO L, et al. Optimizing superpixel clustering for real-time egocentric-vision applications[J]. IEEE Signal Processing Letters, 2015, 22 (4) : 469-473. doi: 10.1109/LSP.2014.2362852 (0) |
[17] | SALVADOR E, CAVALLARO A, EBRAHIMI T. Cast shadow segmentation using invariant color features[J]. Computer Vision and Image Understanding, 2004, 95 (2) : 238-259. doi: 10.1016/j.cviu.2004.03.008 (0) |