Single-image shadow detection and removal using paired regions学习解读

本文[1]实现了阴影的检测和去除。

一、摘要
与其他基于像素和边缘的方法不同,该方法是基于区域的。1.对于分割出来的不同区域,预测其之间的相对光照条件,并进行按对分类;2.分类结果之后用于构建各部分之间的图,然后利用graph-cut来标记阴影区域和非阴影区域;3.通过image matting对于检测结果进行处理,基于光照模型,点亮阴影区域。

二、主要介绍
对于所建的图,节点对应着区域特征,稀疏边代表相同表面的两块不同区域是否有着相同或者不同的光照。然后,根据graph-cut,将区域按照阴影进行分类。
该方法也是数据驱动的,通过训练数据对分类器进行学习。与其他方法不同的是,该算法明确地对于区域对(包括不相邻的区域)之间的光照和材质关系进行建模,

三、阴影检测
首先,利用mean-shift对图像进行分割;
然后,使用一个训练好的分类器,估计每块区域为阴影区域的置信度,同时获取一些相同材质的区域对,包括光照一致的区域对和光照不同的区域对;
然后,利用区域对之间的光照关系构造稀疏图;
最后,定义了如下目标公式,通过求解其最大值,得到关于每个区域有无阴影的label。
Single-image shadow detection and removal using paired regions学习解读
Single-image shadow detection and removal using paired regions学习解读
上式中,Single-image shadow detection and removal using paired regions学习解读是由区域面积(?)来给定其权值的单区域分类器置信度;Single-image shadow detection and removal using paired regions学习解读表示不同光照下的区域对;Single-image shadow detection and removal using paired regions学习解读是相同光照下的区域对;Single-image shadow detection and removal using paired regions学习解读Single-image shadow detection and removal using paired regions学习解读代表的是按对分类器所给出的区域权重置信度。也就是说,c代表的是权重,也就是由分类器获得的分类结果。y代表的是label。在对上述目标函数最大化的过程中,通过不断改变y的值,也就是不同区域的label,来求得使得目标函数最大的label,也就是最终能够确定各个区域的阴影与否。

3.1单区域分类
由经验所得,一旦某个区域被阴影覆盖,其亮度值变暗,纹理信息变少。因此,一个区域的颜色和纹理可以用于辅助判断区域是否处于阴影中。我们将颜色用Lab颜色空间[2]的直方图表示,每个通道有21个bins。对于纹理信息,使用[3]提出的纹理基元直方图表示。使用人为标定的训练数据对于SVM分类器进行训练,Single-image shadow detection and removal using paired regions学习解读。分类器的输出乘以一个Single-image shadow detection and removal using paired regions学习解读,结果作为上文中提到的Single-image shadow detection and removal using paired regions学习解读

3.2 区域对关系分类
事实上,只依靠某个区域的内在特征实际上并不能准确判断其是否处于阴影下,必须比较相同材质下的其他区域来判断。本文定义了一个关系图来检测阴影,图中的边连接着每组光照对(相同光照或不同光照)。为了解决遮挡问题,将由于阴影的存在导致分离的相同光照区域连接,我们允许不相邻区域之间有边。但是由于在一幅图像中,两两区域块并不是同一材质构成,因此我们的图仍是稀疏的。
Single-image shadow detection and removal using paired regions学习解读
这里也是训练了SVM分类器(相关参数:Single-image shadow detection and removal using paired regions学习解读Single-image shadow detection and removal using paired regions学习解读)来检测区域块之间的光照关系,基于下面四个指标的比较结果:

1. 颜色和纹理直方图:
对于上面的第一个指标,是通过计算颜色和纹理直方图的Single-image shadow detection and removal using paired regions学习解读距离,作为SVM分类器的核函数。
2. 亮度比值:
RGB平均亮度比值,如下计算:Single-image shadow detection and removal using paired regions学习解读其中,Single-image shadow detection and removal using paired regions学习解读代表的是第一块区域的红色通道的平均值。
3. 色度对齐:
阴影和非阴影区域在RGB颜色空间中实际上应该是对齐的,本文引用参考文献1来说明,但是我没有找到该名称对应的完整文献。说法无法使人信服。这一点我看下后面怎么使用的。
4. 图像距离:
区域之间的归一化距离。由于距离较远的区域有着比较小的可能性为同一材质,所以此处可以使用距离来作为一个特征,计算两块区域之间的几何均值距离Single-image shadow detection and removal using paired regions学习解读
这里应该是前三个特征都用于分类器内,最后一个特征距离与分类器输出的结果相乘,作为最终的权重,送入目标函数。

