CN116740242A - 用于多折射和反射界面的运动向量优化 - Google Patents

用于多折射和反射界面的运动向量优化 Download PDF

Info

Publication number
CN116740242A
CN116740242A CN202211333303.6A CN202211333303A CN116740242A CN 116740242 A CN116740242 A CN 116740242A CN 202211333303 A CN202211333303 A CN 202211333303A CN 116740242 A CN116740242 A CN 116740242A
Authority
CN
China
Prior art keywords
image frame
motion vector
image
pixel
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211333303.6A
Other languages
English (en)
Inventor
P·科兹洛夫斯基
M·艾森施泰因
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN116740242A publication Critical patent/CN116740242A/zh
Pending legal-status Critical Current

Links

Classifications

    • G06T5/70
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • G06T5/60
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/277Analysis of motion involving stochastic approaches, e.g. using Kalman filters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering

Abstract

公开了用于多折射和反射界面的运动向量优化。系统和方法涉及确定准确的运动向量,用于渲染例如图像对象表面至少部分半透明的噪声蒙特卡洛积分的情况。为了优化对“真实世界”位置的搜索,本发明将背景定义为通过多层折射界面可见的第一路径顶点。为了找到匹配的世界位置,背景被视为以混乱方式变形的单层,允许优化算法只执行一次。进一步提高了性能优于在前的线性梯度下降,本技术可以应用跨越函数和数值优化,例如牛顿二次目标或其他收敛函数,以经由向量角最小化来定位像素。然后,确定的运动向量可以用作包括图像去噪的服务的输入。

Description

