源码:https://github.com/jflalonde/illuminationSingleImage
摘要:给定一张室外图像,提出了一种估计场景可能的照明天剑的方法。特别是,计算了太阳位置和课件度的概率分布。该方法依赖于可以从图像的不同部分提取弱提示的组合:天空、垂直表面、地面、图像中的凸出对象。虽然没有单个提示可以单独可靠地估计照明,但是每个提示都可以增强其他提示以产生更可靠的照明估计。这与在600万张照片的数据集上计算出的数据驱动先验相结合。在带有标注太阳位置的网络摄像头数据上显示定量结果,并从互联网上下载消费型的照片显示定量和定性结果。基于估计的照明,展示了如何将合成的3D对象插入场景中,以及如何在保持照明一致性的同时在图像之间传递外观。
关键词:照明估计;数据驱动;阴影检测;场景理解;图像合成
1.概要
场景的外观在很大程度上取决于当前的照明条件。是晴天还是阴天,早上还是中午,晴朗还是朦胧?一个对光挑剔的学生(Claude Monet),在《大视野问题》中观察到,“景观本身并不存在,但是周围的环境使他栩栩如生,对我而言,只有周围的气氛才能赋予主体真正的价值。”光照是从像素到图像理解的关键变量之一。
虽然在实验室环境中建模和使用照明方面已经完成了许多工作,但对于“野外”(即在典型的室外场景中)的了解却很少。实际上,大多数视觉应用程序将照明程序视为一种讨厌的东西-而不是信号源。
在本文中,我们提出了一种从单个室外图像估计自然光照(太阳位置和能见度)的方法。 可以肯定的是,即使对于人类,这也是一项极其艰巨的任务[6]。 实际上,在一般情况下,该问题受到严重限制,尽管某些图像可能具有足够的信息以进行合理精确的估计,但其他图像则完全没有信息意义。 因此,我们将采用一种概率方法,使用给定图像中可用的尽可能多的信息来估计照明参数,并产生最大似然解(见图1)。
那么在单个图像中可以获得哪些有关照明的信息呢?不幸的是,没有简单的答案。当我们人类执行这项任务时,我们从图像的不同部分寻找线索。天空的外观可以告诉我们是晴天还是阴天(即能否直接看见太阳)。在晴朗的日子里,天空可能对太阳的位置给出了一些微弱的暗示。地面的阴影再次告诉了我们太阳的能见度。而垂直结构投射的阴影方向可以告诉我们太阳的方向。表面在不同方向的相对阴影(例如,两个建筑立面成直角)也可以粗略的指示太阳方向,因此阴影对填充场景的凸出对象也有影响(例如行人、汽车、电线杆等)。
该方法基于将一些直觉实现为一组照明提示。更确切地说,天空的颜色变化,地面上的阴影,垂直表面的相对投射以及凸面物体(行人)上的强度变化是这项工作中使用的四个提示。当然,每个单独采用都是相对弱和不可靠的。天空可能完全饱和,甚至可能在图像中不存在。地面可能看不见,没有任何阴影投射结构,或者没有任何可识别的凸面物体。同样,由于缺少适当的表面或表面反射之间的巨大差异,因此可能无法获取阴影信息。此外。计算这些提示将不可避免地导致更多的噪音和错误(错误检测到阴影或行人,分割不良,相机参数不正确等)。因此,在这项工作中,将从这些微弱的线索中获得的信息结合在一起,同时应用一组由数据驱动的先验数据,对一组600万张互联网照片进行计算。
结果部分将在(第3.2节和第6节)显示,可以以83.5%的准确的估算太阳可见度,并且在极具挑战性的测试集中,组合估计能见度能够成功40%(55%)真实世界图像的一个八分圆(象限)内定位太阳,因此其表现由于任何独立获取得线索。虽然这表明了从单个图像估计照明是多么地困难,但是仍坚信着对于许多应用任然是一个有用的结果。例如,仅仅知道太阳位置在你的左边摸个地方,就足以让一个点拍相机自动调整它的参数,或者让一个汽车检车器越策到右边有阴影的汽车。
1.1相关工作
光源的颜色和几何形状可以通过在场景中放置探针直接观察。但是遗憾的是,捕捉的大多数照片中都不存在此类探测器,因此,不得不在场景本身寻找线索。在计算机视觉中,将在这里概述相关工作。
颜色恒定
这些方法提取对光源颜色不敏感的场景表示。为此,一些作品要么在不同光源颜色下导出场景外观之间的转换,要么将图像转换成对光源颜色不敏感的颜色空间。工作集中在室外照明的互补表示(太阳和能见度)
基于模型的反射率和照明估计
一些工作估计照明(光的方向和位置),结合基于模型估计物体形状和反射(朗博,双色差,拖拉斯麻雀),该工作不依赖于室外表面的特定反射率模型,也不依赖与3D几何的精确估计。
阴影提取和分析
许多工作使用一副或者多副图像来检测和去除阴影,提取的阴影也被用于在受限制或者网络摄像头中估计太阳方向。但是,当阴影在图像中的大小太小或形状复杂和模糊时,他们对照明的信息是很微弱的,有人提出了一种结合阴影、投影和镜面反射信息的技术,用于估计单个图像中的多个光源方向,但是其方法仅局限于桌面类对象。本文的工作第一次,结合阴影线索和其他的半信息线索,以更好地估计照明从一个单一的一般室外场景图像。
基于时移序列的光照估计
Sunkavalli等人通过将场景反射率的光度模型拟合到室外场景的延时序列,开发出估计太阳方向和场景几何体的技术。Lalonde等人利用基于物理的天空外观模型从时间点序列估计太阳相对于观察方向的位置。我们将使用相同的天空模型,但从单个图像中恢复完整天空穹顶的最有可能的表示(天空外观、太阳位置和太阳可见性)。最后,Lalonde等人使用颜色和强度的多变量直方图以及场景几何的粗略分类来匹配不同场景的照明。然而,它们的线索是全局性的,不能用来匹配太阳的方向。这使得他们的方法不适合三维物体插入。
2 自然照明的表现
由于其在任何室外环境中的主导作用,了解自然光在许多领域(如计算机视觉和图形)以及其他研究领域(如生物学[25]、建筑[56]、太阳能[48]和遥感[24])都具有至关重要的意义。因此,研究人员提出了许多不同的自然光照表现形式,以适应各自的应用。我们在这里概述了流行的表示法,我们将其分为三大类:“基于物理的”、“基于环境地图的”和“统计的”。我们通过描述我们在这项工作中使用的表示法来总结这一部分。
2.1 基于物理的表示
在这里,最流行的物理表达方式是“数学模型”。它们通常来源于以下方程(改编自[61]),该方程将地面光谱辐照度L(λ)分别建模为太阳和天空辐射和天空的函数:
其中K是一个二元常数,它解释了太阳到地表路径中物体的遮挡,而则是整个天空半球的积分。虽然(1)看起来很简单,但它的复杂性在于描述太阳和天空的辐射分量,这些分量取决于大气散射的形式和数量。因此,人们提出了各种各样的模拟太阳和天空的方法;我们在此总结一些与我们的工作最相关的方法。
太阳作为室外的主要光源,已经得到了广泛的研究。例如,在建筑设计中,太阳的相对位置是建筑物热增量和辐射计算中的一个重要因素,而辐射计算决定了每个房间内接收到的自然光的数量[68]。了解太阳在地面上传递的能量量对于预测光伏电池可产生的电量也至关重要[48]。因此,已经提出了太阳光在大气中传输的高精度物理模型(公式(1)中的)[2,32]。
物理学家也早已研究了室外的第二个主要光源,即天空。 Perez等人[51]介绍了最流行的基于物理的天空模型之一,并且是根据测量的天空亮度构建的。 该模型已在图形中用于重新照明建筑模型[71],并开发了有效的天空渲染算法[53]。 这也是我们自己用来了解天空外观的模型(请参见第4.1节)。 最近显示,可以从静态摄像机捕获的图像序列中估计该模型的某些参数,在该摄像机中可见天空[43]。
在计算机视觉中,Sato和Ikeuchi [60]使用类似于(1)的模型以及简单的反射率模型来估计自然照明下物体的形状。 这导致了在室外色彩再现中的应用,这些色彩可以从单个室外图像5表示和分类[5],监视[67]和机器人[46]中重新估计自然照明条件。 [47]在颜色恒定域中也使用了相同模型的类似味道。 由于物理模型具有许多参数,因此从图像中恢复它们并非易事。 因此,研究人员诉诸于简化假设,近似或使用图像序列[65],以使估算问题更易于处理。
2.2环境图表示
另一种表示形式是基于精确测量和直接存储从各个方向进入的点处接收到的自然光的数量。 与“基于物理的”表示相反,此处没有寻找紧凑的公式,并且所有信息都明确存储。 最初由Blinn和Newell [4]在计算机图形学社区中引入以对发亮的对象进行重新照明,然后由Debevec [13,14]进一步开发了该表示形式(在社区中也称为“光探测器”),以将虚拟对象现实地插入真实图像 。 通常使用配备了全向镜头(或球面镜)的高质量,高动态范围的相机来捕获它,并且需要进行精确的校准。 Stumpfel等 [63]最近提出采用这种表示法将一整天的天空捕获为环境地图格式,并将其用于渲染和重新照明[15]。
与它的“基于物理的”对应物相比,“环境图”表示没有参数可估计:直接测量即可。 但是,除了需要大量内存外,它的主要缺点是捕获感兴趣的场景需要物理访问。 因此,它不能用于已经拍摄的图像。
2.3 统计表示
自然光照的第三种表现形式来源于数据挖掘和降维技术。这个想法是从自然光照测量数据集中提取低维趋势。这种“统计”或“数据驱动”的表示通常是通过收集大量观测数据获得的,这些观测数据要么来自世界各地采集的真实世界照明的物理测量值[30],或者通过使用物理模型生成样本[61]—并执行维度缩减技术(例如PCA)来发现哪些维度解释了样本中的大部分方差。
最早提出这种想法的人之一是Judd等人。[30],至今仍被认为是对日光最好的实验分析之一[61]。他们的研究考虑了622个在可见光谱中测量到的日光样本,观察到其中大多数可以通过三个固定函数的线性组合精确地逼近。随后,Slater和Healey[61]报告说,基于合成生成的光谱照明轮廓数据集,7维PCA表示法捕获了可见光和近红外光谱中自然光照光谱分布的99%方差。Dror等人。[17] 使用一组HDR环境图作为输入进行了类似的研究。
从那时起,光照的线性表示在许多应用中取得了成功,尤其是在从已知几何体的图像中联合估计光照和反射率方面。著名的是,Ramamoorthi和Hanrahan[54]使用了反射和照明的球面谐波表示(频域中为线性),并将它们的相互作用表示为卷积。最近,Romeiro和Zickler[57]还使用线性照明基础,通过边缘化真实世界照明条件的数据库来推断材料属性。
2.4 自然光照的直观表示
所有先前的表示都假设用于捕捉照明的摄像机(或其他传感方式)具有非常高的质量-照明辐射和传感器读数之间必须存在线性关系,它们具有高动态范围等。
-图像中包含的物体很少,很容易辨认。然而,在互联网上发现的大多数消费型照片不遵守这些规则,我们必须处理采集过程中的问题,如非线性、渐晕、压缩和调整伪影大小、有限动态范围、离焦模糊等。此外,由于透视投影。这些问题使得以前的光照表示很难从这些图像中估计出来。
相反,我们建议使用一种更易于理解这些图像类型的表示法。该模型关注室外照明的主要来源:太阳。我们使用两个变量来模拟太阳:
可见性,或是否在场景中发光;
相对于摄像机的角度位置。在球坐标系中,,其中 且 (和表示太阳和相机,仅当=1时指定,当=0时未定义。)
与现有的方法相比,这种自然光照的表示更简单直观,因此更适合于单图像的解释。例如,如果“太阳可见性V”为0(例如,当天气阴时),则太阳相对位置S未定义。实际上,如果太阳没有照射到场景上,那么场景中所有对象都将由天空这一区域光源照亮。在这种情况下,恢复太阳方向是没有用的,但是,如果V为1,则知道太阳位置S非常重要,因为它负责照明效果,例如投射阴影、着色、镜面反射等,这些效果可能会强烈影响场景的外观。图2示意性地说明了论文模型。
3 太阳可见否
使用上述表示法,论文估计,即给定单个图像的照明参数,的概率分布。由于本文的表示仅在太阳位置可见时才定义,因此本文建议首先估计太阳能见度:
在本节中,论文将介绍如何估计给定图像的太阳能见度变量的分布。论文的其余部分将集中于我们如何估计,即,如果确定太阳位置是可见的,它的概率分布。论文提出了一种有监督的学习方法来学习,在这种方法中,分类器根据人工标记的图像数据集计算的特征进行训练。论文首先描述为该任务开发的特性,然后提供有关所用分类器的详细信息。
3.1 预测太阳可见度的太阳提示
当阳光照射在场景上时,通常会在图像中产生明显的效果。参照图3的第一个和最后一个图像。当太阳可见时(图3a),它将创建硬阴影的阴影边界,与阳光照射和阴影区域相对应的明亮和黑暗区域,高度饱和的颜色和晴朗的天空。另一方面,当太阳被遮挡时(图3e),颜色暗淡,天空灰暗或饱和,没有可见的阴影。
论文根据这些直觉来设计太阳能见度特征。首先将图像分成三个主要的几何区域:地面、天空和用于几何特征分类器[27]垂直表面。论文在计算一下一组特征时使用这些特征。
亮区和暗区
:我们计算地面G上两个簇中最亮的部分的平均强度,其中k=2用k-means进行聚类;垂直面V也是如此;
饱和色
:论文在饱和度和有价值的颜色通道中计算场景的4维边缘标准化直方图(G∪V)。为了增加相机之间的曝光,白平衡和伽玛响应函数变化的鲁棒性,论文遵循[12],并且还计算了归一化对数RGB空间中场景的4维直方图;
天空
:如果可见天空,我们以RGB计算其平均颜色;
对比度
:论文使用[33]中提出的对比度度量(直方图扩展的度量),仅针对场景像素(G U V)计算得出;
阴影
:论文应用[40]的阴影检测方法,并计算属于地面的像素分数.
这些特征在一个20维向量中被连接,在接下来描述的学习框架中使用。
3.2 太阳能见度分类器
论文采用了一种经典的监督学习方法,首先在一组人工标记的训练图像上预计算图像特征,然后将其输入分类器。现在,我们将提供更多关于用于预测太阳在图像中是否可见的学习设置的详细信息。
论文从LabelMe数据集[58]中随机选择了室外图像,分为965个用于训练的图像和425个用于测试的图像。 由于从同一文件夹中拍摄的LabelMe图像可能来自同一位置或由同一台相机拍摄,因此仔细划分了训练集和测试集,以避免文件夹重叠。 将视为二进制变量,然后我们将每个图像手动标记为 = 1(如果阳光照耀着场景),否则为 = 0。 请注意,的这种二进制表示形式只是物理现象的粗略近似:实际上,太阳可能具有部分可见性(例如,由于部分遮挡的云)。 但是在实践中,发现从单个图像中估计太阳可见性的连续值甚至对人类来说都是极其困难的。此外,精确测量该值需要昂贵的设备,而现有图像数据库中不可用。
论文发现利用这个训练数据集训练一个二元线性支持向量机分类器,并在测试集上评估其性能。论文使用libsvm包[7],并使用[52]中的sigmoid拟合方法将支持向量机得分转换为概率。总的来说,论文发现这种方法对各种图像都有很好的效果,得到的分类标准化测试分类准确率为83.5%,完整的混淆矩阵如表1所示。定性结果如图3所示。
现在有了一个分类器来确定太阳在图像中是否可见,论文考虑如何估计表示中的剩余因子(2):太阳位置S上的分布假设太阳是可见的。
4 预测太阳方向的图像提示
当太阳可见时,它的位置以非常不同的方式影响场景的不同部分。在论文的方法中,关于太阳位置的信息是从图像的四个主要部分(天空像素S、地面像素G、垂直表面像素V和属于行人P的像素)捕获有关太阳位置的信息。为了以这种方式分割图像,我们使用了Hoiem等人[27]的方法与Felszenswalb等人 [18]的行人检测器一起返回了图像的像素标记。返回潜在行人位置的边界框 。这些检测器还包括它们各自输出的置信度的度量。
论文使用两个参数表示太阳位置S = {θs,φs}:θs是太阳天顶角,φs是相对于相应相机的方位角。本节描述了如何分别在给定天空,阴影,垂直表面上的阴影以及检测到的行人情况下计算这些参数的分布。之后,在第5部分将看到如何结合这些线索来估计给定的整个图像中的太阳位置。
4.1天空
为了估计天空中太阳的位置角,我们从Lalonde等人 [43]的工作中得到启发。它显示了基于物理的天空模型[51]可用于从一系列天空图像中估计摄像机相对于太阳的最大似然取向。 但是,我们现在仅处理单个图像。 如果现在暂时假定天空是完全晴朗的,那么我们的解决方案是离散化参数空间,并尝试为每个参数设置拟合天空模型。 为此,我们假设天空像素强度si∈S在给定太阳位置的情况下是条件独立的,并且根据以下生成模型,Perez天空模型[51] g(·)的函数,图像坐标(ui ,si的相机焦距fc和天顶角(相对于垂直方向)θc:
其中是均值,方差的正态分布; 是未知的比例因子(有关详细信息,请参见[43])。 我们通过计算获得太阳位置的分布。
对于离散(θs,φs)空间中的每个面元,并适当地规范化。请注意,由于式(3)和式(4)中的k是未知的,我们首先使用非线性最小二乘优化方案为每个太阳位置点独立地优化k(有关天空模型的更多详细信息,请参见[43])。
如式(3)所示,天空模型g(·)还需要了解两个重要的相机参数:天顶角θc和焦距fc。如果我们假设f c可以通过图片的EXIF标签获得。然后通过在图像中找到水平线来计算θc(假设相机没有滚动角)。
我们通过一个简单的近似方法,避开了水平线估计的困难问题:选择最低天空像素和最高地面像素之间的行作为地平线。请注意,本文中显示的所有结果都是使用这种近似方法获得的,我们发现这种方法在实践中非常有效。图4展示了利用天空线索获得的太阳位置的分布。
到目前为止,我们已经假设天空是完全晴朗的,但情况并非总是如此! 即使阳光照在场景上,天空也可能被云层覆盖,因此使物理模型g(·)变得无用。 为了解决这个问题,我们将天空分为三类:晴朗,部分多云或完全阴。 为此,我们从从Flickr下载的图像中为每个类别建立了一个代表天空的小型数据库,并针对每个类别计算照明上下文特征[42]。 然后,我们在数据库中找到k个最近的邻居,并分配最常用的标签(我们使用k = 5)。 如果发现天空是阴天,则太阳位置分布P(θs,φs | S)保持均匀。对于部分多云的场景,我们通过对天空像素进行简单的二进制颜色分割来去除云(保持群集更接近蓝色),并使前面描述的天空模型仅适合天空的晴朗部分。
4.2 垂直物体投射的地面阴影
垂直结构投射到地面上的阴影基本上可以充当“太阳刻度盘”,人类通常用它来确定太阳的方向[36]。不幸的是,很难确定某个特定的阴影是否是由垂直的物体投射的。幸运的是,事实证明,由于世界的统计数据(重力使许多物体直立起来),大部分的长阴影实际上应该是由垂直的物体产生的。因此,如果我们能探测到一组“又长又强”的阴影线(边),我们就可以在概率意义上使用它们来确定可能的太阳方位角(直到方向模糊)。虽然阴影也被用于通过用户输入[35]或网络摄像头[31]来估计太阳方向,但迄今为止还没有一种技术能够从单个图像中自动完成。
用于从单个图像中检测阴影的大多数现有技术都是基于计算光照不变量的,这些光照不变量是基于物理的,并且是各个像素值[22,20,21,47,66]或局部图像邻域中的值[49]的函数。不幸的是,这些不变量的可靠计算需要宽动态范围的高质量图像,高强度分辨率和相机辐射测量和颜色转换的精确测量和补偿。即使是这些图像中的微小扰动(缺陷)也会导致不变量严重失效。因此,它们不适合普通的消费型照片,例如来自Flickr和Google的照片,这些照片噪音很大,通常包含压缩、调整大小和锯齿效果,以及由于自动增益控制和颜色平衡而产生的效果。由于目前的计算机视觉研究大多是针对消费型的照片(甚至是质量更差的手机照片)进行的,因此迫切需要一种能够对此类图像进行检测的阴影检测器。在这项工作中,我们使用了我们在[40]中介绍的阴影检测方法,为了完整起见,我们在这里简要总结。
我们的方法依赖于一个经过训练的分类器,通过使用在边缘周围的局部邻域上计算的特征来识别地面阴影边缘。所使用的特征是在三个颜色空间(RGB,LAB,[9])中,在四个不同的尺度上,在每个边的两侧计算的颜色强度比。正如[72]所建议的,我们还使用了每个边两侧区域的纹理描述。使用Adaboost[10]的logistic回归模型估计特征分布,其中20个16节点决策树作为弱学习者。这种分类方法提供了良好的特征选择和输出概率,并已成功地应用于其他各种视觉任务[27,28]。为了训练分类器,我们引入一个新的数据集,包含130多幅图像,其中地面上的每个阴影边界都被手动标记[41]。最后,使用条件随机场(CRF)来获得更平滑的地面阴影轮廓[27]。
从得到的阴影边界出发,应用[37]中的直线检测算法,在li∈G上检测出长阴影线。让我们考虑一条阴影线。如果其在地平面上的方向表示为αi,则阴影线方向与太阳方位角之间的夹角为
由于我们假设我们不知道是哪个物体投射了这个阴影,所以产生了180°的模糊性。这里表示角差。我们通过检测阴影边界数据集[41]中74幅图像的地面真实阴影边界上的长线,获得了的非参数估计值,其中我们手动标记了太阳方位角。从得到的1700条阴影线得到的分布如图5a所示。在处的最强峰值证实了我们的直觉,即长阴影线与太阳方向一致。另一个较小的峰值似乎在时上升。这是由建筑物的屋顶线解释的,在我们的数据库中很常见,它们投射出垂直于太阳方向的阴影(图5b)。
通过对每个阴影线进行投票以选择其首选的太阳方向,从而合并所有阴影线:
当然,在地面上计算阴影线方向αi需要知道相机的天顶角θc和焦距fc。为此,我们使用上一节中获得的估计值。图6示出了仅使用阴影提示获得的结果。
4.3 在垂直表面上阴影
如果已知场景的大致几何结构,则分析主表面上的阴影通常可以提供可能的太阳位置的估计。
例如,明亮的表面表示太阳可能指向其法线方向,或者至少指向附近。 当然,该推理还假设表面的反照率是已知的或相等的,但都不是正确的。 但是,我们通过实验发现,在给定的图像中,主要垂直表面的反射率通常相对相似(例如,同一所房屋的不同侧面,或同一条街道上的相似房屋),而地面却完全不同。 因此,我们使用由[27]计算的三个粗糙的垂直表面方向(前,左和右),并尝试仅估计方位角方向。
直观地说,我们假设一个w i∈V的表面应该预测太阳在它的前面,如果它是明亮的。
相反,如果表面很暗,太阳应该在它后面。我们通过在几何背景数据集中手动标记太阳方位角,发现了表面平均亮度与相对于表面法线方向βi的相对太阳位置之间的映射关系[27]。特别是,我们了解了地表亮度bi与太阳在地表前面还是后面之间的关系,即是小于还是大于90°。这是通过计算数据集中所有垂直表面的平均亮度,并应用logistic回归来学习。这有效地模拟了以下方式的概率:
其中,学习后,x1=−3.35和x2=5.97。图7显示了用这种方法得到的计算数据点和拟合模型。正如预期的那样,一个明亮的表面(高b i)预测太阳更可能在它的前面而不是后面,反之亦然,对于暗表面(低bi)。实际上,即使太阳照射在一个表面上,它的很大一部分可能由于遮挡而处于阴影中。因此,将亮度k的平均值k=2设为平均值。
为了模拟给定方向βi的垂直表面的太阳分布,我们使用:
式中,是指位于表面前面(后面)的高斯N的质量分数对应于,如果它大于(小与)0.5,注意βi∈{−90◦,90◦,180◦},因为我们仅假设3个粗糙的表面方向。 我们通过将每个表面投票给其首选的太阳方向来组合每个表面:
图8仅显示了使用垂直表面上的阴影获得的太阳方位角预测结果。 我们发现,这种提示通常可以帮助解决阴影线引起的歧义。
4.4 行人
当图像中存在凸物体时,它们的外观也可用于预测太阳在哪里[44]。这个想法的一个显著例子是Bitouk等人[3] 的工作,它使用面恢复面交换应用程序中的照明。然而,在我们考虑的图像类型中,正面人脸的分辨率很少足够(他们大多使用高分辨率特写肖像),但更多的是整个人。如图9所示,当阳光照射时,行人也表现出强烈的外观特征,这取决于太阳的位置:阴影投射在脚上,人体上存在水平强度梯度,衣服上的皱折很明显等等。我们很容易说一个人是从左边(图9a)或是从右边(图9b)被照亮的。
因为有些应用程序需要在图像中检测行人(特别是监视或安全应用程序),它们是文献[11,16,50,18]中备受关注的一类物体,因此存在许多有效的探测器。在这一部分中,我们提出一种新的方法来估计太阳相对于摄像机的方位角,给定图像中的行人边界框。在我们的工作中,使用[18]来检测行人,它使用标准的梯度直方图(HOG)特征[11]进行检测。探测器在高精度、低召回设置下运行,以确保只使用非常可靠的检测。
我们采用一种监督学习的方法来预测给定行人的太阳位置。特别是,从LabelMe数据集[58]中选择了一组2000张随机图像,其中包含行人的地面真实位置,我们还手动标记地面真实太阳方位角。为了使问题更容易处理,太阳方位角φs∈[−180◦,180◦]的空间离散为四个间隔为90◦的空间:[−180◦,−90◦],−90◦,0◦等等。然后我们训练一个多类支持向量机分类器,该分类器使用与检测相同的HOG特征。然而,现在的区别在于,分类器是以边界框中是否存在行人为条件的,因此它可以有效地学习不同的特征权重,这些权重只捕捉光照引起的效果。在实际应用中,多类支持向量机被实现为四个一对所有二值支持向量机分类器。支持向量机的训练是用libsvm库[7]完成的,每个训练库的输出通过非线性最小二乘s-sigmoid拟合过程进行归一化[52],以获得每个类的概率。
当然,光照对行人的影响如图9所示,并且发动分类器捕获当行人被太阳照到的时候。然而,由于建筑物或场景结构经常在地面上投射出大阴影,行人很可能处于阴影中。为此,我们训练另一个二元SVM分类器来预测行人是否处于阴影中。该二值分类器使用在边界框区域计算的简单特征,例如HSV和RGB颜色空间中的粗略5-bin直方图,以及整个边界框内定向梯度的直方图来捕捉对比度。这种简单的“阳光下行人”分类器的分类精度超过82%。图10示出仅使用自动检测到的日照行人获得的太阳方位角估计结果。
与前面的提示一样,我们通过给每个行人一个首选的太阳方向投票,计算给定一个行人p i的太阳方位角的概率P(φs | pi):公式(10)
5 估计太阳位置
既然我们已经具备了可以在图像上计算的几个特征,我们将展示如何将它们组合起来以获得更可靠的估计。因为每个线索都可能非常弱,甚至可能在任何给定的图像中都不可用,因此我们将它们组合在一个概率框架中,以捕捉与每个线索相关联的不确定性。
5.1线索组合
给定整个图像I并假设太阳是可见的,我们有兴趣估计太阳位置上的分布(请参阅第3节)。 我们在上一节中看到,图像分为在天空上计算的特征,地面上的阴影,垂直表面和行人,因此我们应用贝叶斯规则并写出公式(11)
我们采用朴素贝叶斯(Naive Bayes)假设,在给定照明条件的情况下,图像像素在条件上独立,并且图像的每个区域 and 的先验条件 在各自的领域内是统一的。 两次应用贝叶斯规则,我们得到公式(12)
在图11中说明了根据(12)组合线索的过程。我们已经介绍了如何计算条件 and 在4.1、4.2、4.3和4.4节中。 现在,我们看一下如何计算太阳位置本身的先前。
5.2数据驱动的照明先验
先验捕捉室外场景中典型的太阳位置。现在,我们继续展示如何在一个大的消费型照片数据集的情况下计算它。
太阳位置取决于相机的纬度、方位角、日期和以当地时区表示的时间:公式(13)
其中,是[55]中定义的非线性函数。 为了估计式(13),我们可以从采样点,并使用恢复和。 但是,估计此分布目前不可行,因为它需要具有已知相机方向的图像,而这些图像尚未大量可用。 另一方面,确实存在带有地理和时间标签的图像,并且可以在照片共享网站(例如Flickr)上广泛使用。 来自[23]的600万张图像的数据库用于计算经验分布。我们通过从分布中随机抽样100万个点来计算(13),假设在区间内是均匀的。因此,(13)在维上是平坦的,并且被边缘化。
图12c示出了的4个估计,这些估计以稍微不同的变化来计算。 首先,将地球上位置和一天中的时间的统一采样用作基线比较。 其他三个先验使用数据驱动信息。 考虑到日期和时间分布不均匀,可以降低拍摄太阳接近地平线(接近)的可能性。 有趣的是,红色和绿色曲线几乎完全重叠,这表明三个变量,和似乎是独立的。
该数据库捕获了最有可能在地球上拍摄照片的位置的分布,这与将地球上的每个位置都视为具有相同可能性相比确实存在很大差异(如图12a和12b所示)。 在下一节中,我们将显示这种区别对于改善我们的估算结果至关重要。
最后,请注意,在实践中,统一照相机方位角的假设可能不正确,因为优质摄影的基本经验是将太阳朝后拍照。 随着额外的出现传感器,例如数码相机上的指南针,这些数据必将在不久的将来可用。
6 评估与结果
我们将以三种不同的方式评估我们的技术。首先,我们使用从校准的网络摄像头序列拍摄的图像,定量评估太阳估计技术天顶角和方位角。其次,我们这次只对太阳放位角进行了另一次的定量评估,但是是从互联网上下载的手动标记的单个图像数据集上执行。最后,我们还对单个图像给出了几个定性结果,证明了我们方法的性能。这些结果将表明,尽管我们的方法不是很完美,但我们仍能够利用课间照明线索来推断太阳。
6.1 使用网络摄像头进行定量评估
我们使用了Lalonde等人[43]的技术,从互联网下载15个不同延时图像序列中获取984张图像来估计太阳的位置。图13a和13b显示了我们的算法独立地应用于序列中的每个图像,并将结果与 ground truth 进行了比较。
图13 报告了不同情况下太阳位置估计误差的累积直方图:对进行恒定预测(直线上升)仅使用5.2节的先验信息(我们测试了数据驱动先验和地球同意先验),仅场景提示,并且对这两个先验也使用了组合度量。图13突出显示了性能误差小于(图像的50%)和(图像的71%),这些误差对应于准确预测八分圆内的太阳位置(例如。北,西北)或者象限(例如北与西)
对于不同的场景,线索对最终结果的贡献不同。例如,图13a中的天空是没有信息的,因为它很小,太阳总是在相机后面。它在图13b中更具信息性,因为它占据了更大的区域。行人可能出现在图13a中,并且可能是有用的;但是在图13b中,他们太小,没有任何用处。
6.2 单幅图像的定量评估
当浏览流行的公共网络摄像头数据集[39,29]时,人们很快就会意识到,在这种序列中捕捉到的场景类型与在单个图像中捕捉到的场景类型本质上是不同的。网络摄像头通常安装在较高的有利位置,使他们可以广泛地俯瞰自然或城市景观等大规模全景。另一方面,单个图像通常是在人眼水平拍摄的,在那里,像汽车、行人、灌木丛或树木之类的地上“物体”占据了图像的很大一部分。
此外,网络摄像头序列中的场景不会随时间变化(仅考虑静态摄像头),而是照明条件有所变化。 但是,在单张图像中,场景和照明条件在一个图像和另一个图像之间都不同。 在本节中,我们在单个图像的数据集上评估我们的方法。诚然,这项任务比网络摄像头要困难得多,但是我们仍然希望能够在各种各样的城市和自然场景中提取有意义的信息。
我们在此面临的主要挑战是在单一图像中无法获得地面真实太阳位置:到目前为止,还没有这样的公开数据集。此外,如第5.2所讨论的,虽然GPS坐标和图像捕获时间通常由现代摄像机记录,但摄像机方位角φc并非如此。我们从LabelMe数据集[58]中随机选择了300幅室外图像,这些图像中太阳似乎在照射场景(即没有被云或非常大的建筑物遮挡),并手动标记每个图像中的太阳位置。标签是使用一个交互式图形界面完成的,该界面类似于本文中使用的“虚拟太阳刻度盘”(如图5b所示),其中人类贴标者的任务是定位阴影,使其与感知到的太阳方向对齐。如果贴标者判断他或她无法在给定图像中以足够的精度识别太阳方向,则该图像将从数据集中丢弃。在标记过程之后,保留了239幅图像以供评估。此外,我们还发现,在没有已知高度的物体的情况下,很难可靠地标记太阳天顶角θs[36],因此我们要求用户仅标记太阳方位角φs。
图14独立地报告了每个提示的太阳方位估计误差的累积直方图(图。14a至14d),以及联合(图14e)。我们还报告了与当前分别估计八分圆和四分之一圆内的太阳方位角相对应的误差小于22.5°和45°的图像百分比。由于每个提示在所有图像中都不可用,因此我们还报告了每个提示可用的图像百分比。
让我们指出一些值得注意的观察。
首先,由于仅阴影线(图14b)在方位角估计中具有180°的歧义,因此我们将每个预测(相反)方向与地面真实太阳方位角之间的误差保持为最小。 这就解释了为什么最小误差为90°,并且因此不应直接与其他提示进行比较。垂直表面(图14c)在我们数据集中99%的图像中都是可用的,这表明我们的数据集可能有点偏向城市环境,就像LabelMe目前的情况一样。其次,观察行人如何独立地成为最佳线索之一(图14d)。他们的表现是所有线索中最好的。然后,我们还观察到,在图像中可见的行人数量与方位估计的质量有直接的相关性:越多越好。例如,只有一个行人时,平均误差为41°,两个行人的平均误差为22°,三个或更多行人的平均误差为20°。最后,整个系统(图14e)估计出40.2%的图像的太阳方位角在22.5°以内,54.8%的图像在45°以内,这比独立拍摄的任何线索都要好。
6.3 单幅图像定性评价
图15展示了将我们的算法应用于典型消费性图像的几个示例结果,这些图像是从6.2节中介绍的测试数据集获得的。这些行按照估计误差的降序排列。请注意我们的技术是如何恢复太阳参数的整个分布,也捕捉了估计值的置信度。当一个线索很强时(即第5行第2列不同方向的垂直面之间的强度差异大),或当4个线索相关时(如图11所示),通常会获得高置信度的情况。另一方面,高度杂乱的场景(图15的第4行,第2列)通常会产生较低的可信度,并且最有可能的太阳位置可能是不确定的。
图16显示了典型的失误情况。 大多数阴影是由垂直对象投射的阴影的假设(请参见第4.2节)并不总是令人满意的(图16a)。 在图16b中,阴影被正确检测,但是其他提示无法解决其方向上的歧义。 无论是对行人(图16c)还是垂直表面(图16e)的错误检测也会引起问题。 在图16d中,“日照行人”分类器(第4.4节)错误地将阴影的行人标识为处于阳光下,从而产生错误的太阳方向估计。最后,轻云可能会错误地解释为天空中的强度变化(图16f)。
6.4 应用:三维物体插入
现在我们将演示如何使用我们的技术将三维物体插入到一张具有真实灯光的照片中,这需要生成一个合理的环境地图来照亮虚拟物体[13]。环境地图是空间中某一点上的全光函数的一个示例,它捕捉了在该点入射的整个球体的光线。它通常是通过从物体的角度拍摄高动态范围(HDR)全景照片,或是将镜像球放置在所需位置并拍摄。这样的环境贴图可以用作渲染合成对象的扩展光源。
仅给出图像,通常不可能恢复场景的真实环境图,因为图像将仅包含整个图的一小部分可见部分(并且从错误的角度来看)。我们建议使用自然光照模型从单个图像估计高动态范围环境图。 由于我们正在处理室外图像,因此可以将环境图分为两部分:天空探测器和场景探测器。 现在,我们详细介绍为这两个部分构建逼真的真实环境图的近似过程。
天空探测器可以使用4.2节的基于物理的天空模型g(·)生成。我们首先使用我们的方法来估计光照条件。考虑到最有可能的太阳位置和晴空像素, 给定最可能的太阳位置和晴朗的天空像素,我们使用Lalonde等人[43]的技术, 通过以最小二乘法拟合其浊度t(捕获大气中散射程度的标量值)来恢复最可能的天空外观。 这是通过式(14)得到
其中是晴朗的天空像素,估计的浑浊度和摄像机参数和允许我们使用g(·)并推断整个半球的天空外观,即使最初只有一小部分对摄像机可见。通过照明的圆形补丁(比最大场景亮度亮倍)模拟太阳。使用该技术获得的示例性天空探测器如图17b所示。
对于环境图的底部(未显示),我们使用Khan等人[34]的球形投影技术。 在[39]中位于水平线下方的像素上。 使用现成的渲染软件可以对逼真的3-D模型进行调整(请参见图17c)。 请注意地面上的阴影,汽车上的阴影和反射与图像的一致性。 另一个示例如图1所示。
7 讨论
现在,我们讨论该方法的三个重要方面:太阳位置的分布,如何利用可用信息的其他信息源以及线索之间的高级交互。
7.1太阳位置分布
定量评估在6.2节揭示了我们的方法成功地预测了测试集中40%的图像在22.5°内的方位角,其中55%的图像在45°的范围内预测,而80%的图像在90°的范围内预测到太阳方位角(见图14e)。显然,这离完美还很遥远。但是,我们认为这对于不需要精确估算的应用仍然是非常有用的结果。例如,在某些情况下,可能需要做的是正确识别太阳象限(误差小于45°),或区分左右情况(误差小于90°),在这种情况下,我们的方法可以获得合理的结果。但是生成这些结果的最有可能太阳位置实际上隐藏了我们方法的一个重要结果,而这个结果并没有被评估所捕获。
虽然在太阳位置估计中以角度误差来报告结果是有道理的,但我们系统的实际“输出”是太阳位置上的概率分布。在这篇文章中,我们展示了那些用彩色圆圈表示太阳在每个位置的可能性,但没有太多注意它们。仔细观察这些分布本身,可以发现关于估计的确定程度的非常有趣的观察结果,这本身应该是一个非常有用的结果。
图18显示了在实践中出现的常见场景的示例。 在图18a中,我们观察到场景中的强烈提示(明亮的表面,强烈的阴影,对行人的可见照明效果)导致估计值在太阳位置附近达到峰值,这与地面真相非常吻合。 如图18b所示,当场景混乱时,线索变得更难检测,并且结果估计也不太可靠,这由概率图中的蓝色表示(图中的所有颜色都在相同的比例上,使得 比较起来很容易)。
当有强烈的投射阴影,但其他的线索较弱时,阴影模糊性仍然存在于太阳概率分布中,如图18c和18d所示。最后,当这些线索完全难以检测或仅仅像图18e和18f那样不具信息性时,得到的估计值或多或少具有恒定概率。在这种情况下,最大似然太阳位置,用来生成第6.2节的定量评价图。而虚拟太阳刻度盘用于可视化,是没有意义的。更具代表性的评估结果的方法可以使用分布的置信度(如方差)。
7.2 补偿信息源
有时,相机的其他信息来源是可用的。例如,图像文件中的EXIF头通常包含诸如焦距(在本文中使用)、图像捕获的日期和时间以及GPS位置等信息。我们现在讨论在我们的工作环境中,这些信息的可用性意味着什么。如果图像的捕获日期和时间以及GPS位置可用,则可以使用大气公式计算太阳的天顶角[55]。由于摄像机方位是未知的,这有效地限制了太阳在一个恒定的天顶波段,所以太阳在其他任何地方的概率可以很容易地设置为零。最近的智能手机型号现在有一个额外的传感器,它的读数也可以通过EXIF获得:一个数字罗盘。这个指南针记录相机的绝对方位,并且已经被证明在基本的增强现实应用中是有用的。在记录相机方位角的过程中,我们现在有了实际计算太阳相对于相机的位置所需的一切。当然,这并不表示太阳是否可见(第3节) 它也不提供有关天气状况的信息,但可能是一个巨大的工具,用来捕捉具有地面真实太阳位置的图像数据集。大量带有注释信息的图像的可用性必将对提高我们对真实室外图像照明的理解起到重要作用。
7.3 线索间的高阶交互作用
在第5节我们看到了如何将来自多个线索的预测结合起来,以获得一个最终的、更自信的估计。我们依靠朴素贝叶斯假设,该假设指出所有提示在给定太阳方向的条件下都是独立的。 尽管这种条件独立性假设对于许多线索都具有直观意义(例如,如果我们知道太阳的方向,则天空的外观与地面上的阴影方向无关),但它并不适用于所有线索。 在这里,我们讨论了框架中出现的一些依赖关系,以及如何利用它们更好地捕获线索之间的交互。
即使知道太阳的方向,物体与阴影之间仍然存在强烈的依存关系。知道垂直物体(例如,行人)的位置后,我们便知道投射的阴影应该在它们与地面的接触点附近。 同样,知道阴影边界在地面上的位置会限制行人的可能位置,因为行人必须投下阴影(如果他们在阳光下)。 捕获行人和阴影之间的这种相互作用将非常有益:由于我们知道行人是垂直物体,因此只需找到他们的阴影就足以很好地估计太阳位置,并且4.2节可以解决方向的模糊性。
在垂直表面和地面上的阴影之间也存在着一种依赖关系,尽管这种依赖性可能较弱。垂直表面(如建筑物屋顶)的顶部水平边缘也会在地面上投射阴影。对建筑物和阴影之间的相互作用进行推理,可以让我们抛弃它们的阴影,它们通常指向太阳(4.2节)。
另一个有趣的交叉线索依赖性出现在行人和垂直表面之间。由于大表面可能会产生较大的阴影区域,如果太阳来自大墙后面,而行人靠近墙,则该行人很可能处于阴影中,因此无法预测太阳的位置。
跨线索捕获这些高层交互虽然有益,但也会增加用于解决问题的概率模型的复杂性。 图19显示了对应于我们当前方法的图形模型(图19a)与将捕获这些依赖关系的新模型(图19b)之间的比较。 需要说明的是,模型的复杂度在集团大小上是指数级的,这取决于图像中线索的数量(例如,阴影线的数量,行人的数量等)。 在这样的模型中学习和推理肯定会更具挑战性。
8 结论
户外照明会以复杂的方式影响场景的外观。 通常,将照明与表面和材料特性弄混是一个难题。然而,令人惊讶的是,许多在户外拍摄的消费级照片都包含丰富的照明提示,例如天空,地面阴影和垂直表面的阴影。我们的方法从这些线索中提取“集体智慧”,以估计太阳的能见度以及(如果认为是可见的话)其相对于相机的位置。 即使图像中的照明信息很少,并且得出的估计值也很弱,我们相信对于许多应用程序来说,它仍然是有用的结果。 例如,仅仅知道太阳在你左边的某个地方,就足以让一个点拍相机自动调整它的参数,或者让一个汽车检测器预测到右边有阴影的汽车。还可以利用一些附加信息来帮助进行照明估计。例如,GPS坐标、一天中的时间和相机的方位在图像中越来越多地被标记。了解这些量可以进一步限制太阳的位置,并增加我们估计的概率图的可信度。我们将在未来探索这些途径。