@rmokerone
2016-03-06T11:23:39.000000Z
字数 9730
阅读 795
ODOP
原文地址:http://web.engr.illinois.edu/~dhoiem/publications/cvpr11_shadow.pdf
在这篇文章中,我们解决了自然环境下单幅图片的阴影检测和移除问题。不同于像素探测(explore pixel)或边缘信息(edge information)的传统方法,我们使用局部区域的方法。除了单独考虑各个区域,我们从其表面分割区域之间相对光强的条件,并根据这些条件进行匹配分类。分类结果用来构建分段图像,并且图切(grahp-cut)用来进行阴影区域和非阴影区域的标记。检测结果然后进行图像抠图细化,阴影区域通过基于我们光照模型对每个像素进行二次光照恢复。我们使用阴影检测数据集对我们的方法进行检测。此外,我们还创建了一个无阴影的真实地面图像数据集,这提供了评估阴影去除的一个定量依据。
阴影,每当一个物体遮挡光源时即会出现,是一个永远去除不掉的视觉体验。阴影可以帮助或干扰一个场景解释,这取决于我们怎么处理或者忽视阴影。如果我们能够检测到阴影,我们可以更好的定位物体,推断物体的形状,并确定物体何处接触地面。检测到的阴影还可以提供照明方向和场景几何的线索。另一方面,当我们忽视阴影检测,在阴影和确定事物(between albedo and shading)之间的伪边界将导致视觉处理时的错误。因为这些原因,阴影检测一直被认为是场景解释(scene interpretation)中的重要组成部分。当时尽管它是重要和历史悠久的,阴影检测依然是一个极具挑战的问题,特别是从单幅图像中。
主要的困难是由于几何,反射率和光场的复杂地相互作用。举个栗子,在图一中我们无法分辨表面的暗是因为反射率还是阴影。为了分辨一个区域是否在阴影中,我们必须与另一个具有相同材料和方向的区域进行比价。为此,大多数研究集中在对颜色,强度(intensity)和相邻像素或区域纹理的不同进行建模。许多方法的动机都来自于光照和颜色的物理模型[12, 15, 16, 7, 5]。例如,Finlayson et al[7] 比较了原始RGB图像的边缘和光场不变图像的边缘。这种方法在高质量图像和高校准传感器条件下表现良好,但在典型网络质量的消费者图像中表现平平[11]。为了提高鲁棒性,其他人近期提供了更多的改进,使用数据驱动的方法,根据训练图像学习检测阴影。在单色图像中,Zhu et al[19] 基于计算本地相邻(local neighborhoods)的强度统计,梯度,和纹理划分区域,并使用条件随机场(CRF)细化阴影标签(labels)。Lalonde et al. [11]通过比较相邻区域的颜色和纹理来寻找阴影边界,并使用CRF来评估边界的连续性。
我们的目标是从图片中检测阴影并将其移除。为确定一个特定的区域是否有阴影,我们将其与图片中很可能是相同材料的区域进行比较。首先,我们寻找有可能相对于同一种材料的区域对,并确定它们是否具有相同照度条件。我们将这些阴影和非阴影图像的两两关系,加上基于区域的外观特征。在我们图形编码区域外观的节点潜力(这个确实不只奥),稀疏集合边缘潜力表明相同表面的两个区域是否有可能是相同或者不同的照明。最后,使用图切(graph-cut)推理该区域分类为阴影或者非阴影。与 Zhu et al. [19] and Lalonde et
al. [11]类似,我们采取一个数据驱动的方法,从训练数据中学习分类,从而在消费级图片中也做出良好的性能。
与其他人不同,我们明确对区域对的材料和光强关系建模,包括非相邻对。通过建模长程相互作用,我们希望能更好的检测软阴影,软阴影很难做局部检测。通过限制对相同材料区域的比较,我们的目标是提高复杂场景的鲁棒性,在复杂场景中材料和阴影边界可能重合。我们的阴影检测提供二进制像素的标签,但是阴影并不是真正的二进制。在阴影边界照度常常逐渐发生变化。我们也希望估算一个影子系数(shadow coefficients)的软蒙版(soft mask),用来表述阴影的暗度(darkness),并用来恢复一个均匀照明场景下的无阴影图像。再阴影去除中最流行的做法是由Finlayson和他的同事提出的,在他的一系列论文中,对阴影的移除使用基于阴影边缘检测的集成问题(reintegration problem)(这个翻译不准确)[6, 9, 8].我们基于区域的阴影检测让我们能够将阴影移除作为一个消光问题,与Wu et al类似[18]。然而,Wu et al的方法依赖于用户对阴影和非阴影区域的输入,但是我们在一个统一框架上自动对阴影进行检测和移除。特别地,当阴影检测后,我们使用 Levin et al. [13]的消光技术,处理影子像素为前景,非影子像素为背景。使用阴影恢复系数,我们计算之间光照和环境光照的比率,并对每个像素进行直接光照和环境光照混合的二次光照处理,从而产生复原图像。
为评估我们的阴影检测和移除,我们设置了108个自然场景的新数据集,在其中地面实况(ground truth)是对每个场景不同阴影照相两次确定的(要么通过直接阻断直接光源或投影阴影到图像上)。据我们所知,我们的数据集是第一次在十几种图片中使用定量评价。我们也在Zhu
et al.’人工模拟的室外真实场景数据集对我们的阴影检测进行了评估,能够与Zhu et al的相媲美[19]。
此文章的主要贡献是:(1)提出了一种使用成对区域的关系图进行阴影检测的新方法。(2)提出一种自动阴影去除方法,基于光照模型的阴影抠图产生阴影和非阴影之间的界限。(3)与现有工作相比,量化评价了阴影检测和移除。(4)一个无阴影的地面实况图像阴影去除数据集。我们相信一个更强大的阴影检测和移除算法将导致更好的识别和场景几何估计。
为了检测阴影,我们必须考虑本地和周边区域的外观。阴影区域趋向于黑暗,带点小纹理(with little texture),但是一些非阴影区域可能拥有相似的特征。对应于相同材料的周边区域可以提供更有力的证据。例如区域和区域在质地和色度上相似。如果和具有相似的强度,那么他们很可能是相同的照度下,并且应该收到相同的阴影标签(无论是阴影还是非阴影)。然而,如果比更暗,那么可能在阴影中,有可能不是。我们首先使用均值漂移算法(mean shift algorithm)分段图像(segment the image)[4]。然后,使用已训练的分类器,我们评估各个区域是阴影的置信度。我们同样发现,相同的照度对和不同的照度对区域能够准确地预测分别对应相同的材料和具有类似的或不同的照明。我们使用稀疏集置信度照度对构造一个关系图。最后,我们求解阴影标签 (1是阴影) 使下面公式最大化:
其中
是单区域分类的置信度按区域面积进行加权。
是不同光照对。
是相同光照对。
和是成对分类器的面积加权置信度。
和为参数。
并且1(.)是一个指示函数(indicator function)。
在下一节中,我们描述了单个区域的分类(2.1节)和区域匹配(2.2节)和我们如何指定我们的目标函数与图形切割算法有效地解决这个问题(2.3节).
当一个区域变为阴影,它变得更暗和更少纹理。(见[19]中实例分析)。从而,一个区域的颜色和纹理可以帮助预测是否在阴影。我们用一个L*a*b空间的直方图代表颜色(represent color),每个通道21位。我们用Martin[14]等人提供的纹理基元直方图代表纹理。我们用使用手动标记的区域训练我们的分类基于核的SVM算法(松弛参数C=1)。我们定义作为该分类次(区域i的像素面积)的输出。
我们不能只考虑其内部外表面来确定一个区域是否为阴影;我们必须该区域与同样材料的其他区域。特别地,我们想找到相同光照对-具有相同材料和光照的区域,也想找到不同光照对-具有相同材料和不同光照的区域。由于其它物体对直线光的阻碍和曲面方向的差(by a difference in surface orientation)可以导致照明差异。在这种方式中,我们可以可以考虑阴影和底纹两种。用不同材料的区域进行比较是无用的,因为它们具有不同的反射率。我们使用关系图进行阴影检测,有边缘连接到每个照明对。为了更好地处理闭塞(handle occlusion)并链接由阴影划分同样亮的地区,我们显示不属于图像中相邻区域之间的边。因为大多数区域对材料并不相同,我们的图像还是比较稀疏。例如图3所示的关系图。
我们训练分类器(基于RBF核的SVM算法;C=1,)基于比较它们的颜色和纹理直方图和其强度的比值,以及色排列和它们在图像中的距离,来检测光照对(illumination pairs).这些特征编码了在相同照度下查看有着相同的反射率有着相似的质感和颜色分布的地区直觉(这句话确实翻译不出来了)(These features encode the intuition that regions of the same reflectance share similar texture and color distribution when viewed under the same illumination。)当在不同光照下观察,它们趋向于具有相同的纹理,但颜色和强度不同。我们也考虑到两个区域之间的距离,大大减少了错误,同时比只考虑相邻的一对具有更多的灵活性。
颜色和纹理直方图之间的距离如第2.1节计算。相同材料的区域通常具有相同纹理直方图,无理在背景上的差异(in shading)。当区域具有相同的颜色和光照,它们通常是相同光照对。
RGB平均亮度的比值计算公式为(, , )),其中例如,是第一个区域红色通道的平均值。对相同材料的阴影/非阴影对,非阴影区域在三个通道的值都最大。
色对其方式(Chromatic alignment):研究表明,阴影/非阴影对的颜色在RGB颜色空间中趋向于对齐1。简单的来说,阴影区域看起来不应该比非阴影区域更红或者更黄。这个比率计算为和。
位置距离归一化:因为远距离图像区域不太可能对应于相同的材料,我们还添加了归一化距离作为特征,计算它作为由该去油的几何平均数的平方根除以该区域中心的欧几里德距离。我们定义作为相同光照对次数分类器的输出,几何意义是区域面积。类似的,作为不同光照对次数分类器的输出。
边缘按区域面积和分类评分加权,从而较大面积的区域和更高置信度的区域具有更大的权重。记住,在中边缘具有方向:他们促进(encourage)为阴影和为非阴影。在两种情况下,如果他们的分类分数大于0.6,都包含100个最有信心的边缘(随后的实验表明,所有正分数的边缘都具有类似的特性)。
我们可以应用和高效的图切推理重新制定我们的目标函数(公式1),为下面的能量最小化:
因为这是一个子模块(binary, with pairwise term encouraging affinit),我们可以使用图切(graph cuts)3.在我们的事例中
我们的阴影去除方法基于一个简单的影子模型,其中包括直接光照和环境光。我们试图识别每个像素有多少直接光照被遮挡,并使用这些信息对整个图片进行重新光照(relights)。首先,我们使用消光技术来估计分数阴影系数值(a fractional shadow coefficient value)。然后,我们估计直接环境光的比例,并与阴影系数一起将图像恢复为无阴影。
在我们的光照模型中,有两种光源:直射光和环境光。直射光来自于光源的直接照射(例如:阳光),环境光来自于周围表面的反射。非阴影区域受到直射光和环境光的照射,阴影区域的部分或者全部直射光被遮挡。阴影模型可以用下面的公式表示:
(4)
其中表示RGB空间中第i像素点值的矢量。与此类似,和均是大小为3的矢量,各自表示在RGB空间中的直射光和环境光强度。是该像素的表面反射率,也是一个三维矢量,每一个代表一个通道。代表直接光照和表面法线之间的角度。是一个在[0,1]之间的数值表明多少直射光照射到表面。The equations in Section 3
for matrix computation refers to a pointwise computation, except for the spectral matting energy function and its solution(不敢乱翻).当,该像素在非阴影区域,当时,该像素在阴影中,其它()时,该像素半阴影。对一个无阴影图像,每一个像素均受到直射光和环境光照射,并且可以进行如下表达:
我们定义,在本文剩余部分,我们将引用作为第i个像素的阴影系数。表示该像素在非阴影区域。
阴影检测程序为我们提供了一个二进制阴影蒙版,每个像素点i被标记为(1或0)的值。然而,光照往往沿阴影逐渐改变,往往区域边界的分割结果并不准确。使用检测结果作为阴影系数值能够造成强烈的边缘效应。为了获取更精确的值以及为得到非阴影区域和恢复后阴影区域边界更平滑的结果,我们使用了软抠图技术(soft matting technique)。
给定一个图像,基于下面的公式,应用抠图尝试将其分成前景图片和背景图像.
表示原始图像I中的第i个像素点的RGB值,和分别表示前景图像F和背景图像B中第i个像素点的RGB值。
通过重写(4)给定的影子方程:
一个带阴影图像可以看做无阴影图像和一个阴影图像(是一个三维矩阵,其中第i项等于)的线性合并,该公式等同于图像抠图。
为解决抠图问题,我们应用光谱抠图算法[13],最小化如下能量函数:
其中表示阴影评估标签(第二节),表示阴影区域,表示非阴影区域。表示对角线矩阵,当第i个像素点的与相同时,当值是由抠图算法(matting algorithm)预计时。在我们的实验中,我们设置到检测标签边界距离5个像素点以内的像素设置为,其余像素点设置为。表示[13]提出的抠图拉普拉斯矩阵(matting Laplacian matrix),目的是在local patches增强平滑。在我们的实验中,使用了3x3的补丁(?patch).
最佳k值是如下线性稀疏系统的解:
其中d为包含对角矩阵D中元素的向量。在我们的实验中,我们依经验设置为0.01。
基于我们的阴影模型,我们可以使用计算比率和k值二次光照每个像素。新像素值由下面公式给定:
其中是直射光和环境光的比率,表示原始图像中第i个像素点的强度。对每一个通道,我们分别的恢复像素值。我们现在展示怎么从检测到的阴影和抠图结果中恢复。
为了计算直射光和环境光的比率,我们沿着阴影边界检查相邻阴影\非阴影对。我们相信这些斑块(patches)具有相同的材料和反射率。我们同时假设直射光和环境光在图像中是连续的。基于这种光照模型,对两个具有相同反射率的像素点,我们有:
其中。
对与以上方程,我们可以推导:
为了评估,我们从阴影/非阴影对取样斑块(patches),并基于斑块对的平局RGB强度和值对r值投票。
在共同RGB比率空间投票被累积为一个直方图,并将得票最多的两个值的中间值(center value)作为值使用。bin的大小(the bin size)设置为0.1,并且该斑点大小设置为像素。
在我们的实验中,我们评估了阴影检测和阴影移除的结果。对阴影检测,我们验证了如何明确建模区域对关系如何影响检测结果和我们的检测器对通用数据集能达到的程度。对阴影移除,通过对比恢复图像和实际无阴影图像,我们在我们的数据集上定性评估了结果。并在我们的数据集和UCF阴影数据集上均定性展示了结果。
我们的阴影检测和移除方法在UCF阴影数据集[19]和我们设置的新数据集中进行评估。Zhu等人自己或者通过网络收集了245张图像,并手动标记了实际阴影蒙版。
我们的训练集由32张带手动标记阴影区域和区域对间光照条件的图片组成。我们的测试集包括76对图像,从不同光照条件下的普通场景和物体收集来,包括室内和室外。每对图像包括一个阴影图像(作为算法输入)和一个实际背景图-图像中的每个像素均具有相同光照。对于46对图像,其中一张带有阴影,另一张移除导致阴影的实际无阴影图像。两张图像的光源相同。这种方法的一个缺点是不包括物体的自阴影(self shadows of objects)。考虑到这中结果,我们收集了其他30张阴影是由场景中的物体照成的图片。为了创建这种图像的图像对,我们阻挡了光源,将整个场景均在阴影中。我们通过一对图像两张图片的比率,自动产生实际阴影蒙版。这种方向相比于手动标记阴影区域更精确和更强健(robust)。
对阴影检测实施了两组实验。第一,我们尝试比较一元分类器(unary classifier),成对分类器(pairwise classifier),以及两者结合,的各自表现。第而,我们进行了跨数据集评估,使用一个数据集训练,使用另一个数据集测试。测试数据集每像素精度在图4(c)中展示,定性结果在图5中展示。
仅使用一元信息(unary information),对于UCF数据集的性能是87.5%,其中83.4%通过无阴影区域获得,在[19]中报导的是88.7%。与我们采用信息不同,[19]在灰度图像中实现阴影检测。通过融合一元信息(unary information)和成对信息(pairwise information),我们获得了90.0%的准确度。记得,相比[19]我们使用更简单的特征集和更简单的学习方式。
成对光照关系在我们的数据集中尤为重要。使用我们的数据集,精度提高了8%,相当于比单区域分类器多检测到50%的阴影。
图4(d)中结果指出,我们提出的检测能够推广到整个数据集(generalize across datasets).要特别注意的一点,两个数据集在本质上具有很大不同,在场景和硬阴影上具有很大的尺度。如图4(d)所示,在[19]中训练的一元和多元分类器在两个数据集中均表现较好。这是可以理解的,因为他们的数据更加多样化,包含更多的图片。
为了评估恢复的无阴影图像,我们对实际无阴影图像和恢复图像在L*a*b颜色空间中测量了根均方误差(RMSE),目的是为了在本地视觉上保持一致性。我们分别评估了整幅图像,以及阴影和非阴影区域。
定量评估在实际无阴影图像子集中进行(共46幅图像)。阴影/非阴影区域由上一节介绍的真实阴影蒙版给定。如表4(e)所示,我们基于图像抠图的结果接近真实情况。我们展示了整个和个别的阴影和非阴影区域(根据二进制真实情况标签)。该"非阴影"区域可能包括光影,因此在原始和真实无阴影图像在这些区域并不是真正的0从而导致了错误。为了展示抠图帮助实现的平滑边界,我们将其与仅使用硬检测蒙版进行对比,这样对恢复算法进行了更精确的评估。
阴影移除的量化结果在图5中:5(a)展示了在UCF阴影数据集中的检测和移除[19];5(b)展示了在我们的数据集中;5(c)是一个我们的阴影检测成功地检测到盒子的自阴影的例子;5(d)是一个有意识的错误例子,其中成对检测器将棋盘中教暗的部分与较亮的部分配对,并在恢复阶段进行了移除(interesting...)。
总体来说,我们提出了一种新的在单张图像中检测和移除阴影的方法。对阴影检测,我们展示了与简单基于外观的模型相比,区域之间的成对关系为相关区域的光照条件提供了有价值的信息。我们还展示了,通过将软抠图算法应用于检测结果,图像中每个像素的照明条件得到了更好的反应,尤其是对阴影边缘的区域。我们关于阴影检测和移除的结论得到了定量实验的支持,如表4(c)和4(e)。
目前我们的阴影检测方式依赖与初始分割,可能将软阴影(soft shadow)与无阴影区域分割到一起。在我们的模型中,我们不能区分照度的变化是由于阴影还是背景在方向上的不连续性引起的,例如建筑墙。
为了以后提高检测,我们可结合更先进的特性,如Zhu等人那样[19].我们还可以将几何估计纳入我们的检测框架,如Lalonde等人[11],这能够帮助我们删除区域间的虚假陪读,并指出阴影的来源。我们将提供我们的数据集和代码,我们希望这将有助于场景理解中阴影的检测和去除。
这项工作在美国国家科学基金会的部分IIS-0904209之下,由谷歌研究奖支持。
(V0.1-2016.3.6@ahpu-kaikai)