用于多折射和反射界面的运动向量优化
背景技术
图像和视频内容越来越多地以更高分辨率和在更高质量的显示器上生成和显示。渲染更高质量内容的方法通常是资源密集型的,特别是对于现代帧速率,这对于资源容量有限的设备来说可能是个问题。特别是,实时光线追踪越来越成为本领域的一个重点领域。随着对基于物理的渲染的推动,着色的随机采样(例如,使用路径跟踪)在实时渲染中变得很重要。
随着路径追踪在交互式帧速率下变得越来越普遍和可行,被设计用于处理光线追踪效果的当前降噪器的一些缺点开始浮出水面。路径追踪时,如果使用的每个像素的光线数量不足,或者路径追踪到主题场景的距离不够远,则会导致图像参差不齐,因为许多像素无法从其光线中找到任何光源。随着每像素样本的增加,图像质量变得越来越好。因此,路径追踪需要强大的计算能力。
时空降噪器最常用于对来自偶估地(随机地)渲染效果(如光线追踪阴影、反射、AO等)的信号进行降噪。实现令人满意的渲染质量的要求之一是良好的运动向量。并且路径跟踪支持长镜面反射链,具有许多接口,对于图形/游戏引擎没有很好的解决方案来生成反射和折射运动向量,特别是在涉及多个接口和/或半透明对象的情况下。
附图说明
根据本公开的各个实施例将参照附图进行描述,在附图中:
图1A-1D示出了根据各种实施例的用于生成折射运动向量的示例性设置;
图2A示出了在各种实施例中使用的图像的示例像素布局;
图2B示出了根据各种实施例的用于生成或提供图像内容的代表性系统的组件;
图3示出了根据各种实施例的用于生成折射运动向量的代表性处理流程;
图4示出了根据至少一个实施例的用于处理图像内容的设备的组件;
图5示出了如在各种实施例中使用的计算机系统;
图6示出了在各种实施例中使用的图形处理器的至少部分;以及
图7示出了在各种实施例中使用的图形处理器的至少部分。
具体实施方式
根据各种说明性实施例的方法为涉及半透明对象的图像提供准确运动向量的确定。应用程序设置包括路径追踪图像去噪和/或时间抗锯齿(“TAA”),其中需要搜索和优化来自过去图像帧和当前帧的世界位置和其他数据,以消除当前帧中的噪声或锯齿状对象边缘。各种应用程序可以利用图像文件,例如在渲染、编码和/或传输(仅作为示例实施例)图片、视频帧等时使用的图像文件。为避免疑问,虽然术语“图像”和“帧”频繁在本文使用,诸如为了方便起见,但这些术语(和相关术语)是非限制性的并且实际上包括任何种类的静止或运动图像。在每个这样的图像中,可能存在表示的各种对象,例如可以包括可以是静态或动态的前景和背景对象。任何这些对象的位置、大小和方向都可能发生变化。
更具体地,各种实施例可以被配置为确定准确的运动向量,用于渲染诸如噪声(noisy)蒙特卡罗积分的情况,其中图像对象表面是半透明的,从而导致出现复杂的光反射和折射。为了优化图像渲染的路径追踪、光线追踪或其他形式的光传输模拟技术,本系统和方法将背景定义为通过多层折射界面可见的第一路径顶点。为了找到匹配的世界位置,背景被视为在相机运动期间以混乱方式变形的单层。这样,在一些实施例中可以最小化作为成本函数的角度的优化路径追踪算法仅被执行一次,而不是每个折射界面执行一次。进一步提高了性能优于在前的(prior)线性梯度下降,本系统和方法可以应用跨越函数和数值优化,例如牛顿二次目标或其他收敛函数,来定位渲染所需的像素。特别是,二次收敛不是查看世界位置并试图在先前(previous)帧中找到最接近当前帧中感兴趣像素的像素,而是检查从前景到世界位置的向量的角度并最小化瞄准的那个角度。然后,确定的运动向量可以用作包括图像去噪的服务的输入。
路径追踪是渲染三维(3-D)场景的图像的计算机图形蒙特卡罗方法(对相机视图中的每个像素的光束的重复随机采样),使得复杂的全局照明看起来很逼真。越来越多的现代渲染技术正朝着蒙特卡洛方向发展。这些技术不是评估已知的已知光点源,而是解决场景中的一般光传输。对于简单的光线追踪,每个像素发出一条光线;但在路径追踪中,不是发出一条光线,而是为每个要渲染的像素发出数十、数百甚至数千条光线。当使用路径追踪进行渲染时,光线每次反弹只产生一条光线;每次反弹时,光线不遵循设定的线,而是沿随机方向射出。
根据一个或更多个实施例,在执行路径追踪技术期间,当在被追踪的路径和场景中描绘的表面之间检测到碰撞或相交时,路径不会被追踪到每个光源;相反,该技术将光线从表面反弹并继续反弹,直到光源被击中或反弹限制耗尽。镜面或折射界面是空气与诸如玻璃的表面之间的界面。在场景中与对象的每个折射交叉点或“界面”处,都会生成指向随机方向的新光束。经过一定次数的反弹后,每束光束最终都会离开场景或被吸收。然后计算一直传输到目标像素的光量,包括沿途从表面收集的任何颜色信息。当光束在给定场景周围完成反弹时,将基于光束反弹的对象计算样本值。样本值被添加到感兴趣的源像素的平均值。
然后,路径追踪算法对所有光线进行随机采样以创建最终图像,整合到达对象表面上的单个点的所有照度。主题图像帧中每个像素的颜色是为该像素计算的所有样本的平均值。具体来说,一种或更多种路径追踪算法可以对从追踪到帧中的所有路径计算的值进行平均,以获得最终的像素颜色值,从而对各种不同类型的照明进行采样。
如本领域技术人员所知,可以将渲染图像编码为ReferentiemodelGemeentelijke Basisgegevens Zaken(“RGBZ”)光线树。这样的努力可以导致生成具有三个节点的RGBZ光线树:漫反射、反射和折射,并将它们各自的颜色与相对于父节点的深度一起存储。漫反射节点深度是传统的线性深度缓冲区,另外两个包含从主表面到反射或折射点的距离。对于每个光线树节点(漫反射、反射和折射),可以从深度及其屏幕导数重建世界位置和法线。
然而,路径追踪中的随机采样会引起噪声出现在渲染图像中。可以通过生成更多样本的算法来去除噪声,即由单个光束产生的颜色值。换句话说,问题在于蒙特卡洛积分是有噪声的,因为它是一个采样过程,并且样本包含噪声(即随机的、不需要的亮度或颜色变化)。这种采样需要以某种方式去噪。随着多个帧的累积,问题变得更加复杂,噪声样本大幅增加。
一种可用的去噪方法是时间积分或时间累积。时间累积需要使用一个或更多个先前帧的输入来确定当前帧中是否存在任何需要校正的伪影。但是,要做到这一点,当相机或对象在给定场景中移动时,需要找到它在先前帧中存在的像素。这是运动向量辅助的地方,为先前帧中的像素提供屏幕空间中的方向,从而允许继续进行集成。时间累积需要与帧的每个颜色样本相关联的二维(2-D)运动向量。反过来,TAA将来自过去帧和当前帧的信息组合在一起,每个像素每帧采样一次;但是,在每一帧中,样本位于像素内的不同位置。在过去帧中采样的像素与在当前帧中采样的像素混合以产生抗锯齿图像。
当呈现不透明的表面时,获得用于渲染、时间累积和TAA所需的运动向量是简单的。然而,当对象或表面在图像中是透明的(例如经常遇到的玻璃)对象时,包括反射和折射在内的各个方面会变得非常复杂,甚至需要进行更多的修改。现有方法仅处理一个界面或窗口和/或一个透明层,并且如果遇到更多界面,则必须经常执行重新计算。
在至少一个实施例中,为其生成运动向量的环境可以包括场景中的一个或更多个对象102的表示,例如在图1A至图1D中所示的代表性设置中所示。图1A的初始图像帧100可以对应于视频序列的帧。在图1A的环境100中,有至少一个光源(未示出);在其他示例中,类似或不同类型的光源可能会更少或更多。在该场景100中存在多个其他对象,包括感兴趣对象102。此外,可以存在该图像中表示的对象的反射。为了清楚起见,图1B示出了图1A所示的设置100的一部分,但作为俯视透视图,大致正交。感兴趣的视图向量104指向图1A中感兴趣的对象102的方向。
对应于由在帧之间移动的相机捕获的对象102的特征的像素位置在这些帧中的每一个中可能不同。在下一个或随后的图像帧中,至少一些对象可能出现在不同的位置、姿势、视图或方向,导致这些对象的特征在序列中的不同帧中在不同的像素位置表示。例如,位置的这种明显变化可能是由于相机或其他有利位置的移动;然后,相机运动可以对应于单独图像中感兴趣对象102的不同像素位置。在至少一个实施例中,并且如图1C所示,渲染引擎或其他此类源可通过追踪像素108提供关于像素位置差异的信息,如可对应于帧之间一个或更多个对象的运动。
运动可以用于表示或追踪两个帧中的特定特征的像素位置的这些变化,这有效地提供了当前图像(例如图1D)中的特征的像素位置到先前(previous)帧(例如图1A-1C)中那些特征的在前(prior)像素位置的映射。在至少一个实施例中,这允许执行来自对应像素位置的颜色值的混合,因为仅基于像素位置的混合会产生错误的颜色值,因为移动的相机在两个帧中不会处于相同位置,使得此过程将导致混合两个不同对象的颜色值。
图1D示出了感兴趣对象102的某些特征由于相机移动而相对于图1A的初始设置100中的该对象的位置看起来是如何移动的。例如,相机或光源的一个或更多个可能已经移动;这不仅会影响这些对象的特征的位置,还会影响相应阴影的位置,以及运动向量的最终确定。然后,描绘的是主表面点的重投影110,其被确定为当前基于优化的匹配图像背景位置搜索112的一部分。
为了传递这些帧的真实表示,可能需要混合图1A中的感兴趣对象102的至少一些“历史”像素数据、图1C的追踪的背景像素108以及图1D中的当前/更新帧的像素数据。为此,混合过程可以尝试关联这些特征的位置,至少在它们在两个帧中都表示的范围内,以及确定混合或其他此类方面的权重。尝试关联此信息的一种方法是确定这两个图像之间的像素运动。
在至少一个实施例中,可以使用一个或更多个运动向量来捕获序列中帧之间或跨帧的几何体(例如,对象或形状)的每像素屏幕空间运动。运动向量可以是提供从当前图像中的坐标到在前图像中的坐标的偏移或映射的二(或更多)维向量。可以为当前帧中的单独像素位置提供运动向量,例如图1D,其中相应的特征或几何形状也在先前的帧中表示。对于在帧之间不移动的背景对象,无论是由于对象运动还是相机运动或缺乏运动,那么可能存在长度为0的运动向量,或者坐标为(mx,my,mz)=(0,0,0)用于三维运动向量,表示相同的特征位于这些帧的每一中的相同像素位置。为了减少诸如闪烁或噪声之类的伪影,可以混合来自先前帧和当前帧的该像素位置的颜色值,以减少变化。在至少一个实施例中,该混合可以基于各种因素加权或使用多个不同函数来确定。
图2A示出了图像202的示例像素布局200,其中像素布局200由将图像202分成单独的像素208的垂直线204和水平线206呈现。应当理解的是,图2A的实施例仅用于说明目的,包括图1C中所示的追踪背景像素的表示,并且图像可以包括更多像素。此外,还提供线204和206作为说明性标记以显示相邻像素208之间的分离。在操作中,每个像素208将具有对应于变化的亮度或强度的值。
图2B示出了用于生成或提供本文描述的优化的基于运动向量的图像内容的示例系统250的某些组件,包括在图2A像素基础上呈现的那些。在至少一个实施例中,客户端设备252可以使用客户端设备252上的内容应用程序254(例如游戏或流媒体应用程序、模拟应用程序或内容创建应用程序)和本地存储的数据,为诸如游戏会话或视频观看会话的会话生成该内容。在内容服务器256上执行的内容应用程序255的相关版本可以启动与客户端设备252相关联的会话,如可以利用会话管理器和存储在用户数据库258中的用户数据。如果这种类型的内容或平台需要,内容应用程序254可以使内容260由内容管理器262确定并使用渲染引擎264渲染,并使用适当的传输管理器266传输到客户端设备252以通过下载、流传输或另一个这样的传输通道发送。接收客户端设备252可以将此内容提供给相应的内容应用程序254,该内容应用程序254还可以或可替代地包括用于渲染该内容中的至少一些以通过客户端设备252呈现的渲染引擎268,例如通过显示器270呈现的视频内容,以及通过至少一个音频播放设备272(例如扬声器、耳机或耳塞)的音频,例如声音和音乐。
所提供的内容中的至少一些可能已经被存储在客户端设备252上、呈现在客户端设备252上或可供客户端设备252访问,使得对于内容的至少该部分不需要通过网络274进行传输,例如在该内容可能之前已下载或本地存储在硬盘驱动器、光盘或固态驱动器上。可以使用诸如数据流的传输机制来将该内容从服务器256或内容数据库260传送到客户端设备252。在至少一个实施例中,可以从另一个源获得或流传输该内容的至少一部分,例如第三方内容服务276,其也可以包括内容应用程序278,用于(协作地)生成、创建、修改、模拟或提供内容,例如2-D和/或3-D合成资产、场景和环境。该功能的部分可以使用多个计算设备或一个或更多个计算设备内的多个处理器来执行,例如可以包括中央处理单元(“CPU”)、图形处理单元(“GPU”)和/或数据处理单元(“DPU”)的组合。
在一些说明性实施例中,内容应用程序255包括内容管理器262,该内容管理器262可以在内容被传输到客户端设备252之前确定或分析该内容。内容管理器262还可以包括其他组件或与其一起工作,这些组件能够生成、修改或增强要提供的内容;这可以包括用于渲染内容的渲染引擎280,例如以第一分辨率的别名内容。上采样或缩放图像处理组件282可以以更高或更低的不同分辨率生成该图像内容的至少一个附加版本,并且可以执行至少一些处理,例如抗锯齿。如本文所讨论的,可以包括至少一个神经网络的混合组件284,可以对于在前图像执行一幅或更多幅图像的混合。内容管理器262然后可以选择适当分辨率的图像或视频帧以发送到客户端设备252。客户端设备252上的内容应用程序254还可以包括诸如渲染引擎286、上采样和/或其他处理模块288和混合模块290的组件,使得该功能的任何或全部可以附加地或替代地在客户端设备252上执行。第三方内容服务系统276上的内容应用程序278也可以包括这种功能。
在至少一个实施例中,用于内容生成的系统250可以在一个或更多个位置包括硬件和软件的任何适当组合。执行该功能中的至少一些的位置可以是可配置的,或者可以取决于诸如客户端设备252的类型或具有适当带宽的网络274连接的可用性的因素,以及其他此类因素。生成的一种或更多种分辨率的图像或视频内容也可以提供给其他客户端设备292或使其可用于其他客户端设备292,例如用于从存储该图像或视频内容的副本的媒体源下载或流式传输。在至少一个实施例中,这可以包括为多人游戏传输游戏内容的图像,其中不同的客户端设备可以以不同的分辨率显示该内容,包括一个或更多个超分辨率。
为了生成镜面运动向量(反射或折射),使用四个缓冲区:主表面世界位置(P)、次表面世界位置(S,是反射的世界位置或半透明物体后面的某物)、运动向量(MV),以及来自先前帧(Sprev)的次表面世界位置。假设像素坐标[x,y],可以定义向量ωref
ωref=S[x,y]-P[x,y]
对于任意世界位置s,可以定义函数Δ:
因此,值得找到以下内容:
s*(ωref)=arg minΔ(ωref,s)
s∈Sprev
即,来自Sprev缓冲区的世界位置s*(及其各自的像素坐标)。这种优化形成了一些说明性实施例的中心部分。该过程可以从候选sc开始:
sc=Sprev[[x,y]+MV[x,y]]–P[x,y]
并通过利用函数Δ在Sprev缓冲区上的图像空间导数和任何可行的数值优化方法继续。
对于更深的路径,在每个镜面反射界面上执行该方法在大多数用例中会非常昂贵。事实上,应用现有技术,只最简单的场景就足够了,在单个界面上一次,因为正确结果(多次扭曲)和仅扭曲一次的结果之间的差异是可观察到的。否则,并且在资源使用方面成本高昂,算法必须每个折射界面执行一次。因此,对于每个镜面反射界面仅应用一次本算法,如本文在某些实施例中优化的,存在相当大的益处。通过本系统和方法,在某种意义上,可以“忽略”图像帧设置涉及多层折射的事实——相反,所有层都被视为单一层,它以混乱或复杂的方式变形背景,特别是当图像中涉及一个或更多个半透明对象时。
在一些实施例中,本系统和方法主要关注在击中更漫射的物体(例如,粗糙度>0)之前经历多个德尔塔(delta)透射事件(例如,粗糙度=0)的镜面反射链。通过多层折射界面可见的第一个光束路径顶点被定义为背景。
如所指出的,在至少一些说明性实施例中,从渲染引擎或应用程序接收的运动向量数据可用于确定几何图形在两个或更多帧上沿给定方向移动的区域。在至少一个实施例中,术语也可以用于附加的在前帧,但是减少从先前帧呈现的伪影可以减少由于也使用这种方法处理的所有先前帧而导致的伪影的存在,这样对于所需的进一步处理量和存储器以及引入的任何延迟可能几乎没有额外的优势。该新输入可以通过比较当前帧的运动向量场之间的差异来确定。
在各种说明性实施例中,运动向量差可以通过表示对应于在前帧中的对象的像素位置的区域的差异区域来可视化,其中最有可能发生重影伪影。基于这种运动向量差的输入特征可以替代生成神经网络的另一个现有输入特征,例如颜色方差掩模。运动向量差可以与一个或多个其他特征结合使用,以形成作为基于运动向量差的特征的函数而计算的单个输入特征。在至少一个实施例中,这可以涉及使用运动向量差缓冲区与颜色方差掩模缓冲区的逐像素加权和,或线性组合。
可以使用其他向量或数据,例如上采样到其他分辨率(包括输出分辨率)的较低分辨率的反向运动向量。在至少一个实施例中,运动向量可以被变换,例如通过利用适当的膨胀过程将背景运动向量替换为接近几何边界的前景运动向量。在至少一个实施例中,这个新的输入特征可以通过不仅考虑当前和前一帧运动向量而且考虑前一帧特征本身来递归地形成。
同样,本文中的优化方法可以识别匹配的世界位置并生成合适的运动向量,即使在图像帧中有介入的半透明对象。在这样做时,各种说明性实施例应用任何可用的数值优化方法,包括具有Armijo条件的回溯线搜索的牛顿二次方法,这进一步提高了简单梯度下降的性能。使用牛顿法,收敛是二次的,而梯度下降只提供线性收敛。在一些实施例中,附加地或替代地,这是通过以下方式最小化:
s*(ω)=arg minΔ2ref,s)
s∈Sprev
这是角度的平方,而不是直接的角度。原因是角度函数在角度接近0时不平滑(其导数在此处具有奇异性),因此假设函数具有一定平滑性的迭代方法将无法很好地收敛。角度的二次函数是平滑的,为收敛创造了有利条件。
在本系统和方法的一些实施例中,可以采用不同的成本函数,例如Δ’,而不是如本文所讨论的最小化角度:
Δ’(ωref,s)=length(normalize(ωref)–normalize(s-P[x,y]))。
直观地说,这考虑了单位球面上点之间的平方欧几里得距离,而不是弧长。另一种选择是二次表面世界位置距离的平方,尽管这样做可能证明不如使用该角度的方法稳健。此外,数值迭代就足够了,包括梯度下降,但在性能上可能比这里的角度方法慢。
如果现有渲染引擎不生成完整的运动向量(例如当动画系统可能太复杂时),即使没有任何光线追踪或其他光传输模拟技术,本技术也可以有其他用途。当前公开的系统和方法可以在相机前面创建虚拟平面并为帧中的所有对象生成运动向量,即使是例如半透明对象可能会干扰感兴趣的对象,从而导致变形或以其他方式扭曲的视图。
本文中的方法可以应用于静态和动态图像,包括静态背景,并且在一些实施例中,可以处理背景中的动态事件,尽管无限背景(例如,天空)可能导致人们也包括其他技术(例如历史钳位)。在处理包括视频在内的动态图像时,也可以应用诸如使用额外的和/或更长的运动向量的技术。
同样,与初级折射界面相比,相机移动将可能会导致图像从帧到帧的变化,至少以背景运动的形式。例如,相机向左移动会使感兴趣的对象看起来向右移动。在这样的图像或视频序列中,视图、位置、大小和方向的这些变化可以被视为用于表示对象的单个像素的一组运动。如果仅考虑当前帧中这些特征的位置信息,则不同帧中像素位置之间的这种特征运动可能会显得有些锯齿状、噪声或不稳定。为了平滑明显的运动或动画,来自一个或更多个在前帧的像素数据可以与当前帧的像素数据混合。然而,为了混合这些像素值,有必要将表示这些不同图像中相似对象特征的像素关联起来。在至少一些实施例中,当这些对象在这些帧之间移动时准确地照亮或遮蔽这些对象也是合适的。
本系统和方法本质上是迭代的,但是具有改进的迭代,在一些实施例中使用不同的、二次目标或收敛函数来定位感兴趣像素,因为已知先前的梯度下降收敛缓慢,因为需要更多的迭代才能收敛。如图3所示,可以利用用于基于匹配世界位置的基于优化的搜索来生成准确运动向量的过程300。过程300的应用中的重要任务是对路径追踪的图像进行去噪。该优化过程300可以在去噪之前运行并用于生成一个或更多个输入以进行去噪工作。有益地,这里的优化算法被执行一次,而不是每个折射界面一次。
在至少一个实施例中,接收302当前或第一图像(包括序列中的一个)的数据,例如从渲染引擎或应用程序接收的图像数据。该图像数据可以包括诸如运动向量数据、每像素颜色数据和深度数据之类的数据,以及其他此类选项。可以确定应用本技术需要来自先前帧的哪些数据。可以从该序列中的先前帧中获取颜色或其他数据——例如,从历史缓冲区中获取。
至少部分地基于接收到的图像数据,至少一个共同表面点可以位于304当前图像帧和先前图像帧中。在一些实施例中,下一步需要至少部分地基于共同表面点和针对通过第一图像帧中的一层或更多层半透明对象折射界面可见的至少一个光束路径的顶点,来确定306背景。
在一个或更多个实施例中,背景中一个或更多个像素的世界位置被存储在一个或更多个引导缓冲区中。因此可以确定308该背景中的感兴趣像素。当渲染新帧时,系统和方法从先前帧中选择的、跟踪的背景像素向外移动。在新帧中,然后可以计算出像素的位置与先前帧略有(或更多)不同。
本系统和方法不是查看世界位置并尝试在先前帧中找到最接近当前帧中感兴趣像素的像素,而是检查从前景到世界位置的向量的角度并将其最小化。这样做是有效的,因为在背景中,覆盖范围可能存在相当大的差距。并且,如果系统开始“行走”到感兴趣的对象位置,但背景中有一个大洞,则系统会突然以更远的位置结束,即使从查看图像的角度来看,它更接近。鉴于此,本系统和方法优化了路径追踪。
为此,进一步的步骤是至少部分地基于跨越函数和优化函数生成310表示感兴趣像素的第一图像帧和先前图像帧之间的偏移的至少一个运动向量。缓冲区可以使用运动向量来对应于当前帧中的相关像素位置,例如可以基于新的相机或对象位置。
在一些实施例中,在该生成步骤中使用的用于匹配世界位置的基于优化的搜索最小化作为成本函数的角度^2。一些实施例确实应用了梯度下降,尽管与使用二次函数相比性能更慢,并且甚至可以分析帧中的每个像素。此外,无论遇到的界面数量如何,它们都被视为单个界面,占第一层,然后是光线路径方向的变化。
本系统和方法可以与任何图形渲染方案一起工作,包括除了路径追踪之外的光线追踪类型,包括专门用于透明度和/或与感兴趣像素的所有增量交互的光线追踪。并且,如本文所述,潜在的应用和项目不必针对去噪——本系统和方法也可以应用于诸如TAA之类的目的。
至少运动向量差数据和其他图像数据可以作为输入提供给神经网络或基于深度学习的生成器。然后可以从该神经网络接收每像素的权重,其中神经网络使用运动向量差数据推断这些加权;这可以包括为被确定为与具有图像伪影的概率的运动向量差区域对应的像素位置在当前和先前颜色值之间生成调整后的权重。可以部分地通过使用这些每像素权重混合单独像素的当前和先前颜色值来生成输出图像。可以提供输出图像以作为图像或视频序列的一部分呈现。该输出图像的颜色数据和这些当前运动向量也可以存储在各自的缓冲区中,从而可以使用该数据来确定序列中下一个图像的每像素权重。
与该过程300相比,如果没有本优化方法,可以执行访问相邻像素的随机游走,其中,如果一个相邻像素最接近先前的框架位置,则游走将在该方向上进行。只要有可能在先前帧中找到当前世界位置,随机游走就会沿着那个方向继续。运动向量可以在世界空间中处理,而不是屏幕空间或投影,但数学要复杂得多,麻烦得多。以这种方式执行完全随机游走会非常昂贵,因此本优化系统和方法(包括牛顿二次应用)运行效率更高(即更快并且使用更少的计算资源)。
在至少一个实施例中,运动向量差信息可以用作一种模态或输入,如本文所讨论的。通过存储跨帧持久的新数据或附加数据,可以将附加缓冲区(例如运动缓冲区)用作另一个输入源。来自运动向量缓冲区的当前运动向量可以以一种或更多种形式存储,例如可以对应于变换过程,以用于后续帧。
本文中的部分功能可以使用多个计算设备或一个或更多个计算设备内的多个处理器来执行,例如可以包括CPU、GPU和/或DPU的组合。一些实施例使用NVIDIA Pascal光线追踪和/或基于图灵的GeForce架构。在至少一个实施例中,渲染器可以是渲染管线的一部分,例如可以利用渲染软件,例如来自Epic Games公司的Unreal Engine 4,它可以提供诸如延迟着色、全局照明、光照半透明、后期处理以及使用向量场的GPU粒子模拟等功能。完整、高分辨率图像的这种复杂渲染所需的大量处理可能会导致难以渲染这些视频帧以满足当前帧速率,例如每秒至少60帧(“fps”)。渲染器可替代地用于以低于一个或更多个最终输出分辨率的分辨率生成渲染图像,例如以满足时序要求和减少处理资源要求。该低分辨率渲染图像可以使用升频器进行处理,以生成以等于(或至少更接近)目标输出分辨率的分辨率表示低分辨率渲染图像的内容的放大图像。
客户端设备可以使用客户端设备上的内容应用程序的组件和本地存储在该客户端设备上的数据来生成用于诸如游戏会话或视频观看会话的会话内容。在内容服务器上执行的内容应用程序(例如,游戏或流媒体应用程序)可以发起与至少一个客户端设备相关联的会话,如可以利用会话管理器和存储在用户数据库中的用户数据,并且它可以引起内容由内容管理器确定并使用呈现引擎渲染,并使用适当的传输管理器传输到客户端设备以通过下载、流式传输或其他传输通道发送。接收该内容的客户端设备可以将该内容提供给相应的内容应用程序,该内容应用程序还可以或可替代地包括用于渲染该内容中的至少一些以通过客户端设备呈现的渲染引擎,例如通过显示器的视频内容和音频。该内容中的至少一些可已经被存储在客户端设备上、呈现在客户端设备上或可供客户端设备访问,使得至少该部分内容不需要通过网络进行传输。
在一些实施例中,本文的方法可以有利地用于其中神经网络要提高图像相关精度的任何应用程序,例如用于帧插值和/或去噪。这可以减少伪影的存在并利用多个输入,包括但不限于当前帧的输入图像亮度,其可以是每个像素值的缓冲区的形式,以及来自先前帧的扭曲的输出图像亮度。神经网络还可以接受所提议的基于差异的输入特征作为输入,例如运动向量、材料标识符或深度的差异,这些特征可以是每个像素值的缓冲区的形式。如神经网络和人工智能领域中已知的,服务运营商可以应用多种神经网络类型,包括但不限于前馈、循环、径向基函数、模块化和自组织神经网络网络。
在至少一个实施例中,可以将图像作为输入提供给神经网络以确定一个或更多个混合因子或混合权重,并且可以使用深度学习来重建图像以进行实时渲染。神经网络还可以确定在重建或混合当前图像与在前图像时要应用的至少一些滤波。可以通过客户端设备显示器或其他此类呈现机制提供输出以进行呈现,并且还可以将输出图像的副本存储到历史缓冲区或其他此类存储位置,以与随后生成的图像混合。用张量核可以加快重建速度。
可能希望进一步减少在这样的过程中使用的处理、存储器和其他资源。在至少一个实施例中,可以首先对提供给神经网络的图像和输入进行下采样,以便以较低分辨率操作神经网络。神经网络可以以全分辨率或降低的分辨率进行训练,但在推理时,可以以降低的分辨率执行。在应用混合和滤波之前,可以对神经网络的输出进行上采样。
图4是示出根据至少一个实施例的示例性计算机系统400的框图,该示例性计算机系统可以是具有互连的设备和组件的系统,片上系统(SOC)或它们的某种形成有处理器的组合,该处理器可以包括执行单元以执行指令。根据本公开,例如本文所述的实施例,计算机系统400可以包括但不限于组件,例如处理器402,其执行单元包括逻辑以执行用于过程数据的算法。计算机系统400可以包括处理器,例如在可从加利福尼亚圣塔克拉拉的英特尔公司(Intel Corporation of Santa Clara,California)获得的处理器家族、或XeonTM、/>XScaleTM和/或StrongARMTM,/>CoreTM或/>NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。计算机系统400可以执行可从华盛顿州雷蒙德市的微软公司(Microsoft Corporation ofRedmond,Wash.)获得的/>操作系统版本,尽管其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议(Internet Protocol)设备、数码相机、个人数字助理(“PDA”)和手持PC。嵌入式应用程序可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机(“NetPC”)、边缘计算设备、机顶盒、网络集线器、广域网(“WAN”)交换机,或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。
计算机系统400可包括但不限于处理器402,该处理器402可包括但不限于一个或更多个执行单元408,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统400是单处理器台式机或服务器系统,但是在另一实施例中,计算机系统400可以是多处理器系统。在至少一个实施例中,处理器402可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。处理器402可以耦合到处理器总线410,该处理器总线410可以在处理器402与计算机系统400中的其他组件之间传输数据信号。
处理器402可以包括但不限于1级(“L1”)内部高速缓存存储器(“cache”)404,并且处理器402可以具有单个内部高速缓存或多级内部缓存。高速缓存存储器可以驻留在处理器402的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。寄存器文件406可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
包括但不限于执行整数和浮点运算的逻辑执行单元408,其也位于处理器402中。处理器402还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令的微代码。执行单元408可以包括用于处理封装指令集409的逻辑。通过将封装指令集409包括在通用处理器的指令集中,以及要执行指令的相关电路,可以使用处理器402中的封装数据来执行许多多媒体应用程序使用的操作。可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。
执行单元408也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。计算机系统400可以包括但不限于存储器420,存储器420实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。存储器420可以存储由处理器402可以执行的由数据信号表示的指令419和/或数据421。
系统逻辑芯片可以耦合到处理器总线410和存储器420。系统逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)416,并且处理器402可以经由处理器总线410与MCH416通信。MCH 416可以提供到存储器420的高带宽存储器路径418以用于指令和数据存储以及用于图形命令、数据和纹理的存储。MCH 416可以在处理器402、存储器420和计算机系统400中的其他组件之间启动数据信号,并且在处理器总线410、存储器420和系统I/O 422之间桥接数据信号。系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。MCH 416可以通过高带宽存储器路径418耦合到存储器420,并且图形/视频卡412可以通过加速图形端口(Accelerated Graphics Port)(“AGP”)互连414耦合到MCH 416。
计算机系统400可以使用系统I/O 422,所述系统I/O 422是专有集线器接口总线来将MCH 416耦合到I/O控制器集线器(“ICH”)430。ICH 430可以通过本地I/O总线提供与某些I/O设备的直接连接。本地I/O总线可以包括但不限于用于将外围设备连接到存储器420、芯片组和处理器402的高速I/O总线。示例可以包括但不限于音频控制器429、固件集线器(“Flash BIOS”)428、无线收发器426、数据存储424、包含用户输入和键盘接口的传统I/O控制器423、串行扩展端口427(例如通用串行总线(USB)端口)和网络控制器434。数据存储424可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
图5是示出根据至少一个实施例的用于利用处理器510的电子设备500的框图。在至少一个实施例中,电子设备500可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。系统500可以包括但不限于通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备的处理器510。处理器510使用总线或接口能耦合,诸如1℃总线、系统管理总线(“SMBus”)、低引脚数(“LPC”)总线、串行外围接口(“SPI”)、高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。
在至少一个实施例中,图5示出了一个系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图5可以示出示例性片上系统(“SoC”)。图5中所示的设备和组件可以与专有互连、标准化互连(例如,PCIe)或它们的某种组合互连。在至少一个实施例中,图5中的一个或更多个组件使用计算快速链接(“CXL”)互连而进行互连。
图5可以包括显示器524、触摸屏525、触摸板530、近场通信单元(“NFC”)545、传感器集线器540、热传感器546、快速芯片组(“EC”)535、可信平台模块(“TPM”)538、BIOS/固件/闪存(“BIOS,FWFlash”)522、DSP 560、驱动器520(例如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)550、蓝牙单元552、无线广域网单元(“WWAN”)556、全球定位系统(“GPS”)555、相机(“USB相机”)554(例如USB3.0相机)和/或以例如LPDDR3标准实现的低功耗双倍数据速率(“LPDDR”)存储器单元(“LPDDR3”)515。这些组件可以各自以任何合适的方式实现。
其他组件可以通过本文所述的组件通信地耦合到处理器510。加速度计541、环境光传感器(“ALS”)542、罗盘543和陀螺仪544可以可通信地耦合到传感器集线器540。热传感器539、风扇537、键盘536和触摸板530可以通信地耦合到EC 535。扬声器563、耳机564和麦克风(“mic”)565可以通信地耦合到音频单元(“音频编解码器和D类放大器”)562,其又可以通信地耦合到DSP 560。音频单元564可以包括例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。SIM卡(“SIM”)557可以通信地耦合到WWAN单元556。组件(诸如WLAN单元550和蓝牙单元552以及WWAN单元556)可以被实现为下一代形式因素(NGFF)。
图6是根据至少一个实施例的处理系统的框图。系统600包括一个或更多个处理器602和一个或更多个图形处理器608,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量共同或单独管理的处理器602或处理器核心607的服务器系统或数据中心。系统600是结合在片上系统(“SoC”)集成电路内的处理平台,以在移动、手持或嵌入式设备使用。
系统600可以包括或结合在基于服务器的游戏平台、云计算主机平台、虚拟化计算平台中,包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,系统600是移动电话、智能电话、平板计算设备或移动互联网设备。处理系统600还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备、边缘设备、物联网(“IoT”)设备或虚拟现实设备。处理系统600可以是电视或机顶盒设备,其具有一个或更多个处理器602以及由一个或更多个图形处理器608生成的图形界面。
一个或更多个处理器602每个包括一个或更多个处理器核心607,以处理指令,该指令在被执行时执行针对系统和用户软件的操作。一个或更多个处理器核心607中的每一个被配置为处理特定指令组609。指令组609可以促进复杂指令集计算(“CISC”)、精简指令集计算(“RISC”),或通过超长指令字(“VLIW”)进行计算。处理器核心607可以各自处理不同的指令组609,该指令组可以包括有助于仿真其他指令组的指令。处理器核心607还可以包括其他处理设备,例如数字信号处理器(“DSP”)。
处理器602可以包括高速缓存存储器604,并且处理器602可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器在处理器602的各个组件之间共享。处理器602还使用外部高速缓存(例如,三级(“L3”)高速缓存或最后一级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在处理器核心607之间共享该外部高速缓存。处理器602中另外包括寄存器文件606,处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。寄存器文件606可以包括通用寄存器或其他寄存器。
一个或更多个处理器602与一个或更多个接口总线610耦合,以在处理器602与系统600中的其他组件之间传输通信信号,例如地址、数据或控制信号。接口总线610在一个实施例中可以是处理器总线,例如直接媒体接口(DMI)总线的版本。接口总线610不限于DMI总线,并且可以包括一个或更多个外围组件互连总线(例如,PCI或PCIExpress)、存储器总线或其他类型的接口总线。处理器602包括集成存储器控制器616和平台控制器集线器630。存储器控制器616促进存储器设备与处理系统600的其他组件之间的通信,而平台控制器集线器(PCH)630通过本地I/O总线提供到I/O设备的连接。
存储器设备620可以是动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备、相变存储设备或具有适当的性能以用作处理器存储器。存储设备620可以用作处理系统600的系统存储器,以存储数据622和指令621,以在一个或更多个处理器602执行应用程序或过程时使用。存储器控制器616还与可选的外部图形处理器612耦合,其可以与处理器602中的一个或更多个图形处理器608通信以执行图形和媒体操作。显示设备611可以连接至处理器602。显示设备611可以包括内部显示设备中的一个或更多个,例如在移动电子设备或膝上型设备或通过显示器接口(例如显示端口(DisplayPort))连接的外部显示设备中。显示设备611可以包括头戴式显示器(“HMD”),诸如用于虚拟现实(“VR”)应用或增强现实(“AR”)应用中的立体显示设备。
平台控制器集线器630使外围设备能够通过高速I/O总线连接到存储设备620和处理器602。I/O外围设备包括但不限于音频控制器646、网络控制器634、固件接口628、无线收发器626、触摸传感器625、数据存储设备624(例如,硬盘驱动器、闪存等)。数据存储设备624可以经由存储接口(例如,SATA)或经由外围总线来连接,诸如外围组件互连总线(例如,PCI或PCIe)。触摸传感器625可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器626可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G或长期演进(LTE)收发器。固件接口628使能与系统固件的通信,并且可以是例如统一可扩展固件接口(“UEFI”)。网络控制器634可以启用到有线网络的网络连接。高性能网络控制器(未示出)与接口总线610耦合。音频控制器646是多通道高清晰度音频控制器。处理系统600包括可选的传统(legacy)I/O控制器640,用于将传统(例如,个人系统2(PS/2))设备耦合到系统600。平台控制器集线器630还可以连接到一个或更多个通用串行总线(USB)控制器642,该控制器连接输入设备,诸如键盘和鼠标643组合、相机644或其他USB输入设备。
存储器控制器616和平台控制器集线器630的实例可以集成到离散的外部图形处理器中,例如外部图形处理器612。平台控制器集线器630和/或存储器控制器616可以在一个或更多个处理器602的外部系统600可以包括外部存储器控制器616和平台控制器集线器630,其可以配置成在与处理器602通信的系统芯片组中的存储器控制器集线器和外围控制器集线器。
图7是根据至少一个实施例的具有一个或更多个处理器核心702A-702N、集成存储器控制器714和集成图形处理器708的处理器700的框图。处理器700可以包含附加核心,多达并包括以虚线框表示的附加核心702N。每个处理器核心702A-702N包括一个或更多个内部高速缓存单元704A-704N,并且在至少一些说明性实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存单元706。
内部高速缓存单元704A-704N和共享高速缓存单元706表示处理器700内的高速缓存存储器层次结构。高速缓存存储器单元704A-704N可以包括每个处理器核心内的至少一级指令和数据高速缓存以及共享中级高速缓存中的一级或更多级缓存,例如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存,其中将外部存储器之前的最高级别的高速缓存归类为LLC。高速缓存一致性逻辑维持各种高速缓存单元706和704A-704N之间的一致性。
处理器700还可包括一组一个或更多个总线控制器单元716和系统代理核心710。一个或更多个总线控制器单元716管理一组外围总线,例如一个或更多个PCI或PCIe总线。系统代理核心710为各种处理器组件提供管理功能,并且系统代理核心710包括一个或更多个集成存储器控制器714,以管理对各种外部存储器设备(未示出)的访问。
一个或更多个处理器核心702A-702N包括对多线程同时进行的支持。系统代理核心710包括用于在多线程处理期间协调和操作核心702A-702N的组件。系统代理核心710可以另外包括电源控制单元(“PCU”),该电源控制单元包括用于调节处理器核心702A-702N和图形处理器708的一个或更多个电源状态的逻辑和组件。
图形处理器708与共享高速缓存单元706和包括一个或更多个集成存储器控制器714的系统代理核心710耦合。系统代理核心710还包括用于驱动图形处理器输出到一个或更多个耦合的显示器的显示器控制器711。显示器控制器711也可以是经由至少一个互连与图形处理器708耦合的独立模块,或者它可以集成在图形处理器708内。
基于环的互连单元712可以用于耦合处理器700的内部组件。可以使用替代性互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器708经由I/O链路713与环形互连712耦合。
I/O链路713代表多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块718(例如eDRAM模块)之间的通信的封装I/O互连。处理器核心702A-702N和图形处理器708中的每一个使用嵌入式存储器模块718作为共享的最后一级高速缓存。
处理器核心702A-702N可以是执行公共指令集架构的同质核心。处理器核心702A-702N可以在指令集架构(“ISA”)方面是异构的,其中一个或更多个处理器核心702A-702N执行公共指令集,而一个或更多个其他处理器核心702A-702N执行公共指令集的子集或不同指令集。就微架构而言,处理器核心702A-702N可以另外地或替代地是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心耦合。处理器700可以在一个或更多个芯片上实现或被实现为SoC集成电路。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相对应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“A,B和C中的至少一个”或“A,B与C中的至少一个”形式的短语之类的连接语在上下文中理解为通常用于表示项目、条款等,其可以是A或B或C,也可以是A和B和C集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“A,B和C中的至少一个”和“A,B与C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},或{A,B,C}。因此,这种连接语言通常不旨在暗示某些实施例要求存在A中的至少一个,B中的至少一个和C中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在一些实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。可执行指令被执行,以使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主CPU执行一些指令,而GPU和/或DPU执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。本说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在本说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。作为非限制性示例,“处理器”可以是能够进行通用处理的任何处理器,例如CPU、GPU或DPU。作为非限制性示例,“处理器”可以是任何微控制器或专用处理单元,例如DSP、图像信号处理器(“ISP”)、算术逻辑单元(“ALU”)、视觉处理单元(“VPU”)、树遍历单元(“TTU”)、光线追踪核心、张量追踪核心、张量处理单元(“TPU”)、嵌入式控制单元(“ECU”)等。作为非限制性示例,“处理器”可以是硬件加速器,例如可编程视觉加速器(“PVA”)、深度学习加速器(“DLA”)等。作为非限制性示例,“处理器”还可以包括CPU、GPU等的一个或更多个虚拟实例,托管在执行一个或更多个虚拟机的底层硬件组件上。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以通过多种方式来获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序编程接口(“API“)的调用的参数的数据。在一些实现方式中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在另一实现方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于讨论的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。而且,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

