Answers:
理论上理想的用于离散采样数据的抗混叠滤波器是一个Sinc滤波器,因为它可以完美地去除所有高于奈奎斯特频率的频率,而不会留下所有较低的频率。因此,在某种程度上,我们可以预期抗锯齿滤镜与sinc滤镜更相似,以产生更高质量的图像。
帐篷过滤器(三角形过滤器)肯定比箱形过滤器更类似于sinc过滤器的中心峰:
双三次滤波器(例如Mitchell-Netravali)甚至可以更精确地捕捉到辛克的形状,包括其前两个负波瓣。
滤波器选择的实际情况比“尽可能接近正弦”要微妙得多,因为“非理想”抗锯齿滤波器会产生不同种类的伪像,例如混叠,过度模糊和振铃。同样,不同的过滤器可能或多或少地在计算上昂贵。因此,这是一个试图权衡不同工件之间以及性能之间进行权衡的游戏。不同的场景/图像可能会偏爱一个选择或另一个选择,这在某种程度上也是一种审美判断。
至于为什么smallpt特别使用帐篷过滤器,我猜想性能(它是评估的快速过滤器)和简洁性的结合-可以用几行代码完成,而双三次过滤器则需要花费更多码。
顺便说一句,smallpt实际上使用2x2子像素网格,并在每个子像素处放置一个帐篷滤镜,然后将四个子像素的结果平均在一起。因此,奇怪的是,总体效果是四个帐篷的总和,最终看起来像一个金字塔,顶部平坦:
我不确定这是故意的,还是恰好是解决问题的方式。我的猜测是,与每个像素使用一个帐篷滤镜相比,这会导致图像更清晰(由于支持范围更窄),但可能还会出现更明显的锯齿。
我刚刚看了有关双线性插值的Wikipedia文章。帐篷过滤器是一种双线性插值。双线性插值在2维上进行插值。它首先在一个维度上进行线性插值,然后在另一个维度上进行线性插值。
当您查看此图片时,它首先在列上,然后在行上进行。
之所以比平均颜色更好,是因为当其中一个点比另一个点更靠近中心时,它对最终颜色的贡献更大。通过平均颜色,即使一个点比另一点更靠近中心,所有点的贡献也相同。
如果所有4个点都位于距中心等距离的固定位置上,那么您对所有点的贡献都恰好是25%,这与求平均值相同。
这意味着当您实现抗锯齿时,只需以4倍的高分辨率进行渲染,然后对其进行下采样。据我了解,这两种方式之间的输出应该相同。
那么,您应该使用哪个过滤器?好吧,这取决于您想要什么和您的情况。如果您为样本选择随机的子像素位置,则最好使用双线性插值。如果所有点都是固定的,而您只是以较高的分辨率进行渲染,则取平均值可能会很有用。最后,这只是通常您不会或几乎不会注意到的一些子像素的事情,因此,如果有AA的话,那就足够了。但这只是我的观点,可能是3D动画或类似内容的一般观看者的观点。
哪个更好?好吧,这取决于您的喜好,我认为不会有很大的不同。
我的资料来源:https : //zh.wikipedia.org/wiki/Reconstruction_filter#Image_processing
https://zh.wikipedia.org/wiki/Bilinear_interpolation
https://zh.wikipedia.org/wiki/Bicubic_interpolation
(图像来自维基百科,属于公共领域)
我希望这会有所帮助,我只想说我不是一个专业人士,我只是一个喜欢计算机图形学的人。可能是我犯了一些错误。如果是这样,请说出来,然后我更改!