第15章蒙特卡罗积分II程序.docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第15章蒙特卡罗积分II:提高效率蒙特卡罗光线追踪算法里的方差以图像噪声的形式体现出来。如何竭力地减小方差竟成了大多数优化蒙特卡罗算法的基本任务。回忆一下蒙特卡罗算法的收敛速度,这意味着为了对方差减半,就需要四倍的采样。由于估算例程的运行时间跟采样数目成比例关系,所以减少方差的花销可以是很高的。本章将介绍可以改进蒙特卡罗算法的效率而并不增加采样的理论和技术。一个估计量公式F的效率可以定义为:? ? ε[F] = 1 / V[F]T[F]其中V[F]是它的方差,T[F], T[F]是求值所用的运行时间。根据这个度量方法,如果估计量F1跟另一个估计量F2相比,花费更少的时间而产生相同的方差,或者在相同时间内生成更小的方差,则称它更有效率。其中一项技术被认为是改进渲染效率的最为有效的技术,即重要性采样(importance sampling)。回忆一下,在蒙特卡罗估计量的实现中,我们有一定的自由来选择采样分布函数p(x)。如果我们选择跟被积函数很相像的采样分布,那么就可以减小方差。这项技术之所以被称为重要性采样,是因为我们趋向于在函数定义域的“重要”部分进行采样,而这些部分有相对大的函数值。本章的前半部分讨论重要性采样和几项其它改进蒙特卡罗算法效率的技术。本章的后半部分讨论根据BSDF、光源、体积散射来生成采样的技术,而这些技术可用做重要性采样中的采样分布。第16,17章将使用这些采样方法。15.1 俄罗斯轮盘法和分割法俄罗斯轮盘法和分割法是两项可以改进蒙特卡罗算法效率的相关方法,它们的做法是要增加对结果有较大贡献值的采样的可能性。有些求值很耗时的采样却对最终结果的贡献值很小,俄罗斯轮盘法要解决就是这个问题。我们希望避免对这些采样进行求值却仍可以计算出正确的估计量。最为一个例子,我们考虑对直接光照积分的估算问题,该积分给出了场景中从光源直接照射到某点而产生的反射辐射亮度:? ? 假定我们从某个分布p(ω)取N=2个采样来计算估计量:? ?? ??? 其中累加式中绝大部分的计算开销来自于追踪起始于点p(看光源是否被遮挡)的阴影光线。对于那些被积函数值明显为0的那些方向(例如,对于fr(p, ωo, ωi)为0的那些方向)而言,我们可以跳过追踪阴影光线的工作,因为是否去追踪并不影响最终的计算结果。使用俄罗斯轮盘法可以让我们也跳过那些被积函数值很低但不一定为0的那些方向的光线追踪,而仍然大致可以计算出正确的结果。例如,在那些fr(p, ωo, ωi)很小或者ωi靠近水平面使得|cosθi|很小的方向上,我们可以避免进行光线追踪。当然,我们不能完全忽略这些采样,否则估算公式就会低估结果值。为了使用俄罗斯轮盘法,我们先要选定某个终止概率q。我们几乎可以用任意的方式来选择这个概率值;例如,我们可以根据一个选定的采样来估算出被积函数的值,并以此为基础确定一个概率值,当被积函数值减小时再对之增加。在使用概率q时,就不对被积函数求值,而是用一个常数c代替(一般用c=0)。在使用概率1-q时,就要对被积函数求值,但要乘以一个权值1/(1-q),用来弥补那些被跳过的采样:? ?? ???F = (F-qc)/(1-q),??ξ q? ?? ???F = c, otherwise要注意的是它的期望值跟原估计量的期望值相同:? ?? ???E[F] = (1-q) ((E[F] - qc)/(1-q)) + qc = E[F]俄罗斯轮盘法绝不能减少方差。实际上,除非c =??F,否则它总是加大方差的。然而,如果概率选择得当的话,就可以跳过那些对最终结果贡献很小的采样,从而提高了效率。其中一个陷阱是,如果俄罗斯轮盘法选择了一个很差的权值,就会大大地增加方差。想象一下我们用0.99做为终止概率对所有的相机光线使用俄罗斯轮盘法,我们即只追踪其中的1%的相机光线,而用1/0.1 = 100的权值。在严格的数学意义下结果仍然“正确”,但最终的视觉效果无比糟糕:大多数像素是黑色的,只有很少明亮的像素。15.1.1 分割法俄罗斯轮盘法可以减少对次要的采样的求值,而分割法却以增加采样数的方式来提供效率。我们再考虑一下计算直接光照下的反射辐射亮度的问题。在忽略像素滤波的情况下,这个问题可以写成一个像素的面积A下以及方向球面δ2下的双重积分,其中Ld(x,y, ω)是图像坐标(x,y)处由方向ω上入射辐射亮度产生的出射辐射亮度:? ?? ??? 估算该积分的一个自然方式就是生成N个采样,每个采样包含一个(x,y)图像位置和一个朝向光源的方向ω,然后使用蒙特卡罗估计值公式。如果场景中有许多光源,或者有一个投射软阴影的面光源,为了使结果有一个可以接受的方差水平,就需要数十个或数百个采样。不幸地是,每个采样需要两条要被追踪的光线:第一条用来计算从图像平面(x,y)处看到的第一个可见

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档