降噪滤波器的制作方法

文档序号:11135253阅读:537来源:国知局
降噪滤波器的制造方法与工艺

本发明涉及用于对图形处理系统中的帧的像素进行滤波的滤波器和方法,具体地,涉及用于对由路径或光线追踪渲染的帧中的像素进行滤波的滤波器和方法。



背景技术:

若干种技术可用于渲染三维(3D)场景以在计算机系统上显示。这些技术包括在计算机系统中三维描述的场景扫描线渲染到二维中、路径追踪以及光线追踪。路径追踪通过确定到达3D场景中特定视点处所限定的帧的各像素的净色(net colour)来形成图像。净色通过对从像素所接收的全部光线(包括由场景中的表面反射(潜在地为多次)的光线)的贡献求积分来计算。通过限定场景中的表面和光源的、包括表面的反射特性在内的物理上准确的模型,可以渲染非常逼真的图像。光线追踪以类似的方式形成图像,但通常针对对所渲染图像有贡献的场景中的各点,该点的颜色仅根据该点处从场景中的光源接收的光(即,仅直射光)来确定。路径和光线追踪的许多变型是可以的,包括使用路径或光线追踪来确定要应用于传统纹理映射的3D场景的光照的混合技术。

为了大幅减少使用路径或光线追踪技术渲染图像所需的计算量,通常从视点向光源向后追踪光线。这避免执行关于在捕获输出图像的视点处无法看到的光线的计算的开销。对于输出图像中的各像素穿过场景追踪的光线数量通称为每像素样本或SPP的数量。

由路径追踪渲染的帧12的例示在图1中示出,其作为3D场景100的平面图。在场景中,标称照相机101向下看走廊102,其包括窗口106,光线从光源(在这种情况下为太阳103)透过窗口106进入。照相机的视点将被渲染为帧112,该帧的各像素由穿过该像素的光线的总体来确定。走廊附加地包括沿着墙壁117的柱子104和墙壁118上的图画105。

场景可以为计算机游戏中所限定的3D场景,照相机101表示主角(protagonist),从主角的视点玩游戏。在该示例中,场景由3D模型(限定场景几何结构的一组多边形)和可以应用于3D模型的纹理信息在计算机系统处限定。3D模型限定场景中的表面的位置和轮廓,并且各纹理限定它所应用于的表面的特性。例如,纹理将通常表示表面在表面颜色和构图方面的外观的特性,并且还可以确定其他特性(诸如表面的反射性)以及来自表面的反射为高光或漫反射的程度。

图1中示出了三个示例性光线108-110,各个光线源于通过窗口106且在到达照相机101之前反射离开场景的一个或更多个表面的光源。然而,各个光线108-110通过穿过要形成场景的图像所处的帧112的像素从照相机101向后追踪光线来识别。光线108穿过像素114并反射离开颜料给予光线颜色的图画105,并且引起漫反射127。接着,光线108遭遇具有低反射率(导致辉度损失)和灰色的墙壁117,并且引起漫反射128。反射127和128的扩散性质可以通过随机(通常根据兰伯特余弦定律)拾取反射角度121和122来建模。在反射128的情况下,这使得光线被引导出窗口106。通过考虑沿着从光源到照相机的路径传播的光线量,可以确定像素114处来自光线108的贡献:通过窗口106的给定强度的实质白光作为反射128的结果变成深灰,然后在具有颜色变化的情况下被图画105反射。

光线109和110各经历单个反射。光线109穿过像素115被追溯到遇见具有较高反射率的打磨粉红色大理石的柱子104,给予光线粉色,并且引起反射125。相反,光线110穿过像素116被追溯到遇见墙壁117,因此被大量吸收,被给予灰色并经历漫反射。通过颠倒光线109和110的路径并将反射125和126的特性应用于穿过窗口106进入的光线,可以确定这些光线对像素115和116的贡献。通常,光线将从照相机仅向上追溯到一些预定数量的反射;如果在该数量的反射内未遇到光源,则光线可以被丢弃。

通过穿过像素重复多个光线(各光线穿过像素具有轻微不同(可能随机选择的)的方位)的路径追踪过程,可以通过(例如,根据蒙特卡罗积分)算出来自所有样本的结果的平均值来建立像素的颜色。通过对于帧112的各像素执行该过程,可以生成完整的帧。以该方式生成之后,帧包括由场景几何结构产生的光照信息、场景中光源的位置和特性以及存在于场景中的表面的纹理信息和表面特性。

当较少数量的光线贡献于各像素且每像素样本(SPP)低时,所渲染帧中的噪声等级可能高。增加每像素样本的数量提高所渲染帧的准确度并使得帧中的噪声等级下降。然而,增加每像素样本的数量显著增加渲染帧所需的时间。



技术实现要素:

根据本发明的第一方面,提供了一种像素滤波器,该像素滤波器包括:

输入,该输入被设置成接收像素序列,各像素具有关联的像素值;

滤波器模块,该滤波器模块被设置成穿过所述像素序列沿第一方向执行第一递归滤波操作,以形成各像素的第一滤波后像素值,并且穿过所述像素序列沿第二方向执行第二递归滤波操作,以形成各像素的第二滤波后像素值,其中,所述第一递归滤波操作和所述第二递归滤波操作根据给定像素处的所述像素值和沿各操作方向在该像素之前的所述滤波后像素值形成该像素的相应滤波后像素值,所述之前的像素的所述滤波后像素值由与该像素及其之前的像素关联的数据之间的相似性测度来调整;以及

滤波器逻辑,该滤波器逻辑被构造成对于所述序列中的各像素,组合由所述第一递归滤波操作和所述第二递归滤波操作关于所述像素形成的所述第一滤波后像素值和所述第二滤波后像素值,以生成所述像素的滤波器输出。

所述第二方向可以与所述第一方向相反。

所述第一递归滤波操作和所述第二递归滤波操作可以被构造成调整所述之前的像素的所述滤波后像素值,使得该像素值对所述滤波后像素值的贡献在所述相似性测度表示高相似性时比在所述相似性测度表示低相似性时大。

第一递归滤波操作和第二递归滤波操作可以被构造成对于各像素,通过确定以下内容之间的差来形成各像素的各第一滤波后像素值和第二滤波后像素值:

表示在由第一参数调整序列的之前的像素的相应滤波后像素值时的各递归滤波操作的输出的第一中间值;和

表示在由第二参数调整序列的之前的像素的相应滤波后像素值时的各递归滤波操作的输出的第二中间值。

第一参数与第二参数之间的差可以至少为比第一参数和第二参数二者之一的尺寸至少小一个数量级。

所述输入还可以被设置成接收另外的像素序列,所述另外的像素序列包括来自所述滤波器输出的至少一个像素值,并且所述滤波器模块还被设置成对所述另外的像素序列执行所述第一递归滤波操作和所述第二递归滤波操作。

所述像素序列可以表示从矩形的像素阵列选择的像素行,并且所述另外的像素序列表示从矩形的像素阵列选择的像素列。

所述像素序列可以表示从矩形的像素阵列选择的像素列,并且所述另外的像素序列表示从矩形的像素阵列选择的像素行。

所述滤波器模块可以被构造成在形成所述序列中各像素的滤波后像素值时,由各像素值的置信度测度来对所述像素值进行加权。

各像素值和该像素值中置信度的所述测度可以表示坐标集,并且所述滤波器模块可以被构造成对各坐标集的所述分量同时操作,以生成滤波后像素值和滤波后置信度测度。

对于序列的各像素,第一递归滤波操作和第二递归滤波操作还可以根据像素值的置信度测度并根据对于序列关于递归滤波器的操作方向的之前的像素形成的滤波后置信度测度来形成像素的各第一滤波后置信度测度和第二滤波后置信度测度,之前的像素的滤波后置信度测度由相似性测度来调整;其中,第一递归滤波操作适于根据像素的第一滤波后置信度测度形成各像素的第一滤波后像素值,并且第二递归滤波操作适于根据像素的第二滤波后置信度测度形成各像素的第二滤波后像素值。

所述滤波器逻辑可以被构造成通过计算所述第一滤波后像素值和所述第二滤波后像素值的加权平均值(weighted average)来组合各像素的所述第一滤波后像素值和所述第二滤波后像素值,相应滤波后像素值的权重根据贡献于该滤波后像素值的、所述像素值的置信度测度来形成。

所述像素值可以由路径或光线追踪产生,并且滤波之前各像素值的所述置信度测度表示贡献于该像素值的光线的数量。

所述滤波器模块可以包括递归滤波器块,该递归滤波器块被构造成执行所述第一递归滤波操作和所述第二递归滤波操作这两者,使得所述第一递归滤波操作在第一次穿过递归滤波器块时执行,并且所述第二递归滤波操作在第二次穿过所述递归滤波器块时执行。

滤波器模块还可以包括行存储,该行存储被设置成各像素的第一滤波后像素值,并且其中,滤波器逻辑还被设置成组合从递归滤波器块输出的第二滤波后像素值与行存储中所存储的第一滤波后像素值。

所述滤波器模块可以包括第一递归滤波器块和第二递归滤波器块,该第一递归滤波器块和第二递归滤波器块被设置成同时操作,并且其中,所述第一递归滤波器块被构造成执行所述第一递归滤波操作,并且所述第二递归滤波器块被构造成执行所述第二递归滤波操作。

像素滤波器还可以包括预滤波器,该预滤波器适于对所述像素值进行滤波,以形成各像素的预滤波后像素值,并且其中,与该像素和该像素之前的像素关联的所述数据分别包括该像素处的所述预滤波后像素值和关于所述各递归滤波操作的所述操作方向的所述之前的像素处的所述预滤波后像素值。

所述预滤波器可以具有比所述第一递归滤波操作和所述第二递归滤波操作大小至少小一个数量级的滤波半径。

所述预滤波器可以适于通过形成所述像素值和与该像素相邻的预定像素值组的加权平均数来形成像素处的预滤波后像素值,所述像素值具有比所述相邻像素值组高的权重。

递归滤波器可以具有无限滤波半径。

递归滤波器可以为指数滤波器。

