体渲染消光优化-2016TVCG-原理与技术

Table of Contents

摘要

引子

我们的贡献

相关工作

基础

1、体照明

2、不透明度优化

技术实现

概览

光线空间的Cost function

解析解

低通滤波器

消光优化体光线投射

讨论


摘要

新模型——优化单散射模型中的光衰减

以前的问题:由于光的指数衰减,导致被遮挡区域和照明区域亮度变化有很高的动态范围,以及因为光从采样点到摄像机衰减太多,可能导致重要区域不可见。

本文思想:提供了重要性函数——照明这些重要结构。重要性函数——让更多光照明这里的区域。同时,周边阴影来增强深度显示。同时更多的光从采样点发射到摄像机中。

方案:最小化问题——自动决定沿着视点或者阴影方向的衰减——平衡透光率和衰减

对比:别人使用复杂的全局优化,我们给沿着视点和阴影线的每个采样点提供了一个闭式解

引子

光照模型的不好处:只有点光源或者方向光,导致只有很小的区域被照亮;体空间会遮蔽外部照明,所以阴影很暗。

解决方案:

  1. 增加光源数量,但是会计算复杂,阴影光线和放置光源都会造成计算负担。

2、用更强烈的光,会造成未遮挡区域的过度曝光——可以通过色调映射来把高动态范围转到低动态范围——但是转换只是基于最后的生成图像,所以用户可控制范围较小。

3、使用蒙特卡洛计算,会引来大量噪声。引用了Kroes Tomas的论文

4、简化的照明模型实现多重散射——减轻了暗阴影,但是不能照明重要区域

我们的方法:目标导向型。

前人方案:
【Hierarchical Opacity Optimization for Sets of 3D Line Fields】

【Opacity Optimization for 3D Line Fields】

【Opacity Optimization for Surfaces】

作者解决了一个全局优化问题,平衡了重要特征的可见性和避免遮挡。然而,计算需要昂贵的有界最小二乘问题的解。相反,我们提出并解决了一个具有封闭形式解的优化问题。

 

我们的贡献

在单散射中,优化采样光线和阴影光线的透射率。

方向独立的衰减优化,采样光线和阴影光线独立——给每个采样和阴影光线建立cost function——减少计算复杂性。

Cost function包含两项:从传输函数得到的局部(local)衰减值;重要性值,光在采样点散射然后进入摄像机的量。

优化两个相对立的目标:高不透明度的区域导致更多的局部可见性,但是会遮挡别的地方。高重要性的区域可见性和照明都比较高,但是需要降低周边遮挡物的不透明度。

上面引用的论文里加入了平滑项(低通滤波未知系数)——计算复杂。

我们的方法——建立没有平滑项的cost function——可以被最小化。最后在重要性区域加了低通滤波器。

 

相关工作

所有这些技术的一个共同缺点是,如果没有过度强烈的照明或缩小消光范围,很难将足够的光传输到所有重要的特征,这将分别导致过度曝光或阴影丢失;

我们的方法:优化照明——与用户控制和感觉相关。

上面引用的论文只是用来可视化很多线段,但是远不及体渲染中体素的数量,也没有考虑照明。我们的方法是最小化Cost function,但是提供了解析解和照明。

我们的目标——避免过度曝光和暗区域——色调映射也可以实现,但是只是对最后的图像进行控制,而没有对渲染的内容进行控制。

人类的视觉对梯度变化比对绝对的高亮度更敏感。

基础

1、体照明

体渲染消光优化-2016TVCG-原理与技术_第1张图片

表示体散射相位函数,前面有权重系数,我们令

表示光滑镜面散射BRDF, 表示表面向量,是由梯度计算出来的。

镜面光系数与梯度有关。

2、不透明度优化

我们在一定程度上使用前面挂出的两篇参考文献中的cost function,首先重提一下,然后阐述如何应用到体照明单散射中。

每个线或者面倍分为了n个线段或者面,称为primitives,每个primitives都有一个不透明度值 以及一个重要性值 。重要性值允许可视化的时候让primitive有很高的重要性。原始方法来最小化下面的cost function:

体渲染消光优化-2016TVCG-原理与技术_第2张图片

