具有时空误差控制的交互式渐进可视化 (Interactive Progressive Visualization with Space-Time Error Control)

在体可视化中,光线追踪算法是一种常用的算法。不过,由于对每条光线而言都需要进行大量的采样,其计算代价是非常大的。这时候往往可以使用渐进可视化的方法,即一边展示一些早期近似计算得到的绘制结果,一边持续对该结果进行优化精炼。但是,图片往往需要一个比较长的绘制时间才能达到高的质量(即空间误差随时间不断减小),而当视角和传递函数改变时,比较长的响应时间会延迟图片图片帧的替换(即时间误差越来越大)。因此,这里面需要做适当的权衡。传统的方法使用静态的采样率和帧率,但是如何选择一个好的静态设置并在交互式可视化中得到保持是非常困难的。2014年SciVis的这篇文章[1]提出的一种基于空间和时间误差估计的动态自适应帧控制的方法,很好地解决了这个问题。如图1所示示例,该方法在静态的采样率和帧率之间做到了很好的平衡。

图1 动态自适应帧控制与静态采样率和帧率方法的比较

方法的流程如图2所示,一共有四个方面,包括一个体绘制光线追踪的渐进可视化,基于图片的时空误差评估,帧控制,以及帧控制参数的自动优化。接下来会具体介绍。

图2 具有时空误差控制的交互式渐进可视化的流程图

这篇文章的渐进可视化是一个体绘制光线追踪方法,其目的是同时提供灵活的可中断性和有效的硬件使用。该可视化使用了基于分片(tile)的绘制器,包含多种分辨率。如图3所示,一共有五个层次的分辨率,总共包含341个分片。对每一个分片,像素的颜色值通过使用高斯过滤核从与之相近的采样点重构得到。该渐进可视化还用到了双缓冲区。在绘制过程中,活动帧通常会一边显示绘制结果,一边在后台被进一步优化。

图3 渐进可视化的分层分片示意图

渐进可视化的空间误差(ς)反映了在图片质量上的折中。在图片重构的过程中,可以先使用增量算法计算每个像素对应的采样点的颜色差异,再通过分层递阶约减的方法将所有像素误差值进行累加,其平均值即可作为空间误差的估计。另一方面,时间误差(τ)则反映了对视角和传递函数等的改变而造成的延迟响应。对于时间误差的估计,可以首先对该帧在当前绘制配置下做一个近似,利用迭代之间的颜色差作为每个像素的时间差异,然后用同样的累加方法得到所有像素的时间差异,其在时间上的累积即为时间误差的估计。

有了时间和空间上的差异,可以对帧进行动态的自适应控制。帧控制包含三个方面,如图4所示。第一个是重新开始(restart, ρ),即停止优化活动帧,转而开始计算新的帧。第二个是展示(show, ),即将活动帧复制到显示缓冲区进行显示。第三个是资源(resources, χ),即控制是否停止优化或者转向空闲。这三个方面实际上自适应地控制了帧的计算、显示以及对资源的利用。如图5所示,其触发条件都是由于各自帧控制参数与前面计算的时间空间差异组成的不等式,帧控制参数表示的是不等式中的权重或者阈值。

图4 帧控制的三个操作模型

图5 帧控制的各种触发条件

帧控制参数的优化可以根据用户的选择和偏好手动设置。这篇文章提出了一种离线自动优化的方法,如图6所示,可以根据以往的交互日志,包括交互过程中的场景(包括不同的数据集和硬件设置)和参数组,来进行评估。 具体来讲,他们使用了视频质量分析的方法,捕捉显示缓冲区里的图片做成视频然后与参照视频进行对比,得出一个误差值。然后利用以往的多个场景和参数组信息,即可通过一个最小二乘相对误差估计来计算得到最优的参数设置。

图6 离线自动优化帧控制参数的流程

总结来讲,该工作是一个比较典型的利用渐进可视化的思想对可视化过程中出现的一些需要权衡的问题进行处理的方法。实际上,不仅是在体绘制中需要对图片质量和帧的跳转进行一个折中,在很多其他的应用中,也可能会有很多方面是需要作出权衡的,例如粒子追踪中的粒子采样率和数据访问之间的选择,等等。对于这样的问题,我们可以思考如何使用渐进可视化的方法自适应地去解决。

Reference

[1] Steffen Frey, Filip Sadlo, Kwan-Liu Ma, and Thomas Ertl. Interactive Progressive Visualization with Space-Time Error Control. IEEE TVCG, 20(12):2397-2406, 2014.

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>