Claims (20)

1.一种计算机实现的方法,包括:
接收第一图像帧和第二图像帧的图像数据;
至少部分地基于所述图像数据定位所述第一图像帧和所述第二图像帧之间共同的至少一个表面点;
至少部分地基于至少一个共同表面点和与通过使用所述第一图像帧描绘的一层或更多层的折射界面可见的至少一个光束路径相对应的一个或更多个顶点,确定与使用所述第一图像帧描绘的背景相对应的背景区域;
确定所述背景区域中的感兴趣像素;以及
至少部分地基于跨越函数或优化函数中的至少一个,生成表示所述第一图像帧和所述第二图像帧之间的所述感兴趣像素的偏移的至少一个运动向量。
2.如权利要求1所述的计算机实现的方法,其中所述第二图像帧是视频序列中的在前图像或先前图像中的至少一个,所述视频序列也包括第一图像。
3.如权利要求1所述的计算机实现的方法,其中所述生成是至少部分地基于包括牛顿二次公式的优化函数。
4.如权利要求1所述的计算机实现的方法,其中所述至少一个运动向量的所述生成被迭代以生成图像的一组运动向量。
5.如权利要求1所述的计算机实现的方法,还包括:
应用所述至少一个运动向量去噪路径追踪图像。
6.如权利要求5所述的计算机实现的方法,其中所述路径追踪图像至少部分地使用蒙特卡罗过程来渲染。
7.如权利要求1所述的计算机实现的方法,其中所述第一图像帧和所述第二图像帧包括动态图像序列,并且其中所述动态图像序列的历史渲染信息被钳位在至少一个缓冲区中。
8.如权利要求7所述的计算机实现的方法,还包括:
获得关于在所述第一图像帧或所述第二图像帧的至少一个中的初始运动向量相对于主表面的移动的输入。
9.如权利要求1所述的计算机实现的方法,其中所述背景区域的所述确定进一步至少部分地基于所述第一图像帧或所述第二图像帧的一个或更多个中的一个或更多个对象位置。
10.如权利要求1所述的计算机实现的方法,其中所述至少一个运动向量的所述生成是至少部分地基于从前景点到所述感兴趣像素的所述至少一个运动向量的角度的最小化。
11.如权利要求1所述的计算机实现的方法,还包括:
使所述至少一个运动向量使用缓冲区以被存储,其中所述至少一个运动向量被用于生成随后的图像。
12.一种系统,包括:
至少一个处理器;以及
存储器设备,其包括指令,在所述指令由所述至少一个处理器执行时,使所述系统:
接收第一图像帧和第二图像帧的图像数据;
至少部分地基于所述图像数据定位所述第一图像帧和所述第二图像帧中的至少一个共同表面点;
至少部分地基于所述至少一个共同表面点和针对通过所述第一图像帧中描绘的一层或更多层的一个或更多个折射界面可见的至少一个光束路径的一个或更多个顶点,确定与所述第一图像帧中的背景相对应的背景区域;
确定所述背景区域中的感兴趣像素;
至少部分地基于跨越函数或优化函数中的至少一个,生成表示所述第一图像帧和所述第二图像帧之间的所述感兴趣像素的偏移的至少一个运动向量;
至少部分地基于所述第一图像帧、所述第二图像帧和所述至少一个运动向量来渲染新图像;以及
输出所述新图像以呈现在显示设备上。
13.如权利要求12所述的系统,其中所述系统包括以下至少一项:
用于执行模拟操作的系统;
用于执行模拟操作以测试或验证自主机器应用程序的系统;
用于执行光传输模拟的系统;
用于渲染图形输出的系统;
使用一个或更多个多维资产的系统,所述一个或更多个多维资产使用协作内容创建平台至少部分地被生成;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
合并一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或者
至少部分地使用云计算资源实现的系统。
14.如权利要求12所述的系统,其中所述至少一个运动向量的所述生成作为图像的通常实时光传输模拟的一部分出现。
15.如权利要求12所述的系统,其中所述至少一个运动向量的所述生成是至少部分地基于从前景点到所述感兴趣像素的所述至少一个运动向量的角度的最小化。
16.如权利要求12所述的系统,其中所述第一图像帧和所述第二图像帧包括动态图像序列,并且其中所述指令在由所述至少一个处理器执行时进一步使所述系统:
获得关于在所述第一图像帧或所述第二图像帧中的至少一个中的初始运动向量相对于主表面的移动的输入。
17.一种非暂时性机器可读介质,其上存储有一组指令,如果由一个或更多个处理器执行所述一组指令,则使所述一个或更多个处理器至少:
接收第一图像帧和第二图像帧的图像数据;
至少部分地基于所述图像数据定位所述第一图像帧和所述第二图像帧中的至少一个共同表面点;
至少部分地基于所述至少一个共同表面点和针对通过使用所述第一图像帧描绘的一层或更多层的一个或更多个折射界面可见的至少一个光束路径的一个或更多个顶点,确定与使用所述第一图像帧描绘的背景相对应的背景区域;
确定所述背景区域中的感兴趣像素;以及
至少部分地基于跨越函数或优化函数中的至少一个,生成表示所述第一图像帧和所述第二图像帧之间的所述感兴趣像素的偏移的至少一个运动向量。
18.如权利要求17所述的非暂时性机器可读介质,其中所述指令如果被执行则进一步使所述一个或更多个处理器采用一个或更多个神经网络来开发用于确定所述至少一个共同表面点、对象折射界面、所述感兴趣像素或至少一个运动向量中的至少一个的模型。
19.如权利要求17所述的非暂时性机器可读介质,其中所述至少一个运动向量的所述生成是至少部分地基于从前景点到所述感兴趣像素的所述至少一个运动向量的角度的最小化。
20.如权利要求17所述的非暂时性机器可读介质,其中所述生成所述运动向量还包括以下中的至少一项:
渲染图形缓冲区G-buffer;
渲染一个或更多个反射;或者
渲染一个或更多个折射。
CN202211333303.6A 2022-03-03 2022-10-28 用于多折射和反射界面的运动向量优化 Pending CN116740242A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/686,081 US11836844B2 (en) 2022-03-03 2022-03-03 Motion vector optimization for multiple refractive and reflective interfaces
US17/686,081 2022-03-03