代表的是未知不透明度值。

用于表示用户指定的不透明度和未知不透明度的偏离。

用于表示低重要性的primitive 遮蔽高重要性的primitives,用来控制重要性结构的重要性。遮挡系数 描述的是有多少primitives j 被primitive i 遮挡。

 用于表示与上面一样参数的背景遮蔽。但是遮蔽方向是反着的。

 表示与相邻基元的偏差,它实现一个低通滤波器来平滑相邻基元之间的可见性,参数控制基元之间的相互影响以进行滤波。所有四项都可以通过全局参数p,q,r,s ≥0进行加权。

技术实现

原则上,用n个体素作为基元,可以实现对体数据和单次散射的适应性。然而,典型的数据集是由数亿个体素组成的,这使得天真的方法不可行,因为每当相机或光源发生变化时,都需要一个昂贵计算的全局最小二乘解。

概览

我们的贡献是一种新的方法,有效地渲染体积数据,从相机优化可见性和优化照明光源。我们的基本要素是:

体渲染消光优化-2016TVCG-原理与技术_第3张图片

首先,我们优化消光系数而不是不透明度值,因为我们寻找的代价函数不显式地依赖于步长

另外,我们忽略了平滑项  来获得新的cost function,该cost function可以解析解。

其次,利用一个3D summed-area表(SAT)来平滑优化解,更有效率。

最后,我们展示了如何使用我们的优化解决方案执行光线投射。

体渲染消光优化-2016TVCG-原理与技术_第4张图片

左图:第 i 个采样点的消光值从传输函数中获取。对摄像机(红色)和光源(蓝色和绿色),计算出一个优化衰减值(取决于方向 \omega)。我们的cost function包含从第 i 个采样点获得到的衰减系数 (从传输函数中获得)。

右图:单个采样光线的Close-up 视觉以及数据集的包围盒。表示一个优化的衰减系数,从我们的解析解中计算得到。这个解会在采样中计算m次(图中有 m 个采样点):

光线空间的Cost function

采样过程中,如果把每个体素作为primitives,以及  (没有遮蔽),会导致上面的cost function的两项消失(除非它们在同一个采样光线中互相遮挡)

所以我们把采样点作为primitives,是可能的,因为它不从相邻的primitives得到任何信息。我们注意到目前primitives并不依赖于全局的primitives,而只依赖于采样光纤上的 primitives。

相比之下,更为复杂,因为每个求和涉及有限邻域内的基元进行低通滤波。即使连接性通常非常稀疏,因为与整个数据集相比,滤波器的大小通常很小,所以解决方案的计算可能会变得非常昂贵。它的目的是平滑最终解决方案,以避免干扰特征可见性中的硬边。对于体渲染来说,可以使用更有效率的方案来实现,所以说我们就忽略这一项:

体渲染消光优化-2016TVCG-原理与技术_第5张图片

其中,记为 体代价函数1项记为 体代价函数2项记为 体代价函数3项

表示优化的消光系数。

解析解

我们的代价函数:

体渲染消光优化-2016TVCG-原理与技术_第6张图片

每个代表每个代价函数的损失函数。

重点是得到最小解。

最终,我们可以上式的解析解:

 标记为解析解式

解析解的方法在附录A中。

我们从上式可以看出,优化的衰减系数主要取决于当前采样点的前面和后面的重要性值得平方和。

如果重要特征在当前采样点前面,分母的和就会变大,导致衰减系数变小。体代价函数3项 的影响就会很高,表示衰减不重要的背景。

如果上式中第二个和更大,最终结果也会变小,但是表现在cost function中为 体代价函数2项 的影响就会很高,表示衰减不重要的前景。

最终,如果第 i 个采样自己是最重要的,,最终结果就更接近传输函数值,表现在cost function中为 体代价函数1项 的影响就会很高,代表对于原始衰减值的偏离。

低通滤波器

我们忽略的一项是平滑项,虽然这允许所描述的简化使优化有效地适用于大型实际数据集,但我们仍然希望避免通过优化引入人为不连续性。

