采样与反走样

Danny Teng bio photo By Danny Teng

直观描述

奈奎斯特采样定理告诉我们,在采样的时候采样频率到达目标最高频率的两倍之后走样将会消失。 在一般的信号处理中,我们具有连续的信号输入,在进行采样之前我们一般会有一个过滤器来过滤图像中的高频部分,这个行为成为限制带宽,也就是限制被采样图像中的最高频率,这样我们在后面的采样中就可能做到无损采样和重建。 但是在计算机图形学中,我们不可能限制带宽。因为被渲染的图形往往并不是真实存在的信号,而只是通过一堆数学规则定义出来的一个对象,这样当我们说某个曲面上的某一点的时候,其实它根本就不存在,只是我们在选择点上定义了它的存在。 举一个通俗的例子:

图中是渲染的无穷大的棋盘格。从近处到远处频率是逐渐升高的,而且没有极限频率。可以看到,右图随着采样频率,虽然前面的走样消失了,但又在高频区出现了新的走样。 如果我们考虑奈奎斯特定律,想要通过一个像素平面来无损采样这个平面的话,在一条扫描线上我们需要的频率应该是棋盘最大重复频率的两倍,但是在这个情形下,棋盘的最大频率是无穷大,而且我们前面也说了,不可能限制最高频率,所以,这非常直观的解释了为什么在计算机图形学上,反走样是不可能的。

问题

在渲染中,无限远的格子纹理在图像上会产生很显著的走样,而对于一个照相机则没有这个走样。 问题:为什么在渲染中反走样这么困难?

摄像机工作原理

光线通过镜头Lens进入摄像头内部,然后经过IR Filter过滤红外光,最后到达sensor(传感器),senor分为按照材质可以分为CMOS和CCD两种,可以将光学信号转换为电信号,再通过内部的ADC电路转换为数字信号,然后传输给DSP(如果有的话,如果没有则以DVP的方式传送数据到基带芯片baseband,此时的数据格式Raw Data,后面有讲进行加工)加工处理,转换成RGB、YUV等格式输出。

ADC电路预过滤

ADC电路前端一般都要加一个模拟滤波器,将高频信号过滤之后,再将模拟信号转换为数字信号。在采样过程中,模拟信号就相当于一副已经滤去高频信号的原始连续图像,只需要对其进行采样即可。

核心解答

因为两个事实:

  • 计算机中高频无极限
  • 没有直接方法限制这些高频信号。

具有预先的连续图像(模拟信号)就可以预先在模拟信号滤波,将高频率信号过滤出去,就无法产生走样。

第一点很明显不赘述。

无法直接限制高频信号

根据前面摄像机的工作原理可以知道,原始的模拟信号可以直接过滤,这个就相当于有一个预先的连续图像。而渲染中,连续信号是没有办法直接过滤的,因为渲染本身产生信号就要靠采样,在采样之前的数学抽象是无法直接过滤的,也就是说渲染和真实世界相比少了一个波的传播步骤,也就少了一种信号的模拟表现形式(这里其实可以看出渲染和真实世界的一个本质区别)。那么既然渲染没有这个预先的模拟信号,那么就显然没有办法去过滤。少了这一步原始信号的过滤,高频分量就一直包含,第一次采样出来的信号直接就是数字信号,数字信号被用来直接重建(with各种过滤函数)原始模拟信号,然而高频分量则一直在。

pbrt中使用各种过滤函数对像素平面进行过滤,是对采样出来的图像进行重构模拟信号。对比相机采样信号,在这里采样与重构是不加区别对待的。

细节

我们假设计算像素值的过程就是对视平面内一副连续的图像使用离散二维数组采样点(一个像素一个点,注意像素本身只是一个点)来采样。这个假设的合理之处在于,通过不断增加采样分辨率,并为图像中越来越多的点计算图像值可以不断逼近原始连续图像。

图像合成本身是从之前的高分辨率图像(模拟信号)中采样,光线经过图像转换器形成一副高分辨率的图像(注意,他的最高频率是有限的!),然后通过数字信号采样,在采样低分辨率之前,先要使用低通滤波器过滤到高频部分,之后沿着一条扫描线出现的原图最高频率应该满足$f=\frac{1}{2}d$,其中$d$是原图两个像素之间的距离;最后还要就低分辨率图像进行重构,返回一副重构的模拟信号图像,所以一般设备拍摄出来的图像(照片,视频)是没有走样的。 而对于渲染来说,根本没有先前的高频(连续)图像可以访问,只能定义某个采样在指定选点集上的存在性。对于渲染,由于所有对象都是抽象发生,是连续的,所以对应前面的极限频率 $f$ 为无穷大。且渲染中的重构指的不是通过数字图像生成连续图像,而是指从高分辨率(不可显示)的图像中生成一个低分辨率的图像。

反走样技术概述

  • 前滤波:对每个像素“无穷”采样。意思就是,相当于在像素采样之前加了一个相当于ADC预滤波的过程(虽然这个比喻不完全恰当)。具体就是reyes那一套,把几何体本身细分映射到每一个像素(区域),注意,此时的像素还没有采样,因此信号依然是连续的,然而过大频率对于像素是没有意义的,我们也不需要连续的图像,所以要率满足奈奎斯特定律,也就是使得micropolygon尺寸满足像素的一半尺寸即可。
  • 无滤波:对每个像素进行一次采样。这种方法实际上是当且仅当一个几何体完美覆盖一个像素的时候等价于第一种方法,但这种约束就是天方夜谭,因此这种采样方法仅仅用于预览。
  • 后滤波:对每个像素进行n次采样。最常用的方案,他以n倍于最终图像的分辨率渲染虚拟图像,这是一种连续图像逼近的方法,最终图像通过采样虚拟图像,再卷积重构来完成。这是第一种方法的近似。
  • 后滤波:均匀采样变为随机采样。