各递归滤波器可以包括预滤波器的递归滤波器,该预滤波器被设置成形成在该递归滤波器处使用的预滤波后像素值。

所述像素可以表示被渲染为表示三维场景的栅格图像,并且其中,与该像素和该像素之前的像素关联的所述数据包括以下中的一个或更多个:像素特性;和所述图像中由所述像素和之前的像素表示的点处的、所述三维场景的场景特性。

栅格图像可以表示场景的光照信息,但不表示纹理信息。

所述场景特性可以为以下中的一个或更多个:描述场景几何结构的向量、描述所述场景中的表面的方位的法向量以及表示所述场景中的表面离限定的基准点、线或平面的距离测度的场景深度。

所述相似性测度可以包括以下中的至少一个:由所述像素和之前的像素表示的所述场景中的表面的法向量之间的角度的测度;和由所述像素和之前的像素表示的所述场景中的所述表面之间的场景深度的差的测度。

像素特性可以为颜色、颜色分量、色度、色饱和度、辉度、明度、亮度以及透明度中的一个或更多个。

各像素值可以表示亮度或颜色,并且与像素及其之前的像素关联的数据之间的相似性测度可以为由像素和之前的像素表示的、色空间中亮度或颜色之间的距离测度。

递归滤波器可以被构造成使得各像素及其之前的像素在像素序列中相邻。

各像素序列可以表示连续像素序列。

一个或更多个递归滤波操作可以为以下中的一个或更多个:软件递归滤波器的实例;实施在硬件中的不同滤波器;以及GPU的适当构造的计算单元。

各像素值可以包括一个或更多个颜色分量和/或亮度测度。

根据本发明的第二方面,提供了一种用于对像素序列进行滤波的方法,各像素具有关联的像素值,所述方法包括以下步骤:

对于各像素通过以下方式沿第一方向和第二方向对所述像素序列进行递归滤波,以形成各像素的第一滤波后像素值和第二滤波后像素值:

读出所述序列关于所述递归滤波器的所述操作方向的所述之前的像素的滤波后像素值;

由与所述像素与所述之前的像素关联的数据之间的相似性测度来调整所述序列的所述之前的像素的所述滤波后像素值;以及

根据所述像素的所述像素值并根据所述之前的像素的经调整的滤波后像素值形成所述像素的滤波后像素值;

以及

组合关于各序列的各像素形成的所述第一滤波后像素值和所述第二滤波后像素值,以生成所述像素的滤波器输出。

所述第二方向可以与所述第一方向相反。

调整之前的像素的滤波后像素值可以使得该像素值对像素的所述滤波后像素值的贡献在所述相似性测度表示高相似性时比在所述相似性测度表示低相似性时大。

调整之前的像素的滤波后像素值可以包括:

由第一参数调整之前的像素;和

由第二参数调整之前的像素;

并且,形成像素的滤波后像素值包括:

使用由第一参数调整的之前的像素形成第一中间值;

使用由第二参数调整的之前的像素形成第二中间值;以及

通过确定第一中间值与第二中间值之间的差来形成像素的滤波后像素值。

第一参数与第二参数之间的差可以为比第一参数和第二参数二者之一的尺寸至少小一个数量级。

方法还可以包括以下步骤:

接收另外的像素序列,所述另外的像素序列包括至少一个滤波器输出;以及

根据这里所述的方法对另外的像素序列进行滤波,以形成另外序列的各像素的滤波器输出。

所述像素序列可以表示从矩形的像素阵列选择的像素行,并且所述另外的像素序列表示从矩形的像素阵列选择的像素列。

所述像素序列可以表示从矩形的像素阵列选择的像素列,并且所述另外的像素序列表示从矩形的像素阵列选择的像素行。

形成序列的各像素的滤波后像素值可以包括由各像素值的置信度测度对该像素值进行加权。

各像素值和该像素值中置信度的所述测度可以表示坐标集,并且所述滤波器模块可以被构造成对各坐标集的所述分量同时操作,以生成滤波后像素值和滤波后置信度测度。

递归滤波可以包括:对于序列的各像素,根据像素值的置信度测度并根据对于序列关于递归滤波器的操作方向的之前的像素形成的滤波后置信度测度来形成像素的各第一滤波后置信度测度和第二滤波后置信度测度,之前的像素的滤波后置信度测度由相似性测度来调整;其中,各像素的第一滤波后像素值和第二滤波后像素值分别根据像素的第一滤波后置信度测度和像素的第二滤波后置信度测度形成。

方法还可以包括以下步骤:根据贡献于相应滤波后像素值的、所述像素值的置信度测度来形成该滤波后像素值的权重,并且组合所述第一滤波后像素值和所述第二滤波后像素值可以包括计算所述第一滤波后像素值和所述第二滤波后像素值的加权平均值。

所述像素值可以由路径或光线追踪产生,并且滤波之前各像素值的所述置信度测度表示贡献于该像素值的光线的数量。

方法还可以包括以下步骤:对所述像素进行预滤波,以形成各像素的预滤波后像素值,并且其中,与该像素和该像素之前的像素关联的所述数据分别包括该像素处的所述预滤波后像素值和关于所述各递归滤波操作的所述操作方向的所述之前的像素处的所述预滤波后像素值。

预滤波像素可以用比用于递归滤波的滤波半径的大小至少小一个数量级的滤波半径来执行。

预滤波像素可以被执行为通过形成所述像素值和与该像素相邻的预定像素值组的加权平均数来形成像素处的预滤波后像素值,所述像素值具有比所述相邻像素值组高的权重。

递归滤波可以用无限滤波半径来执行。

可以提供一种限定如这里所述的滤波器的计算机程序代码,借此,可以制造滤波器。可以提供一种永久计算机可读存储介质,该永久计算机可读存储介质上存储有计算机可读指令,在该指令在用于生成集成电路的显示的计算机系统处执行时,使得计算机系统生成如这里所述的滤波器的显示。

可以提供一种用于执行用于对图形处理系统中的帧的像素进行滤波的方法的计算机程序代码。可以提供一种永久计算机可读存储介质,该永久计算机可读存储介质上存储有计算机可读指令,在该指令在处理器处执行时,使得处理器执行用于对图形处理系统中的帧的像素进行滤波的方法。

附图说明

现在将参照附图经由示例描述本发明,在附图中:

图1例示了三维场景100和光线穿过场景的路径的平面图。

图2是从照相机101的视点看场景100的栅格光照图。

图3a-图3g示出了例示了图2中的点202与203之间的像素值的滤波的图。

图4a是根据第一示例的滤波器400的示意图。

图4b是根据第二示例的滤波器400的示意图。

图5是包括滤波器400在内的图形系统的示意图。

图6例示了对帧的像素进行滤波。

图7例示了由滤波器400执行的滤波。

图8示出了图形系统处操作的滤波器400的数据和功能元件的示例性结构。

图9是例示了滤波器400的操作的流程图。

具体实施方式

以下描述经由使得本领域任意技术人员进行并使用本发明的示例来呈现。本发明不限于这里所述的实施方式,并且对所公开实施方式的各种修改例将对本领域技术人员容易地清晰。

提供了对图形处理系统中的帧的像素进行滤波的滤波器和方法,具体地提供了用于过滤掉由路径/光线追踪技术逐渐产生的噪声同时维持可接受图像质量的滤波器和方法。这里所述的方法特别适于过滤栅格光照图中的噪声。

所渲染图像中的噪声可以通过使用传统滤波器(诸如双边滤波器)来消除。这种滤波器可以提供良好品质图像,但在计算上昂贵。路径和光线追踪本身在计算上复杂,并且即使在路径/光线追踪用于提供栅格化场景的光照信息的情况下采用混合方法,实时实施也可能具有挑战性。将复杂滤波器用于实现可接受图像品质加剧问题,并且使得难以提供实时路径追踪解决方案,特别是在具有受限处理资源的移动平台上。

现在将参照图5中所示的示例性图形系统500描述滤波器。系统渲染输出帧509。系统例如可以包括适于支持用于计算机游戏的渲染引擎的图形处理单元(GPU)。更普遍地,滤波器可以用于任意种类的图像处理系统并被构造成执行任意种类的栅格图形的滤波。

图形系统

图形系统500被构造成独立地生成3D场景的光照信息(图5中的数据路径507),并且在没有任何光照信息(数据路径508)的情况下形成场景的栅格图像。系统包括存储器506,该存储器506保持表示场景几何结构511的数据集;场景510中的光源(例如,光源的位置和特性(诸如光源的颜色));由场景几何结构限定的表面512的纹理;以及照相机513(例如,场景中的标称照相机的位置,从该照相机的视点看产生输出帧509)。存储器506在图5中被示意性地示出为事实上可以包括在图形系统处支持和/或系统外部(例如,在设置系统500的主系统处)的一个或更多个存储器。例如,系统500可以为主计算机系统处支持的适当编程GPU,纹理数据512保持在主系统的存储器中且部分保持在GPU的纹理缓冲器处。

纹理数据路径508包括纹理映射器503和栅格化器504。纹理映射器执行纹理512到由场景几何结构511限定的表面上的映射。这生成描述场景的至少可视表面上的各取样点处的纹理的场景的所映射纹理数据。栅格化器504生成从照相机513的视点看的、纹理映射场景的栅格图像。换言之,栅格化器将场景的表面连同应用于表面的纹理投影到对应于输出帧509的栅格图像,以生成从照相机513的视点看的、场景的表示。栅格图像通常将具有等于或大于期望输出帧509的像素分辨率的预限定像素分辨率。

光照数据路径507包括路径追踪器501和滤波器400,下面描述路径追踪器501和滤波器400的操作。路径追踪器可以被构造成通过追踪从照相机513向存在于场景中的光源510穿过场景的光线的路径来确定场景的光照。更普遍地,路径追踪器可以被构造成从光源追踪光N步和/或从照相机追踪M步,各步为从源或照相机在场景中相互作用(例如,来自场景中所限定的表面的反射)的点之间延伸的光路的段。如果路径追踪器沿两个方向(从照相机和源)追踪,则路径追踪器可以延续,直到路径可以被连接为创建从源至照相机的完成光路为止。沿不同方向执行的路径追踪可以在组合之后滤波,或者可以独立滤波且随后组合。

