掌桥专利:专业的专利平台
掌桥专利
首页

利用高度图生成针对数字图像内的数字对象的阴影

文献发布时间:2023-06-19 19:28:50


利用高度图生成针对数字图像内的数字对象的阴影

背景技术

近年来,用于编辑数字图像的硬件和软件平台有了显著的进步。具体地,许多传统系统实现诸如通过增加数字图像所描绘的真实感来改善数字图像的美感的各种技术。为了说明,一些传统系统提供用于创建阴影以描绘在某些照明条件下在数字图像内描绘的对象(例如,人)的外观的工具。实际上,这些系统在最初不存在阴影的地方创建阴影(例如,在对象被人工插入到背景图像中的合成数字图像内),以在数字图像中更逼真地描绘对象。

然而,尽管取得了这些进步,传统的图像阴影系统仍存在多个技术缺陷,导致操作不灵活、不准确和低效。例如,许多传统系统依赖于使用在二维图像中描绘的对象的三维模型来生成针对对象的阴影。具体地,这些传统系统通常采用基于物理的阴影绘制算法来使用对象的三维模型来生成阴影。因此,在对应的三维模型不可用的情况下,这样的系统不能产生对象的阴影。一些系统使用基于神经网络的图像合成来创建阴影来解决这个问题。然而,这些系统缺乏用于控制所产生的阴影的特性(例如,方向、透视、软度)的特征。

除了上述灵活性问题之外,传统的图像阴影系统通常也不能生成在真实照明条件下准确描绘对象阴影的阴影。例如,许多传统系统采用的三维模型通常是错误的,而基于物理的阴影绘制算法通常对这些错误很敏感。因此,这种模型产生的阴影往往包括各种伪影——特别是在地面接触区域中,因为三维模型通常不能与地面完全接触。尽管利用基于神经网络的图像合成的传统系统避免使用三维模型,但所采用的神经网络由于未能显式地对对象几何形状和相关照明进行建模而通常具有有限的泛化能力。实际上,这样的系统通常利用所采用的神经网络来学习光信息和所生成的阴影之间的映射,而不受几何约束。因此,这些系统也往往会产生不真实的阴影。

此外,传统的图像阴影系统存在效率低下的问题。例如,由许多传统系统采用的、基于物理的阴影绘制算法通常需要大量的计算资源(例如,存储器和计算机处理)来生成所产生的阴影。此外,这些系统通常需要各种用户调整来将阴影所基于的三维模型与图像中所描绘的对应对象对齐,这可能是困难并且耗时的。因此,这些系统通常需要大量的用户交互来产生与对象对齐的阴影。

关于传统图像阴影系统存在这些以及附加的难题和问题。

发明内容

本文描述的一个或多个实施例利用利用对应于对象的灵活高度图来生成针对数字图像中描绘的对象的阴影的系统、方法和非瞬态计算机可读介质,提供了益处和/或解决了本领域中的一个或多个问题。例如,在一个或多个实施例中,系统生成针对二维数字图像中描绘的对象的高度图。在一些情况下,高度图指示数字图像的图像投影空间内的对象的像素的高度。该系统例如通过基于某些照明条件来确定对象的阴影如何投影到数字图像中描绘的表面上,来利用高度图生成针对对象的阴影。在一些实施例中,该系统在图形用户界面内提供具有阴影的数字图像。该系统还基于与经由图形用户界面检测到的数字图像的一个或多个用户交互来修改阴影。以这种方式,该系统生成针对数字图像内的对象的准确的阴影,同时提供用于修改这些阴影的特性的灵活控制。

本公开的一个或多个实施例的附加特征和优点在下面的说明书中概述,并且部分地将从说明书中清楚的,或者可以通过这种示例实施例的实践来了解。

附图说明

通过参考附图,本公开将以附加的具体性和细节来描述本发明的一个或多个实施例。以下段落简要描述了这些附图,其中:

图1示出了根据一个或多个实施例的基于高度的阴影系统操作的示例环境;

图2A至图2B示出了根据一个或多个实施例、基于高度的阴影系统来修改数字图像以包括其中描绘的数字对象的对象阴影的概览图;

图3A示出了根据一个或多个实施例、用于使用高度预测神经网络来生成针对数字图像中所描绘的数字对象的高度图的图示;

图3B示出了根据一个或多个实施例、生成针对数字图像中描绘的数字对象的高度图的高度预测神经网络的架构;

图3C示出了根据一个或多个实施例、用于生成高度预测神经网络以生成高度图的图示;

图4A至图4B示出了根据一个或多个实施例、用于使用高度图和光源信息来确定针对数字对象的像素的阴影投影的图示;

图5示出了根据一个或多个实施例、利用阴影样式化神经网络生成软对象阴影的图示;

图6A至图6C各自示出了根据一个或多个实施例、修改数字图像以包括针对其中显示的数字对象的对象阴影;

图7示出了根据一个或多个实施例、基于高度的阴影系统用来显示数字图像并允许用户交互以进行进一步的改变的图形用户界面;

图8示出了根据一个或多个实施例的基于高度的阴影系统的示意图;

图9示出了根据一个或多个实施例、用于生成针对数字图像中描绘的数字对象的对象阴影的一系列动作的流程图;以及

图10示出了根据一个或多个实施例的示例计算设备的框图。

具体实施方式

本文描述的一个或多个实施例包括基于高度的阴影系统,用于通过利用对象的高度图来准确地确定阴影的投影,来灵活地生成针对数字图像内的对象的阴影。实际上,在一个或多个实施例中,基于高度的阴影系统针对二维数字图像中描绘的对象生成高度图,该高度图指示对象的像素相对于数字图像中描绘的平面的高度(例如,相对于地面)。基于高度的阴影系统利用高度图以及针对数字图像的光源的位置,基于三维几何约束的投影而在二维空间中投射阴影。换言之,基于高度的阴影系统确定针对对象的阴影如何跨数字图像来投影,并且使用所确定的投影生成针对对象的阴影。

为了提供说明,在一个或多个实施例中,基于高度的阴影系统从描绘数字对象的数字图像中提取对应于数字对象的对象掩模。此外,基于高度的阴影系统从对应于数字对象的对象掩模中生成高度图,该高度图包括利用高度预测神经网络的针对数字对象的像素的像素高度。使用来自高度图的像素高度和针对数字图像的光源信息,基于高度的阴影系统确定针对数字对象的像素的阴影投影。此外,基于高度的阴影系统使用针对数字对象的像素的阴影投影来修改数字图像以包括针对数字对象的对象阴影。

如上所述,在一个或多个实施例中,基于高度的阴影系统生成针对数字图像内描绘的数字对象的高度图。具体地,基于高度的阴影系统生成高度图,该高度图针对数字对象的像素指示图像空间内的像素高度。为了说明,在一个或多个实施例中,基于高度的阴影系统提取针对数字对象的对象掩模并且利用该对象掩模来生成高度图。在一些情况下,基于高度的阴影系统还确定针对数字对象的对象抠图(cutout)和对应于数字图像的坐标方案。因此,基于高度的阴影系统进一步利用对象抠图和坐标方案来生成高度图高度。

在一些实现中,基于高度的阴影系统利用高度预测神经网络来生成高度图。在一些情况下,基于高度的阴影系统使用合成训练图像和/或真实训练图像来生成高度预测神经网络。因此,在一些情况下,基于高度的阴影系统利用高度预测神经网络基于对象掩模、对象抠图和/或坐标方案以生成针对数字对象的高度图。

如上所述,在一个或多个实施例中,基于高度的阴影系统使用高度图来确定针对数字对象的阴影投影。具体地,在一些情况下,基于高度的阴影系统使用由高度图提供的像素高度来确定针对数字对象的像素的阴影投影。在一个或多个实施例中,基于高度的阴影系统通过利用来自高度图的对应像素高度而确定数字图像内的对应阴影像素的位置,来确定针对数字对象的像素的阴影投影。

在一些实施例中,基于高度的阴影系统还利用与数字图像相关联的光源信息来确定阴影投影。实际上,在一些情况下,基于高度的阴影系统使用针对数字图像的光源的位置来确定阴影投影。在一些情况下,基于高度的阴影系统还利用与数字图像相关联的水平线的位置或光源在水平线上的投影。

此外,基于高度的阴影系统允许阴影定制。例如,在一些实现中,基于高度的阴影系统使用所确定的投影来生成硬阴影掩模,并且进一步从该硬阴影掩模中生成针对数字对象的软阴影。在一些情况下,响应于检测到用户与显示数字图像的图形用户界面的交互,基于高度的阴影系统修改所生成的阴影的一个或多个特性(例如,阴影的软度或方向)。

更具体地,如上所述,在一个或多个实现中,基于高度的阴影系统使用阴影投影(例如,使用经由阴影投影所确定的阴影像素)生成针对数字对象的对象阴影。为了说明,在一些实现中,基于高度的阴影系统使用阴影投影生成针对数字对象的硬阴影掩模。此外,基于高度的阴影系统从硬阴影掩模生成软对象阴影。在一些情况下,基于高度的阴影系统还利用对象掩模来生成软对象阴影。此外,在一些实施例中,基于高度的阴影系统基于软度值(例如,指示提供软对象阴影的软度的值)来生成软对象阴影。在一些实现中,基于高度的阴影系统利用阴影样式化神经网络来从硬阴影掩模、对象掩模和/或软度值中生成软对象阴影。

在一些实施例中,基于高度的阴影系统修改数字图像以包括针对数字对象的对象阴影。具体地,基于高度的阴影系统修改数字图像,使得数字对象看起来跨数字图像中描绘的一个或多个表面而投射阴影(例如,对象阴影)。在一些情况下,基于高度的阴影系统向数字图像提供对象阴影以在客户端设备的图形用户界面内显示。在一些情况下,基于高度的阴影系统经由图形用户界面来检测一个或多个用户交互。例如,在一些实施例中,基于高度的阴影系统检测用户与数字对象、与对象阴影或以其他方式与数字图像的交互(例如,直接地或通过经由图形用户界面提供的一个或多个控件)。基于检测到的(多个)用户交互,在一些情况下,基于高度的阴影系统修改数字图像内的对象阴影的一个或多个属性。例如,在一些实现中,基于高度的阴影系统修改对象阴影的位置、对象阴影的方向或对象阴影的软度。

在一些情况下,基于高度的阴影系统生成针对不接触地面的数字对象的对象阴影。类似地,在一个或多个实施例中,响应于确定数字对象已经在数字图像内垂直移动,基于高度的阴影系统可以修改数字对象的对象阴影。例如,在一些实现中,基于高度的阴影系统确定数字对象的垂直移位量,并且将对应的移位值添加到针对数字对象的高度图。具体地,基于高度的阴影系统将移位值添加到包括在高度图中的像素高度。

此外,在一些实施例中,基于高度的阴影系统通过生成对象阴影来提供针对数字图像资产的装饰性阴影,该数字图像资产诸如要在电子商务站点上显示的产品的图像。例如,在一些情况下,基于高度的阴影系统运行批处理来生成针对多个数字图像的对象阴影。在一些情况下,基于高度的阴影系统利用针对批次中每个数字图像的共用光源信息,使得其中描绘的数字对象看起来是在一致的照明条件下捕获的。

与传统系统相比,基于高度的阴影系统提供了多个优点。例如,基于高度的阴影系统比传统系统操作更灵活。例如,通过使用高度图生成针对数字对象的对象阴影,基于高度的阴影系统灵活地生成对象阴影,而不依赖于那些数字对象的三维模型。此外,通过响应于经由图形用户界面而检测到的用户交互来修改对象阴影,基于高度的阴影系统保持对对象阴影的属性的灵活控制。