Publications (1)

Publication Number Publication Date
CN116740242A true CN116740242A (zh) 2023-09-12

Family

ID=87572118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211333303.6A Pending CN116740242A (zh) 2022-03-03 2022-10-28 用于多折射和反射界面的运动向量优化

Country Status (3)

Country Link
US (1) US11836844B2 (zh)
CN (1) CN116740242A (zh)
DE (1) DE102023105068A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230154101A1 (en) * 2021-11-16 2023-05-18 Disney Enterprises, Inc. Techniques for multi-view neural object modeling

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665450B1 (en) * 2000-09-08 2003-12-16 Avid Technology, Inc. Interpolation of a sequence of images using motion analysis
US7346109B2 (en) * 2003-12-23 2008-03-18 Genesis Microchip Inc. Motion vector computation for video sequences
US20100103323A1 (en) * 2008-10-24 2010-04-29 Ati Technologies Ulc Method, apparatus and software for determining motion vectors
CN107403413B (zh) * 2017-04-14 2021-07-13 杭州当虹科技股份有限公司 一种视频多帧去噪及增强方法
US10497173B2 (en) * 2018-05-07 2019-12-03 Intel Corporation Apparatus and method for hierarchical adaptive tessellation
US10817996B2 (en) * 2018-07-16 2020-10-27 Samsung Electronics Co., Ltd. Devices for and methods of combining content from multiple frames
CN112184575A (zh) * 2020-09-16 2021-01-05 华为技术有限公司 图像渲染的方法和装置