路径追踪使用场景几何结构511和来自由纹理映射器503生成的所映射纹理数据的、对于场景中各反射点确定的纹理信息来执行。路径追踪器501被构造成以与上面有关图1描述的传统路径追踪方法描述的相同方式来计算从照相机向光源穿过场景的路径。然而,路径追踪器501不用光线融合光线在到达照相机之前最后一次反射的点处的纹理。相反,路径追踪器501根据最后一次反射之前的光线生成输出帧的光照图,使得光照图的各像素表示要与由栅格化器504生成的栅格图像融合的颜色。光照图可以包括以任意适当的格式(例如,以RGB或YUV表示)表达光的强度和颜色这两者的信息,或者可以包括仅表达光的强度(例如,有Y值表示的)的信息。空间分辨率和/或用于表示各值的比特数可以在通道间不同。例如,RGB 5:6:5表示对于红色和蓝色通道中的每一个使用五比特,并且对于绿色通道使用六比特。在另一个示例中,YUV表示可以对于Y通道使用高于对于U通都和V通道使用的空间分辨率。

现在将参照图1更详细地描述的路径追踪器501的操作。我们首先将考虑光线110。为了确定对帧112中的像素116的贡献,路径追踪器穿过像素116从照相机101追踪光线110,并且识别光线110在点126处遇见墙壁117的表面。通过在限定场景中的表面的特性的信息中查找点126的材料信息,路径追踪器确定光线经历漫反射。

传统图形渲染中的纹理表示表面在表面颜色和构图方面的外观特性是普遍的。纹理数据512可以被延伸为提供另外的材料信息(例如,表面的反射率或反射特性)。另外的材料信息可以与纹理数据512一起或单独保持(例如,在别处)在存储器506中。确定光线与表面相交的点处的表面的材料信息的过程类似于确定传统栅格化中表面的可视部分的颜色信息的过程。因此,纹理映射器503可以用于根据纹理512确定点126的材料信息。然后,可以将材料信息作为所映射纹理数据的一部分向路径追踪器501提供。

由此,路径追踪器根据朗伯反射随机选择反射角。在这种情况下,反射角碰巧将光线带出窗口106。因此,路径追踪器确定照相机将在帧112的像素116处看到由穿过窗口106进入的光直接照射的点126处的纹理。不像在传统路径追踪器系统中,路径追踪器501不讲点126处所识别的纹理颜色应用于穿过窗口接收的光的特性。相反,由点126处入射的光的颜色给出光线110对帧112的像素116的贡献。因此,在本示例中,帧112表示从照相机101的视点看的场景的栅格光照图,不是场景的完整图像。

类似地,通过穿过帧112的像素115追踪光线,确定照相机将看见由来自窗口106的光线直接照射的点125处的纹理。因此,由点125处入射的光的颜色给出光线109对帧112的像素115的贡献。

可以看出,穿过像素114从照相机追踪的光线108在遇见光源103之前被反射两次。光线108对帧112的像素114的贡献为点127处入射的光的颜色。这不是来自光源103的光的颜色,而是来自由128处的满反射修改的光源103的光的颜色,在128处,光线的颜色与点128处的墙壁的颜色组合。该组合可以以任意适当的方式视限定颜色的色空间和对于场景的合成环境限定的光照规则的情况来执行。因为墙壁117为深灰色,所以来自127处入射的光线108的光线较弱。因此,光线108仅具有对像素114的小贡献。

通过对于每一像素预订量的光线(样本)且在帧的像素上重复上述路径追踪,生成从照相机101的视点看的、场景的栅格光照图112。然后,以下面描述的方式由滤波器400对栅格光照图进行滤波,以在帧生成器505形成与由纹理数据路径508生成的栅格图像的组合的滤波后光照图。为了生成包括纹理和光照信息的、期望像素分辨率的输出帧509,帧生成器505组合栅格光照图的一个或更多个像素的颜色与由纹理路径508生成的栅格图像的一个或更多个对应像素。栅格光照图的像素维数可以与由纹理路径508生成的栅格图像的像素维数匹配,使得栅格图像的各像素的颜色与栅格光照图的对应像素的颜色组合,以生成输出帧的对应像素。由帧生成器执行的组合可以视限定颜色的色空间和对于场景的合成环境限定的光照规则的情况以任意适当的方式来执行。

上述图形系统被构造成确定栅格光照图的各像素的颜色;另选地,图形系统可以被构造成确定栅格光照图的各像素的亮度,但不确定颜色信息(诸如色度或色饱和度)。这可以通过将对于场景中反射发生的各点限定的所映射纹理数据用于确定反射对对应光线的亮度的影响但不修改光线的色度和/或色饱和度来实现。

滤波

现在将参照图4a和图4b中所示的示例描述滤波器400的操作。

图4a和图4b各例示了适于对存储器401处所保持的栅格数据进行操作的滤波器400的示例。滤波器400例如可以被构造成对包括各具有像素值的多个像素的、图6中所示的帧600进行操作。像素值可以表示任意种类的图形特性(诸如颜色或亮度)。帧600可以为任意种类的栅格图形(诸如灰度图像、彩色图像或栅格光照图)。在上面关于图5描述的示例中,帧600将为由图形系统的路径追踪器501生成的栅格光照图112。

滤波器400包括用于从存储器401接收像素值的输入413、滤波器模块405和滤波器逻辑404。滤波器模块可以包括被构造成并行或串联操作的任意数量的递归滤波器。滤波器逻辑404操作为将滤波器模块处所形成的滤波后像素值组合成可以存储在存储器406处的滤波后输出。滤波器逻辑404的功能可以与滤波器模块405集成。存储器401和406可以或可以不为一个和相同存储器,并且各可以包括任意数量的数据存储(包括例如寄存器、工作存储器和非易失性存储器)。

图4a示出了包括滤波器400的第一示例,该滤波器400包括具有单个递归滤波器402的滤波器模块405,该单个递归滤波器402被构造成对存储器401处所保持的栅格数据进行操作,以向滤波器逻辑404提供滤波后像素值。在该示例中,由递归滤波器402沿第一方向(例如,根据下面的算式1-3的左至右方向)对进入序列的像素C进行滤波,以形成滤波后像素CL-R,并且存储在行存储409中。然后,由同一递归滤波器402沿第二方向(例如,根据下面的算式4-6的右至左方向)对进入序列的像素C进行滤波,以形成滤波后像素CR-L。存储在行存储409中的、沿第一方向滤波的像素CL-R根据下面的算式7在滤波器逻辑404的组合单元408处与沿第二方向滤波的像素CR-L以及进入像素C组合,以形成滤波后的输出COUT。开关412示意性地表示滤波器逻辑404的逻辑,该逻辑被构造成将沿第一方向滤波的像素引导到行存储409且将沿第二方向滤波的像素引导到组合单元408,以与来自行存储409的之前沿第一方向滤波的像素组合。以该方式,单个递归滤波器可以用于根据这里所阐述的原理执行滤波。

图4b示出了滤波器400的第二示例,该滤波器400包括一对递归滤波器402和403,各递归滤波器被构造成对存储器401处所保持的栅格数据进行操作,以向滤波器逻辑404提供滤波后像素值。在该示例中,由递归滤波器402沿第一方向(例如,根据下面的算式1-3的左至右方向)和由递归滤波器403沿第二方向(例如,根据下面的算式4-6的右至左方向)对进入序列的像素C同时进行滤波,以形成滤波后像素CL-R,并形成滤波后像素CR-L。沿第一方向滤波的像素CL-R根据下面的算式7在滤波器逻辑404的组合单元408处与沿第二方向滤波的像素CR-L以及进入像素C组合,以形成滤波后的输出COUT。递归滤波器402和403被设置成在像素值的序列上沿相反的方向操作。序列在帧600内可以是连续的,使得序列中的各像素值在帧中与序列中紧接它之前和之后的像素值相邻(像素值的可能例外位于序列的起点和终点处)。

如下面更详细描述的,各递归滤波器可以包括一对滤波器(例如,递归滤波器402包括滤波器408和409;递归滤波器403包括滤波器410和411),各对滤波器被设置成在任意给定时间根据下面的算式1和2或算式4和5执行滤波,以对于各滤波方向生成中间像素值C1和C2递归滤波器处所形成的中间像素值C1和C2根据算式3或6(视滤波器的操作方向而定)在递归滤波器的组合单元414处组合,以形成各自的滤波后输出CL-R或CR-L

在其他示例中,

递归滤波器可以包括单个非衰减滤波器,使得递归滤波器的输出为它的非衰减滤波器的输出。例如,如果图4b中的递归滤波器402将经包括滤波器408,那么递归滤波器的输出可以由下面的算式(1)给出。这种递归滤波器的输出可以以与关于图4b中所示的示例描述的相同方式根据下面的算式(7)在滤波器逻辑处组合。递归滤波器用于执行递归滤波在下面可选“预滤波”的讨论中的示例中来描述,其中,图4b中所示的递归滤波器402/403中的滤波器中的一个用于执行递归滤波,并且另一个滤波器用于执行预滤波。

现在将经由示例更详细地描述滤波器400在帧600上的操作。在帧600中,帧中的像素行和像素列中的每一个表示可能的像素序列。然而,其他序列是可以的,包括在帧的块内限定的序列(如图6中的块611例示的)和对于帧的所有像素限定的单个序列(如由图6中的612指示的)。

沿第一方向的滤波

考虑递归滤波器402对帧600中的像素行601进行操作。滤波器402被构造成为了根据各像素的值和序列中之前的像素的滤波后值形成该像素的滤波后值而沿着序列601从左至右操作。在该示例中,滤波器402根据来自两个像素的贡献形成像素的滤波后值,但更普遍地,滤波器可以根据来自序列中可以或可以不紧相邻的两个或更多个像素的贡献来形成各滤波后值。由此,图6中的像素604的滤波后值根据像素604的值和对于之前的像素603形成的滤波后值来形成。因为滤波器402关于像素604的输出取决于来自滤波器402之前关于像素603的滤波步骤的输出,所以滤波器402为递归滤波器。