此外,与传统系统相比,基于高度的阴影系统生成更准确的对象阴影。具体地,基于高度的阴影系统生成在数字图像内的某些照明条件下更准确地描绘对象的阴影的对象阴影。例如,通过使用针对数字对象的高度图而不是容易出错的三维模型来生成对象阴影,基于高度的阴影系统减少了所产生的对象阴影中存在的伪影。此外,通过使用高度图和对应的光源信息,基于高度的阴影系统改进了对象几何形状和照明的建模,以创建更逼真的对象阴影。

此外,基于高度的阴影系统以改进的效率操作。实际上,当例如与采用基于物理的阴影绘制算法来从对象的三维模型中创建阴影的传统系统相比时,基于高度的阴影系统减少了生成对象阴影所需的计算资源的消耗。此外,基于高度的阴影系统利用减少的用户交互来生成对象阴影。具体地,通过生成和使用对应于数字对象的高度图,基于高度的阴影系统避免了用户交互来调整三维模型以将模型与数字对象正确对齐的需要。因此,基于高度的阴影系统减少了生成具有期望(例如,真实的)视觉外观的对象阴影所需的用户交互、时间和计算资源。

如前述讨论所示,本公开利用各种术语来描述分割精细化系统的特征和优点。现在提供关于这些术语的含义的附加的细节。例如,如本文所使用的,术语“数字图像”指的是数字视觉表示(例如,由数字数据组成的图像)。具体地,在一些实施例中,数字图像指的是由数字图像数据组成并且经由用户界面可显示的数字文件。例如,在一些实现中,数字图像包括数字照片、照片或其他文档的数字绘制(例如,扫描或其他数字再现)、或数字视频或其他动画序列的帧。在一些实现中,数字图像包括数字生成的绘图、图表、地图、图形、徽标或其他图形。相关地,如本文所使用的,术语“图像空间”指的是由数字图像定义的空间。具体地,在一些实施例中,图像空间指的是由数字图像的像素定义的空间。例如,在一些实施例中,基于高度的阴影系统将数字图像在其对应的图像空间中的两点之间的距离确定为以像素为单位的距离。

此外,如本文所使用的,术语“数字对象”指的是在数字图像中描绘的项或对象。具体地,在一个或多个实施例中,数字对象指的是数字图像中描绘的有机或非有机对象。为了说明,在一些实施例中,数字对象包括但不限于人、动物、建筑物、植物、车辆、椅子或手持项。

此外,如本文所使用的,术语“像素”指的是数字图像的元素。具体地,在一些实施例中,像素包括可显示或以其他方式可表示(例如,在图形用户界面内)的数字图像的最小单元。为了说明,在一些实现中,像素包括与数字图像的一个或多个特定特性相关联的数字图像的元素。例如,在一些情况下,像素包括描绘或有助于描绘数字图像中描绘的数字对象的数字图像的元素。

如本文所使用的,术语“像素高度”指的是基于数字图像的像素的数字图像中的对象的高度。具体地,在一些实施例中,像素高度指的是指示数字图像的像素与诸如数字图像的另一像素的另一点的垂直距离的值或测量值。为了说明,在一些实现中,像素高度包括指示数字图像内的像素相对于以像素测量的数字图像相关联(例如,在其中描绘的)地面的垂直距离的测量值。

此外,如本文所使用的,术语“对象阴影”指的是与数字对象相关联的阴影。具体地,在一个或多个实施例中,对象阴影指的是由数字图像中描绘的数字对象基于与数字图像相关联的照明条件投射的阴影。例如,在一些情况下,对象阴影包括从数字对象在对应数字图像中描绘的一个或多个表面上投射的阴影。在一些实现中,对象阴影包括硬对象阴影或软对象阴影。如本文所使用的,术语“硬对象阴影”指的是具有硬边界的对象阴影。具体地,在一些实施例中,硬对象阴影指的是具有清晰定义的边界的对象阴影。例如,在一些情况下,在硬对象阴影的每个部分(例如,每个边缘)和周围区域之间存在清晰的区别。相反,如本文所使用的,术语“软对象阴影”指的是具有一个或多个软边界的对象阴影。具体地,在一些实施例中,软对象阴影指的是具有一个或多个不清晰定义的边界(例如,混合到周围区域中)的对象阴影。例如,在一些情况下,软对象阴影包括具有看起来逐渐淡入周围区域中的至少一部分的对象阴影。

如本文所使用的,术语“软度”指的是区分硬对象阴影和软对象阴影的特性或属性。具体地,在一些实施例中,软度指的是具有一个或多个软边界的特性。此外,在一些情况下,软度与程度相关联。换言之,在一些实现中,软对象阴影可以具有不同程度或等级的软度,其中较高等级的软度与软对象阴影与周围区域的更强混合相关联。如本文所使用的,术语“软度值”指的是量化诸如软对象阴影的对象阴影的软度的值或值的集合(例如,值的矢量)。在一些情况下,基线软度值(例如,软度值为零)与硬阴影对象相关联,高于基线软度值的软度值与软对象阴影相关联,并且相对较高的软度值与针对软对象阴影的较高软度相关联。在一些情况下,基于高度的阴影系统基于软度值来生成具有一定软度程度的软对象阴影。相关地,如本文所使用的,术语“软度控件”指的是用于确定或修改软度值的特征。具体地,在一些实施例中,软度控件指的是指示用于生成对象阴影的软度值并且可交互以用于修改软度值的图形用户界面元素。

如本文所使用的,术语“阴影投影”指的是基于与数字图像相关联的照明条件,将阴影从数字图像的一部分投影到数字图像的另一部分。例如,在一些情况下,阴影投影指的是由于相关联的照明条件,数字图像中所描绘的数字对象在数字图像的一个或多个表面上投射的阴影(即,对象阴影)。在一些情况下,阴影投影包括对应于数字对象的对象阴影的位置(例如,针对其各个阴影像素的位置)。在一些情况下,阴影投影包括对象阴影的一个或多个其他性质,诸如其定向、大小、边界等。在一些情况下,基于高度的阴影系统基于各个阴影像素的位置来确定这些其他性质。

如本文所使用的,术语“阴影像素”指的是与对象阴影相关联的数字图像的像素。具体地,在一些实施例中,阴影像素指的是描绘或有助于描绘对象阴影的像素。如下文将讨论的,在一个或多个实施例中,基于高度的阴影系统从对应数字对象的阴影投影(例如,从数字对象的像素的阴影投影)标识、生成或以其他方式确定对象阴影的阴影像素。

此外,如本文所使用的,术语“高度图”指的是像素到其对应像素高度的映射。具体地,在一些实施例中,高度图包括指示与数字图像中描绘的一个或多个数字对象相关联的像素的像素高度的图。例如,在一些情况下,高度图包括单通道映射,该单通道映射具有针对数字对象的每个像素的单个值,该值指示该像素的像素高度。在一个或多个实现中,高度图指示距离数字图像中的水平线、地面或其他参考点的对象的像素的像素高度。

如本文所使用的,术语“神经网络”指的是机器学习模型的类型,其可以基于输入来调整(例如,训练)以近似用于生成对应输出的未知函数。具体地,在一些实施例中,神经网络指的是互连的人工神经元的模型(例如,按层组织),其通信并且学习以近似复杂函数并且基于被提供给该模型的多个输入来生成输出。在一些情况下,神经网络包括一个或多个机器学习算法。此外,在一些情况下,神经网络包括实现深度学习技术的算法(或算法集),该深度学习技术利用算法集来对数据中的高等级抽象进行建模。为了说明,在一些实施例中,神经网络包括卷积神经网络、递归神经网络(例如,长短期记忆神经网络)、生成性对抗神经网络、图形神经网络或多层感知器。在一些实施例中,神经网络包括神经网络或神经网络组件的组合。

此外,如本文所使用的,术语“高度预测神经网络”指的是生成针对数字图像的高度图的计算机实现的神经网络。实际上,在一些实施例中,高度预测神经网络指的是分析数字图像并且生成针对数字图像的高度图的神经网络。具体地,在一些情况下,高度预测神经网络分析数字图像中描绘的一个或多个数字对象,并且生成针对该一个或多个数字对象的高度图(或多个高度图)。在一些情况下,高度预测神经网络通过分析与数字图像相关联的一个或多个对象掩模、对象抠图和/或一个或多个坐标方案来分析数字图像(例如,一个或多个数字对象)。

此外,如本文所使用的,术语“阴影样式化神经网络”指的是生成针对数字图像中描绘的数字对象的软对象阴影的计算机实现的神经网络。具体地,在一些实施例中,阴影样式化神经网络指的是基于针对数字对象所确定的阴影投影来生成软对象阴影的神经网络。例如,在一些情况下,阴影样式化神经网络包括神经网络,该神经网络分析针对数字对象的硬阴影掩模和对象掩模,并且基于该分析生成针对数字对象的软对象阴影。

如本文所使用的,术语“掩模”指的是可用于将数字图像分割成分离部分的图。具体地,在一些情况下,掩模指的是对应于数字图像并且标识属于数字图像的一个部分的数字图像的像素集和属于数字图像的另一部分的另一像素集的图。例如,在一些实施例中,掩模包括数字图像的图,其对于每个像素具有该像素是否对应于数字图像的特定部分的指示。在一些实现中,该指示包括二进制指示(对于属于该部分的像素为1,对于不属于该部分的像素为0)。在备选实现中,该指示包括指示像素属于特定部分的可能性的概率(例如,1与0之间的数字)。在这种实现中,值越接近1,像素就越有可能属于该部分,反之亦然。如本文所使用的,术语“对象掩模”指的是将数字图像的一个或多个对象与数字图像的其他部分区分开来的掩模。此外,如本文所使用的,术语“硬阴影掩模”指的是将针对数字对象的硬对象阴影与数字图像的其他部分区分开来的掩模。

此外,如本文所使用的,术语“光源信息”指的是关于与数字图像相关联的照明条件的信息。具体地,在一些实施例中,光源信息指的是指示与数字图像相关联的光源如何影响针对数字图像中所描绘的一个或多个数字对象所确定的一个或多个阴影投影的信息。例如,在一些情况下,光源信息包括针对数字图像的光源的位置。在一些实施例中,光源信息包括与数字图像相关联的水平线的位置。具体地,在一些情况下,光源信息包括光源相对于水平线的位置或光源在水平线上的投影。

如本文所使用的,术语“对象抠图”指的是数字对象从数字图像中分离出来的描绘。具体地,在一些实施例中,对象抠图指的是从数字对象中提取或复制数字对象,其在调色板(例如,数字图像的RGB调色板)中描绘数字对象,在该调色板中数字图像描绘数字对象。在一些情况下,对象抠图包括在与对应数字图像的背景不同的背景(诸如,纯白、灰色或黑色背景)下描绘数字对象的图像。实际上,在一些实现中,对象抠图包括描绘数字图像的前景的图像。在一些情况下,对象抠图保持来自二维数字图像的数字对象的二维表示。

此外,如本文所使用的,术语“坐标方案”指的是与数字图像相关联的坐标点的标准。具体地,在一些实施例中,坐标方案指的是数字图像的像素到坐标点的映射。在一个或多个实施例中,坐标方案在数字图像的角点中的一个角点、数字图像的中心或数字图像的另一部分建立原点。在一些情况下,坐标方案包括与二维数字图像相关联的二维坐标方案。在一些实现中,坐标方案包括与数字图像相关联的y轴的指示(例如,y轴的定向和/或针对y轴的增加/减小值的方向)。

现在将参考附图提供关于基于高度的阴影系统的附加的细节。例如,图1示出了基于高度的阴影系统106在其中操作的示例性系统100的示意图。如图1所示,系统100包括(多个)服务器102、网络108和客户端设备110a至110n。

