蒙特卡洛积分在渲染中的应用

我们都在数学过程中研究了数值方法。 这些是积分,内插,级数等方法。 数值方法有两种:确定性方法和随机方法。

典型的确定性函数集成方法 f 在范围内 [ab] 看起来像这样:我们采取 n+1 等距点 t0=at1=a+ fracban ldotstnb 计算 f 在中点  fracti+ti+12 这些点定义的每个间隔的时间,总结结果并乘以每个间隔的宽度  fracbab 。 对于足够连续的功能 f 随着增加 n 结果将收敛到正确的值。


概率方法,或蒙特卡罗方法,用于或更精确地计算积分 f 在范围内 [ab] 看起来像这样: X1 ldotsXn -间隔中随机选择的点 [ab] 。 然后 Y=ba frac1n sumni=1fXi 是一个平均值为整数的随机值  int[ab]f 。 为了实现该方法,我们使用一个随机数生成器来生成 n 间隔中的点 [ab] 我们计算每个 f ,将结果取平均值并乘以 ba 。 如下图所示,这为我们提供了积分的近似值。  int11 sqrt1x2dx 20个样本的近似正确结果等于  frac pi2


当然,每次计算这样的近似值,我们都会得到不同的结果。 这些值的方差取决于函数的形状。 f 。 如果我们产生随机点 xi 不均匀,那么我们需要稍微更改公式。 但是由于使用了点的不均匀分布,我们获得了巨大的优势:迫使不均匀分布优先考虑点 xi 在哪里 fx 大时,我们可以显着减小近似值的方差。 这种非均匀采样的原理称为按重要性采样


由于过去几十年来,渲染技术已从确定性方法向随机方法大规模过渡,因此我们将研究用于求解渲染方程的随机方法。 为此,我们使用随机变量,数学期望和方差。 我们正在处理离散值,因为计算机本质上是离散的。 连续量处理概率密度函数 ,但是在本文中我们将不考虑它。 我们将讨论概率质量函数。 PMF具有两个属性:

  1. 对于每个 s\在S$ 存在 ps geq0
  2.  sums inSps=1

第一个属性称为非负性。 第二个叫做“正常”。 凭直觉, S 代表某些实验的结果集,并且 ps 是概率的结果 s 会员 S结果是概率空间的子集。 结果的概率是该结果的PMF元素之和,因为

Pr \ {E \} = \ sum_ {s \ in S} p(s)

Pr \ {E \} = \ sum_ {s \ in S} p(s)


随机变量是一个函数,通常用大写字母表示,该函数在概率空间中设置实数:

XS rightarrow boldsymbolR


注意功能 X -这不是变量,而是具有实数值的函数。 她也不是随意的Xs 是任何结果的单独的实数 s\在S$

随机变量用于确定结果。 例如,许多结果 s 为此 Xs=1 ,也就是说,如果ht和th是表示“鹰”或“尾”的线组,则

E=s inSXs=1




=htth



这是可能性的结果  frac12 。 我们写成 Pr \ {X = 1 \} = \ frac {1} {2}Pr \ {X = 1 \} = \ frac {1} {2} 。 我们使用谓词 X=1 作为谓词所确定结果的缩短条目。

让我们看一下一个模拟上述公式描述的实验的代码片段:

headcount = 0 if (randb()): // first coin flip headcount++ if (randb()): // second coin flip headcount++ return headcount 

在这里,我们用ranb()布尔函数,在一半情况下返回true。 它与我们的抽象有什么关系? 想像很多 S 程序的所有可能执行,并声明两个执行ranb返回的值相同,成对相同。 这意味着该程序有四个可能的执行,其中两个ranb()调用返回TT,TF,FT和FF。 根据我们自己的经验,我们可以说这四个成就是同等可能的,也就是说,每个成就都发生在大约四分之一的情况下。

现在比喻变得更加清晰。 程序的许多可能执行以及与之关联的概率是概率空间。 依赖随机调用的程序变量是随机变量。 希望您现在一切都清楚。

让我们讨论期望值,也称为平均值。 本质上,这是PMF与随机变量的乘积之和:

E[X]= sums inSpsXs


假设h是“老鹰”,t是“尾巴”。 我们已经介绍了ht和th。 也有hh和tt。 因此,期望值将如下所示:

E[X]=phhXhh+phtXht+pthXth+pttXtt


= frac142+ frac141+ frac141+ frac14.0


=1\文QED


您可能想知道它来自哪里 X 。 我的意思是我们应该赋予意义 X 由你自己。 在这种情况下,我们将h分配为1,将t分配为0。 Xhh 等于2,因为它包含2 h

让我们谈谈发行。 概率分布是提供事件各种结果的概率的函数。

当我们说一个随机变量 X 有分布 f 然后应该指出 X SIMF

周围散布的X 称为其分散 ,定义如下:

 boldsymbolVar[X]=E[X barX2]


哪里  barX 是平均 X

 sqrt boldsymbolVar 称为标准偏差 。 随机变量 XY 在以下情况下称为独立