在下面描述的示例中,像素的颜色使用齐次色坐标(可以认为齐次色坐标的使用与齐次几何结构坐标的使用类似)来表示。具有3个分量(即,r、g以及b)的颜色使用4个分量向量r、g、b、w的齐次色坐标来表示,其中,w反应颜色的“权重”。像素的权重例如可以为用于产生像素的色值的样本数量的测量。另选地,像素的权重可以被导出为“多重重要抽样”技术的使用结果,该“多重重要抽样”技术在路径追踪中已知,且根据所用的取样技术向各样本分配权重。通常,权重指示分配给像素的值的品质或置信度。根据RGB颜色和权重产生齐次色值的一种方式是将3个颜色分量与权重相乘,产生齐次颜色向量{R×w,G×w,B×w,w}。为了根据这种齐次颜色向量{r,g,b,w}产生3个分量向量,我们将颜色通道除以权重,产生颜色向量{r/w,g/w,b/w}。该方法用于下面描述的示例中。

将齐次坐标用于表示颜色除了简化数学算式(不需要分别更新颜色和权重)之外具有多个优点。使用齐次坐标例如可以首先通过使得能够使用更好地使用许多处理器中发现的向量指令的4个分量向量且其次通过允许下面描述的昂贵除操作延期到单个最终步骤而在CPU或GPU上实施滤波时提高性能。当路径追踪器在路径追踪期间累积样本时,可以有利地将路径追踪器配置为不将所累积颜色除以样本数。例如,在样本不携带独立权重的简单情况下,路径追踪器可以对于各样本累积形式{r,g,b,1}的向量(其中,r、g以及b为样本的颜色分量),最后的权重(w值)将反映所累积样本的数量。在其他示例中,在样本具有独立权重的情况下,可以以类似的方式累积形式{r,g,b,w}的向量。在仅考虑亮度且非三分量颜色的示例中,上述等效齐次{r,g,b,w}向量可以表达为{l,w},其中,l为样本的亮度值。

下面我们使用符号表示滤波后值。为由滤波器m产生的序列中的像素的滤波后齐次色值(n不要与指数混淆)。由颜色/强度部分和权重组成。

递归滤波器402被构造成通过计算以下算式形成关于序列中具有像素值Cn的第n个像素的第一中间滤波后值

其中,α1为常数,并且dn为第n个像素与第(n-1)个像素之间的相似性的测量。由此,各像素值从它之前的滤波后像素值接收贡献,该之前的滤波后像素值根据与对象像素值的相似性来衰减。

由递归滤波器402形成的第一中间滤波后值可以用作用于在滤波器逻辑404处与沿相反方向在序列的像素上形成的对应第一中间滤波后值组合的滤波器402的输出。然而,如果递归滤波器402还被构造成通过计算以下算式形成关于序列中具有像素值Cn的第n个像素的第二中间滤波后值则可以实现提高的性能:

其中,α2为常数,并且dn为第n个像素与第(n-1)个像素之间的相似性的测量。

如图4a和图4b所示,递归滤波器402可以包括形成两个中间滤波后值的两个滤波器:被构造成计算第一中间滤波器值的第一滤波器408和被构造成计算第二中间滤波器值的第二滤波器409。两个滤波器408和409可以并行操作,以同时形成第一滤波后值和第二滤波后值。类似地,另外的递归滤波器(例如,403)可以包括被设置成计算第一中间滤波后值和第二中间滤波后值的两个滤波器410和411。递归滤波器中的一个或更多个滤波器可以为指数滤波器。

通过根据算式(1)和(2)递归滤波器402对像素值的序列进行操作,可以对于序列中的各像素计算第一中间滤波后值和第二中间滤波后值。因为序列中的第一值通常将不具有之前的像素值,所以可以将权重零用于“之前”的像素来计算第一像素的中间滤波后值或者可以为适于帧和/或待执行滤波的性质的某一合适初值。然后,以与根据算式(1)和(2)的色坐标相同的方式更新权重坐标,使得给定像素的权重等于当前像素的权重加上由αidn(i视算式而定)调整的之前的像素的权重。常数α1、α2以及dn被选择为使得量α1dn和α2dn位于0值1之间,该范围内的最大值指示像素间的高相似性,该范围内的最小值指示像素间的低相似性。α1和α2的更高值将使得滤波器400产生更平滑但更模糊的输出;这意味着更少的噪声,但在滤波器被构造成对栅格光照图进行操作时可能导致软阴影边缘。

各像素的第一中间滤波后值和第二中间滤波后值由以下算式在滤波器402处(例如,在组合单元414处)组合,以形成左右方向上的滤波后像素值

其中,

β1=1-α1

β2=1-α2

当生成第一中间滤波后像素和第二中间滤波后像素值的滤波器为指数滤波器时,滤波器402可以具有近似于“半高斯”的脉冲响应,权重(齐次系的第四坐标)反映所累积样本数量的估计。“半高斯”描述了在突然下降之前上升到高斯样式中的峰值的滤波器响应。因为值为常数,所以在滤波期间不需要计算它。另外的指数滤波器可以用于提高响应曲线的上升部分中与高斯的接近。

沿第二方向的滤波

现在将经由沿第二方向的滤波的示例描述图4b中的递归滤波器403的操作。将理解,以下描述在单个滤波器被构造成在像素序列上沿第二方向操作时同样适用于递归滤波器402。

递归滤波器403以与滤波器402类似的方式来构造,但当滤波器402沿左至右方向操作时,滤波器403为了根据各像素的值和序列中之前的像素的滤波后值沿右至左方向形成该像素的滤波后值而在同一像素序列上从右至左操作。由此,当对帧600中的像素行602进行操作时,图6中像素604的滤波后值根据像素604的值和对于之前的像素605形成的滤波后值来形成。再次,更普遍地,滤波器403可以根据来自序列中可以或可以不彼此紧相邻的两个或更多个像素的贡献来形成各滤波后值。

递归滤波器403被构造成通过计算以下算式形成关于序列中具有像素值Ck的第k个像素的第一中间滤波后值(其中,k=N-n,N为序列中的像素数,并且n=0为行601中最左侧的像素):

其中,α3为常数,并且dk为第k个像素与第(k-1)个像素之间的相似性的测量。由此,各像素值从它之前的滤波后像素值接收贡献,该之前的滤波后像素值根据与对象像素值的相似性来衰减。

由递归滤波器403形成的第一中间滤波后值可以用作用于在滤波器逻辑404处与由递归滤波器402形成的对应第一中间滤波后值组合的滤波器403的输出。然而,如果递归滤波器403还被构造成通过计算以下算式形成关于序列中具有像素值Ck的第k个像素的第二中间滤波后值则可以实现提高的性能:

其中,α4为常数,并且dk为第k个像素与第(k-1)个像素之间的相似性的测量。

如图4b所示,递归滤波器403可以包括形成两个中间滤波后值的两个滤波器:被构造成计算第一中间滤波器值的第一滤波器410和被构造成计算第二中间滤波器值的第二滤波器411。两个滤波器410和411可以并行操作,以同时形成第一滤波后值和第二滤波后值。递归滤波器中的一个或更多个滤波器可以为指数滤波器。

通过根据算式(4)和(5)递归滤波器403对像素值的序列进行操作,可以对于序列中的各像素计算第一中间滤波后值和第二中间滤波后值。因为序列中的第一值通常将不具有之前的像素值,所以可以将权重零用于“之前”的像素来计算第一像素的中间滤波后值或者可以为适于帧和/或待执行滤波的性质的某一合适初值。各相似性测度可以在0值1之间的预限定范围内取值,该范围内的最大值指示像素间的高相似性,并且该范围内的最小值指示像素间的低相似性。

各像素的第一中间滤波后和第二中间滤波后值由以下算式在滤波器403处(例如,在组合单元414处)组合,以形成右左方向上的滤波后像素值

其中,

β3=1-α3

β4=1-α4

当生成第一中间滤波后像素值和第二中间滤波后像素值的滤波器为指数滤波器时,滤波器403可以具有近似于“半高斯”的脉冲响应,权重(齐次系的第四坐标)反映所累积样本数量的估计。“半高斯”描述了在突然下降之前上升到高斯样式中的峰值的滤波器响应。因为值为常数,所以在滤波期间不需要计算它。另外的指数滤波器可以用于提高响应曲线的上升部分中与高斯的接近。

为了使递归滤波器402和403的复杂性最小化,优选的是它们被构造成仅根据像素和之前的像素的值形成关于该像素的输出。这允许在形成序列中的第n个值时,从滤波器的工作存储器丢弃序列中的第n-1个值。

如果递归滤波器的各滤波器被构造成在单通中形成它的第一中间滤波后值和第二中间滤波后值,则是有利的。换言之,因为滤波器根据相同的两个像素值形成像素的第一中间滤波后值和第二中间滤波后值中的每一个,所以优选的是滤波器被构造成在两个所需像素值处于滤波器本地时(例如,在从存储器401检索之后保持在各滤波器的寄存器中)形成两个滤波后值。

在其他示例中,递归滤波器402和403可以被构造成根据多于两个像素值形成各滤波后值。

滤波器逻辑404被构造成组合由滤波器402和403形成的滤波后像素值和以生成各像素的滤波后输出值滤波器逻辑被构造成通过对于帧600的各像素计算滤波后像素值和的平均值来组合滤波后像素值。这可以为滤波后像素值的简单手段,但更佳的滤波器性能可以通过使用源于像素的权重的滤波后像素值的权重来形成滤波后像素值的加权平均值来实现。使用齐次色坐标,这可以通过执行简单动作来实现。这在由递归滤波器对于各像素维持权重的示例中是可以的。例如,良好的性能可以通过将滤波器逻辑构造成根据以下算式生成滤波后输出值来实现:

因为我们将像素值Cn包括在来自两个方向的滤波后值,所以它被包括两次,因此我们减去像素值Cn

这样,帧600的行601中的各像素的滤波后输出值可以被形成并存储在存储器406处。通过在帧的行上重复上述步骤,沿着由帧的行表示的像素序列在第一(例如,水平)方向上滤波的新帧可以被生成并保持在存储器406处。

相似性测度

现在将描述由递归滤波器402和403以及滤波器400的随后行为使用的相似性测度。

给定像素的相似性测度表示该像素与关于滤波器的操作方向的之前的像素之间的某一关系。例如,当滤波器沿着行601沿左至右方向操作时的递归滤波器402处的图6中的像素604的相似性测度将为像素604的特性与之前的像素603的对应特性之间的关系的测量。当滤波器沿着行601沿右至左方向操作时的递归滤波器403处的图6中的像素604的相似性测度将为像素604的特性与之前的像素605的对应特性之间的关系的测量。在其他示例中,之前的像素可以不为紧在执行滤波的像素之前的像素(例如,之前的像素在所滤波的行或列中可以领先两个或更多个像素)。在各滤波后值根据多于两个像素值形成的情况下,可能存在关于像素与两个或更多个其他像素之间的关系对于像素形成的多于一个相似性测度。给定像素对之间的相似性测度可以为相同的,不管滤波方向如何,或者给定像素对之间的相似性测度可以为不同的。

在图4a和图4b中所示的示例中,相似性生成器405被构造成形成独立于滤波方向的各像素对的相似性测度(并且在这里所述的情况下,该相似性测度关于相邻像素而形成)。相似性生成器计算个像素对的相似性测度,使得相似性测度可在滤波期间用于滤波器400。在其他示例中,相似性测度可以在滤波期间在滤波器400处确定,这在像素对的相似性测度根据滤波方向而不同的情况下可以是有用的。图4a和图4b中示意性示出了相似性生成器,并且相似性生成器可以或可以不形成滤波器400的一部分。

相似性测度可以基于帧的任意合适特性或与这些像素有关的其他数据来生成。例如,相似性测度可以根据以下中的一个或更多个对于相邻像素对来形成:这些像素的颜色之间的色空间的距离测量;像素的亮度的差异测量;到这些像素在各表面的3D场景的帧中表示的各表面的该场景中的深度的差异测量;以及这些像素在3D场景的帧中表示的各表面的法线之间的角度测量。相似性测度通常将被选择被表达为正值(例如,一些所计算量的数量级)。相似性测度可以处于范围[0,1]内,0指示最小的相似性,而1指示最大的相似性。

在深度信息可用于场景的情况下,可以将滤波器400用于在栅格图像中创建场景深度效果,代替执行降噪。这可以通过根据表示与某一限定焦面有关的3D场景的各像素的深度改变递归滤波器402和403的相似性测量d(有效地改变滤波器半径)来实现。

在一些示例中,相似性生成器被构造成根据所滤波帧600的像素的一个或更多个特性来形成各相似性测度。比如,帧600可以为需要降噪的图形或照相机流水线中的图像帧,并且相似性生成器可以被构造成根据相邻像素的一个或更多个特性(诸如它们的颜色或亮度)来形成相似性测度。例如,相似性生成器可以根据色空间中相邻像素的颜色之间的距离来计算相似性测度。相对于图5中所示的示例图形系统,图像帧可以为输出真509,并且滤波器400可以设置在帧生成器505之后的系统中(另外地或另选地设置到图5中所示的滤波器400)。

在其他示例中,相似性生成器可以被构造成根据不存在于像素值本身的、与像素有关的其他数据形成这些相邻像素对的各相似性测度。这可以通过返回到图5中所示的示例性图形系统来理解。图5的系统生成表示从照相机513的视点看的3D场景的帧509。场景几何结构可用于数据存储511处,并且由路径追踪器501追踪的光线识别场景的那些表面的哪个区域贡献于由路径追踪器生成的栅格光照图的各像素。在系统500中,栅格光照图的像素的法向量可以由贡献于该像素的、场景中表面的区域的法向量来给出。类似地,栅格光照图的像素的深度值可以由贡献于该像素的、场景中表面的区域的场景给出。用于在3D场景中计算这种法向量或深度的技术在领域中众所周知。

在法向量和/或场景深度信息可用于滤波器400操作在上面的帧的情况下,有利的是将该信息用于在这些节点之间形成相似性测度。这通常在帧表示3D场景(诸如在图5的图形系统中)时是可以的。将关于场景的这种基础信息用于形成滤波器400中所用的相似性测度使得滤波器能够根据相邻像素是否属于场景的公共特征(例如,公共表面)而执行滤波。因为可能存在帧中的相邻像素碰巧具有相同的颜色/强度但事实上与生成帧的基础场景的不同特征有关,所以这通常更喜欢根据像素的颜色或亮度来形成相似性测度。还可能存在帧中的相邻像素与场景中的同一特征有关但由于该特征的表面装饰而具有非常不同的颜色/亮度的情况。具体地,使用法向量和/或场景深度信息允许滤波器在执行滤波时将目标边界(例如,表面之间的边缘)考虑在内。这可以大幅改善产生的滤波后帧的外观并允许仅使用有限数量的每像素样本(SPP)(光线)以高品质对于场景计算路径追踪的光照。低至4SPP的值在维持合理的品质时是可以的。这使得路径追踪在宽范围的顾客系统(包括具有有限处理资源的移动装置)上是可以的。另外,根据光照图中像素对的亮度和/或颜色的相似性形成相似性测度可以通过在跨阴影边界时引起相似性测度的下降(例如,由于像素对的亮度/颜色像素值之间的大差异位于阴影边界的两侧之一)而贡献于保存阴影边缘。

继续图5的示例性图形系统,相似性生成器被构造成根据(a)场景中由像素表示的点处表面的法向量之间的角度与(b)场景中的这些点的深度之间的差异的测度乘积来形成相邻像素的相似性测度。在帧112的像素115和116为相邻像素的图1中例示了这些测度的示例。场景中点125和126处的法向量(分别贡献于像素115和116)之间的角度由角度150指示。角度150的测度例如可以角度本身或该角度的函数(诸如它的正弦或余弦)。场景中这些点的深度之间的距离由距离151来指示。场景深度之间的距离151的测度可以以任意适当的单位来确定。可以有利的将场景深度表示为1/d,其中,d为场景深度。这可以加速用场景深度执行的计算。在其他示例中,相似性测度可以根据多于两个深度值来确定,深度值变化率的不连续性指示不同的表面方位。

相似性生成器如下形成图6(在该示例中可以为由图5中的路径追踪器501形成的栅格光照图)中所示的帧600中的相邻像素间的相似性测度dn

其中,为场景中由帧600中的第n个像素和第n-1个像素表示的点处的表面的法向量之间的角度的量级的测度,并且为场景中由帧600中的第n个像素和第n-1个像素表示的点处的深度之间的差的量级的测度。

场景表面的法向量和/或场景的深度信息可以源于可用于图5中所示的图形系统500中的场景几何结构511。场景的法向量和/或场景深度值可以在图形流水线的初期对于场景预计算,使得需要的数据可用于相似性生成器以计算dn。这在滤波阶段可以节省访问场景几何结构数据511所需的带宽。

在上述算式(1)和(2)中,如果常数α1和α2的值被选择为使得常数相差大幅小于α1或α2二者之一的大小的量,则是有利的。类似地,如果上述算式(4)和(5)中的常数α3和α4的值被选择为使得常数相差大幅小于α3或α4二者之一的大小的量,则是有利的。对于处于量级0.8的αi的值,已发现0.001至0.01量级的差异有效,例如,差异至少可以为小于αi值的大小的量级。通过仔细选择常数α1和α2、α3和α4,在数据上沿不同方向操作的两个滤波器的“半高斯”响应组合,使得滤波器400展示出高斯特性,但不需要执行真实高斯滤波所需的大量处理资源。因此,滤波器400在帧的像素上执行高斯滤波的高速和/或低功率另选方案。

图7中经由简单示例例示了滤波器400的操作。图7示出了帧700,该帧700描绘了悬浮于上面滤波器400被构造成操作的另外平面白色帧中的红色球702。在该示例中,滤波器400被构造成对像素的红色通道值进行操作,并且基于场景中由这些像素表示的点的场景深度对于各相邻像素对计算相似性测度。递归滤波器402从左向右对帧中的行701的像素进行操作,以生成行的滤波后像素值704。类似地,递归滤波器403从右向左对帧中的行701的像素进行操作,以生成行的滤波后像素值705。

如由递归滤波器生成的各像素的滤波后值取决于关于滤波器的操作方向的之前的像素的滤波后值,并且该之前的像素的滤波后值反过来取决于它的之前的像素的滤波后值。因此,沿各个递归滤波器操作的方向消除描绘红色球的像素的红色。这可以根据例示了所累积样本值的权重的图7中所示的曲线来理解:滤波器402如曲线704所示的从左向右操作,而滤波器403如曲线705所示的从右向左操作。相邻像素之间的相似性测度dn确保球的红色不混入白色背景中,且球的形状模糊。这是因为球边缘的两侧之一上的像素之间的相似性测度将接近于零,以使得滤波器随着穿过边界而有效地重新开始滤波。不论相似性测度是基于表面法线、场景深度还是相邻像素的颜色的相似性,这都将是真实的。

通过合计权重值704和705,滤波器逻辑404生成权重值706,如果由递归滤波器使用的相似性测度dn对于各相邻像素对相等且递归滤波器402和403以相同的行701的像素权重开始,则该权重值706将是对称的。可以看出,权重值块目标702高且较恒定,这意味着滤波器的输出将源于若干像素值的平均值。这即使在目标702的边缘处也是真实的,这示出了滤波器能够有效地滤波直到目标的边缘,但相似性测度放置目标702的颜色模糊成背景700。

由有关图1中所示的场景100的图2和图3a-图3g例示了更复杂的示例。图2是从照相机101的视点看的、由用于图1中所示的场景的图5的图形系统500的路径追踪器501生成的栅格光照图200的示例。栅格光照图200的各个像素表示该像素处从引导到对于场景限定的照相机101的一个或更多个路径追踪光线接收的照度。如讨论的,各个像素可以表达它接收的照度,例如作为颜色或亮度像素值。