Also Published As

Publication number Publication date
US20230281906A1 (en) 2023-09-07
US11836844B2 (en) 2023-12-05
DE102023105068A1 (de) 2023-09-07

Similar Documents

Publication Publication Date Title
US10115229B2 (en) Reinforcement learning for light transport
CN107251098B (zh) 使用动态三维形状促进真实对象的真三维虚拟表示
US11790594B2 (en) Ray-tracing with irradiance caches
US11756254B2 (en) Light importance caching using spatial hashing in real-time ray tracing applications
US20220005257A1 (en) Adaptive ray tracing suitable for shadow rendering
US11631216B2 (en) Method and system for filtering shadow maps with sub-frame accumulation
US20240029211A1 (en) History clamping for denoising dynamic ray-traced scenes using temporal accumulation
CN116740242A (zh) 用于多折射和反射界面的运动向量优化
CN114627234A (zh) 用于渲染逼真光照的自适应时间图像滤波
US11830125B2 (en) Ray-guided water caustics
US20240054720A1 (en) Differentiable object insertion using hybrid lighting volumes for synthetic data generation applications
US11508119B2 (en) Inverse path tracing for material and lighting estimation
US20240054657A1 (en) Frame rate up-conversion using optical flow
US11887245B2 (en) Techniques for rendering signed distance functions
CN117812380A (zh) 估计视频序列中的被遮挡内容的流矢量
CN115731332A (zh) 用于渲染符号距离函数的技术

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination