用于自动合成内容感知填充的交互式系统转让专利

申请号 : CN201910004566.4

文献号 : CN110276818A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·亚米格霍德思S·J·斯图基E·舍彻曼

申请人 : 奥多比公司

摘要 :

本发明的实施例提供了用于使用相似性变换补片来自动合成内容感知填充的系统、方法和计算机存储介质。用户界面接收用户指定的孔和用户指定的采样区域,两者均可以存储在约束掩模中。可以使用刷子工具来交互式地刷采样区域并修改约束掩模。掩模被传递到基于补片的合成器,该基于补片的合成器被配置为使用从采样区域采样的相似性变换补片来合成填充。可以设置诸如相似性变换参数的填充属性以控制填充被合成的方式。实时预览可以在完成之前提供有合成填充的逐步更新。一旦填充已经被合成,用户界面将呈现原始图像,用合成填充来替换孔。

权利要求 :

1.一种用于自动合成目标图像以填充原始图像中的孔的计算机化方法,所述方法包括:提供用户界面,所述用户界面被配置为:

接收第一用户输入,所述第一用户输入指定所述原始图像中的要被填充的所述孔;以及接收第二用户输入,所述第二用户输入指示像素能够从其中被采样的所述原始图像的采样区域,所述采样区域排除所述孔;

将所述采样区域存储在约束掩模中;以及

将所述约束掩模传递给基于补片的合成器,所述基于补片的合成器被配置为从由所述约束掩模指定的所述采样区域采样的所述补片来合成所述目标图像;

其中所述用户界面被配置为呈现具有填充所述孔的所合成的所述目标图像的所述原始图像。

2.根据权利要求1所述的方法,其中所述用户界面被配置为呈现具有指示所述原始图像的所述采样区域的覆盖的所述原始图像。

3.根据权利要求2所述的方法,其中所述第二用户输入包括修改所述覆盖以修改所述采样区域的刷子工具输入。

4.根据权利要求1所述的方法,还包括:在检测到所述第二用户输入的完成时,自动更新所述约束掩模,并将所更新的所述约束掩模传递给所述基于补片的合成器。

5.根据权利要求1所述的方法,其中所述用户界面被配置为在完成之前呈现所述目标图像将看起来像什么的预览。

6.根据权利要求5所述的方法,其中所述预览是通过所述基于补片的合成器的连续迭代合成的所述目标图像的逐渐更新预览。

7.根据权利要求1所述的方法,其中所述用户界面被配置为接收第三用户输入,所述第三用户输入指定用于合成所述目标图像的一个或多个相似性变换参数。

8.根据权利要求1所述的方法,其中所述用户界面被配置为接收:第四用户输入,所述第四用户输入指定所述补片能够在其上旋转以合成所述目标图像的范围;以及第五用户输入,所述第五用户输入指定颜色适应以改变所述补片的亮度和对比度,以合成所述目标图像。

9.一种或多种计算机存储介质,存储计算机可用指令,所述计算机可用指令当由一个或多个计算设备使用时,使得所述一个或多个计算设备执行操作,所述操作包括:访问约束掩模,所述约束掩模指定原始图像的、像素能够从其中被采样的可定制采样区域,所述采样区域排除所述原始图像中的用户指定的孔;

合成目标图像,以从由所述约束掩模指定的所述采样区域采样的补片来填充所述孔;

以及

提供所述合成目标图像,用于呈现具有填充所述孔的所述合成目标图像的所述原始图像。

10.根据权利要求9所述的介质,还包括:在修改所述采样区域的用户输入完成时,接收与所修改的所述采样区域相对应的更新的约束掩模,以及从由所更新的所述约束掩模指定的所修改的所述采样区域采样的补片来合成更新的目标图像。

11.根据权利要求10所述的介质,其中合成所述更新的目标图像包括:从先前的迭代中挽救计算。

12.根据权利要求9所述的介质,还包括:提供在完成之前所述目标图像将看起来像什么的预览。

13.根据权利要求12所述的介质,其中所述预览是通过所述基于补片的合成器的连续迭代来合成的所述目标图像的逐渐更新预览。

14.根据权利要求9所述的介质,还包括接收一个或多个用户指定的相似性变换参数,其中所述补片是使用所述用户指定的相似性变换参数而被生成的。

15.根据权利要求9所述的介质,其中合成所述目标图像是以确定性填充合成模式而被执行的。

16.一种计算机系统,包括:

一个或多个硬件处理器和存储器,所述存储器被配置为向所述一个或多个硬件处理器提供计算机程序指令;

接口组件,被配置为:

接收第一用户输入,所述第一用户输入指定原始图像中的要被填充的孔;以及接收第二用户输入,所述第二用户输入指示所述原始图像的、像素能够从其中被采样的采样区域,所述采样区域排除所述孔;

用于使用从所述采样区域采样的补片来合成逐渐更新的目标图像以填充所述孔的部件;

其中所述界面组件被配置为呈现具有填充所述孔的逐渐更新的目标图像的所述原始图像。

17.根据权利要求16所述的计算机系统,其中所述界面组件被配置为呈现具有指示所述原始图像的所述采样区域的覆盖的所述原始图像。

18.根据权利要求17所述的计算机系统,其中所述第二用户输入包括修改所述覆盖的刷子工具输入,并且其中用于合成逐渐更新的目标图像的所述部件被配置为在所述刷子工具输入完成时,基于所修改的所述采样区域来自动更新所述目标图像。

19.根据权利要求16所述的计算机系统,其中所述接口组件被配置为接收一个或多个用户指定的相似性变换参数,并且其中用于合成逐渐更新的目标图像的所述部件被配置为从使用所述用户指定的相似性变换参数生成的相似性变换的补片来合成所述目标图像。

20.根据权利要求19所述的计算机系统,其中所述一个或多个用户指定的相似性变换参数包括可允许的旋转、缩放和镜像的用户选择。

说明书 :

用于自动合成内容感知填充的交互式系统

背景技术

[0001] 当编辑图像时,用户可能希望从图像中移除不需要的对象。例如照片可以包括不想要的主题、诸如由损坏或数字效果导致的视觉伪像等。但是,简单地删除不需要的区域会在图像中留下一个孔。一些数字图像处理工具可以使用从图像的其他区域采样的转换补片来自动填充孔。例如一些工具使用随机算法来标识图像补片之间的近似最近邻居匹配。因此,一些工具可以从转换的图像补片构建复合填充。以这种方式,用户可以自动填充图像的缺失部分。

发明内容

[0002] 本发明的实施例涉及一种用于使用相似性变换的补片来自动合成内容感知填充的交互系统。交互系统包括用户界面,该用户界面允许用户指定孔和用于填充孔的采样区域。用户界面被配置为向原始图像呈现指示原始图像的采样区域的覆盖。可以提供刷子工具以促进用户输入添加到采样区域或从采样区域减去。采样区域可以存储在标识采样区域的约束掩模中。在检测到用户输入的完成时,交互系统可以自动地将得到的约束掩模传递到基于补片的合成器,该基于补片的合成器被配置为使用从由约束掩模指定的采样区域采样的相似性变换的补片来合成填充。在一些实施例中,用户界面可以在完成之前呈现填充将看起来像什么的预览。预览可以是实时预览,该实时预览提供基于补片的合成器所生成的填充的逐渐更新。一旦填充已经被合成后,用户界面呈现原始图像,用合成填充替换孔。
[0003] 在一些实施例中,用户界面可以促进指定一个或多个填充属性的用户输入,诸如相似性变换参数(例如指定或以其他方式指示旋转的有效范围、缩放因子、镜像和/或候选者补片的转换的参数)、颜色适应(例如增益和/或偏差)、确定性填充合成等。可以设置填充属性以控制基于补片的合成器合成填充的方式。
[0004] 在一些实施例中,基于补片的合成器可以利用改进的补片有效性测试来验证候选补片作为落入指定采样区域内的有效补片。针对补片有效性的孔扩张测试可以通过扩张采样区域中的孔以生成减小的采样区域,并且通过执行查找以确定补片中的代表性像素(例如中心像素)是否落入减小的采样区域内来执行。通过此测试的补片被指定为有效。可以通过查找补片的代表性像素(例如中心像素)是否落入孔内来执行针对补片无效性的非扩张测试。满足该标准的补片被指定为无效。可以通过查找补片中的每个像素是否落在采样区域内来执行针对补片有效性的综合像素测试。有利地,仅使用前两个测试中的任一个无法确定其有效性的那些补片是使用综合像素测试来评估。其像素通过综合像素测试的补片被指定为有效,而像素未通过综合像素测试的补片被指定为无效。在一些实施例中,可以执行范围无效性的边缘测试作为改进的补片有效性测试中的任意或全部的先驱(“precursor”)。可以通过将指示无效范围的边缘添加到源图像的边界来执行边缘测试。可以通过查找像素是否落在边缘内来确定特定像素的范围无效性。具有无效范围的像素的补片被指定为无效补片。通常,基于补片的合成器使用经验证的补片来合成填充。
[0005] 这样,使用本文描述的实现,用户可以高效且有效地合成内容感知填充。

附图说明

[0006] 以下参照附图详细描述本发明,在附图中:
[0007] 图1是在应用传统的内容感知填充之前和之后的示例图像;
[0008] 图2是根据本发明实施例的用于自动合成内容感知填充的示例性计算系统的框图。
[0009] 图3示出了根据本发明实施例的示例内容感知填充工作空间;
[0010] 图4是根据本发明实施例的具有自动合成的内容感知填充的示例图像;
[0011] 图5是根据本发明实施例的具有自动合成的内容感知填充的示例图像;
[0012] 图6A-6C是示出了根据本发明实施例的自动合成的内容感知填充的示例图像;图6A描绘了具有约束掩模覆盖的原始图像;图6B是具有自动合成的内容感知填充的示例图像,其具有镜像关闭和颜色适应;图6C是自动合成的内容感知填充的示例图像,其具有镜像开启和颜色适应关闭;
[0013] 图7示出了根据本发明实施例的使用默认采样区域的具有自动合成的内容感知填充的示例内容感知填充工作空间;
[0014] 图8示出了根据本发明实施例的使用定制采样区域的具有的自动合成内容感知填充的示例性的内容感知填充工作空间。
[0015] 图9示出了根据本发明实施例的有效和无效补片的示例;
[0016] 图10示出了根据本发明实施例的用于补片有效性的孔扩张测试;
[0017] 图11示出了根据本发明实施例的补片无效性的非扩张测试;
[0018] 图12示出了根据本发明实施例的用于补片有效性的综合像素测试;
[0019] 图13示出了根据本发明实施例的范围无效的边缘测试;
[0020] 图14示出了根据本发明实施例的随机所得到的变换的示例;
[0021] 图15是示出了根据本发明的各种实施例的用于自动合成目标图像以填充原始图像中的孔的方法的流程图;
[0022] 图16是示出了根据本发明的各种实施例的用于自动合成目标图像以填充原始图像中的孔的方法的流程图;
[0023] 图17是示出了根据本发明的各种实施例的用于补片有效性测试的方法的流程图;
[0024] 图18是示出了根据本发明的各种实施例的用于补片有效性测试的方法的流程图;
[0025] 图19是在其中可以采用本发明的实施例的示例性计算环境的框图;以及
[0026] 图20是适用于在实现本发明实施例中使用的示例性计算环境的框图。

具体实施方式