图3a-图3g示出了例示了从像素202至像素203的栅格光照图的行201的像素值的滤波的一系列图。在附图中,像素值为亮度值(例如,在栅格光照图限定在YUV色空间中的情况下为各像素的亮度或Y值)。线301为像素202与像素203之间的栅格光照图的未滤波像素值的图,可以看出,线301包括由于由路径追踪器501执行少量的每像素样本而产生的大量噪声。从图2可以看出,从像素202值像素203的一段像素值从表示从打磨大理石柱104接收的光线的像素穿到表示从深灰色石壁117接收的光线的像素。两个表面之间的过渡发生在图1和图2中所示的边缘111处,并且,在场景的完美渲染中,该过渡将对应于由图3a中的曲线302指示的像素值的真实基础下降。

边缘111的存在指示边缘的两侧之一的像素之间的相似性将低。这由作为沿着从像素202至像素203的一段像素值的相似性测度的图的图3b中的线303来例示。例如,考虑当相邻像素的相似性由这些像素的表面法线之间的角度来确定时的情况。图2中边缘111的两侧之一的像素的法线之间的角度将大致为90度(一个像素将表示柱104的一部分,并且一个像素将表示墙壁117的一部分)。相似性测度例如可以被选择为cosθ,其中,θ为法线之间的角度,使得由相邻像素表示的点处的表面法线之间的大约90度的角将产生接近零的相似性测度。

跨边缘111相似性测度的降低使得(根据算式1-3)关于沿L-R方向的滤波计算的像素权重以图3c中的线304所示的方式突然下降。类似地,(根据算式4-6)关于沿R-L方向的滤波计算的像素权重以图3e中的线307所示的方式突然下降。图3d和图3f中示出了对沿L-R和R-L方向形成的滤波后像素值的影响。

图3d中的线305是根据这里所述的原理(例如,算式1-3)由滤波器400的递归滤波器402沿L-R方向生成的滤波后亮度值的图。可以看出,滤波后线305消除存在于线301中的许多噪声。此外,因为由递归滤波器402执行的滤波使用可用于场景100的法向量和深度信息,所以可以看出,滤波后线305紧密地跟随场景中的真实基础亮度,不将接收从大理石柱反射的光线的像素的高亮度值推到从更暗墙壁接收光线的像素的更低亮度值。跨边缘111之前的噪声中的大部分由滤波去除,但在关于滤波器操作的方向跨边缘之后,一些噪声306剩下。这是滤波器由类似值的降低和因此来自相邻像素值的更低平滑贡献“重置”的结果(参见算式1和2)。

图3f中的线308为是根据这里所述的原理(例如,算式4-6)由滤波器400的递归滤波器403沿R-L方向生成的滤波后亮度值的图。线308显示与线305相同的特性,但噪声309跟随由跨边缘111的低相似性引起的滤波器“重置”在关于滤波器方向的边缘之后发生且因此到边缘的左边。

图3g中的线310为通过组合递归滤波器402和403处所形成的滤波后像素值在滤波器逻辑404处生成的滤波器400的滤波后输出的图。可以看出,图3d和图3f中的噪声306和309中的大部分在输出310中被衰减,以在准确追踪由于边缘111而产生的亮度值的基础急下降的区域311中生成平滑滤波后输出。这是因为噪声区域306对应于曲线307中的低权重区域。由此,来自递归滤波器402/403的噪声信号被来自输出310中占主要地位的其他对的滤波器的更干净信号抑制。

返回到图5中所示的示例,如果滤波器400被设置成对在与由栅格化器504生成的栅格图像在帧生成器505处组合之前的、由路径追踪器501生成的栅格光照图执行滤波,则是特别有利的。对于给定索取锐度的输出帧509,这允许滤波器400被构造成例如通过选择比如果滤波器400相反被设置成对包括光照和纹理信息这两者的图像帧509进行操作则将可以的值更高的等式(1)、(2)、(4)以及(5)的常数值来执行更大程度的平滑。换言之,可以在不模糊由栅格图像贡献的纹理的情况下执行更大程度的降噪。

这允许在路径追踪器501处仅使用少量(例如,4个)的每像素样本时实现良好的性能。可以对与栅格光照图在帧生成器505处组合之前的栅格图像或对帧生成器505的输出处的最终图像执行使用传统滤波器或使用这里所述的滤波技术的另外滤波。例如,可以执行基于场景深度引入模糊的滤波。

像素权重

因为像素权重的使用使得滤波器能够凭借像素值(例如,像素的颜色或亮度)正确的置信度的了解来操作,所以确保滤波器的良好性能。在这里所述的示例中,像素权重被设置成基于像素的颜色分量的齐次坐标系的第四坐标,但在其他示例中,像素权重可以独立于像素的颜色分量作为各像素的参数来处理。

粗略地说,因为在执行递归滤波时跨最后的边缘(在相似因子将必须一定程度上重置权重坐标时),像素权重的使用还提供给滤波器所平均的有效像素数的测度。具有低权重的像素比具有高权重的像素对所累积平均值的贡献低。例如,具有70%权重的像素向所累积平均值仅可以贡献它颜色的70%(假设)。这种像素在像素权重中可以被表示为像素0.7。具有100%权重的像素可以被看作是全像素。

像素的权重可以为像素值的质量或像素值的准确性的置信度的任意合适测度。例如,在降噪滤波器的情况下,像素的权重可以与来自该像素的预期噪声贡献成反比。各权重通常将取任意正值。通过使用合适的权重,滤波器400允许具有高置信度的像素值比具有低置信度的像素值更多地影响邻近像素。该行为可以根据上述算式(1)、(2)、(4)以及(5)来理解。

像素的权重可以为贡献于像素的像素值的光线数量的测度。另选地或另外地,像素的权重可以为像素中噪声的测度,更高的权重对应于更低的噪声,这种参数可以根据例如包括感兴趣像素的一组像素(例如,所滤波行/列)或属于基础3D场景中的公共特征的像素值的变化的统计分析对于像素来确定。另选地,待滤波帧的各像素的权重可以最初对于所有像素设置相同的值(例如,设置成值“1”),或者设置成帧中的平均噪声的某一测度。

在本示例中,像素的初始权重为贡献于像素的像素值的光线数量的测度。在一个示例中,像素的初始权重可以被设置成在0至1之间取值。例如,如果路径追踪器501被构造成尝试追踪4个每像素样本(SPP),那么各像素的权重可以由实际贡献于像素值的光线数量与每像素样本的数量的比值来给出(即,如果3个光线贡献于给定像素且路径追踪器被构造成以4个SPP操作,那么该像素的权重经纬0.75)。一些所追踪光线将不贡献于像素的值。在其他示例中,像素的初始权重可以取表示贡献于像素的样本的数量(例如,在前述示例中为3个)的任意正值。识别贡献于各像素的样本的数量的信息可以由路径追踪器501提供给滤波器400且保持在存储器401处。

对于帧的像素确定的初始权重以与如由上面算式(1)至(7)描述的颜色或亮度坐标相同的方式来滤波。例如,单独考虑权重坐标,递归滤波器402(例如,滤波器408处)将被构造成根据以下算式来更新第n个像素的初始权重wn

其中,α1为常数,dn为第n个像素与第(n-1)个像素之间的相似性测度,并且为第(n-1)个像素的第一中间滤波后权重。

类似地,递归滤波器402(例如,滤波器409处)将被构造成根据以下算式来更新第n个像素的初始权重wn

其中,α2为常数,dn为第n个像素与第(n-1)个像素之间的相似性测度,并且为第(n-1)个像素的第二中间滤波后权重。

各像素的第一中间滤波后权重和第二中间滤波后权重可以由以下算式在滤波器402处(例如,在组合单元414处)组合,以形成左右方向上的滤波后权重

其中,

β1=1-α1

β2=1-α2

以类似方式,可以根据算式4至6沿右左方向形成滤波后权重。这种滤波例如可以在递归滤波器403处执行。然后,如此形成的滤波后权重可以在上述的滤波器逻辑404处根据算式7来组合,以给出各像素的输出滤波后权重。

第一权重和第二权重由于α1和α2的不同值而在递归滤波器的操作期间彼此导出。为了使滤波器与存储器401之间的复制最小化,像素的第一中间权重和第二中间权重优选地在递归滤波器402形成该像素的第一中间滤波后像素值和第二中间滤波后像素值时且在所需数据存在于滤波器的工作存储器/寄存器中时由递归滤波器402更新。

从算式(13)产生的像素权重可以存储在存储器406处以供随后使用。

另外方位的滤波序列

为了避免将伪影引入到由滤波器400沿第一方向(在上面的示例中为沿着帧的行)滤波的帧中,有利的是随后在具有第二方位(例如,沿着帧的像素列)的序列上以与上述相同的方式对帧进行滤波。该第二阶段滤波可以由与上述滤波器400类似构造的第二滤波器来执行,或者滤波器400可以被构造成以任意合适的方式(例如,连续地)执行第一阶段滤波和第二阶段滤波这两者。现在,将再次参照图6描述第二阶段滤波。

在上述示例中,滤波器400逐行地形成帧600的像素的滤波后输出像素值并且将这些输出值存储在存储器406处。例如根据算式(7)生成的输出像素值表示沿着行滤波的帧600。作为沿第一方向(例如,沿水平方向)执行的滤波的输出生成的输出像素值优选地用作在具有第二方位(在该示例中为沿着帧的像素列)的帧600的像素序列上滤波的起点。输出像素值包括根据算式(7)对于权重坐标生成的输出权重。在其他示例中,相同的初始像素值和权重可以用作滤波器400类似于滤波器400构造的第二滤波器的输入,最终输出帧通过将由两个方位的像素序列上的滤波产生的滤波后图像融合在一起来产生。

通过将输出像素值提供为到滤波器400的输入代替未滤波像素值Cn,并且将滤波器400构造成在帧600的列上执行滤波,滤波器400可以被构造成像素值被沿第一方位和第二方位这两者滤波的最终滤波后帧。该方法可以消除在仅沿单个方位滤波时看到的伪影(诸如输出帧中的水平拖尾),并且可以实现卓越的滤波性能。在该方法下,用于代替上面给出的算式中的Cn。相同或不同的常数可以由滤波器400用于算式(1)至(11)中。

关于图6和算式(1)至(11),在上述算式和说明中,左边可以变高,并且右边可以变低,反之亦然。例如,考虑沿着帧600的列602滤波。递归滤波器402可以被构造成沿着由帧的列表示的像素序列沿上下方位滤波,使得在滤波器402的操作下,像素值604根据算式(1)至(3)接收来自像素值606的贡献。递归滤波器403可以被构造成沿着由帧的列表示的像素序列沿下上方位滤波,使得在滤波器403的操作下,像素值604根据算式(4)至(6)接收来自像素值607的贡献。在沿着帧600的列执行滤波时,滤波器400可以沿正交于之前滤波阶段的右左方位的第二上下方位执行之前滤波后的像素值的降噪。

以该方式,帧600的各像素的最终滤波后输出值可以被形成为用作由滤波器400生成的滤波后输出帧。各像素的最终滤波后输出值随着算式(7)在第二方位上的第二阶段滤波期间由滤波器逻辑404执行而由算式(7)的输出给出,并且其中,第二阶段的输入像素值为来自第一阶段滤波的输出像素值

其中,“L-R”被“U-D”代替,以反映在第二阶段,沿着由帧的列表示的像素序列沿上下方位在帧600中执行滤波。

在图5中所示的示例中,包括像素值的输出帧将表示由帧生成器505用于生成输出帧509的滤波后栅格光照图。使用齐次色坐标表示的像素值可以在输出或通过将各分量除以权重值w之前转换成传统表示(例如,三个分量R、G以及B)。

未加权滤波

在另选实施方式中,滤波器400可以被构造成在不使用权值(例如,像素值C不包括像素权重且也不是被提供描述像素的色值的置信度的单独权重)的情况下执行滤波。这产生更多噪声的滤波后图像,但是可以降低滤波的复杂性,并且潜在地提高速度/降低滤波器的处理要求。在不使用权重的情况下根据这里所述的原理执行滤波需要上面给出的方程的一些修改。

使用上面α1、α2以及dn的定义,定义了以下新常数:

β1=1-α1dn

β2=1-α2dn

γ1和γ2用于创建高斯状卷积函数。δ反映了当前像素对于由沿两个方向滤波像素产生的组合像素值的贡献,该贡献从组合像素值减去。δ为被选择为使得滤波后信号的平均值与原始信号平均值严密匹配的校正因子。

然后,上面的算式(1)变成:

并且,算式(2)变成:

因此,来自第一滤波器和第二滤波器的像素值在类似于算式(3)中的组合变成:

并且,来自第一滤波器和第二滤波器的像素值在类似于算式(7)中的组合变成:

如果沿第二方向执行滤波且沿不同方向操作的滤波器的输出可以以上面加权示例中所述的任意方式组合,则可以使用类似的算式。

滤波器400可以被构造成对任意合适的像素值(包括例如以RGB或YUV格式表达的颜色;颜色的一个或更多个分量(诸如特定颜色通道(例如RGB色空间的红色通道)的值);以及亮度值(诸如亮度(例如,YUV色空间的Y分量)))进行操作。如果对于帧的一个或更多个颜色通道单独执行滤波,则各像素的滤波后颜色分量可以被组合为形成滤波后颜色帧。

这里所述的帧的滤波可以对于被划分成多个交叠或非交叠块的帧逐块执行。

滤波器400可以实施在硬件、软件或这两者的任意组合中。图形系统500可以实施在硬件、软件或这两者的任意组合中。在一个示例中,递归滤波器和/或滤波器被设置成用于图形处理单元(GPU)处执行的代码。GPU处可以支持多个代码实例,以提供多个滤波器,该多个滤波器被设置成对帧的像素序列并行操作,以执行该帧的滤波。代码可以被设置成将GPU的计算单元适当地构造成执行这里所述的滤波。

图8中示出了图形系统处操作的滤波器400的数据和功能元件的示例性结构。基于待滤波场景的输入像素生成由滤波器使用的若干图:

·光照图801,该图描述了由于场景中的光源而产生的场景中的输入像素的颜色/亮度—该图例如可以由路径追踪器501以这里所述的方式来生成;

·法线图802,该图描述了各输入像素的法向量—该图例如可以根据场景几何结构在路径追踪器501或栅格化器504处生成;

·深度图803,该图描述了各输入像素的反深度—该图例如可以根据场景几何结构在路径追踪器501或栅格化器504处生成;

·栅格图像804,该图像描述了施加光照之前各像素的初始颜色—该图像通常将由纹理映射和栅格化(例如,由图5中的纹理数据路径508)产生;

·水平/竖直相似性图,这些图描述了根据所选相似性测度的水平/竖直像素之间的相似性——这些图可以在着色器处生成。

这些图可以被生成为使得各图可用于适当时间的滤波器。图可以同时生成。

在本示例中,相似性测度为上述算式(8)中所定义的相似性测度,并且取决于相邻像素的法线和深度值。相似性生成器805对法线和深度图802和803操作,以生成水平相似性图806和竖直相似性图807。相似性生成器可以在图形系统的着色器处操作。水平滤波器808对应于图4b中所示的滤波器402,并且对光照图801和水平相似性图806操作,以形成沿水平方位滤波(第一次穿过)后的更新后光照图809。

水平滤波器810对应于图4b中所示的滤波器403,并且对更新后的光照图809和竖直相似性图807操作,以形成沿竖直方位滤波(第二次穿过)后的更新后光照图811。光照图811为滤波器400的输出光照图,并且在乘法器812处与来自栅格图像804的适当像素颜色组合,以形成最终帧813,该最终帧813表示从标称照相机的视点看的纹理映射场景,并且光照有路径追踪施加于最终帧813。可以对最终帧执行各种形式的后处理814。

颜色可以为与帧中的像素的外观有关的任意特性,包括描述根据某一颜色模型(例如,RGB或YUV元组)描述的像素的颜色、像素颜色的一个或更多个分量(例如,红色通道参数)、颜色的方面(诸如颜色的亮度、饱和度、辉度、明度、色度或透明度)的一个或更多个参数。黑色、白色以及灰色的阴影为颜色。像素值可以为颜色。

像素可以为具有输送关于帧的外观的信息的关联的像素值的栅格帧的任意元素。帧由有序的一组像素组成。为了本公开的目的,像素不需要与帧的屏幕分辨率有关。例如,帧可以具有1280×960第一元素的屏幕分辨率,但该帧的透明度信息可能仅定义为640×480第二元素的分辨率;如果对透明度信息进行滤波,那么帧的640×480第二元素的透明度值表示像素的像素值和第二元素。

图9是例示了如图4a中所示的滤波器400对帧的像素序列(例如,行或列)的操作的流程图。对于序列的各像素,滤波器沿左至右方向902形成滤波后像素值,并且沿右至左方向903形成滤波后像素值。相应滤波后像素值根据所接收像素的值(例如,像素的初始颜色信息)和由像素与序列中它的之前的像素之间的相似性测度如由步骤904和905所示的调整的之前的像素的值来形成。例如,沿左至右方向902滤波可以根据算式(1)至(3)来执行,使得两个中间滤波后值和被形成且在步骤902中根据算式(3)组合,以形成左至右方向上的像素的滤波后值。类似地,例如,沿右至左方向903滤波可以根据算式(4)至(6)来执行,使得两个中间滤波后值和被形成且在步骤903中根据算式(6)组合,以形成右至左方向上的像素的滤波后值。

对可以从输入像素913的存储选择的所接收像素901执行沿左至右方向906的滤波。在沿从左至右方向902形成了滤波后像素值时,滤波后像素值例如可以存储917在行存储918中。各所接收的像素901为像素序列(例如,帧的行或列)中的像素。可以按顺序处理序列的各像素,使得处理序列中的像素,然后,接收序列中的下一像素912以滤波,直到沿左至右方向对序列中的所有像素进行滤波为止。

在沿从左至右方向完成了像素序列的滤波时,可以沿右至左方向处理该序列,沿适当顺序从输入像素913的存储接收914序列的像素。

在步骤908处,组合沿左至右方向和右至左方向形成的滤波后像素值以形成输出像素值909。给定像素的左至右滤波后值可以从行存储918读出。滤波后像素值的组合例如可以根据算式(7)来执行。更普遍地,组合可以为左至右滤波后值和右至左滤波后值的平均值(诸如平均数)。输出像素值909例如可以表示滤波之后的各像素的颜色。如上面所讨论的,各像素值还可以包括权重,该权重可以表示初始像素值(例如,如由路径追踪确定的像素的初始颜色)所表达的像素特性的置信度测度。

在920处,滤波器检查像素序列沿右至左方向是否完成(例如,滤波像素是否是帧的行或列中的最后一个像素)。如果完成,则滤波器400开始对帧的下一序列进行滤波,直到对帧的所有序列进行滤波为止,因此,帧的滤波完成。如果未完成像素序列,则接收序列中的下一像素919以滤波。当沿右至左方向对序列中的所有像素进行滤波时,滤波器可以移至帧的下一序列911上。

在其他示例中,可以首先执行沿右至左方向的滤波,并且存储结果。然后,可以执行沿左至右方向的滤波,并且结果与来自右至左滤波器的所存储结果组合,以产生输出像素。

如由图9中的可选预滤波器步骤915和916指示的,滤波器400可以对所接收的像素值执行预滤波。现在将描述预滤波。预滤波可以与滤波器400的任意构造一起使用,包括与这里所述的滤波器400的任意示例一起使用。

预滤波

在根据这些像素值的相似性形成像素对的相似性测度d的示例中,可以有利的是在将像素值用于形成相似性测度之前对像素值进行预滤波。像素值例如可以为像素的亮度或颜色测度(其中,像素的颜色可以提及它的颜色分量中的一个或更多个)。预滤波的使用以锐利阴影的一些模糊为代价提高阴影边缘处的降噪。可以另外地根据其他像素特性(诸如到像素在场景的帧中表示的各表面的3D场景中的深度的差异测度和/或这些像素在3D场景的帧中表示的各表面的法线之间的角度的测度)的相似性来形成像素对的相似性测度。