尽管图1的系统100被示为具有特定数目的组件,但是系统100能够具有任意数目的附加的或备选的组件(例如,经由网络108与基于高度的阴影系统106通信的任意数目的服务器、客户端设备或其他组件)。类似地,尽管图1示出了(多个)服务器102、网络108和客户端设备110a至客户端设备110n的特定布置,但是各种附加布置是可能的。

(多个)服务器102、网络108和客户端设备110a至110n直接或间接(例如,通过下面结合图10更详细讨论的网络108)通信地彼此耦合。此外,(多个)服务器102和客户端设备110a至110n包括各种计算设备中的一个计算设备(包括参考图10更详细地讨论的一个或多个计算设备)。

如上所述,系统100包括(多个)服务器102。在一个或多个实施例中,(多个)服务器102生成、存储、接收和/或发送数据,包括数字图像和经修改的数字图像(例如,被修改为包括针对数字图像中描绘的数字对象的对象阴影的数字图像)。例如,在一些实施例中,(多个)服务器102从客户端设备(例如,客户端设备110a至客户端设备110n中的一个客户端设备)接收数字图像,并且转而将经修改的数字图像发送到客户端设备。在一个或多个实施例中,(多个)服务器102包括数据服务器。在一些实现中,(多个)服务器102包括通信服务器或网络托管服务器。

如图1所示,(多个)服务器102包括图像编辑系统104。在一个或多个实施例中,图像编辑系统104提供客户端设备(例如,客户端设备110a至客户端设备110n中的一个客户端设备)生成、编辑、管理和/或存储数字图像的功能。例如,在一些情况下,客户端设备经由网络108向(多个)服务器102上托管的图像编辑系统104发送数字图像。然后,图像编辑系统104提供客户端设备可以用来编辑数字图像、存储数字图像以及随后搜索、访问和查看数字图像的多个选项。

此外,(多个)服务器102包括基于高度的阴影系统106。具体地,在一个或多个实施例中,基于高度的阴影系统106利用(多个)服务器102来修改数字图像以包括针对数字图像中描绘的数字对象的对象阴影。例如,在一些情况下,基于高度的阴影系统106利用(多个)服务器102来接收描绘数字对象的数字图像,并且修改数字图像以包括针对数字对象的对象阴影。

为了说明,在一个或多个实施例中,基于高度的阴影系统106经由(多个)服务器102从描绘数字对象的数字图像中提取针对数字对象的对象掩模。此外,经由(多个)服务器102,基于高度的阴影系统106利用高度预测神经网络从对应于数字对象的对象掩模中生成高度图,该高度图包括针对数字对象的像素的像素高度。此外,经由(多个)服务器102,基于高度的阴影系统106使用来自高度图的像素高度和针对数字图像的光源信息来确定针对数字对象的像素的阴影投影。经由(多个)服务器102,基于高度的阴影系统106还使用针对数字对象的像素的阴影投影来修改数字图像,以包括针对数字对象的对象阴影。

在一个或多个实施例中,客户端设备110a至客户端设备110n包括显示和/或修改数字图像的计算设备。例如,客户端设备110a至客户端设备110n包括智能电话、平板计算机、台式计算机、膝上型计算机、头戴式显示设备和/或其他电子设备中的一个或多个。在一些实例中,客户端设备110a至110n包括允许显示和/或修改数字图像的一个或多个应用(例如,图像编辑应用112)。例如,在一个或多个实施例中,图像编辑应用112包括安装在客户端设备110a至客户端设备110n上的软件应用。附加地或备选地,图像编辑应用112包括在(多个)服务器102上托管的(并且由图像编辑系统104支持的)软件应用,该软件应用可由客户端设备110a至客户端设备110n通过诸如web浏览器的另一应用来访问。

具体地,在一些实现中,(多个)服务器102上的基于高度的阴影系统106支持客户端设备110n上的基于高度的阴影系统106。例如,(多个)服务器102上的基于高度的阴影系统106学习针对高度预测神经网络和/或阴影样式化神经网络的参数。然后,基于高度的阴影系统106经由(多个)服务器102向客户端设备110n提供高度预测神经网络和/或阴影样式化神经网络。换言之,客户端设备110n从(多个)服务器102获得(例如,下载)具有所学习的参数的高度预测神经网络和/或阴影样式化神经网络。一旦下载,客户端设备110n上的基于高度的阴影系统106能够利用高度预测神经网络和/或阴影样式化神经网络来独立于(多个)服务器102而生成针对数字图像中描绘的数字对象的对象阴影。

在备选实现中,基于高度的阴影系统106包括允许客户端设备110n与(多个)服务器102上托管的内容和服务交互的网络托管应用。为了说明,在一个或多个实现中,客户端设备110n访问(多个)服务器102所支持的网页。客户端设备110n向(多个)服务器102提供数字图像,并且作为响应,(多个)服务器102上的基于高度的阴影系统106修改数字图像以包括针对数字图像中描绘的数字对象的对象阴影。然后,(多个)服务器102将经修改的数字图像提供给客户端设备110n以供显示或进一步编辑。

实际上,基于高度的阴影系统106能够全部或部分地由系统100的各个元素实现。实际上,尽管图1示出了相对于(多个)服务器102实现的基于高度的阴影系统106,但是基于高度的阴影系统106的不同组件可以由系统100内的各种设备来实现。例如,在一个或多个实现中,基于高度的阴影系统106的一个或多个(或所有)组件由不同的计算设备(例如,客户端设备110a至110n中的一个客户端设备)或与托管图像编辑系统104的(多个)服务器102分离的服务器来实现。实际上,如图1所示,客户端设备110a至客户端设备110n包括基于高度的阴影系统106。下面将参考图8描述基于高度的阴影系统106的示例组件。

如上所述,在一个或多个实施例中,基于高度的阴影系统106修改数字图像以包括针对数字图像中描绘的数字对象的对象阴影。图2A至图2B示出了根据一个或多个实施例,基于高度的阴影系统106修改数字图像以包括对象阴影的概览图。

实际上,如图2A所示,基于高度的阴影系统106确定(例如,标识或以其他方式获得)数字图像202。在一个或多个实施例中,基于高度的阴影系统106通过从计算设备(例如,托管第三方系统或客户端设备的服务器)接收数字图像202来获得数字图像202。然而,在一些实施例中,基于高度的阴影系统106通过访问存储数字图像的数据库来确定数字图像202。例如,在至少一个实现中,基于高度的阴影系统106维护数据库并且在其中存储多个数字图像。在一些情况下,外部设备或系统存储数字图像以供基于高度的阴影系统106访问。

在一些实施例中,基于高度的阴影系统106通过接收数字图像202的指示来接收数字图像202。例如,在一些情况下,基于高度的阴影系统106接收数字图像202的存储位置、数字图像202的文件名或数字图像202的选择。因此,基于高度的阴影系统106基于所接收的指示来取回数字图像202。为了说明,如图2A所示,在一些实例中,基于高度的阴影系统106在计算设备200(例如,(多个)服务器102,或以上参考图1讨论的客户端设备110a至客户端设备110n中的一个客户端设备,或诸如智能电话或平板计算机的一些其他移动计算设备)上操作。因此,在一些实施例中,基于高度的阴影系统106通过从本地存储或从计算设备200可访问的远程存储位置访问数字图像202来取回数字图像202。

如图2A所示,数字图像202描绘数字对象204(例如,人)。此外,如图所示,数字图像202不包括针对数字对象204的对象阴影。在一个或多个实施例中,缺少对象阴影是由于数字图像202的性质。例如,在一些情况下,数字对象204被编辑到数字图像202中(例如,经由图像合成过程或其他编辑过程);因此,当数字对象204被捕获时,数字对象204不在最初与数字图像202相关联的照明条件下出现。在一些情况下,数字图像202由从各种预配置的图像元素中手动编辑在一起的元素(包括数字对象204)组成;因此,在完全没有照明条件的情况下创建数字图像202。

如图2A进一步所示,基于高度的阴影系统106修改数字图像202以包括针对数字对象204的对象阴影208。具体地,在一些实现中,基于高度的阴影系统106基于对数字图像202的分析(例如,对数字对象204的分析)来生成对象阴影208。因此,基于高度的阴影系统106通过插入对象阴影208来修改数字图像202。

如图所示,基于高度的阴影系统106使用高度图206来修改数字图像202以包括对象阴影208。例如,在一个或多个实施例中,基于高度的阴影系统106生成针对数字对象204的高度图206,并且利用高度图206来生成对象阴影208用于包括在数字图像202中。下面将更详细地讨论生成和使用高度图。在一个或多个实施例中,基于高度的阴影系统106利用与数字图像202相关联的光源信息以及高度图206来生成针对数字对象204的对象阴影208。

如进一步所示的,对象阴影208包括对应于数字对象204的软对象阴影。然而,在一些实施例中,基于高度的阴影系统106修改数字图像202以包括针对数字对象204的硬对象阴影或某种其他风格的阴影。

此外,尽管图2A示出了生成针对数字图像中描绘的单个数字对象的单个对象阴影,但是在一些实现中,基于高度的阴影系统106生成针对数字图像中描绘的多个数字对象中的每个数字对象的对象阴影。实际上,在一些情况下,基于高度的阴影系统106生成对应于数字图像内的多个数字对象的单个高度图,或者生成针对每个数字对象的高度图。因此,基于高度的阴影系统106使用(多个)高度图来生成针对多个数字对象的对象阴影,并且修改数字图像以包括对象阴影。

图2B示出了根据一个或多个实施例,基于高度的阴影系统106采用具有高度图的各种模型来生成针对数字图像的软对象阴影的概览图。实际上,如图2B所示,基于高度的阴影系统106利用高度预测神经网络224来生成针对数字图像220的高度图226。具体地,高度预测神经网络224生成针对数字图像220中描绘的数字对象222的高度图226(例如,指示数字对象的像素的像素高度)。在一些情况下,高度预测神经网络224通过分析数字图像220来生成高度图226。例如,在一些实施例中,高度预测神经网络224分析对应于数字图像220的各种分量(例如,包括在数字图像220中、从数字图像220中导出或以其他方式与数字图像220相关联的分量),并且基于该分析来生成高度图226。

如图2B中进一步所示,基于高度的阴影系统106利用硬阴影绘制模型228来使用高度图226确定针对数字图像220中描绘的数字对象222的阴影投影230。具体地,基于高度的阴影系统106利用硬阴影绘制模型228来使用高度图226来确定针对数字对象222的像素的阴影投影。如本文所使用的,术语“硬阴影绘制模型”指的是确定二维空间内像素的阴影投影的计算机实现的模型或算法。具体地,在一些实施例中,硬阴影绘制模型指的是用于针对给定像素确定对应阴影投影的计算机实现的算法。在一些情况下,硬阴影绘制模型通过确定对应阴影像素的位置来确定像素的阴影投影。

此外,如图2B所示,基于高度的阴影系统106利用硬阴影绘制模型228进一步基于针对数字图像220的光源信息232来生成阴影投影230。在一个或多个实施例中,基于高度的阴影系统106从用户输入中确定光源信息232。实际上,在一些情况下,基于高度的阴影系统106接收用户输入,其提供诸如光源的位置或水平线的位置的用户输入。在一些情况下,基于高度的阴影系统106基于分析数字图像220来确定光源信息232。例如,基于高度的阴影系统106分析数字图像220以基于数字图像220内已经存在的一个或多个阴影来检测光源或者确定光源的位置。如图2B所示,并且将在下文更详细地解释,光源信息包括光源位置238和水平线位置240。