[0027] 本专利或申请文件包含至少一幅以彩色执行的附图。具有彩色附图的本专利或专利申请公开的副本将在请求和支付必要费用后由主管局提供。
[0028] 概述
[0029] 通常在照片编辑期间,用户可能希望从图像中移除不需要的对象。实现此目的的一种传统工具是内容感知填充(“CAF”)工具。通常,CAF工具可允许用户选择、突出显示、绘制或以其他方式指示图像的不需要的区域。传统的内容感知填充技术会移除不需要的区域,并使用来自图像其他部分的样本自动填充所得到的孔。CAF算法通过重新排列来自源图像(例如采样区域)小的方形像素补片并将其拼接(具有重叠)在一起来寻求近似重建目标图像(例如孔)。CAF寻求针对目标图像的每个补片(即要填充的孔)从采样区域标识近似匹配补片(即最近邻居)。来自源图像的候选补片以迭代方式被选择、测试和细化。由此得到的重建可以以使其看起来像从不存在不需要的对象的方式填充孔。
[0030] 然而,传统的内容感知填充工具受制于各种缺点。例如传统的CAF技术受限于候选补片被标识的方式。传统技术在连续转换域上搜索候选补片,并且通过2D转换来标识候选补片,2D转换将目标图像(孔)中的补片映射到源图像(采样区域)中的对应候选补片。通过将候选补片限制为2D平移,重建的目标图像的潜在质量受到限制。然而,CAF技术已经在计算上很昂贵,并且简单地扩展搜索域导致计算时间的不可接受的增加。因此,需要以降低的计算需求来改善图像完成质量。
[0031] 此外,在大量情况下,孔被错误的图像内容填充,产生笨拙和不自然的结果。图1说明了这个问题。图1描绘了在应用传统的内容感知填充技术之前和之后,具有蜜蜂采集花粉的花的示例图像。为了从图像中移除蜜蜂,用户可以指定蜜蜂周围的边界110以将由边界110包围的孔识别为要填充的区域。可以理解,所生成的填充区域120是不准确的。例如花瓣的纹理不一致且模糊,并且孔的某些部分被错误地填充绿色背景。这个结果显然是不期望的。
[0032] 考虑到传统CAF技术的其他限制,许多用户发现这些结果特别令人沮丧。例如目前用户无法标识采样区域或控制搜索域的参数。此外,传统的内容感知填充不是确定性的,通常导致从运行到运行的结构上不同的填充。结果,传统技术通常不能产生准确的预览。实际上,用户将简单地重复该过程,生成多个填充,直到达到所需的结果。考虑到传统CAF的计算上昂贵的性质,这种重复过程是耗时且令人沮丧的。因此,需要改进的用户界面以促进更高效的用户体验。
[0033] 因此,本发明的实施例涉及用于自动合成内容感知填充的交互系统。交互系统包括用户界面,该用户界面允许用户指定孔和用于填充孔的采样区域。通常排除孔的采样区域可以存储在约束掩模中。刷子工具可以促进用户输入添加到采样区域或从采样区域减去。在检测到用户输入完成时,交互系统可以自动将得到的约束掩模传递给后端内容感知填充引擎,以使用指定的约束掩模来合成内容感知填充。附加地和/或替代地,用户界面可以促进用户输入,其指定用于内容感知填充的一个或多个填充属性,诸如旋转适应、缩放、镜像、颜色适应和/或确定性填充。在一些实施例中,用户界面可以包括结果面板,该结果面板包括在完成之前填充将看起来像什么的预览。预览可以是实时预览,其提供由内容感知填充引擎所生成的填充的逐渐更新。如下面更详细解释的,预览可以在基于补片的合成器处理的迭代之后(例如在每次迭代之后)被生成和/或更新。
[0034] 本文公开的一些实施例涉及用于基于补片的合成应用的改进的补片有效性测试。补片旋转和缩放的引入增加了确定候选补片是否是落在采样区域内的有效补片的复杂性。
为了测试包括多个像素的给定补片的有效性,可以执行一系列简化测试中的一个或多个以确定补片的每个像素是否落入采样区域内(例如由约束掩模指定)。可以通过扩展约束掩模中的孔以生成简化约束掩模,并且通过执行查找以确定补片中的代表性像素是否落入由缩减约束掩模指定的区域内来执行用于补片有效性的孔扩张测试。通过此测试的补片是有效的。可以通过查找补片的代表性像素是否落入孔内(例如落在由约束掩模指定的采样区域之外)来执行针对补片无效性的非扩张测试。满足此标准的补片是无效的。可以通过查找补片中的每个像素是否落入由约束掩模指定的采样区域内来执行针对补片有效性的综合像素测试。由于该综合像素测试的相对较大的计算需求,有利地,仅使用综合像素测试来测试那些使用其他两个测试中的任一个无法确定其有效性的补片。其像素通过综合测试的补片是有效的。可以将一个或多个补片有效性测试集成到交互系统中以自动合成内容感知填充。
[0035] 在一些实施例中,可以通过使用范围无效的边缘测试来增强补片有效性测试中一个或多个。有时,例如由于补片旋转的引入,可以生成候选补片,其中具有无效坐标一个或多个像素落在图像之外。然而,当访问数据结构(例如查找特定像素是否落入掩模内)时,访问必须是有效的并且在该结构的分配的存储器块内。传统上,执行条件范围测试以确定每个要测试的像素是否具有有效范围。在一些实施例中,条件范围测试可以用针对范围无效的边缘测试代替。可以通过向指示无效范围的图像的边界添加边缘来执行边缘测试。这样,可以通过查看像素是否落在边缘内来确定被测特定像素的范围无效性。在一些实施例中,可以将边缘作为无效区域添加到诸如约束掩模的掩模。有利地,针对范围无效的边缘测试作为每个补片有效性测试的先驱来执行。
[0036] 这样,使用本文描述的实现,用户可以有效且有效地合成内容感知填充。在对传统技术的改进中,前端用户界面允许用户定制采样区域和填充属性以基于图像内容优化内容感知填充。实时预览提供逐步更新的结果,为用户提供快速、实时的反馈,并提供更早的机会进行更改并达到所需的填充。后端内容感知填充引擎提供对相似性变换的扩展支持,从而改进填充质量。改进的补片有效性测试显著降低了支持此扩展功能所需的计算复杂性。这些技术可用于合成更好、更快的填充。
[0037] 已经简要描述了本发明的各方面的概述,提供了贯穿本说明书使用的各种术语。尽管在整个说明书中提供了关于各种术语的更多细节,但是下面包括一些术语的一般描述以提供对本文公开的想法的更清楚的理解:
[0038] 补片合成-一些数字图像处理工具可以从从图像的其他区域采样的补片自动合成目标图像。通常,补片合成是指从源图像采样的补片的目标图像的重建。在孔填充的上下文中,要合成的目标图像可以是图像中的孔,并且源图像或采样区域可以是图像的其余部分或其一些部分。一种特定的补片合成技术使用随机算法来标识图像块之间的近似最近邻匹配,并从所识别的图像块构造复合填充。用于标识近似最近邻居匹配的这种技术也称为补片匹配,并且所得到的复合填充也称为内容感知填充。
[0039] 孔-有时,照片或其他图像包括诸如不想要的主题的一些不想要的对象、诸如由损坏或数字效果得到的物体的视觉伪像等。但是,简单地删除不想要的区域会在图像中留下一个孔。如本文所使用的,“孔”可以指代要填充的图像的区域,而不管该区域是否实际上已被删除。类似地,“孔”可以指诸如约束掩模的掩模中的对应的无效采样区域。
[0040] 掩模-如本文所使用的,掩模是一种或多种数据结构,其标识和/或指定用于特定用途的某些像素。例如可以使用与要编辑的原始图像相同的尺寸初始化掩模。掩模可以标识要填充的孔中的像素、有效采样区域中的像素、缩小区域中的像素、边缘中的像素等。在一个示例中,用户选择可以用于生成指定图像中的有效采样区域的约束掩模。在一个实现中,约束掩模可以编码每个像素的状态,诸如有效采样区域中的像素(例如使用诸如1的任意数字、像素的值等)、无效采样区域中的像素(例如0)、孔中的像素、用户指定的约束中的像素等。本领域普通技术人员将理解其他变化。
[0041] 相似性变换-通常,相似性变换是形状保持变换,其可包括一个或多个平移、旋转、缩放和/或反射(即镜像)。
[0042] 图像金字塔-图像金字塔将被理解为图像的多尺度表示。对原始图像进行二次采样以产生更小、更低(更粗糙)的分辨率图像。该所得到的图像本身被二次采样以产生另一个较小的较低分辨率图像。可以重复该过程以产生不同尺度的多个表示。如果图像堆叠在一起,其中较小的较低分辨率尺度在顶部,而较大的较高分辨率尺度在底部,则所得到的多尺度集合将类似于金字塔。
[0043] 示例自动补片合成环境
[0044] 现在参考图2,示出了适用于实现本发明的实施例的示例性环境200的框图。通常,环境200适合于图像编辑,并且尤其有助于自动合成内容感知填充。环境200包括用户设备210,用户设备210具有带有用户界面235的照片编辑应用220和内容感知填充引擎260。用户设备210可以是能够促进图像编辑的任意种类的计算设备。例如在一个实施例中,用户设备
210可以是诸如计算设备2000的计算设备,如下面参考图20所述。在实施例中,用户设备210可以是个人计算机(PC)、膝上型计算机、工作站、移动计算设备、PDA、蜂窝电话等。用户界面
235与内容感知填充引擎260通信。通常,用户界面235允许用户定制任意数目的输入参数以促进内容感知填充引擎260自动合成内容感知填充。
[0045] 在图2所示的实施例中,用户设备210包括用户界面230和内容感知填充引擎260。用户界面230和/或内容感知填充引擎260可以合并或集成到应用程序或附加或插件到应用程序,诸如照片编辑应用220。照片编辑应用220通常可以是能够促进照片或图像编辑的任意应用。应用220可以是独立应用、移动应用、Web应用等。在一些实现中,应用包括web应用,其可以在web浏览器中运行,并且可以至少部分地在服务器端托管。附加地或替代地,应用可以包括专用应用。在某些情况下,应用可以集成到操作系统中(例如作为服务)。可用于照片编辑的一个示例性应用是 它是图形编辑应用。虽然本
文一般地讨论为用户设备210和/或内容感知填充引擎260与应用相关联,但是在一些情况下,用户设备210和/或内容感知填充引擎260或其某些部分可以附加地的者替代地集成到操作系统(例如作为服务)或服务器(例如远程服务器)中。
[0046] 通常,用户界面230是交互式软件界面,其允许用户定制各种输入参数以用于内容感知填充的自动合成。在图2中,用户界面230包括原始图像面板235,结果面板240、刷子工具245、和填充属性面板250。通常,原始图像面板235呈现原始图像,并接受要填充的原始图像的第一区域的用户选择和/或要用作采样区域的原始图像的第二区域的用户选择。刷子工具245是输入工具,其允许用户交互式地刷原始图像面板235中指示的采样区域以定制采样区域。填充属性面板250呈现并接受各种填充属性的选择,诸如采样区域的叠加设置、诸如候选补片的相似性变换参数的填充设置、以及合成填充的输出设置。结果面板240显示填充的完成之前填充看起来像什么的预览。
[0047] 通常,用户界面230可以允许用户指定原始图像以进行编辑。在一些实施例中,用户界面230提供选项(例如菜单命令)以触发内容感知填充工作空间,诸如图3中描绘的内容感知填充工作空间300。图3示出了用户界面230的示例布局。在该实施例中,内容感知填充工作空间300包括原始图像面板305(其可以对应于图2的原始图像面板235)、结果面板340(其可以对应于图2的结果面板240)、以及填充属性面板350(其可以对应于图2的填充属性面板250)。
[0048] 原始图像面板305包括原始图像310(在该示例中,其是来自图1的花和蜜蜂的相同照片)。要填充的图像的区域可以是用户指定的,自动生成的,其某种组合或其他方式。例如内容感知填充工作空间300可以提供选择工具,用户可以利用该选择工具指定孔边界,诸如孔边界320。原始图像面板305可以覆盖原始图像310顶部上的孔边界320,以提供对要填充的原始图像305的区域的指示。孔边界320和/或孔边界320内的区域(即孔)可以存储在指示要填充的区域的一个或多个数据结构中。附加地和/或替代地,边界和/或孔可以存储在指示有效采样区域的一个或多个数据结构中,诸如约束掩模。更具体地,约束掩模可以将孔指定为用于采样的无效区域。像素可以从其被采样以用于内容感知填充的采样区域可以是用户指定的、自动生成的、其某种组合或其他方式。可以将采样区域初始化为默认区域(例如排除孔),该默认区域可以被定制,例如通过修改默认区域的用户输入。采样区域可以存储在指示有效采样区域的一个或多个数据结构中,诸如约束掩模。更具体地,约束掩模可以将采样区域指定为用于采样的有效区域。
[0049] 在一些实施例中,原始图像面板305可包括覆盖以指示采样区域。例如原始图像面板305包括约束掩模覆盖330。例如可以经由填充属性面板350来定义和/或定制覆盖设置。例如可定制的覆盖设置可以包括约束掩模覆盖330的翻转的显示、颜色和/或不透明度。附加地和/或替代地,可以为约束掩模覆盖330提供选项以描绘采样区域或描绘将不用于采样的原始图像310的被排除区域。在图3所示的示例中,约束掩模覆盖330被翻转为开启、透明、红色,并描绘采样区域。
[0050] 填充属性面板350(其可以对应于图2的填充属性面板250)可以呈现并接受各种填充属性的选择,诸如采样区域的覆盖设置、诸如候选补片的相似性变换参数的填充设置、以及合成填充的输出设置。通常,可以设置填充属性以控制合成填充的方式。例如可定制填充设置可包括相似性变换参数(例如指定或以其他方式指示旋转的有效范围、缩放因子、镜像和/或候选补片的转换的参数)、颜色适应(例如增益和/或偏差)、确定性填充合成等。可定制填充设置将在下面更详细地讨论。可定制输出设置可以包括用于合成填充的指定输出层。例如输出到当前层用合成填充替换当前层中的孔像素,输出到新层将合成填充输出到单独的层(例如具有围绕它的透明度),和/或输出到复制层将原始图像复制到复制层中,并使用复制层中的合成填充替换孔像素。填充性质的其他变体对于本领域普通技术人员来说是显而易见的。
[0051] 通常,内容感知填充工作空间300可以在任意时间自动地将约束掩模和/或指定的填充属性传递给诸如内容感知填充引擎260的后端组件以使用约束掩模来合成(或开始合成)内容感知填充。在内容感知填充工作空间300被触发时,在原始图像310的选择时,在对孔边界和/或采样区域的选择或修改时(例如经由刷子工具245、套索工具、多边形套索工具、扩展选择工具、收缩选择工具等)、在填充属性的选择或修改时、在授权继续(例如,OK按钮点击)时和/或一些其他标准时,内容感知填充工作空间300可以自动地将约束掩模和/或指定的填充属性传递给内容感知填充引擎260。在对孔边界和/或采样区域的用户选择之前传递约束掩模的事件中,则可以将约束掩模初始化为某个默认状态(其可以包括例如自动检测的区域、从一些其他填充或先前迭代中携带的区域或选择、默认区域等)。
[0052] 内容感知填充工作空间300包括结果面板340,其可以包括在完成之前的合成填充的预览。匹配最终结果的预览可以由在全分辨率原始图像310上操作的内容感知填充引擎260生成。如下面更详细描述的,内容感知填充引擎260实现迭代过程以构造和细化填充。每次连续迭代产生具有改进的细节和通常一致的图像结构(例如图像中的线和曲线)的解决方案。可以从用于达到完整解决方案的相同过程导出预览。通过从全分辨率原始图像310开始(与在缩略图上操作以生成预览的传统技术相反)并且在迭代之后使用填充解决方案作为预览,与传统的预览不同,可以生成与末端结果的图像结构匹配的准确预览。因此,内容感知填充引擎260可以在迭代之后(例如在每次迭代之后)将填充解决方案传递给结果面板
340以呈现给用户。在一些实施例中,内容感知填充引擎260可以执行连续迭代并在每次迭代之后向结果面板340提供解决方案。这样,结果面板340可以包括具有逐渐更新结果的实时预览。这些逐步更新可以为用户提供快速、实时的反馈以及更早的机会进行任意期望的更改以达到期望的填充。
[0053] 在一些实施例中,内容感知填充引擎260可以在后续迭代之前提供预览并中断该过程,以在完成填充之前促进用户输入。例如在生成预览之前,内容感知填充工作空间300可以允许用户选择期望的预览分辨率和/或尺寸(或者可以利用默认预览分辨率)。内容感知填充引擎260可以在迭代之后开始合成填充和中断,其中对应的当前填充解决方案的分辨率与预定阈值内的指定预览分辨率匹配(无论是以像素指定,以百分比还是以其他方式指定)。在这些实施例中,内容感知填充引擎260可以将当前填充传递到结果面板340以作为预览呈现。在这种场景中,内容感知填充工作空间300可以提示用户指示继续处理、改变参数和/或放大或缩小预览。
[0054] 用于继续处理的用户指示可以触发内容感知填充引擎260以计算剩余分辨率,直到全分辨率结果。然而,孔或采样区域的改变,或候选补片的相似性变换参数的改变,可使得当前填充变得过时。可以挽救一些现有的计算以改进速度并避免不必要的重新计算。例如如果一个或多个模板不受更改影响,则无需重新计算模板。同样,不需要重新生成对应于未改变的掩模的金字塔。如果用户没有改变孔,则不需要重新计算存储从每个像素到孔边界的距离变换的缓冲器。如本领域普通技术人员将理解的,可以高速缓存和重新使用诸如这些和其他的各种计算以提高处理速度。
[0055] 中断的另一种可能性是用户放大或缩小预览的请求。由于内容感知填充引擎260已经计算出较低分辨率的解决方案以到达预览,因此可以在用户缩小预览(例如请求较低分辨率预览)的情况下高速缓存、访问和呈现那些解决方案。如果用户放大预览(例如请求更高分辨率的预览),则内容感知填充工作空间300可以向内容感知填充引擎260传递指示以从上次暂停的先前分辨率恢复计算,以便生成下一个预览分辨率。该方案利用先前的迭代并允许内容感知填充引擎260快速生成前端的新预览。
[0056] 在一些实施例中,可以通过将孔分成两个或更多个子划分并递增地合成用于每个子划分的填充来改善不正确的填充。例如内容感知填充工作空间300可以接受手动标识第一子划分的输入,并且可以如上所述生成填充。内容感知填充工作空间300可以接受指示应当接受填充的输入(例如按钮按压),在该输入上,内容感知填充工作空间300可以促进手动标识后续细分的后续输入,并且重复该过程。附加地和/或替代地用于接受手动标识子划分的输入,可以自动生成子划分,如本领域普通技术人员将理解的。在一些实施例中,内容感知填充工作空间300可以接受指示应当使用最近所得到的填充来生成后续子划分的填充的输入。以这种方式,内容感知填充工作空间300可以通过递增地生成孔的两个或更多个子划分的填充来填充孔。
[0057] 前面的讨论利用图3来示出具有原始图像面板305、结果面板340和填充属性面板350的示例性内容感知填充工作空间300。在图3中,原始图像310是具有蜜蜂收集花粉的花的图像。结果面板340描绘了利用候选补片的转换所得到的示例填充。可以理解,得到的填充是不准确的。例如花瓣的纹理不一致且模糊,并且孔的某些部分被错误地填充绿色背景。
对于具有非线性特征的图像,可以通过扩展搜索域以包括候选补片的相似性变换来改善填充的质量。例如诸如相似性变换参数的填充设置可以支持旋转、缩放和/或镜像。填充设置可以是预设的、可定制的以用于交互式访问、或者以其他方式。
[0058] 图4-8示出从用于可定制填充设置和/或可定制采样区域的交互式访问所得到的一些潜在益处。一般而言,与仅使用转换相反,使用候选补片的相似性变换来合成填充可以显著改进填充质量。然而,每个图像是不同的,因此不同类型的变换可能更适合于特定图像。例如旋转可适用于弯曲物体或透视图像。此外,在某些情况下,具有有限范围的旋转可能是合适的。通常,旋转适配可以用于指定当填充孔作为补片合成的一部分时补片可以旋转的程度(或范围)。例如可以指定预设填充设置(例如低度、中度、高度、完全),其对应于潜在旋转范围。完全旋转(例如-180°至180°)可合适用于圆形或圆形物体。一些中度旋转度可适用于具有大量曲率的图像。一些较低的旋转度可能适合于具有弯曲线条的图像,如道路中的弯曲。在另一个示例中,缩放可以适合于改善具有不同尺寸的重复图案或在透视下的图像内容的合成填充。镜像(例如诸如水平翻转的翻转)可以改善具有对称性的图像的合成填充。颜色适应可用于指定增益和/或偏置强度,以通过改变用于填充孔的补片的亮度和/或对比度作为补片合成的一部分来改善图像的合成填充。通过允许用户选择适当的填充设置,用户可以将补片合成引导到最佳解决方案。
[0059] 回到具有蜜蜂采集花粉的花的示例图像,图4和5描绘了使用不同填充设置的自动合成的内容感知填充的示例。由于原始图像310中的花通常是圆形的,因此可以将旋转适配应用于候选补片以旋转花瓣以填充孔。图4示出了使用旋转适配的自动合成的内容感知填充。所得到的填充不再包括绿色背景的部分,因此花看起来更自然。通过包括镜像可以进一步改善结果。图5示出了使用镜像的自动合成的内容感知填充。在图5中,所得填充物的纹理已被改进,以更接近地匹配剩余花瓣的纹理。
[0060] 图6A-6C是示出根据本发明实施例的自动合成的内容感知填充的示例图像。图6A描绘了女性走进走廊的原始图像的一部分。为了从图像中移除女性,已经选择虚线区域作为孔边界,并且约束掩模覆盖物排除孔。图6A已被放大,因此原始图像、覆盖和对应的采样区域未完整地描绘。图6B是具有用镜像关闭和颜色适配生成的自动合成的内容感知填充的示例图像。可以看出,孔已经被错误地填充(例如走廊壁已经不正确地延伸)。由于原始图像包括对称性,因此可以利用镜像来改善填充。这样,图6C是具有自动合成的内容感知填充的示例图像,该内容感知填充通过镜像开启和颜色适应关闭而生成。可以看出,通过使用来自原始图像的对称部分的样本并且通过关闭增益和偏置调整来改善填充质量。
[0061] 作为用于提供可定制的相似性变换参数的补充和/或替代,另一个可定制的填充设置是确定性填充合成模式。传统的补片合成技术通常是多线程的。更具体地说,指定的孔可以被分成几个文件,以便由不同的线程进行并行处理。线程完成其相应解决方案的定时可以改变指定孔的所得到的填充解决方案。由于在传统技术中不知道或控制该定时,因此传统的补片合成通常是不可重复的。在确定性填充合成模式中,可以实现可重复的补片合成技术,如下面更详细地解释的。然而,由于该确定性处理可能增加处理时间,允许用户控制该模式允许用户在速度和可重复性之间进行权衡。
[0062] 作为用于提供可定制的填充设置的补充和/或替代,可以使用可定制的采样区域来改进自动合成的填充。图7和8示出了利用可定制的采样区域的潜在益处。图7示出了使用默认采样区域的具有自动合成的内容感知填充的示例内容感知填充工作空间。左侧的原始图像面板显示了具有要移除的棕色建筑物的原始图像。棕色建筑周围的虚线区域已被选为孔,红色覆盖所示的排除孔的默认采样区域已被初始化。在右侧的结果面板中,自动合成的内容感知填充从原始图像中心的白色建筑物的角落中错误地采样。在这个示例中,不是消除棕色建筑物,而是所得到的填充错误地用白色建筑物的一部分替换了棕色建筑物。为了调整所得到的填充,可以定制采样区域。
[0063] 通常,内容感知填充工作空间可以促进用户定制采样区域。例如内容感知填充工作空间可以提供诸如刷子工具(例如刷子工具245)的输入工具,其允许用户交互式地刷洗原始图像面板235中的采样区域以定制采样区域。刷子工具可以促进用户输入添加到有效采样区域或从有效采样区域减去,其可以存储在约束掩模中。刷子工具是可调整大小的,以增加或减小刷子尺寸。附加地和/或替代地,刷子工具的捕获区域的形状可以定制为任意形状。这样,刷子工具可用于从采样区域添加或移除。附加地和/或替代地,可以提供各种其他输入工具以促进用户选择和/或修改孔和/或采样区域,例如套索工具、多边形套索工具、扩展选择工具、收缩选择工具等。在一些实施例中,在检测到用户输入的完成(诸如从采样区域和/或对应的覆盖中移除像素的刷子笔触)时,内容感知填充工作空间可以自动将所得到的采样区域(例如经由约束掩模)传递到诸如内容感知填充引擎260的后端组件,以使用指定的约束掩模来合成内容感知填充。图8示出了使用定制的采样区域的具有自动合成的内容感知填充的示例内容感知填充工作空间。可以理解,采样区域和对应的覆盖已经被用排除原始图像中心的白色建筑物的约束定制。右侧结果面板中的得到的填充正确地将棕色建筑物替换为原始图像中天空和树木的像素,而不是白色建筑物的角落。
[0064] 现在返回到图2,内容感知填充引擎260包括补片有效性组件265和基于补片的合成器270。补片有效性组件265和基于补片的合成器270在通信中操作以自动合成内容感知填充(例如,填充从用户界面235传递的约束掩模指示的孔)。如下面更详细解释的,基于补片的合成器270可以使用随机算法执行补片合成,以生成和评估候选补片并标识图像补片之间的近似最近邻居匹配。如本领域普通技术人员将理解的,这可以涉及针对多尺度解决方案的每个尺度的初始化、搜索、投票和放大的迭代过程。可以在初始化、搜索和上采样期间从源图像(例如由约束掩模指定的采样区域)生成候选补片。通常,补片有效性组件265通过应用一个或多个改进的补片有效性测试来评估候选补片的有效性。有利地,每次基于补片的合成器270标识候选补片时,补片有效性组件265确定补片的有效性。
[0065] 通常,补片旋转和缩放的引入增加了确定候选补片是否是落在采样区域内的有效补片的复杂性。图9示出了有效和无效补片的示例。在图9中,采样区域910不包括孔920。为了从采样区域910采样有效的补片,补片应完全落在采样区域内。补片930、940和950是示出的示例补片,其宽度为三个像素,每个用于说明目的。补片930完全落在采样区域910内,因此补片930是有效的。补片940包括来自孔930的一些像素,因此补片940无效。补片950包括落在采样区域910之外的一些像素,因此补片950无效。后一种情况可能在采样区域的边界与原始图像的边界重合时发生,并且应用旋转以生成候选补片导致候选补片的一些像素落在原始图像之外。补片有效性组件265可以在这些场景下确定补片有效性。
[0066] 为了测试具有k个像素宽度的相似性变换补片的有效性,传统技术简单地评估每个像素是否在采样区域内。这基本上涉及补片中每个像素的矩阵乘法。该操作的复杂性是O(k2)。通过使用一个或多个简化测试可以降低复杂性而不影响质量:(1)针对补片有效性的孔扩张测试,(2)针对补片无效性的无扩张测试,以及(3)针对补片有效性的综合像素测试。
[0067] 在速度事项最重要的更精细图像金字塔分辨率的补片合成迭代期间,许多随机所生成的候选补片的中心不接触该孔。这样,通过评估诸如中心像素的候选补片的代表性像素是否落入具有扩张孔的缩小采样区域内,可以简化在该场景中的补片有效性的确定。可以通过考虑补片宽度、可允许变换和/或超级采样的因子来扩张孔。该测试被称为针对补片有效性的孔扩张测试,并且由图10示出。在图10中,孔1020被扩张以形成扩张孔1025。扩张条带1022的宽度可以基于补片宽度、允许补片旋转、最大允许缩放因子和/或超级采样率。例如扩张条带1022的宽度可以由以下等式给出:
[0068]
[0069] 在该示例中,如本领域普通技术人员将理解的,该 因子可以被导出为从补片中心在允许的补片旋转上的最大像素位移。此外,半被片宽度有利地舍入为整数(例如对于7个像素的补片宽度,半补片宽度可以是3个像素)。这样,在一些实施例中,扩张的条带宽度可以根据允许的补片旋转而变化。
[0070] 扩张孔1025可以用于生成缩减采样区域1010。例如在使用约束掩模来编码采样区域的情况下,可以扩张约束掩模中的孔以生成减小的约束掩模。可以通过查找补片中的代表性像素(例如补片1030)是否落入由减小的约束掩模指定的区域(例如减小的采样区域1010)来执行针对补片有效性的孔扩张测试。通过此测试的补片是有效的。有利地,没有得出未通过测试的补片的结论。补片有效性的孔扩张测试的复杂性是O(1)。通过对补片有效性实施孔扩张测试,观察到补片合成的速度比具有O(k2)的矩阵乘法增加1.6倍。
[0071] 在更准确(courser)的图像金字塔分辨率的补片合成迭代期间,许多随机生成的候选补片的中心(例如NNF场初始化、搜索和上采样)触及该孔。这样,通过评估诸如中心像素的候选补片的代表性像素是否落入孔内,可以简化在这种情况下补片无效性的确定。这被称为针对补片无效性的非扩张测试,并且由图11示出。在图11中,可以通过查看诸如中心像素的代表性像素是否落入孔内来确定补片1130是否落入孔1120内。可以通过确定代表性像素是否落在采样区域1110之外来反向执行测试。满足该标准的补片是无效的。有利地,没有得出不满足该标准的补片的结论。补片无效性的无扩张测试的复杂度为O(1)。通过实现针对补片无效性的非扩张测试,观察到补片合成的速度比具有O(k2)的矩阵乘法增加了1.15倍。
[0072] 针对补片有效性应用孔扩张测试和针对补片无效性应用非扩张测试将不能最终确定其中心像素落入扩张条带内的候选补片的补片有效性。这样,通过查找候选补片中的每个像素是否落入采样区域(例如由约束掩模指定),可以在一些情况下执行补片有效性的确定。这被称为针对补片有效性的综合像素测试,并且由图12示出。在图12中,测试补片1230的每个像素以确定其是否落入采样区域1210内并因此在孔1220之外。由于相对这种综合像素测试的较大计算需求,有利地仅使用综合像素测试来测试那些使用针对补片有效性的孔扩张测试或针对补片无效性的无扩张测试不能确定其有效性的补片。通过综合像素测试的补片是有效的,而未通过综合像素测试的补片是无效的。如本领域普通技术人员将理解的,通过利用一个融合多次加(FMA)向量指令计算给定补片行中的每个像素的像素坐标,可以最大化速度并促进更有效的硬件使用。通过将每个补片行像素坐标计算处理为矢量,
2
将针对补片有效性的综合像素测试的复杂度提高到O(k),与具有O(k)的矩阵乘法相反。
[0073] 在一些实施例中,可以通过使用范围无效的边缘测试来增强一个或多个补片有效性测试。有时,例如由于引入了补片旋转,可以利用具有无效坐标(例如落在图像或其他初始化数据结构之外)的一个或多个像素生成候选补片。然而,当访问数据结构时(例如为了查找特定像素是否落入约束掩模内),访问必须是有效的并且在该结构的分配的存储器块内。传统上,可以执行四个条件范围测试以确定每个要测试的像素是否具有有效范围(例如对于四个图像边界中的每一个的一个测试)。不是四个条件范围测试,可以执行范围无效的边缘测试,以简化范围测试。
[0074] 通常,可以通过在有效区域(例如图像)的边界周围添加边缘来执行范围无效的边缘测试以指示无效范围。这样,可以通过查找像素是否落在边缘内来确定要测试的特定像素的范围无效性。图13示出了范围无效的边缘测试。在图13中,在图像边界1310周围添加边缘1350。边缘1350的宽度1312可以基于补片宽度、允许的补片旋转、最大允许的缩放因子和/或超级采样率。例如边缘1350的宽度可以由上面的等式(1)给出。可以通过查看像素(例如来自补片1330)是否落入边缘(例如边缘1350)来执行范围无效的边缘测试。在一些实施例中,可以将边缘作为无效区域添加到诸如约束掩模的掩模。如果像素落在边缘内,则它具有无效范围,并且其补片是无效的。范围无效的边缘测试的复杂度是O(1),对于边缘测试的每个应用(例如每次查找),将四个传统条件范围测试的O(4)复杂度降低四倍。
[0075] 范围无效性的边缘测试可以合并到一个或多个(例如所有)补片有效性测试中。例如在图13中,假设要测试补片1330的像素以查看其是否落入缩小的采样区域内(例如在针对补片有效性的孔扩张测试期间),在孔1320内(例如在没有针对补片无效性的无扩张测试期间)和/或在有效采样区域内(例如在针对补片有效性的综合像素测试期间),在执行每次查找之前可以应用范围无效的边缘测试来确定被测像素是否具有有效范围。由于孔扩张和没有扩张测试各自包括一个查找,并且综合像素测试包括k2查找,利用边缘测试可以将范围测试的复杂度针对孔扩张和非扩张测试中的每一个降低四倍,并且针对综合像素测试降低4k2。
[0076] 通常,可以将一个或多个改进的补片有效性测试结合到交互系统中,以自动合成内容感知填充。例如在图2所示的实施例中,补片有效性组件265可以通过应用一个或多个改进的补片有效性测试来评估基于补片的合成器270的候选补片的有效性。已经观察到使用本文所述的改进的有效性测试将补片合成的速度比具有O(k2)的矩阵乘法技术提高了几乎1.75倍。对于测试的90%的候选补片,本文描述的改进的补片有效性测试使用具有O(1)的单个查找来确定补片有效性。
[0077] 在图2中描绘的示例实现中,基于补片的合成器270使用随机算法执行补片合成以生成和评估候选补片并标识图像补片之间的近似最近邻居匹配。为了使用从源图像变换的图像补片来构建给定的目标图像(例如孔),可以使用称为最近邻域(NNF)的数据结构来管理源图像和目标图像中的被片之间的映射。NNF包括目标图像中的每个像素的变换。如本文所述,这些变换可以包括相似性变换。对于给定像素,NNF中针对该像素的变换标识对应的源补片,其可以被测试以用于与像素相关联的目标补片的相似性。基于补片的合成器270的目标是标识最佳匹配每个目标补片(即最近邻居)的源补片(例如来自有效采样区域)。可以在合成过程的各个阶段期间更新NNF字段,以跟踪每个目标补片的最近邻源补片。
[0078] 如本领域普通技术人员将理解的,基于补片的合成器270可以涉及针对多尺度解决方案的每个尺度的初始化、搜索、投票和放大的迭代过程。这样,在图2所示的实施例中,基于补片的合成器270包括对应的初始化组件272、传播搜索组件274、随机搜索组件276、投票组件278和放大组件280。
[0079] 对于来自目标图像(例如孔)的每个目标像素,初始化组件272将随机所生成的变换指定为初始化。图14示出了随机所得到的变换的示例,其标识来自源图像B的候选补片(例如补片1425、1435),其可以用作目标图像A的对应目标补片(例如补片1420、1430)。如本文所述,这些变换可以包括相似性变换。相似性变换参数可以是用户选择的、预定的、其某种组合或其他方式。通常,随机生成的变换在可应用的相似性变换参数(例如平移、缩放、旋转和/或镜像搜索域)上被界定。有利地,补片有效性组件265确定每个候选补片的有效性。对于未通过补片有效性测试的候选源补片,初始化组件272分配新的随机生成的变换以替换失败的候选补片,并且重复补片有效性测试。如果补片有效性测试失败某些预定次数(例如256),则可以通过减小有效采样区域(例如扩大孔)、使相应搜索域有界和/或通过使用随机生成的简单变换而不是完全的相似性变换来生成候选补片。这样,该替代技术可用于生成有效候选补片。
[0080] 通常,基于补片的合成器270执行搜索(例如经由传播搜索组件274和随机搜索组件276)以标识改善NNF的候选补片,如本领域普通技术人员将理解的。有利地,补片有效性组件265确定每个候选补片的有效性。如果候选源补片未通过补片有效性测试,则不利用候选补片来改进NNF。评估通过补片有效性的候选补片以确定给定候选补片是否是针对特定目标补片的、比NNF中的现有最近邻居更接近的匹配(例如候选补片是否减少补片距离)。换句话说,NNF=Min(NNF,PreviousNNF)。
[0081] 在一些实施例中,传播搜索组件274和随机搜索组件276可以以促进确定性填充合成的方式标识候选补片。在传统技术中,指定的孔可以分成几个子划分,以用于由不同的线程进行并行处理。在一个示例中,孔可以被分成三个子划分,并且三个线程中的每一个并行地处理对应的子划分。在传统技术中,特定线程以扫描线顺序处理分配的子划分中的每个像素。例如对于给定像素,传播搜索组件274传播相邻像素的解决方案并选择最佳解决方案,随机搜索组件276标识用于随机标识的像素的解决方案并选择最佳解决方案,并且所分配的线程移动到扫描线顺序中的下一像素。然而,因为一些线程可能比其他线程更快地完成生成针对指定的子划分的填充,所以通常使用从相邻子划分的不完整填充中采样的补片来为子划分生成填充。结果,传统的补片合成通常是不可重复的。
[0082] 这样,在一些实施例中,指定的孔可以被划分为比线程更多的子划分,并且可以分配多个线程以仅并行地处理非边界的子划分。在一个简单的示例中,假设一个洞被分成六个块,0-5。对于基于补片的合成器270的偶数迭代,三个线程可以以扫描线顺序处理交替的块(例如0、2、4)。在奇数迭代期间,线程可以以反向扫描线顺序处理交替块(例如1、3、5)。因为在任意线程完成处理特定子划分时,相邻子部分已经完成填充,所以每个线程完成处理其分配的子划分的时间并不重要。因此,分配多个线程以并行处理非边界子划分可以产生确定性结果。
[0083] 在一些实施例中,可应用波前技术来标识候选补片以促进确定性填充合成。通常,波前处理是用于处理多维网格的技术,针对多维网格网格中的特定单元依赖于网格中的其他单元。通过在角落处开始,处理在网格上进行对角线扫描,这类似于波前。在基于补片的合成的上下文中,可以利用波前而不是扫描线顺序来实现搜索(例如传播搜索组件274可以传播上方的相邻像素和左侧的相邻像素的解决方案)。此外,可以修改随机搜索组件276用于随机标识像素的随机数生成器。随机数生成器通常被设计为在给定种子时生成已知的统一数字序列。对于产生确定性补片合成的波前处理,可以修改随机数生成器以接受作为其输入以生成统一数。以这种方式,对于给定的像素值,对随机数生成器的给定调用序列将产生相同的结果。以这种方式,可以标识候选补片的确定性集合,从而促进确定性填充合成。本领域普通技术人员将理解其他变化。
[0084] 通常,基于补片的合成器270执行投票(例如经由投票组件278)以生成建议的目标图像。通常,执行补片投票以累积每个重叠的邻居补片的像素颜色,并且对颜色投票进行加权平均。所提出的目标图像可以被传递到前端(例如评论面板240)以作为预览呈现。如上所述,在每个后续迭代期间,更新所提出的目标图像,并且可以针对每次迭代将更新的目标图像传递到前端。结果是逐步更新、实时预览。这些逐步更新可以为用户提供快速、实时的反馈以及更早的机会以进行任意所需的更改以达到期望的填充。
[0085] 基于补片的合成器270执行放大(例如经由放大组件280)以放大当前NNF以用作在下一规模的后续迭代期间的基线。由于该放大可以产生无效补片,因此补片有效性组件265有利地确定对应于放大的NNF的候选补片的有效性。在随后的基于补片的合成器270迭代期间评估通过补片有效性的候选补片,以确定给定候选补片是否是针对特定目标补片的、比从随机初始化的NNF所生成的对应候选补片更接近的匹配。
[0086] 通常,对于随后的金字塔比例重复流过基于补片的合成器270的流程,直到全分辨率解决方案被生成并被传递到前端以呈现给用户。在一些实施例中,基于补片的合成器270可以在一些组件检测更新的(例如由用户)采样区域和/或适用的转换、缩放、旋转和/或镜像搜索域时中断。在这种场景中,基于补片的合成器270可以挽救现有计算以提高速度并避免不必要的重新计算,如上面更详细描述的,并且可以自动开始处理更新的采样区域和/或搜索域。附加地和/或替代地,基于补片的合成器270可以传递所提出的目标图像以作为预览呈现并且在完成填充之前中断其过程以促进用户输入,如上面更详细地描述的。继续处理的用户指示可以触发基于补片的合成器270以计算剩余分辨率,如上面更详细描述的。
[0087] 这样,使用本文描述的实现,用户可以高效且有效地合成内容感知填充。在对传统技术的改进中,前端用户界面允许用户定制采样区域和填充属性以优化基于图像内容的内容感知填充。实时预览提供逐步更新的结果,为用户提供快速、实时的反馈,并提供更早的机会以进行更改并达到期望的填充。后端内容感知填充引擎提供针对相似性变换的扩展支持,从而改进填充质量。改进的补片有效性测试显著降低了支持此扩展功能所需的计算复杂度。这些技术可用于合成更好、更快的填充。
[0088] 尽管本文关于在照片编辑的上下文中的图像完成描述了技术,但是本技术可以基于示例的优化被应用于基于孔填充应用的任意孔填充算法。此外,虽然本文中参考孔拟合应用描述了改进的补片有效性测试,但是在一些实施例中,可以在各种其他实现中应用一个或多个改进的补片有效性测试,包括图像定向、可刷洗、图像重新洗牌、内容移除、密集对应算法(NRDC)、图像变形、超解析、去噪、去模糊等。这些实现仅仅是示例性的,本领域普通技术人员将理解其他实现。
[0089] 示例性流程图
[0090] 现在参考图15-18,提供了示出用于本文描述的各种技术的方法的流程图。方法1500、1600、1700和1800的每个块以及本文描述的任意其他方法包括使用硬件、固件和/或软件的任意组合执行的计算过程。例如各种功能可以由执行在存储器中存储的指令的处理器来执行。该方法还可以体现为在计算机存储介质上存储的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与其他托管服务组合)或另一产品的插件提供,仅举几例。
[0091] 首先转向图15,图15示出了根据本文描述的各种实施例的用于自动合成目标图像以填充原始图像中的孔的方法1500。最初在框1510,提供用户界面。用户界面被配置为接收指定要填充的原始图像中的孔的第一用户输入。用户界面还被配置为接收指示原始图像的采样区域的第二用户输入,像素可以从该采样区域被采样,采样区域不包括孔。在框1520,将采样区域存储在约束掩模中。在框1530,将约束掩模传递到基于补片的合成器,该基于补片的合成器被配置为从由约束掩模指定的采样区域采样的相似性变换的补片来合成目标图像。在框1540处,用户界面呈现具有合成的目标图像填充孔的原始图像。
[0092] 现在转向图16,图16示出了根据本文描述的各种实施例的用于自动合成目标图像以填充原始图像中的孔的方法1600。最初在框1610,访问约束掩模。约束掩模指定原始图像的可定制采样区域,从该可定制采样区域可以对像素进行采样。采样区域排除原始图像中用户指定的孔。在框1620,合成目标图像以从由约束掩模指定的采样区域采样的相似性变换的补片填充孔。在框1630,提供合成的目标图像用于呈现具有合成的目标图像填充孔的原始图像。
[0093] 现在转向图17,图17示出了根据本文描述的各种实施例的用于补片有效性测试的方法1700。最初在框1710,生成相似性变换的候选补片以重建目标图像。候选补片包括来自源图像的像素。在框1720,基于对相似性变换的候选补片的代表性像素的评估,将候选补片验证为落在源图像的采样区域内的有效补片。在框1730,使用经验证的候选补片来自动重建目标图像。
[0094] 现在转向图18,图18示出了根据本文描述的各种实施例的用于补片有效性测试的方法1800。最初在框1820,使用针补片有效性的孔扩张测试来测试候选补片1810。如果满足测试1820,则得出候选补片1810是有效补片的结论1830。如果不满足测试1820,则在框1840使用针对补片无效性的无扩张测试来测试候选补片1810。如果满足测试1840,则得出候选补片1810是无效补片的结论1850。如果不满足测试1840,则在框1860使用针对补片有效性的综合像素测试来测试候选补片1810。如果满足测试1860,则得出候选补片1810是有效补片的结论1870。如果不满足测试1860,则得出候选补片1810是无效补片的结论1880。
[0095] 示范计算环境
[0096] 图19是环境1900的图,其中可以实践本公开的一个或多个实施例。环境1900包括一个或多个用户设备,诸如用户设备1902A-1902N。用户设备的示例包括但不限于个人计算机(PC)、平板计算机、台式计算机、蜂窝电话、处理单元、这些设备的任意组合、或具有一个或多个处理器的任意其他合适的设备。每个用户设备包括由创新装置1908支持的至少一个应用。应当理解,以下描述通常可以将用户设备1902A称为示例,并且可以使用任意其他用户设备。
[0097] 用户设备的用户可以经由网络1906由创新装置1908支持的各种产品、应用或服务。用户设备1902A-1902N可以由各种用户操作。用户的示例包括但不限于使用创新工具来生成、编辑、跟踪或管理创新内容的创新专业人士或业余爱好者、广告商、发布者、开发者、内容所有者、内容管理者、内容创建者、内容浏览者、内容消费者、设计者、编辑者、这些用户的任意组合、或使用数字工具来创建、编辑、跟踪或管理数字体验的任意其他用户。
[0098] 如本文所述,数字工具包括用于以电子方式执行功能或工作流程的工具。数字工具的示例包括但不限于内容创建工具、内容编辑工具、内容发布工具、内容跟踪工具、内容管理工具、内容打印工具、内容消费工具、这些工具的任意组合或可用于创建、编辑、管理、生成、跟踪、使用或执行与内容相关的任意其他功能或工作流程的任意其他工具。数字工具包括创新装置1908。
[0099] 如本文所述,数字体验包括可以通过电子设备消费的体验。数字体验的示例包括内容创建、内容编辑、内容跟踪、内容发布、内容发布、内容打印、内容管理、内容查看、内容消费、这些体验的任意组合、或可以关于内容被执行的任意其他工作流程或功能。
[0100] 如本文所述,内容包括电子内容。内容的示例包括但不限于图像、视频、网站、网页、用户界面、菜单项、工具菜单、杂志、幻灯片、动画、社交帖子、评论、博客、数据馈送、音频、广告、矢量图形、位图、文档、一个或多个内容的任意组合、或任意其他电子内容。
[0101] 用户设备1902A-1902N可以经由网络1906连接到创意装置1908。网络1906的示例包括但不限于互联网、局域网(LAN)、无线区域网络、有线区域网络、广域网络等。
[0102] 创新装置1908包括用于向用户提供一个或多个数字体验的一个或多个引擎。可以使用一个或多个服务器、具有对应的应用程序编程接口的一个或多个平台、云基础设施等来实现创新装置1908。此外,每个引擎还可以使用一个或多个服务器、具有相应应用程序编程接口的一个或多个平台、云基础设施等来实现。创新装置1908还包括数据存储单元1912。数据存储单元1912可以实现为一个或多个数据库或一个或多个数据服务器。数据存储单元
1912包括由创新装置1908的引擎使用的数据。
[0103] 用户设备1902A的用户访问网页或应用商店以探索由创新装置1908支持的应用。创新装置1908将应用提供为软件即服务(SaaS),或者作为可以安装在用户设备1902A上的独立应用、或作为组合。用户可以通过提供用户细节并且还通过创建登录细节来创建具有创新装置1908的帐户。替代地,创新装置1908可以响应于用户细节的接收来自动为用户创建登录细节。在一些实施例中,还提示用户安装应用管理器。应用管理器使用户能够管理由创新装置1908支持的各种应用的安装,并且还管理与应用相关联的其他功能,诸如更新、订阅帐户等。用户细节由用户管理引擎1916接收并作为用户数据1918存储在数据存储单元
1912中。在一些实施例中,用户数据1918还包括用户细节被在其下被存储的帐户数据1920。
[0104] 用户可以选择试用帐户或者可以基于用户选择的帐户类型或订阅来进行支付。替代地,支付可以基于用户选择的产品或产品的数目。基于用户的支付细节,用户操作简档1922由授权引擎1924生成。用户操作简档1922存储在数据存储单元1912中,并指示用户对各种产品或服务的授权。用户操作简档1922还指示用户的类型,即免费、试用、学生、打折或付费。
[0105] 在一些实施例中,用户管理引擎1916和权利引擎1924可以是执行两个引擎的功能的单个引擎。
[0106] 然后,用户可以经由应用下载管理引擎1926安装创新装置1908支持的各种应用。存在于数据存储单元1912中的应用安装程序或应用程序1928由应用下载管理引擎1926取回并且直接或经由应用管理器可供用户使用。在一个实施例中,所有应用程序1928的指示被取回并经由应用管理器的界面提供给用户。在另一实施例中,向用户显示基于用户的操作简档对用户有资格的应用程序1928的指示。然后,用户选择应用程序1928或用户想要下载的应用。然后,应用管理器经由应用程序下载管理引擎1926将应用程序1928下载到用户设备1902A上。关于下载的对应数据也在用户操作简档1922中更新。应用程序1928是数字工具的示例。应用程序下载管理引擎1926还管理向用户设备1902A提供更新的过程。
[0107] 在应用程序的下载、安装和启动时,在一个实施例中,要求用户提供登录细节。用户管理引擎1916和权利引擎1924再次进行检查以确保用户有权使用应用程序。在另一实施例中,当用户已登录到应用程序管理器时,向应用程序提供直接访问。
[0108] 用户使用在用户设备上安装的一个或多个应用程序1904A-1904N来创建一个或多个项目或资产。此外,用户还在每个应用程序中具有工作空间。如本文所述,工作空间包括应用程序的设置、工具的设置、或由应用程序提供的用户界面的设置、以及特定于应用程序的任意其他设置或属性。每个用户都可以具有工作空间。工作空间、项目、和/或资产可以由同步引擎1932作为应用程序数据1930存储在数据存储单元1912中。可选地或附加地,这样的数据可以存储在诸如用户设备1902A的用户设备处。
[0109] 应用程序数据1930包括一个或多个资产1940。资产1940可以是用户想要与其他用户共享或者用户想要在市场上提供的共享资产。资产1940也可以在多个应用程序1928之间共享。每个资产包括元数据1942。元数据1942的示例包括但不限于字体、颜色、大小、形状、坐标、这些中的任意组合等等。附加地,在一个实施例中,每个资产还包括文件。文件的示例包括但不限于图像1944、文本1946、视频1948、字体1950、文档1952、这些中的任意组合等。在另一实施例中,资产仅包括元数据1942。
[0110] 应用程序数据1930还包括项目数据1954和工作空间数据1956。在一个实施例中,项目数据1954包括资产1940。在另一实施例中,资产1940是独立资产。类似地,工作空间数据1956在一个实施例中可以是项目数据1954的一部分,而在其他实施例中它可以是独立数据。
[0111] 用户可以操作一个或多个用户设备来访问数据。在这方面,用户可以从任意设备访问应用程序数据1930,包括不用于创建资产1940的设备。这通过将应用程序数据1930存储在数据存储单元1912中并使应用程序数据1930可供用户或其他用户通过任意设备访问的同步引擎1932来实现。在用户从任意其他设备或任意其他用户访问应用程序数据1930之前,如果尚未登录,则用户或其他用户可能需要提供用于认证的登录细节。在一些情况下,如果用户或其他用户登录后,实时提供新创建的资产或对应用程序数据1930的更新。还调用权限管理引擎1936以确定是否可以将新创建的资产或更新提供给其他用户。工作空间数据1956使同步引擎1932能够基于权限管理数据1938向在任意其他设备上的用户或向其他用户提供相同的工作空间配置。
[0112] 在各种实施例中,可以实现各种类型的同步。例如用户可以使用第一应用程序从用户设备1902A中选择字体或颜色,并且可以将字体或颜色用于在任意其他设备上的第二应用程序中。如果用户与其他用户共享字体或颜色,则其他用户也可以使用该字体或颜色。这种同步通常是实时发生的。类似地,可以执行任意类型的应用程序数据1930的同步。
[0113] 在一些实施例中,用户与应用1904的交互由应用分析引擎1958跟踪并被存储为应用程序分析数据1960。应用分析数据1960包括例如工具的使用、特征的使用、工作流程的使用、资产1940的使用等。应用分析数据1960可以包括基于每个用户的使用数据,并且还可以包括基于每个工具或基于每个特征或基于每个工作流或基于任意其他的使用数据。应用分析引擎1958在应用1904中嵌入一段代码,其使应用能够收集使用数据并将其发送到应用分析引擎1958。应用分析引擎1958将使用数据存储为应用分析数据1960并处理应用分析数据1960以得出有意义的输出。例如应用分析引擎1958可以得出用户最多次使用“工具4”的输出。个性化引擎1962使用应用程序引擎1958的输出来个性化针对用户的工具菜单以在顶部显示“工具4”。还可以基于应用分析数据1960来执行其他类型的个性化。此外,个性化引擎
1962还可以使用工作空间数据1956或包括用户偏好的用户数据1918来为用户个性化一个或多个应用程序1928。
[0114] 在一些实施例中,应用分析数据1960包括指示用户的项目的状态的数据。例如如果用户正在准备数字发布应用中的文章,并且剩下的是在用户退出数字发布应用时发布准备好的文章,则应用程序分析引擎1958跟踪该状态。现在,当用户接下来在另一设备上打开数字发布应用时,然后指示用户并且将状态和选项提供给用户以使用数字发布应用或任意其他应用进行发布。附加地,在准备文章时,同步引擎1932也可以进行推荐,以集成用户保存并与文章相关的一些其他资产。如本文所述,可以使用一个或多个引擎生成这样的推荐。
[0115] 创意装置1908还包括社区引擎1964,其支持各种社区的创建和社区之间的协作。如本文所述,社区包括共享至少一个共同兴趣的一组用户。社区可以是封闭的,即仅限于许多用户或可以是开放的,即任意人都可以参与。社区使用户能够分享彼此的工作和评论,或者喜欢彼此的工作。该工作包括应用程序数据1940。社区引擎1964存储对应于社区的任意数据,诸如社区上共享的工作以及作为社区数据1966接收的用于工作的评论或喜欢。社区数据1966还包括通知数据并用于在与共享的工作或新工作相关的任意活动的情况下,通过社区引擎通知其他用户。社区引擎1964与同步引擎1932一起工作以向用户提供协作工作流程。例如用户可以创建图像并且可以请求一些专家意见或专家编辑。然后,专家用户可以根据用户的喜好来编辑图像,或者可以提供专家意见。使用社区引擎1964和同步引擎1932来能够实现专家对专家意见的编辑和提供。在协作工作流中,向多个用户分配与工作相关的不同任务。
[0116] 创新装置1908还包括用于向一个或多个用户提供市场的市场引擎1968。市场引擎1968使用户能够提供用于销售或使用的资产。市场引擎1968可以访问用户想要在市场上提供的资产1940。创意装置1908还包括搜索引擎1970,以使得能够搜索市场中的资产1940。搜索引擎1970也是一个或多个应用程序1928的一部分,以使用户能够执行对资产1940或任意其他类型的应用程序数据1930的搜索。搜索引擎1970可以使用元数据1942或文件来执行对资产的搜索。
[0117] 创意装置1908还包括文档引擎1972以用于向用户提供各种文档相关的工作流程,包括电子或数字签名工作流程。文档引擎1972可以将文档作为资产1940存储在数据存储单元1912中,或者可以维护单独的文档存储库(图19中未示出)。
[0118] 根据本发明的实施例,应用程序1928包括促进内容感知填充的自动合成的图像编辑应用。在这些实施例中,图像编辑应用被提供给用户设备1902A(例如作为应用程序1904N),使得图像编辑应用经由用户设备进行操作。在另一实施例中,提供用户界面(例如用户界面1903A)、补片有效性组件(例如补片有效性组件1905A)和/或基于补片的合成器(例如基于补片的合成器1907A)中的一个或多个,作为对诸如图像编辑应用的应用的附加或插件,如上面参考图1进一步描述的。这些配置仅仅是示例性的,并且在本公开内容中可以预期用于提供故事板软件功能的其他变体。
[0119] 应当理解,引擎和引擎的工作在本文中被描述为示例,并且发动机可以用于执行向用户提供数字体验的任意步骤。
[0120] 示例性操作环境
[0121] 已经描述了本发明的实施例的概述,下面描述其中可以实现本发明的实施例的示例性操作环境,以便提供本发明的各个方面的一般上下文。现在特别参考图20,用于实现本发明的实施例的示例性操作环境被示出并且通常被指定为计算设备2000。计算设备2000仅是合适的计算环境的一个示例,并且不旨在建议对本发明的使用范围或功能范围的任意限制。计算设备2000也不应被解释为与所示组件中的任意一个或组合有关的任意依赖性或要求。
[0122] 本发明可以在计算机代码或机器可用指令的一般上下文中描述,包括诸如程序模块的计算机可执行指令,其由计算机或诸如蜂窝电话、个人数据助理或其他手持设备的其他机器执行。通常,包括例程、程序、对象、组件、数据结构等的程序模块指代执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中实施,包括手持设备、消费电子产品、通用计算机、更多专业计算设备等。本发明还可以在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。
[0123] 参考图20,计算设备2000包括直接或间接耦合以下设备的总线2010:存储器2012、一个或多个处理器2014、一个或多个呈现组件2016、输入/输出(I/O)端口2018、输入/输出组件2020和示意性电源2022。总线2010表示可以是一个或多个总线的总线(诸如地址总线、数据总线或其组合)。尽管为了清楚起见,图20的各个方框用线条示出,但实际上,描绘各种组件并不是那么清楚,并且比喻地,线条将更准确地是灰色和模糊的。例如可以将诸如显示设备的呈现组件视为I/O组件。此外,处理器有存储器。发明人认识到这是本领域的本质,并且重申图20的图仅仅是可以结合本发明的一个或多个实施例使用的示例性计算设备的说明。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等类别之间没有区别,因为所有这些都被认为在图20的范围内并且参考“计算设备”。
[0124] 计算设备2000通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备2000访问的任意可用介质,并且包括易失性和非易失性介质、以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的存储的任意方法或技术实现的易失性和非易失性、可移除和不可移作介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息并且可由计算设备2000访问的任意其他介质。计算机存储介质本身不包括信号。通信介质通常在诸如载波或其他传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任意信息传递介质。术语“已调制数据信号”表示以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其他无线介质的无线介质。上述任意组合也应被包括在计算机可读介质的范围内。
[0125] 存储器2012包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备2000包括从诸如存储器2012或I/O组件2020的各种实体读取数据的一个或多个处理器。呈现组件2016向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。
[0126] I/O端口2018允许计算设备2000在逻辑上耦合到包括I/O组件2020的其他设备,其中一些可以内置。示例性组件包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、打印机、无线设备等。I/O组件2020可以提供处理空中手势、语音或由用户所生成的其他生理输入的自然用户界面(NUI)。在某些情况下,可以将输入发送到适当的网络元件以进行进一步处理。NUI可以实现与计算设备2000相关联语音识别、触控笔识别、面部识别、生物识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪以及与计算设备2000的显示器相关联的触摸识别(如下面更详细描述的)的任意组合。计算设备2000可配备有深度相机,诸如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术及这些的组合,以用于手势检测和识别。附加地,计算设备2000可以配备有能够实现运动的检测的加速度计或陀螺仪。可以将加速度计或陀螺仪的输出提供给计算设备2000的显示器以呈现沉浸式增强现实或虚拟现实。
[0127] 本文描述的实施例支持自动合成内容感知填充。本文描述的组件涉及自动填充合成系统的集成组件。集成组件指的是使用自动填充合成系统支持功能的硬件架构和软件框架。硬件架构指的是物理组件及其相互关系,并且软件框架指的是提供可以用设备上支持的硬件实现的功能的软件。
[0128] 端到端的基于软件的自动填充合成系统可以在自动填充合成系统组件内操作,以操作计算机硬件以提供自动填充合成系统功能。在低级别,硬件处理器执行从给定处理器的机器语言(也称为机器代码或本机)指令集合中选择的指令。处理器识别本机指令并执行与例如逻辑、控制和存储器操作有关的相应低级功能。用机器代码编写的低级软件可以为更高级别的软件提供更复杂的功能。如本文所使用的,计算机可执行指令包括任意软件,包括用机器代码编写的低级软件、诸如应用软件及其任意组合的更高级软件。在这方面,自动填充合成系统组件可以管理资源并为自动填充合成系统功能提供服务。本发明的实施例考虑了其任意其他变体和组合。
[0129] 已经标识出本公开中的各种组件,应当理解,可以采用任意数目的组件和布置来实现本公开范围内的期望功能。例如为了概念清楚起见,附图中描绘的实施例中的组件用线示出。也可以实现这些和其他组件的其他布置。例如尽管一些组件被描绘为单个组件,但是本文描述的许多元件可以实现为离散或分布式组件或者与其他组件一起实现,并且可以以任意合适的组合和位置实现。一些元素可以完全省略。此外,本文描述的由一个或多个实体执行的各种功能可以由硬件、固件和/或软件执行,如下所述。例如各种功能可以由执行存储在存储器中的指令的处理器执行。这样,除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如机器、接口、功能、顺序和功能分组等)。
[0130] 本文中具体描述了本发明的主题以满足法定要求。然而,描述本身并不旨在限制本专利的范围。相反,发明人已经想到所要求保护的主题还可以以结合其他现有或未来技术的其他方式体现,以包括与本文档中描述的步骤类似的不同步骤或步骤组合。此外,虽然本文可以使用术语“步骤”和/或“框”来表示所采用的方法的不同元素,但是这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任意特定顺序,除非和除了当单独步骤的顺序被明确地描述时。
[0131] 已经关于特定实施例描述了本发明,这些实施例在所有方面都旨在是示意性的而不是限制性的。在不脱离本发明的范围的情况下,替代实施例对于本发明所属领域的普通技术人员将变得显而易见。
[0132] 从前述内容可以看出,本发明很好地适用于实现上述所有目的和目标、以及系统和方法明显且固有的其他优点。应当理解,某些特征和子组合是有用的,并且可以在不参考其他特征和子组合的情况下被采用。这是由权利要求的范围所想到的,并且在权利要求的范围内。