射线追踪中的抗锯齿/过滤


20

在光线跟踪/路径跟踪中,最简单的抗锯齿图像方法之一是对像素值进行超采样并取平均结果。IE浏览器 而不是通过像素中心拍摄每个样本,而是使样本偏移一定量。

在互联网上搜索时,我发现了两种略有不同的方法:

  1. 根据需要生成样本,并使用过滤器权衡结果
    • PBRT就是一个例子
  2. 生成具有等于过滤器形状分布的样本


产生并称重

基本过程是:

  1. 根据需要创建样本(随机,分层,低差异序列等)
  2. 使用两个样本(x和y)偏移相机光线
  3. 用射线渲染场景
  4. 使用过滤器功能和参考像素中心的样本距离计算权重。例如Box过滤器,Tent过滤器,Gaussian过滤器等) 滤镜形状
  5. 将权重应用于渲染中的颜色


生成过滤器形状

基本前提是使用逆变换采样来创建根据滤波器形状分布的采样。例如,以高斯形状分布的样本的直方图将是:
高斯直方图

可以完全完成此操作,也可以将功能合并到离散的pdf / cdf中。smallpt使用帐篷过滤器的确切逆cdf。装箱方法的示例可以在这里找到


问题

每种方法的优缺点是什么?为什么要在另一个上使用一个?我可以想到几件事:

生成和加权似乎是最可靠的,它允许将任何采样方法与任何过滤器进行任意组合。但是,它要求您跟踪ImageBuffer中的权重,然后进行最终确定。

由于您不能使用负pdf,因此“以过滤器形状生成”只能支持正过滤器形状(即,不支持Mitchell,Catmull Rom或Lanczos)。但是,如上所述,由于您无需跟踪任何权重,因此实现起来更容易。

但是,最后,我想您可以将方法2视为方法1的简化,因为它本质上是使用隐式Box Filter权重。


只是大声思考...您能否分别对滤波器的负部分建模以生成两组样本,其中一组被视为正样本,另一组被视为负样本?这会允许您的第二种方法使用任意过滤器(以过滤器的形式生成)吗?
trichoplax

也许?Lemme摆弄了一下
RichieSams '16

1
好的,如果跟踪函数的零,则可以将输出abs()吸收到pdf中。然后在采样时,您可以检查是否为阴性。此处的示例代码:gist.github.com/RichieSams/aa7e71a0fb4720c8cb41
RichieSams,2016年

Answers:


9

关于此主题,2006年有一篇出色的论文,《过滤器重要性采样》。他们提出了您的方法2,研究其性能,并普遍赞成该方法。他们声称,该方法可提供更平滑的渲染结果,因为它会加权所有对像素有贡献的样本,从而减少最终像素值的差异。这是有道理的,因为这是蒙特卡洛渲染中的一个普遍准则,即重要性采样比加权采样的方差低。

方法2还具有比较容易并行化的优势,因为每个像素的计算都独立于所有其他像素,而在方法1中,采样结果在相邻像素之间共享(因此,当像素在所有像素之间并行化时,必须以某种方式进行同步/通信)多个处理器)。出于同样的原因,与方法1相比,使用方法2进行自适应采样(图像的高方差区域中的样本更多)更容易。

在本文中,他们还进行了Mitchell过滤器实验,从过滤器的abs()进行采样,然后用+1或-1加权每个样本,就像@trichoplax建议的那样。但这实际上增加了方差,并且比方法1差,因此他们得出结论,方法2仅适用于正滤波器。

话虽如此,本文的结果可能无法普遍适用,哪种采样方法更好取决于场景。我写了一篇博客文章来调查这个问题在2014年独立地使用合成的“图像函数”而不是完整渲染,并发现方法1由于更平滑地对高对比度边缘进行平滑处理,因此在视觉上提供了令人愉悦的结果。Benedikt Bitterli也对此发表评论,他的渲染器报告了类似的问题(使用方法2时光源周围的高频噪声过大)。除此之外,我发现这两种方法之间的主要区别在于产生的噪声的频率:方法2给出了更高频率的“像素大小”噪声,而方法1给出了2-3个像素的噪声“颗粒”,但是两者的噪声幅度相似,因此哪种噪声看起来不太糟糕可能是个人喜好问题。


谢谢!这些都是很棒的资源。那么,到底有3种方法?1.生成并称重带有喷溅2.生成并称重而不带有
喷溅

您是否知道有任何论文,博客等探讨如何将“生成”和“权重” splatting 并行化?在我的头顶上方,您可以为每个图块设置互斥量,或者使每个像素都是原子的。
RichieSams

2
@RichieSams实际上,我不知道您为什么要使用“生成和称重而不会产生飞溅”,这似乎比过滤器重要性抽样更糟糕。我以为“产生并权衡”意味着会出现飞溅。至于喷溅的并行处理,一种方法是将图像分割为多个图块,但为每个图块提供2×3像素的边框以捕获与图块边缘交叉的图块。然后在最后一遍中,将带边框的图块叠加在一起,形成最终图像。
内森·里德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.