微软专利分享:为AR环境虚拟对象提供更好的光照效果
估计照明
(映维网Nweon 2022年04月20日)增强现实头显需要为现实世界视图叠加逼真的虚拟对象,而其中的光影照明非常关键。对于通过分析环境对象的图像来估计照明特征的系统,其面临至少两个技术挑战。第一,可能无法以足够的精度识别照明特征,尤其是对于具有高动态光强度范围的室外场景;第二,涉及复杂的图像处理。
为了提高系统执行实时推理阶段处理的能力,微软提出了一份名为“Estimating illumination in an environment based on an image of a reference object”,通过根据参考对象的图像来估计环境照明,从而帮助增强现实系统为虚拟对象应用适当的照明。
图1示出了用于训练环境编码系统104和对象编码系统106的训练系统102。环境编码系统104将环境图像映射到组合编码110。对象编码系统106将对象图像映射到另一组合编码114。
环境图像是指环境的数字图像或映射。环境包括或以其他方式展示一个或多个照明源的效果。例如,说明性环境图像108描绘了包括太阳116作为主要光源的室外场景。对象图像是指至少包含一个参考对象的图像。然后,参考对象由相应环境图像所描绘的环境中的光源照亮。例如,说明性对象图像112包括显著地以人类面部118为特征的参考对象。人类面部118显示了光照射到人类面部而引起的照明效果。由于上述关系,环境图像108和对象图像112形成相关的一对图像。
首先,由环境编码系统104产生的组合编码110是包括两部分(128、130)的数据结构,而这两部分可以表示为向量。由对象编码系统106产生的组合编码114同样是包括两部分(132、134)的数据结构,所述两部分同样可以表示为向量。每个组合编码的第二部分描述以低强度等级范围为特征的环境图像的一部分。每个组合编码的第一部分则描述了以高强度等级范围为特征环境图像的一部分。
在一个非限制性示例中,第二部分的强度级别从下限值L.sub.b1(例如零)到某个上限值L.sub.b2,包括L.sub.b1和L.sub.b2。第一部分的值高于上限值L.sub.b2。
在图1的示例中,组合编码110的第一部分128可以主要表示环境图像108中描述太阳116的像素。在计算第一部分128时,环境编码系统104有效地省略了较低强度范围内的环境图像108中的任何像素。在计算第二部分130时,环境编码系统104将环境图像108中高于规定上限值L.sub.b2的像素剪辑为L.sub.b2的值。
对象编码系统106将对象图像112映射为组合编码114,而不直接作用于环境图像。但是,由此产生的组合编码114提供了对已经产生了在对象图像112中展示的照明效果的物理或虚拟环境的估计。例如在图1的情况下,对象图像112中所示的照明效果实际上是由环境图像108中描绘的环境产生。这意味着由经过适当训练的对象编码系统106产生的组合编码114将仅基于对象图像112产生实际环境图像108的计算机生成的估计。
在一个实施例中,环境图像108具有允许在比对象图像112更广泛的强度等级范围内变化的强度值。换句话说,环境图像108具有比对象图像112更高的动态范围。例如,对象图像112可以包括允许在第二范围内变化的强度等级。相比之下,环境图像108包括允许在第二范围和第一范围上范围的强度等级。请注意,物理环境具有自然跨越相对较大强度值范围的照明特性。每个组合编码描述的环境图像同样具有广泛的强度级别。所以,每个组合编码都可以提供环境的忠实表示。
在一个实施例中,训练系统102分三个阶段执行训练。第一,图像对生成系统120生成多个图像对,例如包括环境图像108和说明性对象图像112的说明性对;第二,训练系统102训练由环境编码系统104使用的自动编码器。自动编码器包括串联操作的环境编码器和环境解码器。环境编码器将环境图像转换为中间编码,而环境解码器将中间编码转换回原始环境图像。中间编码用作环境图像的组合编码的第二部分;第三,训练系统102训练在对象编码系统106中使用的机器训练对象编码器。
在执行第二阶段时,训练系统102基于数据存储器122中提供的一组环境图像训练环境编码系统104使用的自动编码器。更具体地说,训练系统102迭代地调整自动编码器的参数值,使得其环境编码器可以将环境图像转换为中间表示,然后其环境解码器可以从中间表示准确地恢复环境图像。在执行训练的第三阶段时,训练系统102迭代地调整对象编码系统106使用的对象编码器的参数值,使得对象编码系统106产生的组合编码与环境编码系统104产生的相应组合编码匹配。例如,训练系统102尝试调整对象编码系统106的参数值,使得对象编码系统106为环境图像108生成的组合编码114与环境编码系统104为对象图像112生成的组合编码110匹配。图1中所示的双头箭头136说明了这一原理。
训练系统102可以使用任何目标函数来执行上述训练任务。在一个实施例中,训练系统102使用均方误差(MSE)损失函数来训练环境编码系统104。训练系统102同时可以在计算组合编码110的不同部分时应用不同的缩放因子。
图2示出了图1中引入的图像对生成系统120。图像对生成系统120生成多对图像,并将图像对存储在数据存储器122中。每对图像包括环境图像和对象图像。如上所述,环境图像显示的环境包括或以其他方式显示一个或多个光源(例如太阳)的效果。对象图像显示出现在对应环境图像中描绘的环境中的参考对象(例如面部)。多个对共同构成训练集202。
图像对生成系统120包括一组用于生成训练集202的设备和/或软件模块。例如,图像对生成系统120提供一个或多个图像捕获设备204。图像捕获设备204可以包括用于捕获静止图像和视频的任何摄像。在一个实施例中,图像捕获设备可以使用第一摄像头(或第一摄像头模式)来捕获环境图像,以及使用第二摄像头(或第二摄像头模式)来捕获对象图像。第一摄像头(或摄像头模式)能够捕获具有比第二摄像头(或摄像头模式)更大的强度等级范围的图像内容。第一摄像头可对应于高动态范围(HDR)摄像头,第二摄像头可对应于低动态范围(LDR)摄像头。
图像对生成系统120可以使用图像合成组件206来人工创建图像对。例如,图像合成组件206可以使用任何渲染管道以各种透视和姿势渲染三维模型,从而创建各种对象图像。渲染管道可以以各种方式将照明应用于每个对象图像,例如,基于真实环境图像(由相机捕获)或合成环境图像。合成对象图像和真实或合成对象图像的每个组合构成图像对。
图像对生成系统120同时可以提供图像变化组件208,其可以修改由图像捕获设备204和/或图像合成组件206捕获的图像的任何属性。例如,图像变化组件208可以水平翻转一对图像中的图像以创建新的一对图像。图像变化组件还可以改变任何图像和/或图像中出现的任何单个对象的颜色、强度级别、比例等。
环境编码系统
图4显示了环境编码系统104的一种实现。环境编码系统104包括强度分割组件402,其处理输入环境图像108以产生第一内容图像404和第二内容图像406。第一内容图像404强调输入环境图像108中强度值高于规定强度阈值L.sub.b2的部分,而第二内容图像406强调输入环境图像108中强度值等于或低于强度阈值L.sub.b2的部分。
第一内容编码组件410将第一内容图像404映射到组合编码110的第一部分128。第二内容编码组件412将第二内容图像406映射到组合编码110的第二部分130。第一部分128和第二部分130的串联一起形成与特定环境图像108相关联的组合编码110。
第一内容编码组件410可以以不同的方式实现。在第一种方法中,第一内容编码组件410使用任何类型的数据拟合算法来将表示适配到组成第一内容图像404的值簇。例如,第一内容编码组件410可以使用Levenberg-Marquardt算法将高斯混合模型(GMM)拟合到第一内容图像404中的数据点。更具体地说,第一内容编码组件410可以将二维GMM适配到第一内容图像404中的值的每个颜色通道,使用环境图像108中的最大RGB值初始化其处理。颜色特定的GMM应具有相同的中心位置,这标志着所有颜色通道的最高强度值。
第一内容编码组件410产生组合编码110的第一部分128,并作为描述上述识别的GMM的一组值。例如,第一内容编码组件410可以使用五个值来表示GMM。前两个值描述GMM中心的位置,其余三个值描述每个颜色通道的强度。第一内容编码组件410可以使用任何定位系统来表示高斯中心的位置。
图5显示了第二内容编码组件412的一种实现。第二内容编码组件412对应于具有环境编码器504和环境解码器506的自动编码器502。环境编码器504将第二内容图像406映射到第二内容图像406的中间表示508。环境解码器504将中间表示508映射到原始第二内容图像406的版本406′。训练系统102的目标是为自动编码器502产生参数值,使得其产生的版本406’与原始第二内容图像406紧密匹配。换言之,训练系统102的目标是训练自动编码器502,使得其在将第二内容图像406还原为中间表示508之后,其能够很好地将其恢复到其原始外观。为了执行这一任务,自动编码器同时必须产生中间表示508。
由环境编码器504产生的中间表示508用作组合编码110的第二部分130。在一个实施例中,第二部分130是具有16个值的维度的向量。结果的组合编码110表示第一部分128和第二部分130的串联。
环境编码器504可以实现为包括任意数量的编码器层510的CNN。同样,环境解码器506可以实现为具有任意数量的解码器层512的CNN。其他实现可以使用其他机器训练的模型或其他算法来实现第二内容编码组件412。例如,另一个实现可以使用生成模型来实现第二内容编码组件412。生成模型可以使用生成对抗网络(GAN)进行训练。
对象编码系统
图6显示了对象编码系统106的一个示例。对象编码系统106被实现为执行一系列操作的管道。背景移除组件602首先识别对象图像112中的参考对象,并移除对象图像112中不构成参考对象一部分的所有背景内容。这个过程会产生一个去除背景的图像。在本例中,参考对象是人类主体的脸。
背景移除组件602可以使用任何分割技术来执行该任务。例如,背景去除组件602可以识别对象图像112中的候选区域,然后使用机器训练的模型对候选区域中的内容进行分类。在图6的示例中,背景去除组件602可以提取其分类为人脸的区域(如果有的话)
强度转换组件604将背景移除图像中的RGB值(或其他种类的颜色值)转换为强度值,表示背景移除图像上的光的强度。这产生表示对象图像112上的强度值的强度图像。在一个非限制性实现中,强度转换可以基于像素的红色(R)、绿色(G)和蓝色(B)分量的线性组合产生像素的亮度值Y。
然后,对象编码器606将强度图像映射到组合编码114。在一个实现中,对象编码器606可以实现为包括任意数量的编码器层608的CNN。对象编码器606的向下锥形形状指示其连续降低其处理的信息的维数,从强度图像开始,以具有21个值的组合编码结束。
通过以上方式,系统可以将对象图像转换为组合编码。然后,增强现实系统可以利用所述技术产生的组合编码,从而为叠加的虚拟对象应用适当的照明。
相关专利:Microsoft Patent | Estimating illumination in an environment based on an image of a reference object
名为“Estimating illumination in an environment based on an image of a reference object”的微软专利申请最初在2020年10月提交,并在日前由美国专利商标局公布。