3.3 graph-cut
对于上文中的目标函数进行了改进,如下:
Single-image shadow detection and removal using paired regions学习解读
使用grapg-cuts求解最优y。

因为对于图像中的不同区域来说,属于同一材质相同光照下的区域有着相同的纹理和相同的颜色;而同一材质不同光照下的区域有着相同的纹理,但是颜色不同。本文同样考虑到了区域之间的距离,这样大大减少了检测错误(与只考虑毗邻区域相比)。

四、阴影去除
本文中使用的去阴影的方法是基于一个简单的阴影模型,该模型定义光照因素是由直射光和环境光两部分组成的。本文中试图找出对于阴影区域来说,到底有多少的直射光被遮蔽,并根据该信息,重新点亮这些被阴影覆盖的区域。首先,使用image matting来估计阴影系数值(大概是阴影的深浅啊大小);然后,估计直射光和环境光的比值,和上一步的阴影系数结合,对无阴影图像进行重建。
4.1 阴影模型
阴影模型(我觉得这边应该叫做光照条件下的成像模型)如下:
Single-image shadow detection and removal using paired regions学习解读(公式1)
这里,Ld为直射光强度,Le为环境光强度,Ri为像素点处的反射率,Ii为RGB空间得到的像素值。θi为直射光方向和表面法向量的角度,ti值度量到达表面的直射光数量。当ti=1,像素处于非阴影区域;ti=0,像素点位于本影中;ti∈(0,1),像素点处于半影之中。下文中定义Single-image shadow detection and removal using paired regions学习解读作为i点处的阴影系数,无阴影区域按照阳光直射处理,ki=1。
4.2阴影蒙板抠图
前面的阴影检测结果中,我们得到的阴影mask是二值的,也就是Single-image shadow detection and removal using paired regions学习解读等于0和1表征有无阴影,但是实际上,在阴影存在的情况下,光照的变化通常是平缓的,因此,区域边缘的分割往往会不够精确产生误差。因此,使用上述的阴影mask会导致很强的边缘效应。为了使得ki的值更加精确,并且使得阴影边缘更加平滑,下面采用了soft matting技术。

对于一幅图像来说,matting实际上就是将其分为前景F和背景B两个部分,如下式:
Single-image shadow detection and removal using paired regions学习解读
对公式1进行变形,可得到与上式形式相同的式子,如下:
Single-image shadow detection and removal using paired regions学习解读
因此,一幅有阴影的图像可以看做是无阴影图像Single-image shadow detection and removal using paired regions学习解读和阴影图像Single-image shadow detection and removal using paired regions学习解读的线性组合。
【对于上述说法,我有一点想法。由前文知,R是表面反射率,虽然上式推出来,阴影蒙板可以用LeR来表示,但是从实际情况来说,阴影的大小或深浅的值,与表面有关系吗?】
【对上述问题的解答:有关系。因为LeR得到的也是对象或者目标某些光照量下的成像的像素值,只不过和前面同时具有直射光和环境光的区域所成像的效果比起来,暗了一些,而我们将这些比较暗的区域定义为阴影。】

下面就是利用matting技术来对目标函数进行优化,求解最优的阴影mask——k.
这边需要理解引用文献[4]。

4.3 阴影区域的重新点亮???(relight)
基于上文中的阴影模型,通过计算一个比值r,结合阴影蒙板k,可以得到无阴影图像的表示为:
Single-image shadow detection and removal using paired regions学习解读
这里的Single-image shadow detection and removal using paired regions学习解读 表示直射光和环境光之比。Ii则为原始图像的颜色值(本文中全部的计算都是对三个通道分别求解)。

这里我们利用阴影边缘两侧的两块区域来进行计算,也就是说,该两块区域对应于同一材质不同光照。如下:
Single-image shadow detection and removal using paired regions学习解读
然后就可以得到:
Single-image shadow detection and removal using paired regions学习解读
这里注意,i和j要求属于不同光照下的同一材质。对于这边的r值的估计,计算区域块内的均值直方图,并进行投票,选择最优的r值。

以上,就得到了无阴影图像。

[1]Guo R, Dai Q, Hoiem D. Single-image shadow detection and removal using paired regions[C]// Computer Vision and Pattern Recognition. IEEE, 2011:2033-2040.
[2]同RGB颜色空间相比,Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。下图所示为Lab颜色空间的图示;
[3]Martin D R, Fowlkes C C, Malik J. Learning to detect natural image boundaries using local brightness, color, and texture cues[J]. IEEE transactions on pattern analysis and machine intelligence, 2004, 26(5): 530-549.
[4]Levin A, Lischinski D, Weiss Y. A closed-form solution to natural image matting[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(2): 228-242.