Pr \ {X = x \ text {and} Y = y \} = Pr \ {X = x \}。Pr \ {Y = y \}

Pr \ {X = x \ text {and} Y = y \} = Pr \ {X = x \}。Pr \ {Y = y \}


独立随机变量的重要属性:

  1. E[XY]=E[X]E[Y]
  2.  boldsymbolVar[X+Y]= boldsymbolVar[X]+ boldsymbolVar[Y]

当我从一个关于概率的故事开始时,我比较了连续概率和离散概率。 我们研究了离散概率。 现在让我们谈谈连续概率和离散概率之间的区别:

  1. 值是连续的。 也就是说,数量是无限的。
  2. 分析的某些方面需要数学上的细微之处,例如可测量性
  3. 我们的概率空间将是无限的。 代替PMF,我们应该使用概率密度函数(PDF)。

PDF属性:

  1. 对于每个 s\在S$ 我们有 ps geq0
  2.  ints inSps=1

但是如果分配 S 均匀地定义pdf,如下所示:

图片

连续概率 E[X] 定义如下:

E[X]= ints inSpsXs


现在比较PMF和PDF的定义:

\ mathbb {PMF} \ rightarrow p_y(t)= Pr \ {Y = t \} \文字{for} t \ in T

\ mathbb {PMF} \ rightarrow p_y(t)= Pr \ {Y = t \} \文字{for} t \ in T


\ mathbb {PDF} \ rightarrow Pr \ {a \ leq X \ leq b \} = \ int_a ^ bp(r)dr

\ mathbb {PDF} \ rightarrow Pr \ {a \ leq X \ leq b \} = \ int_a ^ bp(r)dr


在连续概率的情况下,随机变量最好称为随机点 。 因为如果 S 是概率空间,并且 YS rightarrowT 显示在与其他空间不同的位置  mathbbR 那我们应该打电话 Y 随机点 ,而不是随机变量。 概率密度的概念在这里适用,因为我们可以说对于任何 U\子T 我们有:

图片

现在,将我们所学的知识应用到这个领域。 球体具有三个坐标:纬度,经度和纬度补码。 我们仅在以下位置使用经度和纬度加法  mathbbR2 ,将二维笛卡尔坐标应用于随机变量 S 把她变成 S2 。 我们得到以下细节:

Y[01]\次[01] rightarrowS2uv rightarrow cos2 piu sin piv cos piv sin2 piusin piv


我们从统一的概率密度开始 p[01]\倍[01]puv=1 。 查看上面的统一概率密度公式。 为了方便起见,我们将写 xyz=Yuv

我们有一个直观的理解,即如果您在单位正方形中随机均匀地选择点并使用 f 要将其转换为单位球面上的点,它们将在极点附近累积。 这意味着在 T 不会统一。 如下图所示。


现在,我们将讨论逼近连续随机变量的期望值的方法及其在确定积分中的应用。 这很重要,因为在渲染时我们需要确定反射率积分的值:

LrefP omegao= int omegai inS2+LP omegaifsP omegai omega0 omegai boldsymbolnd omegai


各种价值 P omega0 。 价值  omega 是入射光的方向。 代码生成在间隔中均匀分布的随机数 [01] 并取平方根,创建一个介于0到1之间的值。如果我们使用PDF,由于它是一个统一值,则期望值将等于  frac23 。 也是这个平均值 fx= sqrtx 在此间隔内。 这是什么意思?

考虑《计算机图形学:原理与实践》一书中的定理3.48。 她说如果 f[ab] rightarrow mathbbR 是具有实数值的函数,并且 X sim boldsymbolUab 是区间中的统一随机变量 [ab] 然后 bafx 是一个随机变量,其期望值的形式为:

E[bafx]= intbafxdx


这告诉我们什么? 这意味着, 如果我们多次执行代码并对结果求平均值,则可以使用随机算法来计算积分的值

在一般情况下,我们可以获得一定的价值 C ,如上面所示的积分,需要确定,以及一些返回近似值的随机算法 C 。 这种数量的随机变量称为估算器 。 如果估计量的期望值为,则认为该估计量失真。 C 。 在一般情况下,没有失真的估计器优于失真。

我们已经讨论了离散概率和连续概率。 但是还有第三种类型,称为混合概率 ,用于渲染。 这种概率是由于双向散射的分布函数中的脉冲或由点光源照射引起的脉冲而产生的。 此类概率是在连续集中定义的,例如在间隔内 [01] 但并非由PDF函数严格定义。 考虑以下程序:

 if uniform(0, 1) > 0.6 : return 0.3 else : return uniform(0, 1) 

在60%的情况下,该程序将返回0.3,在其余40%的情况下,它将返回一个均匀分布在 [01] 。 返回值是一个随机变量,概率质量为0.3(0.6),在所有其他点的PDF指定为 dx=0.4 。 我们必须将PDF定义为:

图片

通常, 混合变量随机变量是在PDF定义区域中存在一组有限点的变量,反之亦然,即未定义PMF的均匀分布点。

Source: https://habr.com/ru/post/zh-CN461805/


All Articles