在上述示例中,第一方向上的像素的第一递归滤波根据算式(1)来执行:

其中,α1为常数,dn为第n个像素与第(n-1)个像素之间的相似性测度。类似滤波使用根据算式(2)、(4)以及(5)的相似性测度来执行。各这种滤波将得益于使用相似性测度,该相似性测度以下面描述的方式使用预滤波后的像素特性来计算。

为了根据这些像素值的亮度或颜色相似性形成相似性测度dn,比较第n个像素和第n-1个像素。第n-1个像素值可以滤波后的形式用作对之前的像素操作的递归滤波器的输出,但没有第n个像素的等效滤波后形式可用。如果未滤波第n个像素,那么存在于初始像素值中的噪声可能导致相似性测度中的噪声。

为了解决初始像素值中的噪声问题,在本示例性示例中,可以对当前第n个像素的像素值Cn进行预滤波,以消除存在于该初始像素值中的噪声。预滤波后的像素值用于相似性测度的形成中,并且还可以可选地由递归滤波器用于代替初始未滤波像素值Cn。预滤波可以以任意适当的方式且对像素值的一个或更多个分量或在形成相似性测度的计算时表示像素值的参数来执行。如果相似性测度通过计算色空间中像素对的色值之间的距离来形成,那么可以对贡献于该距离的当前像素值的一个或更多个分量进行预滤波;如果相似性测度通过计算像素对之间的亮度差来形成,那么可以对表示当前像素的亮度的至少一个参数(例如,当前像素值的亮度分量)进行预滤波。预滤波可以仅对表示像素值的特性的参数或对当前像素值用于计算相似性测度的那些分量执行。将理解,这里对像素预滤波的参考是对预滤波至少像素的或表示像素的、用于计算相似性测度的那些分量/参数的参考。

使用相似性测度的计算对像素特性进行预滤波可以在任意合适类型的滤波器(诸如高斯滤波器或指数滤波器)处执行。优选的是,用于对当前像素进行预滤波的滤波器具有小滤波半径。例如,已发现3×3像素的滤波半径提供良好的性能。滤波器的半径为描述滤波器的滤波函数的宽度测度,例如,半径可以为关于贡献于给定滤波后像素值的各像素或若干像素的区域测度。滤波半径可以以任意适当的方式(包括:作为由滤波器表示的滤波函数的宽度测度(例如,滤波函数的半峰全宽);和作为帧中贡献于对于对象像素生成的滤波后值的两个像素间的最大距离的测度)来表达。

预滤波可以包括取位于滤波半径内的像素(例如,位于3×3方栅中的这九个像素,当前像素处于中心)的相关像素值或特性的简单平均值(例如,平均数)。预滤波可以包括计算位于滤波半径内的像素的加权平均值,像素的权重根据某一预定分布(例如,当前像素分配有比3×3方栅中它的8个相邻像素更高的权重,以接近集中于当前像素的高斯或其他滤波包络)来定义。

另选地,预滤波可以通过使用具有短指数响应(即,具有较小α值)且不使用相似性测度的、类似于由算式1描述的滤波器的递归滤波器来执行。这种递归滤波器不像上述的二维(例如,3×3)滤波器,沿一个维数执行预滤波。

在上述的示例中,可以设置另外的滤波器,以执行像素预滤波。这种另外的滤波器例如可以设置在图4a或图4b的滤波器400处。

在上面关于图4a描述的示例中,设置具有单个滤波器对(递归滤波器402的滤波器对408和409)的滤波器。在在上面关于图4b描述的示例中,设置具有沿各方向操作的滤波器对(递归滤波器402的滤波器对408和409,以及递归滤波器403的滤波器对410和411)的滤波器。可以有利的是使用图4a或图4b二者之一中所示的结构且在不引入任何另外滤波器的情况下执行预滤波。这使得设计的复杂性最小化。现在将关于图4b更详细地描述这一点。

例如,递归滤波器402和403中的每一个的滤波器对的第一滤波器(例如,滤波器408和410)可以用于执行像素的预滤波,递归滤波器402和403中的每一个的滤波器对的第二滤波器用于执行递归滤波(例如,滤波器409可以根据算式(1)执行递归滤波,并且滤波器411可以根据算式(4)执行递归滤波)。被设置成执行预滤波的第一滤波器可以被构造成与第二滤波器相比具有小滤波半径。例如,第一滤波器的滤波半径可以为比第二滤波器的滤波半径至少小一个量级。为了保存帧(例如,光照图或栅格图像)中的细节,第一滤波器的滤波半径可以不多于20个像素、不多于15个像素、不多于10个像素、不多于5个像素、不多于3个像素或者不多于2像素。第二滤波器可以具有无限滤波半径(例如,第二滤波器可以为指数滤波器(具有衰减1的该滤波器将表示简单的累加器))。

各像素的滤波后值(例如,滤波器逻辑404的输出)可以被计算为来自递归滤波器402和403的、沿第一方向和第二方向的各像素的滤波后输出的简单平均数(简单地减去两次计数的像素值本身)。在使用像素预滤波的示例中,可以或可以不使用允许滤波器将像素的值的置信度考虑在内的如上所述的像素权重。如果使用像素权重,则平均数的计算变成根据上述算式(7)的简单和。这是因为权重值在滤波期间在像素上累积,正如像素值本身做的,并且齐次色向量{r,g,b,w}表示色空间中的色向量{r/w,g/w,b/w}。

假如第一滤波器具有小滤波半径,则该滤波结构可以产生良好的性能,特别是对于噪声图像—即使沿各方向仅执行滤波一次且即使在第二滤波器半径为无限时,这也是真的。

预滤波可以在二维(例如,在3×3方栅上)或一维(例如,在沿要执行滤波的方向上的3像素行)中执行。

与根据相邻像素的法线和/或深度值的相似性计算相似性测度结合,根据相邻像素的像素值的相似性进一步计算相似性测度使得能够在保存分离不同场景深度的特征之间的不同定向的表面和/或边界的阴影边界以及边缘时执行滤波。预滤波的使用进一步提高靠近阴影边界的降噪。

在执行预滤波步骤915和016的图9中所示的示例中,在接收序列901的像素时,滤波器400还被构造成对所接收的像素值901和914进行预滤波。预滤波后像素值用于生成在904和905处调整“之前”像素的方向相似性测度。在图9中所示的特定示例中,在902和903处,可以使用所接收像素的初始像素值而不是它的预滤波后像素值来执行滤波。这贡献于在将递归滤波器的输出与像素值的噪声隔离的同时维持由滤波器处理的帧中的细节。另选地,滤波步骤902和903可以使用预滤波后像素值来执行。步骤902和903处的像素滤波可以为如上所述的递归滤波。

图4a和图4b的滤波器、图5的图形系统以及图8的结构被示出为包括若干功能块。这仅是示意性的且不旨在限定这种实体的不同逻辑元件之间的严格划分。各功能块可以以任意适当的方式来设置。要理解,这里被描述为由滤波器形成的中间值不需要由滤波器在任何点物理地生成,仅可以表示方便描述由滤波器在它的输入与输出之间执行的处理的逻辑值。

通常,上述任意功能、方法、技术或分量可以实施在软件、固件、硬件(例如,固定的逻辑电路)或其任意组合中。术语“模块”、“功能”、“分量”、“元件”、“单元”、“块”以及“逻辑”在这里可以用于普遍表示软件、固件、硬件或其组合。在软件实施方案的情况下,模块、功能、分量、元件、单元、块或逻辑表示在处理器上执行时执行指定任务的程序代码。这里所述的算法和方法可以由执行使得处理器执行算法/方法的代码的一个或更多个处理器来执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以将磁、光以及其他技术用于存储指令或其他数据和可以由机器访问的其他存储装置。

如这里所用的术语计算机、程序代码以及计算机可读指令提及用于处理器的任意种类的可执行代码(包括以机器语言、解释语言或脚本语言表达的代码)。可执行代码包括二进制代码、机器码、字节码、定义集成电路的代码(诸如硬件描述语言或网络列表)以及以变成语言代码(诸如C、Java或OpenCL)表达的代码。可执行代码例如可以为在虚拟机或其他软件环境处适当执行、处理、解释、编译、执行时使得支持可执行代码的计算机系统的处理器执行代码所指定的任务的任意种类的软件、固件、脚本、模块或库。

处理器、计算机或计算机系统可以为具有处理能力使得可以执行指令的任意种类的装置、机器或专用电路或其集合或部分。处理器可以为任意种类的通用或专用处理器(诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等)。计算机或计算机系统可以包括一个或更多个处理器。

定义集成电路的代码可以以任意方式(包括作为网络列表、用于构造可编程芯片的代码以及作为定义任意级的集成电路的硬件描述语言(包括作为寄存器传送级(RTL)代码、作为高级电路表示(诸如Verilog或VHDL)以及作为低级电路表示(诸如OASIS和GDSII)))来定义集成电路。当在被构造成生成集成电路的显示的适当装配的计算机系统处处理时,定义集成电路的代码可以使得计算机系统生成由代码表达的集成电路的显示。这种计算机系统可以使得例如通过提供用于控制被构造成制造集成电路或制造集成电路的中间表达(诸如光刻掩膜)的输出来生成集成电路的显示。

逻辑上定义集成电路的更高级表示(诸如RTL)可以在计算机系统处处理,该计算机系统被构造成在为了生成由表示这样定义的集成电路的显示而包括电路元件的定义和用于组合这些元件的规则的软件环境的场境中生成集成电路的显示。

与通常软件在计算机系统处执行以便定义机器的情况相同,为了使被构造成生成集成电路的像是的计算机系统执行定义集成电路的代码以便生成该集成电路的显示,可以需要一个或更多个中间用户步骤(例如,提供命令、变量等)。

申请人在此孤立地公开了这里所述的各独立特征和两个或更多个这种特征的任意组合,达到这种特征或组合能够鉴于本领域技术人员的普通常识整体基于本规范而进行的程度,不管这种特征或特征的组合是否解决这里所公开的任何问题。鉴于上述描述,对本领域技术人员将显然的是,可以在本发明的范围内进行各种修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1