在像素内使用多个随机样本进行抗锯齿的基本原因是什么?


12

在图形中,通常在一个像素的范围内获取多个样本,然后将它们组合在一起(最常见的做法是取平均值),以获得最终的样本像素颜色。这具有防锯齿图像的效果。

一方面,这对我来说很有意义,因为您实际上正在做的是在像素代表的区域上整合像素的颜色。按照这种思路,平均“随机”样本似乎是进行蒙特卡洛积分的理想设置。(“随机”可以分层,基于蓝噪声,低差异序列等)

另一方面,从数字信号处理的角度来看,这感觉是错误的(或者至少不像它那样正确)。从这个角度来看,感觉就像我们要进行大量采样,然后使用盒式滤波器(盒式模糊)进行下采样以获得最终像素值。因此,似乎理想的方法是使用Sinc滤波而不是对样本求平均。我可以看到盒式过滤器比按这些思路进行的辛克式思维便宜。

这让我有些困惑。我们正在整合像素区域并进行平均的核心思想是正确的吗?还是我们正在下采样并且应该使用sinc,但是由于快速而使用盒式滤波器?

还是完全其他?

有点相关:光线跟踪中的抗锯齿/过滤


Answers:


9

从信号处理的角度来看,您正在对连续域信号进行采样,并且需要对其进行滤波以消除超出奈奎斯特极限的频率。正是这种过滤导致了在像素区域上的集成,或更广泛地说,是在抗锯齿内核(不需要是盒子)的支持下进行集成。

x,y

现在,您要将其转换为有限数量的像素。就像对音频信号进行数字化处理一样,在对音频信号进行采样时,除非您先消除采样率所施加的奈奎斯特限制以外的频率,否则您将获得混叠。换句话说,您必须摆脱小于像素网格的特征。为此,您可以应用一个低通滤波器。在理想的低通滤波器是正弦函数,但是对于实用性的种种原因,我们使用其他过滤器(不完全排除超过奈奎斯特频率的限制,但他们至少衰减它们)。

f(x,y)k(x,y)

ffiltered(x,y)=f(x,y)k(xx,yy)dxdy

然后可以安全采样图像,因此只需在像素坐标处评估即可获得最终像素值。ffiltered

如果是一个框式过滤器,在像素框中看起来像在其他地方看起来是,那么这简化为仅将积分到像素框中。但是如前所述,盒式过滤器并不是很好,还有更好的选择,例如帐篷式,双三次和高斯式过滤器。kk=1k=0f

无论如何,现在有了积分,我们可以为它使用蒙特卡洛,并将其与我们可能想做的任何其他积分结合起来,例如照明,运动模糊等。通过为每个像素生成根据分布在像素中心周围的样本,我们甚至可以将重要性采样应用于积分中的因子。kk


一如既往的出色答案。
ivokabel

4

实际上,您在做这两件事。您正在对该区域进行积分,并且由于结果仍然是离散样本,因此您正在重构信号以使其连续运行。因此进行高阶滤波。(人眼也是离散采样器,因此它也可以重建信号)

我花了相当多的时间来接受这种解释。帮我的是托尼·阿波达卡(Tony Apodaca)发表的题为TD的传说的论文


谢谢你的链接!该页面上的最后一个链接似乎正深入于此。实际上,您是否偶然知道在框模糊之上进行任何操作是否真的带来了很大的视觉差异?还是会促进融合?
艾伦·沃尔夫

2
它是我见过的3D图形渲染概念的最佳入门书(尽管与基于物理或跟踪的东西无关,但它的意义不大)。经过Sinc滤波的图像比框滤镜清晰得多,外观和感觉都非常模糊。我会收敛吗?
joojaa

看起来该链接现在消失了。您指的是您读过的最好的3d入门书?
johnbakers
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.