前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Reparameterizing Discontinuous Integrands

Reparameterizing Discontinuous Integrands

作者头像
Peter Lu
发布2021-02-03 12:26:39
6250
发布2021-02-03 12:26:39
举报
文章被收录于专栏:LETLET

可微分渲染技术,让基于真实感图像(photorealistic image)的逆向问题的理论上可以解决,比如上图,通过影像重建几何结构和材质属性等。

然而,可见性而导致的边界不连续性问题是一大瓶颈,特别是当场景中存在复杂的geometry以及对一些重要边缘采样不充分等问题。本论文’ Reparameterizing Discontinuous Integrands for Differentiable Rendering’提供了一种方法,绕开对边缘轮廓(silhouette)的采样,同时提供了一种控制变量技术来减少方差。该方法虽然有偏不一致,但bias和variance都很小。

如上图,我们对下面的积分,对p求导,因为红色部分的不连续性,无法直接求导

我们用y=x-p换元后,可得

此时,该积分仍然不连续,但当p变化时,不连续的区域在该积分域中是静态的,于p无关,而连续区域的采样点则跟p有关。因此,当我们对p求导时,函数前者和后者在采样方式上的对比如下:

这里,要强调的是对y_i的采样和参数p要独立,否则,不连续性会重新引入到被积函数。我们用p_0表示参数p的当前位置时,当p=p_0,我们希望这个换元操作不会有任何变化,比如最简单的平移函数,我们会进行如下设置:

接下来就是如何把这个简单的数学思路引入到微分渲染中。

首先,如上图,论文中假设不连续性都是由微小的物体(黄色区域)造成了。基于该假设前提,我们可以通过球面旋转矩阵建立任意采样点ω(f在球面的投影位置)和不连续区域所在的点θ_0(红线)之间的关联:

类似上一篇的Heaviside step function,这里,我们通过随机数生成r时,r值表示的是相对于θ_0的位置,而非以前的绝对位置,我们可以通过r直接判断该采样点是在不连续区域的左侧还是右侧,而该采样点相对于参数θ是连续的,可以直接求导。由此,我们通过MC对该积分求解,这里,pdf采样针对θ_0,也就是当前参数θ的值,从而消除ω和θ之间的关联,否则,还得对pdf求导:

但现实场景中的geometry往往比较复杂,导致不连续性的几何结构会比较复杂,如上图,这个违背了我们的假设前提,论文中提供了一个新的思路,就是不断放大微小区域,一直到小的足够简单为止,然后在该区域中应用上面的方式来解决不连续性问题。这相当于用一个卷积来取代单个的采样点,结果仍然是无偏:

对应下图,原本我们对左侧一个点求积分时,我们转为对右侧球面上某一个点采样了,这时,我们对该采样点做一个卷积,在这个微小区域可以采用之前的方式求导。如果卷积的size较小,则variance小,bias大,反之亦然,这是引入bias的一个地方。

这里就有一个问题,我们是不知道不连续点P的位置,所以采用该方法,避免对边界的采样,而该方法需要预知该不连续点P的值,才能使用。论文里采用随机创建N(论文中为4)条ray,根据其intersection对应的法线,材质等属性,来预估这个边界点P的值

,这个过程的计算量很小,但代价是引入了bias。论文中提到了对旋转矩阵R的要求:

这里,任一点在该球面的投影位置为

是当前θ在球面的投影位置

,而我们要求该旋转矩阵相对

是单位矩阵,而其他值则保持和不连续点

移动的速度相同(一阶导数相等)。个人的理解是这样,

是当前不连续点的位置,已知值,周边任意一个采样点

,采样值。这样,存在一个

,使得

,然后还有参数θ,这里,我们将

移动到θ位置(未知),则有另一个

,这样,我们可得

,该矩阵表达了采样点

和参数θ的关联。论文附录中给出了旋转矩阵的推导公式。

上图是一个大概的过程:首先是primary ray,我们创建3个射线,根据intersection的结果,构建合适的换元参数,使得被积函数相对于参数p可导,计算其对应的梯度值,然后选取其中一条ray,计算其对应的direct ray,最后是indirect ray。这些用于估算边界的射线还可以复用,用来创建光路。

该方法得到的结果方差仍然较大,因此,论文中采用了控制变量法来减少方差。

如上的公式求某点的radiance,我们用控制变量法,可得:

此时,如果我们指导f函数的值c,让α=c时,其梯度的方差最小,我们对θ求导,这时,只要我们能找到合适的α值,则可以减少其梯度的方差:

这里采用的技术是cross-weighting scheme,参考的是论文‘Image-space Control Variates’。大概是构建两个非相关的光路,这时,我们根据其中一条光路获取对应的α值。

这里, 红色和蓝色光路部分采用相同的随机数构建的两条相似光路,我们套用之前的公式和思路,可得如下的光路的radiance:

这里因为

(这个结论我不太明白,个人感觉是因为采样是围绕不连续点

的uniform分布,所以,其期望值是0)。进而

,我们可以直接对

求导获取其梯度。

上图是采用控制变量法减少方差和不使用该方法的效果对比。

我们利用该算法来解决渲染的逆运算,上图是其效果。

上图是采用该算法和上篇论文中算法的对比,特别是在(d)复杂场景中,该算法的效果很明显。

上图,该场景下使用该算法得到的结果和ref不同,因此,该算法并不保证一致性的(consistent)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LET 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档