GAMES001课程笔记08-概率论II

这个系列是GAMES001-图形学中的数学(GAMES 001: Mathematics in Computer Graphics)的同步课程笔记。课程旨在总结归纳图形学学习过程中重要的数学概念、理论和方法,并将以索引的形式在每一章节中穿插讲解该数学专题在图形学中的应用。本课程既可以作为GAMES系列其它课程学习的基础或「手册」,也可以作为站在不一样的视角复习图形学知识的平台。本节主要介绍概率论在图形学中的应用。

噪声

「噪声」的概念源自声学,从物理本质上讲,声音是一种机械波。我们可以将声音与光线的颜色进行类比,声音的频谱对应着不同的颜色。日常生活中常见的噪声大多是一段频率内不同频率的均匀混合,它类似于光谱中白光等于不同色光的混合,因此这样的噪声也称为白噪声。除了白噪声之外,低频强高频弱的噪声称为粉噪声,而低频弱高频强的噪声称为蓝噪声

广义上的噪声广泛存在于图像、视频等领域中。在图像领域,噪声通常用于指代图像中具有随机扰动的成分,它往往来自于某种随机变量。这些因素可以包括传感器的噪声、信号传输过程中的干扰、环境光线变化等。

由于不同的随机变量分布有着不同的频域特征,我们可以借助于图像的频域分析来了解图像上噪声的分布。

图像的量化

对于图像的噪声处理有非常多的应用,这里介绍一下图像的量化。所谓的图像量化是指对于一张给定的RGB图像,我们希望能够找到一张近似图像使得它在每个像素每个通道上只能取0或255两个值,同时还可以尽可能还原原始RGB图像的内容。

首先来考虑一下简化版本的问题:对于一张灰度图,其像素的取值范围在区间[0,1]上,我们希望能够将它转换为一个二值化图像同时尽可能在视觉上接近原图。最简单的二值化方法是使用0.5作为阈值,将图像中所有小于0.5的像素设置为0,而大于0.5的像素设置为1。这种方法非常容易实现,但量化后的图像往往会丢失原始图像中的很多细节。

更好的处理方法是有序抖动法。假设显示器的分辨率要高于图像实际的分辨率,那么我们可以使用3×3个显示像素来表示原始图像上的一个像素。具体来说我们设置一个\(M\)矩阵对应填入3×3个显示像素的顺序,若原始像素的亮度值大于等于\(m_{ij} / 9\),则在3×3个显示像素的对应位置设为1,否则为0。

而对于显示分辨率与图像分辨率相同的情况,我们则可以先对原图按照3×3的像素块进行划分,然后在每个3×3的像素块上与\(M\)矩阵进行对比。每个位置上的亮度大于等于\(m_{ij} / 9\)时将该位置的亮度设置为1,否则为0。这样的做法相当于在原图上添加一个以3×3为周期的噪声,然后进行二值化处理。

从数学的角度来看,上面介绍的图像抖动方法本质是在原始图像上添加一个随机数作为噪声。当添加的随机噪声具有为零的数学期望时,原始像素的期望在添加噪声前后保持不变。因此,当图像的像素点足够多时,图像经过抖动后的期望与原始图像的期望保持不变。这意味着抖动后的图像整体上保持了与原始图像相同的平均亮度水平,从而有助于保持一些原始图像的细节。

蒙特卡洛积分

蒙特卡洛积分是图形学中的重要技术,它的一个经典应用是用来计算不规则图形的面积。我们可以在一个固定的矩形区域内随机散落\(n\)个点,然后记落在图形内的点的数量为\(k\)。根据伯努利大数定律,当\(n\)趋于无穷时,\(\frac{k}{n} A_{\text{rectangle}}\)的值会趋于不规则图形面积的真值。

更严格的数学解释需要考察积分\(I = \int_a^b f(x) \ \mathrm{d} x\),蒙特卡洛积分的解法是把积分运算转换为期望运算:

\[I = \int_a^b f(x) \ \mathrm{d} x = \int_a^b \frac{f(x)}{p(x)} \cdot p(x) \ \mathrm{d} x = \mathbb{E} \bigg[ \frac{f(x)}{p(x)} \bigg]\]

当我们在区间\([a, b]\)上取均匀分布时,蒙特卡洛积分可以表示为

\[I \approx \frac{b - a}{n} \sum_{i=1}^n f(X_i)\]

对于更一般的分布,蒙特卡洛积分的形式为

\[I \approx \frac{1}{n} \sum_{i=1}^n \frac{f(X_i)}{p(X_i)}\]

容易证明蒙特卡洛积分是一个无偏估计,即当样本数趋于无穷时蒙特卡洛积分会收敛到真值上。而蒙特卡洛积分的方差为

\[\begin{aligned} D \bigg[ \frac{1}{n} \sum_{i=1}^n \frac{f(X_i)}{p(X_i)} \bigg] &= \frac{1}{n^2} \sum_{i=1}^n D \bigg[ \frac{f(X_i)}{p(X_i)} \bigg] \\ &= \frac{1}{n^2} \sum_{i=1}^n \int \bigg( \frac{f(x)}{p(x)} - \mathbb{E} \bigg[ \frac{f(X_i)}{p(X_i)} \bigg] \bigg)^2 p(x) \ \mathrm{d} x \\ &\propto \frac{1}{n} \end{aligned}\]

上式说明,蒙特卡洛积分的收敛速率是\(\frac{1}{\sqrt{n}}\)。换句话说,如果我们想要把积分的误差缩减到原来的\(\frac{1}{2}\),我们需要4倍的采样量。

总体来看,蒙特卡洛积分的收敛是比较慢的。为了提高收敛效率,我们可以采用重要性采样的技术。重要性采样的基本思想是在积分区域内使用一个较好的概率密度函数来选择样本点,从而使得这些样本点更有可能落在函数的主要贡献区域(函数值较大的地方)。特别地,可以证明当采样分布的概率密度函数\(p(x)\)与\(f(x)\)有相同的形状时,蒙特卡洛积分的方差为0。因此,当\(\frac{f(x)}{p(x)}\)的形状越平稳,蒙特卡洛积分的方差越小,也即收敛速度越快。

除了重要性采样外,我们还可以使用分层抽样或是低差异序列这样的方法来减少蒙特卡洛积分的方差。这样的方法并没有真正地进行采样,因此也称为拟蒙特卡洛积分。

随机数变换

图形学中的一个经典问题是如何在一个单位球面上进行均匀采样。常见的处理方法包括拒绝采样、三角函数变换、利用Gauss分布以及Marsaglia变换等。

Reference