幸运的是,通过查看 ,我们可以看到,用户指定的重要性值g是附加不连续性的唯一来源,因为所有其他量要么是全局参数,要么是由数据集和传递函数指定的。因此,我们将低通滤波器应用到重要值g的字段中,其效果与我们忽略的那一项相当。随着相邻射线的重要性值越来越相似,这些射线的最佳消光系数也变得越来越相似,从而导致了平滑的空间分布。

对于数据探索,重要的是g(x) 可以由用户交互操作,类似于传递函数。因此,低通滤波需要足够快的速度来实现交互性能。因此,我们利用3D SAT来平滑重要值字段:

然后,框过滤的重要性函数变为:

体渲染消光优化-2016TVCG-原理与技术_第7张图片

是以体V为中心的立方过滤区域的顶点

最后,用Eqn中过滤后的重要性函数 \bar{g} 代替重要性函数g。当重要性函数被修改时,SAT需要重新计算,但它与传递函数、光源和视点无关。(换句话说,我们平滑的 g 是周边区域的 g,跟计算后的结果没有什么关系)

体渲染消光优化-2016TVCG-原理与技术_第8张图片

消光优化体光线投射

我们要优化的透明度 是来自两个任意点:以及

以及  

我们的ray marching算法来自算法1(下表)。

体渲染消光优化-2016TVCG-原理与技术_第9张图片

第一步,我们计算两个交点的重要性的平方和:

 

第二步,我们计算当前点之前的重要性值来避免背景干扰:

 

然后我们获取消光系数和重要性值(从SAT中)

第三步,我们间接地计算在当前采样后面的重要性值来避免前景干扰。

最后,计算出优化的消光系数,用来更新优化的透明度值

注意我们计算的gr,gb和gf是在之间的,而不仅仅是在之间。这样就会使优化一致且独立于光线的实际起点和终点。

讨论

简单讨论一下我们的感知、传输函数优化以及滤波。

感知:在单散射模型下,我们优化的光线投射算法可用于相机和阴影光线。然而,之前优化摄像机可见度的方法[35]、[41]、[46]、[54]也可以结合我们优化照明的方法使用,因为问题是正交的。许多优化摄像机可见度的算法(包括我们的方法)普遍存在的问题是遮挡信息的丢失,因为前景结构的不透明度通常会降低,以提高后面更重要特征的可见性,从而阻碍了对空间深度的感知。Viola等人[54]在屏幕空间中使用了一个2D窗口函数,以限制对有限尺寸结构的不透明度调制。通过这种方式,重要的特征可以通过窗孔看到,而上下文结构在靠近窗框的地方是可见的,支持遮挡和深度的感知。因此,我们采用Viola等人的方法。[54]我们的可见性优化。

传递函数优化:提高DVR中重要结构可见性的另一种常用方法是优化传递函数[9]、[22]、[31]、[48]、[59]。原则上,照明也可以受益于这些技术,因为它们全局优化不透明度,不依赖于特定的方向。因此,更多的光将被传输到重要的结构和遮挡信息将保持一致。然而,即使有一个优化的传递函数,由于缺少方向信息,重要特征仍然可以被遮挡或几乎不接收光。解决这一问题的一个可能的办法是将这两种方法结合起来:首先,可以利用先前的技术优化传递函数,以全局方式提高光的可见度和透射率。然后,我们的方法可以避免方向依赖性遮挡和重要特征光照不足的问题。

滤波:与原代价函数相比,我们的方法的关键在于对重要函数进行低通滤波。由于SATs的高效计算,我们选择了盒滤波。然而,重要的薄结构可能会被平滑过多,因为我们的滤波器不知道特征的形状或拓扑结构。在这里,可以应用更先进的技术,如各向异性扩散[27]、拓扑感知滤波[16]或L0梯度最小化[57]。虽然这些方法提供了更好的方法来控制过滤,但是对于交互式应用程序来说,它们可能太贵了,因为用户一旦修改了重要性函数,就需要重新计算过滤。

 

参考文献:

Ament M , Zirr T , Dachsbacher C . Extinction-Optimized Volume Illumination[J]. IEEE Transactions on Visualization & Computer Graphics, 2016, 23(7):1767.

你可能感兴趣的:(体渲染)