在一个或多个实施例中,在确定阴影投影230时,基于高度的阴影系统106生成针对数字图像中描绘的数字对象222的硬阴影对象。例如,使用经由阴影投影230而被标识的阴影像素的位置,基于高度的阴影系统106在这些位置处生成阴影像素。在一个或多个实施例中,当经由确定阴影投影230来标识阴影像素的位置时,基于高度的阴影系统106生成阴影像素。在一些情况下,基于高度的阴影系统106确定阴影投影230(例如,针对每个阴影像素的位置),然后在对应位置处生成阴影像素。

如图2B进一步所示,基于高度的阴影系统106利用阴影样式化神经网络234来从阴影投影230(例如,从根据阴影投影230生成的硬阴影对象)生成针对数字对象222的软对象阴影236。如图所示,基于高度的阴影系统106向阴影样式化神经网络234提供软度值242,使得能够控制软对象阴影236的软度。此外,基于高度的阴影系统106修改数字图像220以包括针对数字对象222的软对象阴影236。

通过利用高度图以生成针对数字图像中描绘的数字对象的对象阴影,基于高度的阴影系统106比许多传统系统更灵活地操作。实际上,基于高度的阴影系统106生成针对数字对象的对象阴影,而不使用这些数字对象的三维模型。因此,基于高度的阴影系统106灵活地生成针对二维数字图像中描绘的数字对象的对象阴影,其中对应的三维模型不可用。

如前所述,在一个或多个实施例中,基于高度的阴影系统106利用高度预测神经网络来生成针对数字图像中描绘的数字对象的高度图。图3A示出了根据一个或多个实施例,用于使用高度预测神经网络来生成针对数字图像中描绘的数字对象的高度图的图示。

如图3A所示,基于高度的阴影系统106确定与描绘数字对象304的数字图像302相对应的各种分量,以用于生成针对数字对象304的高度图314。例如,如图3A所示,基于高度的阴影系统106从数字图像302中提取对应于数字对象304的对象掩模306。例如,在一个或多个实施例中,基于高度的阴影系统106利用如下分割模型从数字图像302中提取对象掩模306:于2020年8月7日提交的,题为GENERATING REFINED SEGMENTATION MASKS BASED ONUNCERTAIN PIXELS(基于不确定像素生成精细化分割掩模)的美国专利申请第16/988,408号中描述的分割模型,或者于2021年3月12日提交的,题为GENERATING REFINEDSEGMENTATION MASKS VIA METICULOUS OBJECT SEGMENTATION(经由精致对象分割生成精细化分割掩模)的美国专利申请第17/200,525号中描述的分割模型,这两篇文献通过引用整体并入本文。

如图3A进一步所示,基于高度的阴影系统106确定针对数字对象304的对象抠图308。在一个或多个实施例中,基于高度的阴影系统106通过将对象掩模306应用于数字图像302来确定对象抠图308。在一些情况下,基于高度的阴影系统106经由用户输入来接收对象抠图308。例如,在至少一个实现中,基于高度的阴影系统106从客户端设备接收对象抠图308,该客户端设备经由用户与剪切工具的交互从数字图像302中提取对象抠图308。

此外,如图所示,基于高度的阴影系统106确定针对数字图像302的坐标方案310。在一些情况下,基于高度的阴影系统106利用默认或预定的坐标方案作为坐标方案310。在一些实现中,基于高度的阴影系统106基于用户输入(例如,从客户端设备接收的)或预配置的用户偏好来确定坐标方案310。

如图3A所示,基于高度的阴影系统106利用高度预测神经网络312来生成高度图314。在一个或多个实施例中,高度预测神经网络312包括具有编码器-解码器神经网络架构的神经网络。为了说明,在一些实施例中,高度预测神经网络312利用编码器对神经网络输入(例如,对象掩模306、对象抠图308和坐标方案310)进行编码,并且利用解码器从经编码的输入生成神经网络输出(例如,高度图314)。在一些实现中,高度预测神经网络312还包括一个或多个跳过链接,每个跳过链接向解码器的至少一层提供编码器的至少一层的输出。

图3B示出了根据一个或多个实施例、基于高度的阴影系统106用于生成针对数字图像中描绘的数字对象的高度图的高度预测神经网络340的架构。如前所述,并且如图3B所示,基于高度的阴影系统106提供对象掩模342、对象抠图344和坐标方案346作为高度预测神经网络340的输入。例如,在一些情况下,基于高度的阴影系统106组合(例如,级联)对象掩模342、对象抠图344和坐标方案346,并且将该组合提供给高度预测神经网络340。在一些情况下,基于高度的阴影系统106通过将对象掩模342中的最低点设置为零来归一化坐标方案346。

如图3B所示,高度预测神经网络340包括由转换器块348a至348d组成的转换器主干。尽管示出了特定数目的转换器块,但是在其他实施例中,高度预测神经网络340可以包括各种数目的转换器块。高度预测神经网络340对对象掩模342、对象抠图344和坐标方案346的级联进行编码,并且从该级联中生成或提取特征。更具体地,如图所示,高度预测神经网络340使用各种转换器块来生成不同规模的特征。如本文所使用的,术语“特征”指的是通过神经网络从输入(例如,图像或图像与其他输入的级联)提取的特性。特征可以包括人类不容易理解的深层或隐藏特征或明显可见的专利特征。特征图是一个或多个特征的集合。具体地,特征图可以指网格、矩阵、矢量或不同的多维特征集合。此外,特征图可以包括组成特征图的各个特征值的位置或地点。例如,特征图可以包括对应于数字图像的像素的特征值,使得特征图以特征值的形式来表示数字图像。

如图3B进一步所示,高度预测神经网络340包括多级解码器350。高度预测神经网络340利用多级解码器来合并来自不同规模的特征。例如,在一个或多个实现中,每个转换器块生成给定规模(即,大小)的特征图。在一个或多个实现中,特征图在规模上逐渐变小,并且更抽象或更隐藏。适配器将特征图重新调整规模为通用大小以允许级联。然后,多级解码器350对级联的特征图进行解码,以生成高度图352。

在一个或多个实现中,对象掩模342的使用允许高度预测神经网络340仅对包括要针对其生成高度图的对象的图像部分进行编码。换言之,对象掩模342的使用允许高度预测神经网络340通过忽略图像的其他部分来高效地生成高度图。

因此,基于高度的阴影系统106生成针对数字图像中描绘的数字对象的高度图。具体地,在一些实施例中,基于高度的阴影系统106利用高度预测神经网络来生成针对数字对象的高度图。参考图3A描述的算法和动作可以包括用于执行用于生成针对数字图像中描绘的数字对象的高度图的步骤的对应结构。此外,参考图3B描述的高度预测神经网络架构可以包括用于执行用于生成针对数字图像中描绘的数字对象的高度图的步骤的对应结构。

在一个或多个实施例中,基于高度的阴影系统106生成(例如,训练)高度预测神经网络以生成针对数字图像中描绘的数字对象的高度图。图3C示出了根据一个或多个实施例、用于生成高度预测神经网络以生成高度图的图示。

实际上,如图3C所示,基于高度的阴影系统106利用训练数字图像320来生成高度预测神经网络326。具体地,如图3C所示,训练数字图像320包括合成训练图像322和真实训练图像324。在一个或多个实施例中,合成训练图像322包括计算机生成的数字图像。例如,在一些情况下,合成训练图像322包括计算机生成的数字对象的三维模型。在一些情况下,合成训练图像322包括所生成的三维模型中的每个模型的各种姿态。对于三维模型的每个姿态,合成训练图像322包括从不同角度捕获的图像。在一些实现中,真实训练图像324包括照片(例如,数字照片)。

如图3C所示,基于高度的阴影系统106利用高度预测神经网络326以分析来自训练数字图像320(例如,合成训练图像322或真实训练图像324中的一个图像)的训练数字图像,并且基于该分析来生成所预测的高度图328。此外,基于高度的阴影系统106经由损失函数332将所预测的高度图328与真实值(ground truth)330进行比较。

在一个或多个实施例中,对应于合成训练图像322的真实值包括合成训练图像322中描绘的数字对象的三维模型的像素高度。例如,在一些情况下,对应于合成训练图像322的真实值包括对应于从所提出的三维模型捕获的二维图像的对象掩模以及对象掩模内表示的像素的像素高度。

此外,在一些实施例中,对应于真实训练图像324的真实值包括真实训练图像324中描绘的数字对象的一个或多个注释。为了说明,在一个或多个实施例中,对应于每个真实训练图像的真实值包括经由用户交互而被提供的一个或多个标签(例如,注释),其中标签包括从真实训练图像中描绘的数字对象的点到真实训练图像中描绘的地面上的点绘制的线。具体地,在一些情况下,每个标签显示点从数字对象到地面的投影。在一个或多个实施例中,对应于每个真实训练图像的真实值还包括对每条线的长度(例如,对应于所绘制的线的对象的像素高度)的测量。在一些情况下,真实值还包括经由使用注释的双线性插值法而被确定的数字对象的密集像素高度图。

在一个或多个实施例中,基于高度的阴影系统106将所预测的高度图328与真实值330进行比较,以确定高度预测神经网络326的损失(即,误差)。在一些实施例中,在真实值330对应于真实训练图像的情况下,基于高度的阴影系统106确定与示出所描绘的数字对象的点到地面的投影的一个或多个标签相对应的损失。

如图3C所示,基于高度的阴影系统106将确定损失反向传播到高度预测神经网络326(如虚线334所示),以更新高度预测神经网络326的参数。具体地,基于高度的阴影系统106更新参数,以最小化高度预测神经网络326在生成针对数字图像中描绘的数字对象的高度图时的误差。

尽管图3C示出了使用一个精细化迭代来生成高度预测神经网络326,但是应当注意,在一些实施例中,基于高度的阴影系统106使用多次精细化迭代来生成高度预测神经网络326。在一个或多个实施例中,利用每次精细化迭代,基于高度的阴影系统106逐渐提高高度预测神经网络326生成针对数字对象的高度图的精度。因此,基于高度的阴影系统106利用所学习的网络参数来生成高度预测神经网络336。

实际上,如图3C所示,基于高度的阴影系统106使用合成训练图像和真实训练图像来生成高度预测神经网络。然而,在一些情况下,基于高度的阴影系统106仅使用合成训练图像或者仅使用真实训练图像来生成高度预测神经网络。在一些实现中,从合成训练图像和真实训练图像两者生成高度预测神经网络提高了高度预测神经网络生成高度图的能力。例如,在一些情况下,使用合成训练图像和真实训练图像减少了由高度预测神经网络生成的高度图中存在的伪影。

如上所述,在一个或多个实施例中,基于高度的阴影系统106利用针对数字对象的高度图来确定数字对象的阴影投影。具体地,基于高度的阴影系统106确定针对高度图的像素的阴影投影。如进一步讨论的,在一个或多个实施例中,基于高度的阴影系统106使用与描绘数字对象的数字图像相关联的光源信息来确定阴影投影。图4A至图4B示出了根据一个或多个实施例,使用高度图和光源信息来确定针对数字对象的像素的阴影投影的图示。

图4A示出了根据一个或多个实施例的投影相关性。具体地,图4A示出了物理世界中投射阴影的对象与如何在数字图像描绘的图像空间内捕获该对象和阴影之间的相关性。如图4A所示,线A’B’表示物理世界中站在地面上的对象。当光源P’照亮环境时,对象投射由线B’C’表示的阴影。当场景被数字图像捕获时,光源、对象和阴影分别被投影到P、AB和BC。D’表示光源P’在地面上的垂直投影,并且D’在所捕获的数字图像内被投影到D。可以注意到,P’、A’和C’是共线性的,同时C’、B’和D’也是共线性的。

