室内场景动态光照在线采集
2021-01-18袁霞张金沙罗天
袁霞,张金沙,罗天
(成都索贝数码科技股份有限公司,成都 610065)
0 引言
随着计算机视觉技术、图形图像等基础技术的迅猛发展,增强现实技术也随之被推向了研究热潮,《“十三五”国家信息化规划》纲要中将增强现实作为战略性布局的前沿创新领域。增强现实是指在现实场景中叠加虚拟信息(虚拟的三维物体、图片、视频等)使之达到视觉上一致的效果,同时可进行实时人机交互。增强现实技术在广播电影电视、游戏娱乐、军事、医疗、建筑等领域有广泛的应用。
增强现实技术的三大核心技术问题包括:几何一致性、光照一致性和合成一致性。其中光照一致是指将虚拟物体叠加到真实场景中时,虚拟物体和现实物体有一致的光照视觉效果、正确的明暗关系和阴影表达。这就要求由计算机绘制的虚拟场景中的虚拟物体与自然场景中的真实物体之间互反射和阴影投射在视觉上一致。因此,光照一致性是虚实无缝融合中真实感表现的关键和前提。估计真实场景光照,并使用该光照绘制用以进行虚实融合的虚拟物体是解决增强现实中光照一致性问题的有效手段。目前,现有工作大多针对光照变化较小的场景展开研究,忽略了场景中光源亮度、颜色等属性的变化,当真实场景中光照发生变化时,这些方法将无法获得正确的虚实融合效果。少量工作,如Xing等人[1]提出的基于视频帧的室外场景光照参数计算方法可在线更新场景光照,但是该方法光照模型过于简单,忽略了来自周围环境的间接光照因素,虚实合成结果真实感有待提高。另外,目前很少有工作研究室内场景动态光照估计方法,因此,有必要开展真实场景动态光照分布在线估计研究。
本文针对室内场景,提出了一套实用的动态光照采集方法。首先,利用镜面球和普通LDR相机设计并搭建了用于采集场景动态光照的设备,基于该设备提出动态光照采集方案,该方案包含离线初始化和在线处理两部分,离线阶段主要通过光照采集设备获取场景在特定光照条件下的HDR环境贴图,并利用采集的贴图计算场景中光源的位置、形状、颜色等信息,在线处理阶段则主要通过捕获的LDR图像实时更新包含直接光照因素和间接光照因素的场景负责光照分布,从而实现对于场景高质量动态光照的估计。与现有光照估计方法相比,本文的主要贡献在于:①设计了一种用于获取室内场景动态光照的设备并提出了基于该设备的场景动态光照采集方案;②提出了基于LDR图像更新场景光照分布的算法;③采集的光照包含直接光照和间接光照因素,可生成具有较高真实感的虚实合成画面。实验结果验证了本文方法的有效性。
1 相关工作
根据光照环境的不同,将光照估计的研究工作分为室内光照估计和室外光照估计。一般来说,室外自然场景光照受环境、气候、场景几何信息等条件的影响而复杂多变,增加了其研究的难度和挑战。室内场景相较于室外场景而言,光源、光照强度、场景几何结构信息和物体表面的材质属性等特征易于恢复,其研究的成本和难度相对小一些。受此先决条件的影响,国内外大量的研究工作集中在室内光照的估计及其在增强现实中的应用上。主流的光照估计大致可以分为以下四类:基于特殊设备采集的光照测量方法、基于图像序列分析的方法、基于深度学习的光照估计方法以及基于物理材质信息的光照估计方法。
1.1 基于特殊设备的光照采集方法
Debevec[2]在1998年提出的利用镜面球采集环境光照的方法作为基于设备采集光照类方法的代表,后续诸多研究者在此基础上进行了改进和优化。此方法利用普通相机或者鱼眼相机拍摄多张不同曝光度的照片,根据文献[3]合成高动态范围图片作为环境映照图来存储光照信息。Greene等人[4]等最早提出将环境映照技术作为全局光照信息渲染虚拟物体,可较好模拟物体表面镜面反射和漫反射效果。Stao等人[5]利用场景的全景图立体匹配技术实现对场景几何的重建,然后通过采集场景的HDR全景图实现对光照数据的获取。Stumpfel等人[6]采用鱼眼镜头拍摄天空。将采集得到的照片再通过数值矫正以获取真正的亮度作为光照数据。这类基于设备采集光照的方法可以较为准确的记录真实场景光照分布,但是在采集时要求场景完全静止,同时采集速度难以达到实时,无法实现对于场景动态光照的采集。
1.2 基于图像序列的方法
一般利用图像中的阴影、明暗等先验线索来求解场景的几何信息和光照参数。Haber等人[7]提出一种利用一组图像序列来估计场景光照信息,结合多视觉几何理论恢复场景几何信息和反射系数。Lalonde等人[8]也采用了相似的技术手段来计算场景的光照和反射信息。但是上述方法用于估计光照的图像均是在固定光照条件下采集。Karsch等人[10]通过用户给予少量的离线交互信息对场景几何信息重建,并求解物体的材质系数及光源的亮度。这类方法需要已知场景几何信息或重建场景几何信息,且需要离线视频图像序列数据的采集,计算复杂,实时性难以满足要求。
1.3 基于深度学习的光照估计方法
近年来,一些学者开始利用深度学习技术来研究光照计算,Hold-Geoffroy等人[10]通过训练神经网络来预测输入天空光全景图的HDR环境映射图,从而估计光照参数(天空光、太阳光)。Marc-Andre等人[12]提出了一种室内光照估计算法,利用带深度的环境映射图作为训练数据训练一个神经网络来预测单张图像的光照的位置、面积、强度和颜色等参数,并能根据空间变化的光照渲染更真实的三维物体到自然场景中。Leg⁃endre等人[13]提出了一种基于手机移动应用的深度学习估计光照的方法。但是,当前基于深度学习的方法均以单张图像作为网络的输入,没有考虑视频帧间的联系,用于恢复视频序列中的动态光照时易产生较大误差。
1.4 基于物理的光照估计方法
这类方法一般是利用物体表面材质信息、几何等信息来求解光照。Sato等人[14]提出了一种根据阴影估计光照和反射信息的方法。Nishino等人[15]则利用物体表面点的亮度变化来将三维几何模型分解为漫反射组件和高光反射组件,然后通过Cook-Torrance反射模型求解光照分布和反射参数。这类方法需要获取场景几何信息,计算过程较为复杂,难以实现实时计算。
综上所述,在实际的工程应用中,现有场景光照估计技术存在一定的局限性,如需要用户交互、计算效率低,没有考虑场景光照变化等,难以将其应用于室内环境复杂、光照动态变化的增强现实相关的产品中。本文旨在探索一种能够解决广播电视电影制作领域的增强现实应用产品中的光照计算问题。这里的光照包含来直接光照和环境间接光照。
2 光照采集设备
HDR图像相较于LDR图像,其优势在于可以存储更大范围的亮度,因此常作为环境光照数据存储的载体。但专业的HDR相机较为昂贵,难以在工程应用中普及。受文献[2]的启发,我们在场景中放置一个光照探头用于捕获场景的环境光照,利用普通相机对光照探头拍摄不同曝光度的LDR图片来生成HDR图作为环境映照图。由于仅从一个角度拍摄的镜面球照片会丢失镜面球正后方场景内容,且在边缘区域造成图像畸变,本文从两个不同角度拍摄镜面球并生成HDR图,从而捕获更加精确的场景光照信息。基于此,我们设计了一套光照数据捕获装置图,如图1所示。
(1)场景中放置一个光照探头,一般为光滑镜面球。
(2)以光照探头为中心,分别在水平和垂直两个方向放置相机。镜面球与相机之间通过横杆/竖杆连接,如图1所示。
(3)调节相机、镜面球的高度、水平/垂直距离,使得镜面球在相机视口下清晰可见。
(4)固定相机与镜面球的相对位置,完成调节后保持不动。
在光照采集时,将设备固定在虚拟物体放置处,捕获过程中,设备需保持静止状态。
图1 光照数据捕获装置图
3 动态光照采集算法
一般来说,室内周围环境相对静态称其为环境光,也称为间接光照。直接照射的光源称为直接光照,如灯、窗户等。本文讨论的室内场景动态光照实时计算包含直接光照和间接光照的实时计算。需要说明的是本文方法重点研究对于光源颜色、亮度信息的更新方法,暂不考虑光源位置的变化。
3.1 算法框架
本文提出了一种鲁棒的室内场景动态光照实时估计技术。场景动态光照的估计分为离线和在线两个阶段,离线阶段利用LDR相机从正前方和侧面两个角度以不同曝光度在特定光照条件先拍摄镜面球图像序列,从而生成场景HDR图,借助图像分割技术通过HDR图计算场景中主要光源的位置、形状、颜色信息。在线运行阶段则基于实时拍摄的镜面球LDR图像更新场景直接和间接光照信息,进而实现对于场景动态光照的采集。
3.2 离线处理
(1)场景环境贴图采集
离线处理阶段首先使用光照采集设备按照Debev⁃ec等人[2]的方法,通过拍摄不同曝光度的镜面球照片获取场景中所有可控光源全部开至最亮和所有可控光源全部关闭情况下的场景HDR环境贴图,方便起见将其分别记为和。同时,以较低的相机曝光度获取一张同采集MH open时光照相同,但所有光源均无过渡曝光现象的场景LDR环境贴图。
(2)直接光源恢复
考虑到部分实时绘制引擎,如Unreal Engine,无法使用HDR环境贴图作为直接光源使用,本文利用捕获的HDR环境贴图首先自动检测光源,根据检测结果对光源位置、形状、颜色等进行初始化。
通过分割是从背景中提取目标物体的关键技术手段之一。考虑到场景中光源打开时,其位置中心处的光照亮度最亮,亮度强度由中心向周围位置逐渐减弱。据此特征,可利用亮度信息来分割场景中的光源,从而提取光源在中的位置及范围。分割的目标是从图像中提取出。本文采用基于亮度优先的自适应阈值分割[16]方法。
如公式(1)所示,先将彩色图像转化为灰度图G,G中的像素g(x,y)表示亮度信息,值越大,亮度越大。T为分割的阈值,当g(x,y)>T表示光源,反之则不是光源。阈值T的求解是从场景中分割光源的关键,本文采用Otsu算法来自适应求解T。该算法对于灰度图可以取得较好的结果且算法效率高,其主要思路为:找到一个阈值T分割出目标与非目标两类,使得两类像素之间的方差最大。
为了消除噪声的影响。对于分割后的二值图像,先进行滤波去噪操作,再寻找图像中各区域Fi,(i=1,2,…,n)的轮廓,计算其对应面积Si,当Si≤t时认为该区域不是光源;其中t为最小光源面积。当Si>t则被认为有效光源,负责忽略该区域。记最终保留的区域为Fi(i=1,2,…,m),Fi对应与光源Li
为计算光源信息,本文假设场景位于一个长方体盒子内,盒子的边长可由用户根据场景实际尺寸设定,光源则嵌在盒子各面上,光源采集设备则位于盒子底面中心处。对于Li,可计算其对应光源区域Fi的质心Pi,根据Pi在环境贴图中的位置确定光源入射方向r,从盒子底面中心延r发射一条射线,其同盒子的交点即为Li的位置,光源朝向与其所在立方体表面方向相同,而形状则为光源区域Fi的包围盒对应于立方体盒子上的区域,光源的初始颜色则为环境贴图区域Fi中像素R、G、B通道的平均值。
3.3 光照在线更新
对于光照的更新主要分为对直接光源的更新和对周围间接环境光照的更新。
(1)直接光源更新
为了实时监控光照的变化,在线运行时,光照采集设备需要以同采集时相同的曝光度采集场景当前LDR环境贴图,由于曝光度较低,中一般也不存在过度曝光像素。通过比较两张LDR图中光源区域的信息,即可更新场景中的光源颜色,其计算公式如下:
其中为区域Fi中像素,‖Fi‖表示区域Fi中像素个数,λ对应于R、G、B三个颜色通道,和分别对应光源λ通道当前和初始颜色值,和则表示像素pj在图像和中λ通道的值。在捕获时,为获得较低的曝光度,会采用很快的快门速度,因此可实现对于场景光源的实时更新。
(2)间接环境光照更新
光源的颜色、亮度也会造成周围环境发生变化,为了更新场景间接光照,一种较为准确的方法是,在离线阶段以正常曝光度采集一张光源全部调至最亮的LDR环境贴图,在线运行时,使用与光源更新类似的方法,通过比较同曝光度下在线拍摄LDR环境贴图同离线采集贴图即可实现对于周围环境光照的更新。但是,拍摄正常曝光的LDR贴图会使用较慢的快门,大大降低了光照更新的效率,难以满足实时要求。为此,本文提出了一种高效的近似环境光更新策略,沿用3.2(2)小节中的符号,首先计算光源的平均变化系数ω(λ):
将ω(λ)作为组合系数,通过线性组合和实现对于当前间接光照的更新,具体公式为:
其中为当前HDR光照环境贴图,为环境贴图中非光源区域的像素,λ对应于R、G、B三个颜色通道。
4 实验部分
为了验证算法得正确性,本文搭建了一套基于演播室场景AR应用,即在现实演播室场景中植入虚拟物体,并实时采集演播室的光照数据,用于渲染虚拟物体,使得虚拟物体更加逼真地融入到演播室场景中。图2展示本文使用的光照采集设备,其中图2(a)为光照捕获装置,其中标记为1、2的分别为水平/垂直两个相机,标记为3的为光照探头(光滑镜面球),图2(b)、2(c)分别两个相机视角下的拍摄的光照探头图像。
图2 场景光照采集装置
图3是通过光照捕获装置采集合成的环境映照图,图3(a)为场景中所有直接光源打开状态下的环境映照图,图3(b)为场景中所有光源关闭状态下的环境映照图。
图3 Tonemapping后的环境映照图(经纬图)
4.1 场景直接光源的计算
一般情况下,由于直接光源光照的强度远远大于场景周围物体,所以通过亮度自适应阈值分割即可分割出直接光源,进而识别出光源并给每个直接光源标记编号。经过多次实验数据对比,与真实场景光源位置的平均误差在1.5%范围内。图4所示为识别出的直接光源和真值的对比。
图4 识别的场景直接光源与真值对比
4.2 应用
将计算的光照数据直接用于渲染虚拟物体,并与真实的背景进行合成,从而验证本算法计算的光照数据的颜色、强度的正确性。在普通PC上(Intel Xeon CPU e5-1603v4@2.8GHz,NVIDIA P2000),本文算法采集光照的效率可以达到实时(20ms/frame)。本文实验过程中对于虚拟物体的渲染采用Unreal Engine4引擎,将实时计算场景的光照传送给渲染引擎,渲染虚拟物体;最终渲染输出4K幅面的AR合成视频帧率可达50fps。
本文搭建的演播室场景中,包含了普通面光源,以及色彩可自动改变的彩色光源;设计的内容为:虚拟汽车从大屏穿屏而出,演播室各光源的强度、色彩可以任意改变,虚拟汽车的光照效果随着场景光照的变化而变化。图5中仅红色汽车为虚拟物体,其余部分为演播室实景。图5.a和图5.b分别为正常光照下虚拟汽车从大屏穿出后开到演播室的效果;图5.c为场景光照变暗后,虚拟汽车的光照效果及其阴影也随之变暗;图5.d、图5.e、图5.f为场景光照任意改变颜色后,虚拟汽车材质表面及其阴影的变化效果,均能实时反映场景中光照颜色的变化。通过本文算法实时采集演播室场景光照,并用于渲染虚拟汽车,再将虚拟汽车植入演播室场景,从而保证了虚拟物体与真实演播室场景具备一致的光照视觉效果。
图5 虚拟物体植入演播室场景(实时改变场景光照)
5 结语
本文提出了一种室内场景动态光照在线采集方法。首先基于镜面球和普通相机设计并搭建了一个光照采集设备,基于该设备在离线阶段捕获场景光源全开和全关条件下的场景HDR环境贴图并估计场景中光源的位置、形状、颜色信息,在线阶段则通过设备获取的当前场景LDR环境贴图更新场景中直接光源和间接环境光照信息,进而实现对场景动态光照的采集。
但是,本文工作还存在不足之处,首先,本文工作无法处理光源位置发生变化时的动态光照采集;另外,算法对于环境光的更新存在一定误差,还需要做进一步改进。