根据图4A中所示的投影相关性,基于高度的阴影系统106利用高度图来生成针对数字图像内描绘的数字对象的对象阴影。实际上,如上所述,各种因素可以使数字图像不描绘针对其中所描绘的数字对象的对象阴影。例如,数字图像可以是图像合成的结果,或者是以其他方式编辑数字图像以包括数字对象,使得由数字图像捕获的场景不包括对应于数字对象的真实世界对象的结果。因此,基于高度的阴影系统106可以生成对象阴影以描绘在捕获数字图像时,如果真实世界对象存在的话将被捕获的阴影。

图4B示出了使用硬阴影绘制模型402来确定数字对象的像素408(表示为A)的阴影投影的图示。在一个或多个实施例中,在具有由框404表示的边界的数字图像中描绘包括像素408的数字对象。此外,基于高度的阴影系统106利用包括针对像素408的像素高度的高度图406来确定针对像素408的阴影投影。

如图4B所示,基于高度的阴影系统106标识描绘对应数字对象的数字图像内的像素408的位置。在一个或多个实施例中,基于高度的阴影系统106使用表示像素408的水平位置的坐标x

如图4B进一步所示,基于高度的阴影系统106标识针对数字图像的光源410(表示为P并且位于点(x

如图4B所示,光源410位于数字图像边界之外。然而,在一些情况下,基于高度的阴影系统106确定光源410在数字图像边界内。实际上,如上所述,在一些实施例中,基于高度的阴影系统106使用对象检测模型来标识针对数字图像的光源。

如图4B进一步所示,基于高度的阴影系统106通过确定针对对应阴影像素414(表示为C)的位置来确定针对像素408的阴影投影。具体地,基于高度的阴影系统106确定具有表示对应阴影像素414的水平位置的坐标x

如图所示,基于高度的阴影系统106基于像素408的位置、光源410的位置和水平线412的位置来确定对应阴影像素414的位置。例如,如图4B所示,基于高度的阴影系统106确定对应的阴影像素414位于两条线的交点处:包括光源410和像素408的第一线416;以及包括光源410在水平线412上的投影420和像素408在数字图像的地面424上的投影422的第二线418(其中投影的距离表示为h,并且所产生的投影点表示为B)。换言之,基于高度的阴影系统106确定对应的阴影像素414位于线PA和线DB的延伸的交点处。如图4B所示,像素408在地面424上的投影422的距离——h的值——对应于包括在高度图406内的像素408的像素高度。

如图4B所示,在一些实施例中,基于高度的阴影系统106使用从数字图像确定的各种值来确定对应阴影像素414的位置。例如,如图所示,基于高度的阴影系统106确定从数字图像的顶部到图像空间中的水平线412的垂直距离426(表示为Z)。此外,基于高度的阴影系统106确定水平线412与地面424之间的垂直距离428(例如,在图像空间中)(表示为d

d

d

在一个或多个实施例中,基于高度的阴影系统106基于ΔANC与ΔPMC之间的三角形相似性来确定针对对应阴影像素414的位置。例如,在一些情况下,基于高度的阴影系统106利用三角形相似性来确定以下关系:

因此,基于高度的阴影系统106利用公式3来确定针对对应阴影像素414的位置,如下所示:

因此,使用上述过程,基于高度的阴影系统106确定针对数字图像中描绘的数字对象的像素的阴影投影432。具体地,基于高度的阴影系统106确定针对与数字对象的像素相对应的阴影像素的位置。此外,如图所示,基于高度的阴影系统106在确定阴影投影432时利用针对数字对象而被生成的高度图406。

如图4B所示,基于高度的阴影系统106利用阴影投影432来生成针对数字对象的硬阴影掩模434。为了说明,在一个或多个实施例中,在确定针对数字图像的阴影像素的位置时,基于高度的阴影系统106确定针对数字对象的对象阴影。具体地,基于高度的阴影系统106确定针对数字图像的硬对象阴影。例如,在一些情况下,基于高度的阴影系统106在由阴影投影432指示的位置处生成与数字对象的像素相对应的阴影像素,从而生成针对数字对象的硬阴影对象。此外,基于高度的阴影系统106从硬阴影对象生成硬阴影掩模434。

因此,基于高度的阴影系统106利用阴影投影432——基于这些像素的像素高度和针对数字图像的光源信息,对应于数字对象的阴影像素的位置——来生成对应于针对数字对象的硬对象阴影的硬阴影掩模434。在一些情况下,基于高度的阴影系统106在由阴影投影432指示的位置处生成阴影像素,并且利用所生成的阴影像素来生成硬阴影掩模434。

在一个或多个实施例中,基于高度的阴影系统106使用前向跟踪投影模型从阴影投影432生成阴影像素。具体地,基于高度的阴影系统106确定数字图像中描绘的数字对象的每个像素的阴影投影,并且生成对应的阴影像素。然而,在一些实现中,基于高度的阴影系统106使用后向跟踪投影模型从阴影投影432确定阴影像素,其中基于高度的阴影系统106在确定阴影像素将在数字图像内可见(例如,不会被数字图像中描绘的某些其他对象遮挡)时从阴影投影生成阴影像素。

在一些情况下,基于高度的阴影系统106确定对应于数字图像的像素的阴影像素位于数字图像的边界之外。因此,在一些情况下,基于高度的阴影系统106仅使用被确定为位于数字图像的边界内的那些阴影像素来生成硬阴影掩模(例如,仅生成被确定为位于数字图像内的阴影像素)。

如前所述,在一个或多个实施例中,基于高度的阴影系统106利用阴影样式化神经网络来生成针对数字图像中描绘的数字对象的软对象阴影。具体地,基于高度的阴影系统106利用阴影样式化神经网络来从使用针对数字对象的高度图生成的硬阴影掩模中生成软对象阴影。图5示出了根据一个或多个实施例,用于利用阴影样式化神经网络生成软对象阴影的图示。

实际上,如图5所示,基于高度的阴影系统106向阴影样式化神经网络506提供对应于数字图像中描绘的数字对象的对象掩模502和硬阴影掩模504。在一个或多个实施例中,如以上参考图3A所讨论的,基于高度的阴影系统106生成针对数字对象的对象掩模502。此外,在一些情况下,如以上参考图5所讨论的,基于高度的阴影系统106生成针对数字对象的硬阴影掩模504。如图所示,基于高度的阴影系统106利用阴影样式化神经网络506来从对象掩模502和硬阴影掩模504生成软对象阴影510。

在一个或多个实施例中,阴影样式化神经网络506包括具有编码器-解码器神经网络架构的神经网络。为了说明,在一些实施例中,阴影样式化神经网络506利用编码器来编码神经网络输入(例如,对象掩模502和硬阴影掩模504),并且利用解码器来生成神经网络输出(例如,软对象阴影510)。在一些实现中,阴影样式化神经网络506还包括一个或多个跳过链接,每个跳过链接向解码器的至少一层提供编码器的至少一层的输出。

如图5进一步所示,基于高度的阴影系统106向阴影样式化神经网络506提供软度值508。实际上,如图所示,基于高度的阴影系统106利用阴影样式化神经网络506进一步基于软度值508来生成软对象阴影510。在一个或多个实施例中,基于高度的阴影系统106从用户输入中确定软度值508。例如,在一些情况下,基于高度的阴影系统106从客户端设备接收软度值508或以其他方式基于从客户端设备接收的用户输入(例如,基于与客户端设备上显示的图形用户界面内提供的软度控件的用户交互)来确定软度值508。在一些实现中,基于高度的阴影系统106利用预定软度值、默认软度值或从用户偏好确定的软度值。

在一个或多个实施例中,基于高度的阴影系统106通过向一个或多个解码器层提供软度值508而向阴影样式化神经网络506提供软度值508。为了说明,在一些实现中,基于高度的阴影系统106将软度值508定义为二维特征图(例如,指示与对象阴影相关联的每个阴影像素的对象阴影的软度的二维向量)。此外,基于高度的阴影系统106将二维特征图与阴影样式化神经网络506的解码器的一个或多个层的输入(或输出)级联,诸如解码器的初始层中的一个或多个初始层。因此,在一些情况下,解码器的层在其生成软对象阴影510时从软度值508中分析软度信息。

在一个或多个实施例中,基于高度的阴影系统106生成(例如,训练)阴影样式化神经网络506,以用于生成针对数字对象的软对象阴影。在一些情况下,基于高度的阴影系统106通过利用多次精细化迭代来精细化其参数并且提高其在生成软对象阴影中的精度来生成阴影样式化神经网络506。为了说明,在一些情况下,基于高度的阴影系统106利用阴影样式化神经网络506来分析针对给定精细化迭代的训练对象掩模和训练硬阴影掩模。此外,基于高度的阴影系统106向阴影样式化神经网络506提供训练软度值。因此,基于高度的阴影系统106利用阴影样式化神经网络506来生成所预测的软对象阴影,经由损失函数将所预测的软对象阴影与真实值进行比较,并且将所确定的损失反向传播到阴影样式化神经网络506以更新其参数。

在一些情况下,基于高度的阴影系统106利用合成图像来生成阴影样式化神经网络506。具体地,基于高度的阴影系统106利用从合成训练图像生成的训练硬阴影掩模和训练对象掩模。在一些情况下,基于高度的阴影系统106利用真实图像或合成图像和真实图像的组合来生成阴影样式化神经网络506。为了说明,在一些实施例中,基于高度的阴影系统106利用由三维模型组成的合成图像作为训练图像,并且还利用基于物理的阴影绘制模型来从三维模型生成软对象阴影,以用作对应的真实值。例如,在一些情况下,基于高度的阴影系统106利用在下文中描述的基于物理的绘制模型:PBR绘制器,https://substance3d.adobe.com/documentation/sddoc/pbr-render-194216472.html,2021年,其全部内容通过引用整体并入本文。

在一个或多个实施例中,基于高度的阴影系统106生成阴影样式化神经网络506,同时生成高度预测神经网络。然而,在一些情况下,基于高度的阴影系统106经由单独的过程来生成每个神经网络。

此外,如图所示,基于高度的阴影系统106利用从阴影样式化神经网络506生成的软对象阴影510来修改数字图像512。具体地,基于高度的阴影系统106修改数字图像512以包括软对象阴影510。例如,如图5所示,基于高度的阴影系统106修改数字图像,使得数字图像512中描绘的数字对象514看起来正在根据与数字图像512相关联的照明条件来投射软对象阴影510。

基于高度的阴影系统106的一个或多个实施例可以生成针对各种数字图像中描绘的数字对象的对象阴影(例如,软对象阴影)。因此,基于高度的阴影系统106的一个或多个实施例可以修改各种数字图像以包括对象阴影。图6A至图6C示出了根据一个或多个实施例,修改各种数字图像以包括针对其中显示的数字对象的对象阴影。

具体地,图6A示出了修改数字照片602以包括针对其中显示的数字对象606a至数字对象606b的对象阴影604a至对象阴影604b。在一个或多个实施例中,数字照片602包括通过从另一数字照片提取数字对象606a至数字对象606b并且将数字对象606a至数字对象606b插入到数字照片602中(例如,经由图像合成过程)而创建的数字图像。因此,在一些实现中,数字照片602最初不包括针对数字对象606a至数字对象606b的对象阴影。

如图6A所示,基于高度的阴影系统106生成针对数字对象606a至数字对象606b的对象阴影604a至对象阴影604b。此外,基于高度的阴影系统106修改数字照片602以包括对象阴影604a至对象阴影604b。如进一步所示,对象阴影604a至对象阴影604b与数字照片602中已经存在的其他对象阴影互补。换言之,基于高度的阴影系统106使用导致其他对象阴影的照明条件(例如,光源信息)来生成对象阴影604a至对象阴影604b。因此,在一个或多个实施例中,基于高度的阴影系统106生成对象阴影以便于将数字对象准确地(例如,真实的)合并到数字照片中。

图6B示出了修改描绘多个数字对象612a至数字对象612d的数字图像610以包括针对数字对象612a至数字对象612d的对象阴影614a至对象阴影614d。在一个或多个实施例中,数字对象612a至数字对象612d包括要被广告以供销售的产品(例如,经由电子商务网站的网页)。如图6B所示,基于高度的阴影系统106修改数字图像610以包括对象阴影614a至对象阴影614d。在一些情况下,基于高度的阴影系统106生成对象阴影614a至对象阴影614d以向数字对象612a至数字对象612d提供更逼真和更适于销售的外观。如图所示,对象阴影614a至对象阴影614d是一致的。换言之,对象阴影614a至对象阴影614d提供了数字对象612a至数字对象612d受到相同照明条件的外观。

尽管图6B被讨论为单个数字图像具有多个数字对象,但是在一些情况下,其中描绘的数字对象可以被包括在多个数字对象中。实际上,在一个或多个实施例中,基于高度的阴影系统106修改多个数字图像——各自描绘至少一个数字对象——以包括对象阴影。例如,如上所述,数字图像可以表示要在电子商务网站上广告的产品的图像资产。在一个或多个实施例中,基于高度的阴影系统106经由批处理来修改多个数字图像。此外,在一些情况下,基于高度的阴影系统106使用通用(例如,预置)光源信息来生成针对所描绘的数字对象的对象阴影,以在数字图像中提供一致的照明条件的外观。因此,基于高度的阴影系统可以在要在诸如网站的通用框架内呈现的各种数字图像中提供具有一致外观的装饰性阴影。

图6C示出了修改描绘计算机生成的数字对象622的数字图像620。具体地,如图6C所示,数字对象622包括所示的数字对象,诸如使用矢量图形所创建的图示。如图6C所示,基于高度的阴影系统106修改数字图像620以包括针对数字对象的对象阴影624。因此,基于高度的阴影系统106可以生成并且修改数字图像以包括针对真实数字对象(例如,存在于物理世界中的数字对象)和计算机生成的数字对象的对象阴影(例如,软对象阴影)。具体地,基于高度的阴影系统106可以生成针对各种类型的数字对象的高度图,利用该高度图来生成对象阴影,并且修改描绘数字对象的数字图像以包括对象阴影。

此外,在一个或多个实施例中,基于高度的阴影系统106生成针对动画序列(例如,数字视频)中描绘的动画数字对象的对象阴影,并且修改动画序列以包括对象阴影。为了说明,在一个或多个实施例中,对于描绘数字对象的动画序列的每个帧,基于高度的阴影系统106生成针对数字对象的对象阴影(例如,生成针对数字对象的高度图并且使用高度图和对应的光源信息来生成对象阴影)。此外,基于高度的阴影系统106修改描绘数字对象的动画序列的帧以包括对象阴影。因此,基于高度的阴影系统106修改动画序列以包括跟踪数字对象的移动的对象阴影。例如,对象阴影可以随着数字对象的位置相对于光源位置在整个动画序列中改变而改变。

通过使用从高度图确定的阴影投影来生成对象阴影,基于高度的阴影系统106比传统系统操作更准确。具体地,基于高度的阴影系统106生成在数字图像的照明条件下更准确地描绘对象的阴影的对象阴影。例如,通过使用高度图而不是三维模型来确定阴影投影,基于高度的阴影系统106避免了由于使用三维模型而导致的误差,诸如出现在最终阴影中的伪影。此外,通过使用高度图和对应的光源信息,基于高度的阴影系统改进了对象几何形状和照明的建模,以创建更逼真的对象阴影。

此外,与许多传统系统相比,基于高度的阴影系统106以更高的效率生成对象阴影。实际上,如前所述,当从三维模型生成对象阴影时,许多传统系统采用的基于物理的阴影绘制对象消耗了大量的计算资源。通过从高度图生成对象阴影,基于高度的阴影系统106减少了所消耗的计算资源。此外,基于高度的阴影系统利用减少的用户交互来生成对象阴影。具体地,通过生成和使用对应于数字对象的高度图,基于高度的阴影系统避免了用户交互来调整三维模型以将模型与数字对象正确对齐的需要。因此,基于高度的阴影系统减少了生成具有期望(例如,真实)视觉外观的对象阴影所需的用户交互、时间和计算资源。

如前所述,在一个或多个实施例中,基于高度的阴影系统106提供了被修改为包括对象阴影的数字图像以用于在客户端设备的图形用户界面内显示。此外,基于高度的阴影系统106响应于与图形用户界面的一个或多个用户交互来修改数字图像内的对象阴影。图7示出了根据一个或多个实施例,基于高度的阴影系统106用来显示数字图像并且允许用户交互以供进一步的改变的图形用户界面。

实际上,如图7所示,基于高度的阴影系统106提供了数字图像702以用于在客户端设备710的图形用户界面708内显示。具体地,数字图像702包括已经被修改为包括针对其中描绘的数字对象706的对象阴影704的数字图像。在一个或多个实施例中,如上所述,基于高度的阴影系统106使用高度图来生成对象阴影704。

如图7所示,对象阴影704覆盖非平面表面的部分(例如,对象阴影704在数字图像702中描绘的水平地板表面和垂直墙面上延伸)。实际上,在一个或多个实施例中,基于高度的阴影系统106在一个或多个非平面表面上生成对象阴影。例如,在一个或多个实施例中,基于高度的阴影系统106利用针对数字对象生成的高度图来确定数字对象在非平面表面上的阴影投影(例如,确定数字对象的像素的阴影投影)。

如进一步所示,基于高度的阴影系统106在图形用户界面708内提供软度控件712。在一个或多个实施例中,基于高度的阴影系统106提供软度控件712以指示对象阴影704的当前软度(例如,经由交互元素714的位置)。此外,在一个或多个实施例中,基于高度的阴影系统106检测用户与软度控件712的交互。具体地,基于高度的阴影系统106检测重新定位交互元素714的用户交互。

在一些实施例中,响应于检测到用户与软度控件712的交互,基于高度的阴影系统106修改数字图像702内的对象阴影704。为了说明,在一些情况下,基于高度的阴影系统106确定对应于由用户交互引起的交互元素714的位置的软度值。此外,基于高度的阴影系统106将软度值提供给用于生成软对象阴影的阴影样式化神经网络,并且使用阴影样式化神经网络来修改对象阴影704(例如,通过生成经修改的对象阴影)。因此,基于高度的阴影系统106促进对所生成的对象阴影的软度进行灵活控制。

此外,如图所示,基于高度的阴影系统106在图形用户界面708内提供失真控件716。在一个或多个实施例中,基于高度的阴影系统106提供失真控件716以指示对应于数字图像702的水平线的位置(例如,经由交互元素718的位置)。此外,在一个或多个实施例中,基于高度的阴影系统106检测用户与失真控件716的交互。具体地,基于高度的阴影系统106检测重新定位交互元素718的用户交互。

在一些实施例中,响应于检测到用户与失真控件716的交互,基于高度的阴影系统106修改数字图像702内的对象阴影704。为了说明,在一些情况下,基于高度的阴影系统106确定对应于由用户交互引起的交互元素718的位置的水平线位置。此外,基于高度的阴影系统106利用硬阴影绘制模型来基于先前针对数字对象706生成的高度图、对应于数字图像702的光源的位置以及由用户交互引起的水平线位置来确定针对数字对象706的像素的经修改的阴影投影。基于高度的阴影系统106使用经修改的阴影投影来修改对象阴影704(例如,通过生成经修改的对象阴影)。因此,基于高度的阴影系统106促进对所生成的对象阴影的失真进行灵活控制。

在一些实施例中,基于高度的阴影系统106检测用户与数字对象706的交互(例如,经由光标720),并且基于检测到的用户交互来修改对象阴影704。例如,在一些情况下,基于高度的阴影系统106确定用户交互在数字图像702内垂直移动数字对象706。基于高度的阴影系统106确定数字对象706的垂直移位(例如,数字对象706的被监控像素的垂直移位),并且将对应于垂直移位的移位值添加到数字对象706的高度图中表示的像素高度。使用经移位的高度值,基于高度的阴影系统106利用上述硬阴影绘制模型来确定针对数字对象706的像素的经修改的阴影投影。基于高度的阴影系统106使用经修改的阴影投影来修改对象阴影704(例如,通过生成经修改的对象阴影)。因此,基于高度的阴影系统106提供对所生成的对象阴影的其他特性(例如,对应于相应数字对象的垂直移位的那些特性)的控制。在用户交互水平移动数字对象706的一些情况下,基于高度的阴影系统106确定经修改的阴影投影并且使用经修改的水平位置来生成经修改的对象阴影。

在一个或多个实施例中,基于高度的阴影系统106检测用户与对象阴影704本身的交互(例如,经由光标720),并且基于检测到的用户交互来修改对象阴影704。具体地,在一些实施例中,基于高度的阴影系统106确定用户交互是用于在数字图像702内重新定位对象阴影704,诸如在数字对象706周围移动对象阴影704。在一些实现中,基于高度的阴影系统106基于用户交互来确定对应于数字图像702的光源的位置的改变,并且基于改变后的光源位置来修改对象阴影704。

为了说明,在一些情况下,基于高度的阴影系统106随着光标720选择对象阴影704并且在数字对象706周围移动而跟踪光标720。在确定光标720已停止移动时,基于高度的阴影系统106确定光标720的位置并且确定光源的经修改位置,就好像光标720的位置对应于阴影像素一样。具体地,基于高度的阴影系统106使用以上参考图4B(包括公式1至公式4)描述的过程来逆向计算光源的经修改位置。此外,基于高度的阴影系统106基于光源的经修改位置来确定针对数字对象706的像素的经修改的阴影投影,并且使用经修改的阴影投影来修改对象阴影704(例如,生成经修改的对象阴影)。

在一个或多个实施例中,基于高度的阴影系统106不是跟踪光标720,而是跟踪经由光标720所选择的阴影像素,并且基于跟踪阴影像素来修改对象阴影704。实际上,基于高度的阴影系统106确定由用户交互经由光标720引起的阴影像素的经修改位置,通过逆转以上参考图4B描述的计算来确定经修改的光位置,并且使用经修改的光位置来确定对应于对象阴影704的其他阴影像素的经修改的阴影投影。因此,由于在数字对象706与对象阴影704之间存在显式的像素级对应性(例如,基于所确定的阴影投影),因此基于高度的阴影系统106可以高效并且准确地修改对象阴影704的位置。

在一些实施例中,基于高度的阴影系统106基于与对象阴影中的一个阴影的一个或多个用户交互来修改数字图像中描绘的多个数字对象的对象阴影。例如,响应于检测到用于重新定位一个数字对象的对象阴影的用户交互,基于高度的阴影系统106修改同一数字图像中描绘的其他数字对象的对象阴影。实际上,如上所述,基于高度的阴影系统106基于用于重新定位对象阴影的用户交互来确定光源位置的改变。因此,基于高度的阴影系统106使用经修改的光源位置来修改其他数字对象的对象阴影。因此,基于高度的阴影系统106能够同时高效地修改多个对象阴影。

通过响应于与显示数字图像的图形用户界面的一个或多个用户交互来修改数字图像内的对象阴影,基于高度的阴影系统106比传统系统更灵活地操作。实际上,如上所述,许多传统系统(诸如,那些采用神经网络来生成对象阴影的系统)缺乏用于操纵所产生的对象阴影的特性的控制。通过如上所述修改所生成的对象阴影,基于高度的阴影系统106提供用于修改对象阴影的各种特性的灵活控制,诸如其位置、角度、失真和/或软度。

现在转到图8,现在将提供关于基于高度的阴影系统106的各种组件和能力的附加的细节。具体地,图8示出了由计算设备800(例如,以上参考图1讨论的(多个)服务器102和/或客户端设备110a至客户端设备110n中的一个客户端设备)实现的基于高度的阴影系统106。此外,基于高度的阴影系统106也是图像编辑系统104的部分。如图所示,在一个或多个实施例中,基于高度的阴影系统106包括但不限于神经网络训练引擎802、神经网络应用管理器804、对象掩模生成器806、对象抠图生成器808、坐标方案管理器810、阴影投影管理器812、数字图像修改引擎814、图形用户界面管理器816和数据存储库818(其包括高度预测神经网络820、阴影样式化神经网络822和训练数字图像824)。

如上所述,并且如图8所示,基于高度的阴影系统106包括神经网络训练引擎802。在一个或多个实施例中,神经网络训练引擎802生成(例如,训练)神经网络,以用于生成针对数字图像中描绘的数字对象的对象阴影(例如,软对象阴影)。例如,在一些情况下,神经网络训练引擎802生成用于生成针对数字图像中描绘的数字对象的高度图的高度预测神经网络。此外,在一些实现中,神经网络训练引擎802生成用于生成针对数字对象的软对象阴影的阴影样式化神经网络。

如图8进一步所示,基于高度的阴影系统106包括神经网络应用管理器804。在一个或多个实施例中,神经网络应用管理器804实现由神经网络训练引擎802生成的神经网络。例如,在一些情况下,神经网络应用管理器804利用由神经网络训练引擎802生成的高度预测神经网络来生成针对数字图像中描绘的数字对象的高度图。此外,在一些实现中,神经网络应用管理器804利用由神经网络训练引擎802生成的阴影样式化神经网络来生成针对数字对象的软对象阴影。

此外,如图8所示,基于高度的阴影系统106包括对象掩模生成器806。在一个或多个实施例中,对象掩模生成器806生成针对数字图像中描绘的数字对象的对象掩模。为了说明,在一些情况下,对象掩模生成器806生成针对数字图像中描绘的数字对象的对象掩模,并且向由神经网络应用管理器804采用的高度预测神经网络提供该对象掩模,以生成针对数字对象的高度图。此外,对象掩模生成器806向神经网络应用管理器804所采用的阴影样式化神经网络提供对象掩模,以生成针对数字对象的软对象阴影。

如图8所示,基于高度的阴影系统106还包括对象抠图生成器808。在一个或多个实施例中,对象抠图生成器808生成针对数字图像中描绘的数字对象的对象抠图。例如,在一些情况下,对象抠图生成器808生成针对数字图像中描绘的数字对象的对象抠图,并且向由神经网络应用管理器804采用的高度预测神经网络提供对象抠图,以生成针对数字对象的高度图。在一些实现中,对象抠图生成器808利用由对象掩模生成器806生成的对象掩模来生成对象抠图。

此外,如图8所示,基于高度的阴影系统106包括坐标方案管理器810。在一个或多个实施例中,坐标方案管理器810确定和/或管理用于生成高度图的坐标方案。例如,在一些情况下,坐标方案管理器810经由用户输入、用户设置或默认设置来确定对应于数字图像的坐标方案。此外,坐标方案管理器810向由神经网络应用管理器804采用的高度预测神经网络提供坐标方案,以生成针对数字对象的高度图。

如图8所示,基于高度的阴影系统106还包括阴影投影管理器812。在一个或多个实施例中,阴影投影管理器812确定针对数字图像中描绘的数字对象的像素的阴影投影。例如,在一些情况下,阴影投影管理器812使用由神经网络应用管理器804使用高度预测神经网络针对数字对象生成的高度图来确定阴影投影。在一些实现中,阴影投影管理器812还使用对应于数字图像的光源信息来确定阴影投影。在一些情况下,阴影投影管理器812利用所确定的阴影投影来生成与数字对象的像素相对应的阴影像素。此外,在一些实施例中,阴影投影管理器812使用所确定的阴影投影(例如,使用所生成的阴影像素)生成针对数字图像的硬阴影掩模。

此外,如图8所示,基于高度的阴影系统106包括数字图像修改引擎814。在一个或多个实施例中,数字图像修改引擎814修改描绘数字对象的数字图像以包括针对数字对象生成的对象阴影。例如,在一些情况下,基于高度的阴影系统106修改数字图像以包括由神经网络应用管理器804利用阴影样式化神经网络生成的软对象阴影。在一些情况下,数字图像修改引擎814响应于与数字对象的一个或多个用户交互、对象阴影或与数字图像的其他用户交互来修改数字图像内的对象阴影。

此外,如图8所示,基于高度的阴影系统106包括图形用户界面管理器816。在一个或多个实施例中,图形用户界面管理器816提供已被修改以包括针对其中描绘的数字对象生成的对象阴影的数字图像,以用于在图形用户界面内显示。此外,在一些实现中,图形用户界面管理器816提供促进与所显示的数字图像交互的一个或多个交互元素,诸如软度控件或失真控件。在一些情况下,图形用户界面管理器816还检测用户与显示数字图像的图形用户界面的交互。

此外,如图所示,基于高度的阴影系统106包括数据存储库818。具体地,数据存储库818包括高度预测神经网络820、阴影样式化神经网络822和训练数字图像824。在一个或多个实施例中,高度预测神经网络820存储由神经网络训练引擎802生成并且由神经网络应用管理器804实现的高度预测神经网络,以生成针对数字图像中描绘的数字对象的高度图。类似地,在一个或多个实施例中,阴影样式化神经网络822存储由神经网络训练引擎802生成并且由神经网络应用管理器804实现的阴影样式化神经网络,以生成针对数字图像中描绘的数字对象的软对象阴影。此外,在一些实施例中,训练数字图像824存储神经网络训练引擎802用来生成高度预测神经网络和/或阴影样式化神经网络的训练数字图像。例如,在一些情况下,训练数字图像824存储真实训练图像和/或合成训练图像。在一些实现中,训练数字图像824还存储用于生成神经网络的对应真实值。

基于高度的阴影系统106的组件802至组件824中的每个组件可以包括软件、硬件或两者。例如,组件802至824可以包括存储在计算机可读存储介质上并且可由诸如客户端设备或服务器设备的一个或多个计算设备的处理器执行的一个或多个指令。当由一个或多个处理器执行时,基于高度的阴影系统106的计算机可执行指令可以使(多个)计算设备执行本文描述的方法。备选地,组件802至824可以包括硬件,诸如用于执行特定功能或功能组的专用处理设备。备选地,基于高度的阴影系统106的组件802至组件824可以包括计算机可执行指令和硬件的组合。

此外,基于高度的阴影系统106的组件802至组件824可以例如实现为一个或多个操作系统、一个或多个独立应用、应用的一个或多个模块、一个或多个插件、一个或多个库函数或可由其他应用调用的函数、和/或云计算模型。因此,基于高度的阴影系统106的组件802至组件824可以被实现为诸如桌面或移动应用的独立应用。此外,基于高度的阴影系统106的组件802至组件824可以被实现为在远程服务器上托管的一个或多个基于网络的应用。备选地或附加地,基于高度的阴影系统106的组件802至组件824可以在一组移动设备应用或“应用”中实现。例如,在一个或多个实施例中,基于高度的阴影系统106可以包括诸如

图1至图8、对应的文本和示例提供了基于高度的阴影系统106的多种不同的方法、系统、设备和非瞬态计算机可读介质。除前述内容之外,还可以按照包括用于实现特定结果的动作的流程图来描述一个或多个实施例,如图9所示。图9可以用更多或更少的动作来执行。此外,可以以不同的顺序执行动作。此外,本文描述的动作可以重复或彼此并行地执行,或者与相同或相似动作的不同实例并行执行。

图9示出了根据一个或多个实施例,用于生成针对数字图像中描绘的数字对象的对象阴影的一系列动作900的流程图。尽管图9示出了根据一个实施例的动作,但备选实施例可以省略、添加、重新排序和/或修改图9中所示的任何动作。在一些实现中,图9的动作作为方法的部分来执行。例如,在一些实施例中,图9的动作在用于编辑数字图像的数字介质环境中作为用于生成针对所描绘的图像对象的阴影的计算机实现的方法的部分来执行。备选地,非瞬态计算机可读介质可以在其上存储指令,这些指令在由至少一个处理器执行时,使计算设备执行图9的动作。在一些实施例中,系统执行图9的动作。例如,在一个或多个实施例中,系统包括至少一个存储设备,该存储设备包括描绘数字对象的数字图像和高度预测神经网络。该系统还包括被配置为使该系统执行图9的动作的至少一个服务器设备。

该系列动作900包括从数字图像中提取对象掩模的动作902。例如,在一个或多个实施例中,动作902涉及从描绘数字对象的数字图像中提取对应于数字对象的对象掩模。

该系列动作900还包括从对象掩模生成高度图的动作904。例如,在一些实施例中,动作904涉及利用高度预测神经网络从对应于数字对象的对象掩模生成高度图,该高度图包括针对数字对象的像素的像素高度。

在一个或多个实施例中,基于高度的阴影系统106还确定针对数字对象的对象抠图和对应于数字图像的坐标方案。因此,在一些情况下,基于高度的阴影系统106通过利用高度预测神经网络,从对象掩模、对象抠图和坐标方案生成高度图,从而利用高度预测神经网络,从与数字对象相对应的对象掩模生成高度图。

此外,该系列动作900包括使用阴影高度图确定阴影投影的动作906。为了说明,在一些实现中,动作906涉及使用来自高度图的像素高度和针对数字图像的光源信息来确定针对数字对象的像素的阴影投影。实际上,在一个或多个实施例中,基于高度的阴影系统106使用高度图来确定数字图像中描绘的数字对象的阴影投影。在一些情况下,基于高度的阴影系统106通过确定针对数字对象的像素的阴影投影来确定阴影投影。

在一些实施例中,基于高度的阴影系统106通过利用来自高度图的对应像素高度和光源信息针对数字对象的每个像素来确定数字图像内的对应阴影像素的位置,从而使用来自高度图的像素高度和针对数字图像的光源信息来确定针对数字对象的像素的阴影投影。在一个或多个实施例中,针对数字对象的每个像素,利用来自高度图的对应像素高度和光源信息来确定数字图像内的对应阴影像素的位置包括:利用对应的像素高度、数字图像内的像素的位置、针对数字图像的光源的位置以及与数字图像相关联的水平线的位置来确定对应阴影像素的垂直位置;以及利用数字图像内的像素的位置和针对数字图像的光源的位置来确定对应阴影像素的水平位置。

在一些实施例中,基于高度的阴影系统106通过利用前向跟踪投影模型或后向跟踪投影模型中的一个模型,基于高度图来确定针对数字对象的像素的阴影投影,来确定针对数字对象的像素的阴影投影。

在一个或多个实施例中,使用高度图确定数字图像中描绘的数字对象的阴影投影(例如,确定针对数字对象的像素的阴影投影)包括确定在数字图像中描绘的非平面表面上的阴影投影(例如,阴影投影)。

此外,该系列动作900包括使用阴影投影来修改数字图像以包括对象阴影的动作908。例如,在一些情况下,动作908涉及使用针对数字对象的像素的阴影投影来修改数字图像以包括针对数字对象的对象阴影。实际上,在一个或多个实施例中,基于高度的阴影系统106使用阴影投影来修改数字图像以包括针对数字对象的对象阴影。因此,在一些情况下,基于高度的阴影系统106通过使用针对数字对象的像素的阴影投影来使用针对数字对象的阴影投影。

在一个或多个实施例中,使用阴影投影(例如,使用针对数字对象的像素的阴影投影)修改数字图像以包括针对数字对象的对象阴影包括:修改数字图像以包括从数字对象投射的、并且跨非平面表面的对象阴影。

在一些实现中,修改数字图像以包括针对数字对象的对象阴影包括:修改数字图像以包括与数字对象相关联的软对象阴影。实际上,在一个或多个实施例中,基于高度的阴影系统106使用针对数字对象的像素的阴影投影来生成针对数字对象的软对象阴影。因此,在一些情况下,基于高度的阴影系统106通过修改数字图像以包括针对数字对象的软对象阴影来修改数字图像以包括针对数字对象的对象阴影。在一个或多个实施例中,基于高度的阴影系统106通过利用阴影样式化神经网络生成软对象阴影来生成针对数字对象的软对象阴影。

在一些情况下,基于高度的阴影系统106使用针对数字对象的像素的阴影投影来生成针对数字对象的硬阴影掩模。因此,在一个或多个实施例中,基于高度的阴影系统106通过使用对应于数字对象的硬阴影掩模和对象掩模生成针对数字对象的软对象阴影,从而使用针对数字对象的像素的阴影投影来生成针对数字对象的软对象阴影。

在一个或多个实施例中,该系列动作900还包括用于提供数字图像以用于在图形用户界面内显示和/或基于经由图形用户界面来检测到的一个或多个用户交互来修改针对数字对象生成的对象阴影的动作。例如,在一个或多个实施例中,这些动作涉及提供具有对象阴影的数字图像以用于在客户端设备的图形用户界面内显示;经由图形用户界面检测重新定位数字图像内的数字对象的一个或多个用户交互;以及基于重新定位数字对象的一个或多个用户交互来修改数字图像内的对象阴影。在一些情况下,这些动作包括提供具有软对象阴影的数字图像以用于在客户端设备的图形用户界面内显示;经由图形用户界面检测与对应于软对象阴影的软度控件的一个或多个用户交互;以及根据与软度控件的一个或多个用户交互来修改软对象阴影的软度。

在一些实施例中,这些动作包括经由显示具有对象阴影的数字图像的客户端设备的图形用户界面,检测在数字图像内垂直移动数字对象的用户交互;通过基于在数字图像内垂直移动数字对象的用户交互,将移位值添加到像素高度来生成针对高度图的经修改的像素高度;以及使用经修改的像素高度修改数字图像内的对象阴影。在一些实现中,这些动作包括提供具有对象阴影的数字图像以用于在客户端设备的图形用户界面内显示;经由图形用户界面检测用于在数字图像内重新定位对象阴影的一个或多个用户交互;以及基于重新定位对象阴影的一个或多个用户交互来修改数字图像内的对象阴影。在一些情况下,基于高度的阴影系统106基于重新定位对应于数字对象的对象阴影的一个或多个用户交互来修改对应于数字图像中描绘的附加的数字对象的附加的对象阴影。

为了提供说明,在一个或多个实施例中,基于高度的阴影系统106从数字图像中提取对应于数字对象的对象掩模;利用高度预测神经网络从对应于数字对象的对象掩模生成高度图,该高度图包括针对图像空间内数字对象的像素的像素高度;通过利用来自高度图的对应像素高度、针对数字图像的光源的位置、以及光源在与数字图像相关联的水平线上的投影,针对数字对象的像素确定数字图像内的对应阴影像素的位置,从而确定针对数字对象的像素的阴影投影;以及使用针对数字对象的像素的阴影投影来修改数字图像以包括针对数字对象的对象阴影。

在一些情况下,基于高度的阴影系统106通过以下方式来使用针对数字对象的像素的阴影投影来修改数字图像以包括针对数字对象的对象阴影:利用阴影样式化神经网络,基于针对数字对象的像素的阴影投影来生成针对数字对象的软对象阴影;以及修改数字图像以包括针对数字对象的软对象阴影。在一些实施例中,利用阴影样式化神经网络,基于阴影投影生成针对数字对象的软对象阴影包括:利用阴影样式化神经网络,基于阴影投影和经由用户输入确定的软度值来生成针对数字对象的软对象阴影。

此外,在一个或多个实施例中,基于高度的阴影系统106确定针对数字对象的二维对象抠图和对应于数字图像的二维坐标方案;以及通过利用高度预测神经网络,从对象掩模、二维对象抠图和二维坐标方案生成高度图,从而利用高度预测神经网络,从对应于数字对象的对象掩模生成高度图。

本公开的实施例可以包括或利用包括计算机硬件(诸如,一个或多个处理器和系统存储器)的专用或通用计算机,如下文更详细地讨论的。本公开范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。具体地,本文描述的一个或多个过程可以至少部分地实现为实施在非瞬态计算机可读介质中并且可由一个或多个计算设备(例如,本文描述的任何媒体内容访问设备)执行的指令。一般而言,处理器(例如,微处理器)从非瞬态计算机可读介质(例如,存储器)接收指令,并且执行那些指令,从而执行一个或多个过程,包括本文描述的一个或多个过程。

计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是非瞬态计算机可读存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本公开的实施例可以包括至少两种截然不同的计算机可读介质:非瞬态计算机可读存储介质(设备)和传输介质。

非瞬态计算机可读存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(“SSD”)(例如,基于RAM)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可以用于以计算机可执行指令或数据结构的形式存储所需程序代码部件并且可以由通用或专用计算机访问的任何其他介质。

“网络”被限定为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接适当地视为传输介质。传输介质可以包括网络和/或数据链路,其可以用于携带计算机可执行指令或数据结构形式的所需程序代码部件,并且可以由通用或专用计算机访问。上述各项的组合也应当包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码部件可以自动地从传输介质传送到非瞬态计算机可读存储介质(设备)(反之亦然)。例如,可以将通过网络或数据链路接收的计算机可执行指令或数据结构缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终将其传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因此,应当理解,非瞬态计算机可读存储介质(设备)可以包括在也(或甚至主要)利用传输介质的计算机系统组件中。

计算机可执行指令包括例如指令和数据,这些指令和数据当由处理器执行时,使通用计算机、专用计算机或专用处理设备执行特定功能或功能组。在一些实施例中,在通用计算机上执行计算机可执行指令,以将通用计算机转变为实现本公开的元素的专用计算机。计算机可执行指令可以是例如二进制、诸如汇编语言的中间格式指令、或者甚至是源代码。尽管已经以特定于结构特征和/或方法动作的语言描述了该主题,但是应当理解,在所附权利要求中限定的主题不必然限于上述特征或动作。相反,所描述的特征和动作被公开作为实施权利要求的示例形式。

本领域技术人员将理解,本公开可以在具有许多类型的计算机系统配置的网络计算环境中实施,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络PC、小型机、大型计算机、移动电话、PDA、平板计算机、寻呼机、路由器、交换机等。本公开还可以在分布式系统环境中实施,其中通过网络链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。

本公开的实施例还可以在云计算环境中实现。在本说明书中,“云计算”被限定为用于实现对可配置计算资源的共享池的按需网络访问的模型。例如,可以在市场中采用云计算来提供对可配置计算资源的共享池的无处不在并且方便的按需访问。可配置计算资源的共享池可以经由虚拟化快速提供,只需很少的管理工作或服务提供商交互即可释放,然后进行相应的缩放。

云计算模型可以由各种特性组成,例如按需自助服务、广泛的网络接入、资源池化、快速弹性、所测量服务等。云计算模型还可以展示各种服务模型,例如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型也可以使用不同的部署模型进行部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是在其中采用云计算的环境。

图10示出了示例计算设备1000的框图,该计算设备1100可以被配置为执行上述过程中的一个或多个过程。可以理解,诸如计算设备1000的一个或多个计算设备可以表示上述计算设备(例如,(多个)服务器102和/或客户端设备110a至客户端设备110n)。在一个或多个实施例中,计算设备1000可以是移动设备(例如,移动电话、智能电话、PDA、平板计算机、膝上型计算机、相机、跟踪器、手表、可穿戴设备)。在一些实施例中,计算设备1000可以是非移动设备(例如,台式计算机或另一类型的客户端设备)。此外,计算设备1000可以是包括基于云的处理和存储能力的服务器设备。

如图10所示,计算设备1000可以包括一个或多个处理器1002、存储器1004、存储设备1006、输入/输出接口1008(或“I/O接口1008”)和通信接口1010,它们可以通过通信基础设施(例如,总线1012)通信地耦合。尽管图10中示出了计算设备1000,但图10中所示的组件并不旨在是限制性的。在其他实施例中可以使用附加的组件或备选的组件。此外,在某些实施例中,计算设备1000包括比图10中所示的组件更少的组件。现在将更详细地描述图10中所示的计算设备1000的组件。

在具体实施例中,(多个)处理器1002包括用于执行指令(诸如构成计算机程序的那些指令)的硬件。作为示例而非限制,为了执行指令,(多个)处理器1002可以从内部寄存器、内部高速缓存、存储器1004或存储设备1006取回(或获取)指令,并且对它们进行解码和执行。

计算设备1000包括耦合到(多个)处理器1002的存储器1004。存储器1104可以用于存储数据、元数据和程序以供(多个)处理器执行。存储器1004可以包括易失性存储器和非易失性存储器中的一个或多个,诸如随机存取存储器(“RAM”)、只读存储器(“ROM”)、固态盘(“SSD”)、闪存、相变存储器(“PCM”)或其他类型的数据存储。存储器1004可以是内部存储器或分布式存储器。

计算设备1000包括存储设备1006,存储设备1006包括用于存储数据或指令的存储设备。作为示例而非限制,存储设备1006可以包括上述非瞬态存储介质。存储设备1006可以包括硬盘驱动器(HDD)、闪存、通用串行总线(USB)驱动器或这些或其他存储设备的组合。

如图所示,计算设备1000包括一个或多个I/O接口1008,其被提供以允许用户向计算设备1000提供输入(诸如,用户笔划)、从计算设备1000接收输出、以及以其他方式向和从计算设备1000传输数据。这些I/O接口1008可以包括鼠标、小键盘或键盘、触摸屏、相机、光学扫描仪、网络接口、调制解调器、其他已知的I/O设备或这种I/O接口1008的组合。触摸屏可以用触笔或手指激活。

I/O接口1008可以包括用于向用户呈现输出的一个或多个设备,包括但不限于图形引擎、显示器(例如,显示屏)、一个或多个输出驱动器(例如,显示驱动器)、一个或多个音频扬声器、以及一个或多个音频驱动器。在某些实施例中,I/O接口1008被配置为向显示器提供图形数据以供呈现给用户。图形数据可以表示一个或多个图形用户界面和/或可以服务于特定实现的任何其他图形内容。

计算设备1000还可以包括通信接口1010。通信接口1010可以包括硬件、软件或两者。通信接口1010提供用于计算设备与一个或多个其他计算设备或一个或多个网络之间的通信(例如,基于分组的通信)的一个或多个接口。作为示例而非限制,通信接口1010可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(NIC)或网络适配器,或者用于与诸如WI-FI的无线网络进行通信的无线NIC(WNIC)或无线适配器。计算设备1000还可以包括总线1012。总线1012可以包括将计算设备1000的组件彼此连接的硬件、软件或两者。

在前述说明书中,参考其特定示例实施例描述了本发明。参考本文讨论的细节描述了(多个)本发明的各种实施例和方面,并且附图示出了各种实施例。以上描述和附图是本发明的说明,并且不应被解释为限制本发明。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。

本发明可以在不背离其精神或必要特征的情况下以其他具体形式实施。所描述的实施例在所有方面仅被认为是说明性的而不是限制性的。例如,可以用更少或更多的步骤/动作来执行本文描述的方法,或者可以以不同的顺序来执行步骤/动作。此外,本文描述的步骤/动作可以重复或彼此并行地执行,或者与相同或相似步骤/动作的不同实例并行地执行。因此,本发明的范围由所附权利要求指示,而不是由前述描述指示。权利要求的含义和等同范围内的所有变更均应包含在其范围内。

技术分类

06120115927970