Papre - Inviwo - a visualization system with usage abstraction levels

Papre - Inviwo - a visualization system with usage abstraction levels

Inviwo — A Visualization System with Usage Abstraction Levels | IEEE Journals & Magazine | IEEE Xplore

1 Introduction

随着可视化领域的逐渐成熟,可以发现相关的研究正在从以算法为中心的方式逐渐向以应用为中心的方式偏移。之前的研究工作的重心大多聚焦于特定数据类型创新的显示方法和算法的实现,如,体渲染[1],line integral convolution[2],tensor glyphs[3],今天的可视化研究也将重点放在面向应用的可视化问题,如,医学可视化,engineering sciences, biological visualization, 或者天文学。可视化研究人员面临着新的挑战,在大多数应用中,必须考虑不同可视化算法之间的相互作用以及多个数据源的集成。此外,数据通常是庞大而繁杂的。所有这些都使得开发适用于现实世界问题的交互式可视化应用程序变得具有挑战性。这些年来,已经作出了各种努力来提供系统 旨在简化可视化应用程序的开发。VTK是其中一个为了实现这个目的的基础框架,使可视化应用程序开发人员能够加载要可视化的数据,并将多个构建块组合到可视化管道中。随着VTK的成功,以领域为中心的可视化研究发布了很多可视化系统,如,VisTrails[4],VolumeShop[5],MeVisLab[6], VisIt[7], VAPOR[8], Voreen[9], Amira[10]。他们中的大多数使用了流形的separation of concerns design principle[11]来构建不同的抽象层。由于可视化管线已经可以由数据流网络来进行模拟【17】,很多现代的可视化系统在应用开发的时候,最高抽象层作为数据流网格编辑器,比如,VisTrails, MeVisLab, Voreen。这样的层级结构被证明是成功的,但是他同时具有一些缺陷,就是会阻碍可视化应用开发过程。

首先可以观察到,可视化应用程序开发人员 有不同的需求。仅暴露抽象的最高层通常并不能满足复杂可视化应用的开发,需要针对不同抽象层进行修改。比如,处理更改数据流网络之外,用户可能还要更改c++,或计算平台相关的代码。由于数据流网络编辑器支持快速的开发,比如,改变的内容可以很快的得到可视化反馈,除此之外,针对cross layer的开发还需要在各个层需要能够进行debug和测试。这是我们提出的系统的两个主要特征之一。

现代系统使用的抽象层中的基础问题是,与硬件强关联。底层可以通过OpenCL,OpenGL,or CUDA实现。而且,利用OpenCL实现的算法,并不能直接转写成用OpenGL实现。在计算平台的快速迭代的情况下,这个问题变个更加明显(2004:OpenGL 2.0, 2006:DirectX 10, 2007:CUDA, 2008:OpenGL 3.0, 2009:OpenCL/DirectX 11, 2015:DirectX 12, 2016:Vulkan)。这篇文章,提出了基于不同计算平台实现的算法能够一起运行。这是我们提出的系统的另一个主要特征。

在本文中,我们提出了在现代可视化系统中支持跨层开发和计算平台互操作性的设计原则及其技术实现。该设计原则,已经集成到了Inviwo可视化系统中,它已经被用于很多可视化应用的实现,如,olume data explo-ration [12], molecular visualization [13], and material science [14]

Visualization systems. VTK是用于创建可视化程序的c++框架,在实现的时候,需要在它的基础上构建一些使用抽象层。VTK-m用于并行计算的框架,将具体的计算平台和实现逻辑进行隔离。由于VTK和VTK-m是偏向底层的框架,能够很好的集成到Inviwo中。

提供了使用抽象层的示例有:ParaView,VisTrails,VisIt,tomviz。ParaView使用了tree-view来表示可视化pipeline,而在Inviwo和其他的一些系统,如,MevisLab,Amira,VisTrails,Voreen使用了cyclic graph representation。tomviz主要适用于透射电镜数据。

还有一些不是基于VTK的系统,如Amira和MeVisLab是针对生命科学的商用系统。另一个商用系统是AVS Express。Voreen用于体渲染。

Visualization systems comparison

Game engines Unity和Unreal Engine。Sicat et al. [15]在unity基础上提出了创建沉浸式数据可视化的工具,但是还缺少对应的debug和graph工具。同时,unity对网格的预处理,可能并不满足科学可视化的目的。

3 system requirements

可视化系统通常使用多个抽象层来实现以抽象为中心的设计。

此处我们认为比较关键的点是性能和开发效率,必须保证跨抽象层访问不能影响性能,以及能够帮助定制化显示应用。另一个具有挑战的地方是,和computing platform layer的通信。

从研发者角度出发,整个过程包括coding,debugging,documenting和testing,因此系统需要能够支持互动的c++ coding,shader editing和data flow network的debugging。测试必须支持算法层和可视化pipeline层。从可视化工具制作者的角度出发,系统必须能够对pipeline进行编辑,用来得到想要的显示效果。

可交互性是可视化系统的关键。

4 Usage abstraction levels

支持交互式编码、着色器编辑和调试需要一个允许跨抽象层执行开发的系统。这一节会为了这样的系统定义关键内容。首先,我们描述了实现交互开发的方法。

4.1 Interactive Development

高级开发意味着使用可视化表示来创建和更改可视化管道。为了允许模拟高层级编辑和低层级c++ coding,系统必须在可视化编辑运行的时候能够重新编译和重新加载改变的部分。这个改变可以通过modular system design实现,比如,插件系统(动态库能够卸载加载,反应对应的变化量)。中间使用抽象层编辑,比如,计算系统使用的shader的更改,或者脚本的更改,能够在不卸载,重载动态库情况下,完成更新。因此,这一层的交互编码,可以通过提供接口用于重新编译源代码或者发现对应的源文件发生变化的时候,自动重新编译对应的文件。然而,目前提出的交互式开发的概念看上去似乎很简单,它允许用户在同一时间访问多个抽象层,体现出了系统满足快速开发的需求。

4.2 Visual data flow debugging

调试并行操作很困难,因为有许多输出同时发生。现成的调试工具能够帮助开发者,选定特定的线程作为调试目标,一次检查一个线程可能会很乏味,并且在将错误缩小到代码中的特定部分时最有效。可视化的检查并行操作的输出结果能够帮助开发者快速获得整体概述,有助于更快的确定出问题的地方。这个可以视为,对higher level of abstraction的调试,需要能够快速获取底层的信息。

这种跨层调试是由我们称为端口检查的概念提供的(port inspection)。port inspection允许processor的port的内容能够被查看。通过在visualization pipeline editor中应用这个概念,允许进行一步一步对数据流网络进行调试。比如将鼠标悬停或点击到port,或者他们的连接,能够显示相关的调试信息。

4.3 Documentation

TODO: 具体是如何实现一处注释,两处可用的??

如今,API文档或多或少是标准化的,例如使用Doxygen系统。但是这个文档是针对开发者的,而不是针对pipeline editors。在可视化管道编辑器级别提供文档可以通过多种方式完成,比如展示单独文件中写的文档,比如,xml,html。虽然这个通过使用工具能够实现,但是在开发者的角度而言是不好维护的。对于低维护开销和易用性非常重要的系统,我们建议将此文档编制过程集成到API文档中。这样允许开发者写一份文档,在API-documentation和visualization pipeline editor都能够查看。

然而,开发者通常使用textual 文档,pipeline需要的是richer信息。因此,文档必须在不同的使用抽象级别上适当地呈现。在实践中,我们的概念涉及从源代码中提取处理器文档,并使用更高抽象层中使用的可视化表示对其进行扩充。并且能够自动生成。

上述文档概念不仅易于维护,因为它与实际代码位于同一位置,而且还提供了关于如何在多个使用抽象级别使用处理器的信息,从而满足系统需求。

4.4 Testing

unit测试,通常用于测试low abstraction level的代码,但是也能够用于测试完整的可视化管线。但是,unit测试,需要编码技能,因此不能再higher usage level abstraction中使用。

我们的测试概念允许,在high usage abstraction level中创建可视化管线的测试,比如,通过可视化管线GUI编辑器。一旦定义了要测试的可视化管道,就可以比较更改前后的结果。但是,要实现我们的概念,对可视化管线结果的比较是比较重要的挑战。此处,一种途径是先生成参考结果,然后在每一次测试执行的时候,将新的结果和参考结果进行比对。我们发现这个方法是有问题的。首先,不同硬件得到的结果可能不同,这样,可能的不正确的表现,永远不会被检测出来,因为生成参考结果和测试结果的都是相同的硬件环境。其次,需要更多的资源,针对不同的版本,需要构建对应的参考结果。因此,当定义测试的时候,应该只生成一次测试结果。针对不同的硬件条件,我们引入了阈值。

5 Computing platform interoperability

我们系统最底层的抽象是数据抽象,而不是computing platforms。我们的设计包括一个通用数据接口,该接口公开了用于为任意计算平台请求数据的函数。使用这些接口的数据类型示例有:buffers,images,和volumes。简而言之,计算平台的数据表示简单地作为representation。我们的设计中针对volume最重要的对象如下图:

图中,提供了数据访问的抽象层(Volume),representation管理数据,converter用来在不同的计算平台之间传输数据。在请求的时候才会创建representation(lazily crated)。一旦请求过,那么就会被缓存。data对象使用过的representation的列表需要被存储。需要能够知道列表中哪个representation需要更新。converter的两个任务是基于其他的representation创建或更新当前的representation。

为了在请求数据时形成最佳转换路径,必须考虑现有计算平台之间的所有组合。因此,手动实现所有可能的转换器组合很快变得不可行。通过从开发人员提供的各个转换器中通过算法创建转换器包,解决了这一难题。其中一个包包含将数据从一个表示形式传输到另一个表示形式的路径。这些包可以按性能顺序排序,并在运行时选择。实际上,这种算法转换器路径创建意味着开发人员只需在新表示和现有表示之间实现一个转换器,它就可以正常工作。指定更多的数据传输组合可以提高性能,例如在共享数据的情况下。

更复杂的数据结构,例如包含顶点缓冲区和其他属性的网格,可以利用作为构建块提供的基本类型,从而获得相同的属性。提出的概念提高了可视化系统的可持续性,同时仍然允许访问本机计算平台功能。提出的使用抽象级别和计算平台互操作性概念已在Inviwo中实现。以下部分提供了这些实现的详细信息。

6 realization in the inviwo framework

先介绍inviwo的不同部分怎么和上面的概念关联。然后介绍level abstractions是怎么使用的,以及计算平台互操作性在inviwo中是怎么实现的。

Inviwo Overview

Inviwo是以data flow graph为核心概念构建的,其中图中的每个node表示一个功能单元。graph中的边表示流入或流出功能单元的数据。功能单元,它的输入,输出数据,和他的参数被封装成了一个processor。一个processor有imports,它封装了input data,outputs(封装了output data),properties(封装了参数)。本文的附录给出了如何最好的封装功能单元到processor的介绍。一组processor可以组合成processor composite的形式,提供更复杂任务的抽象。连接处理器和处理器组合的图形称为处理器网络,相当于可视化管道。

数据可以是内存中的raw data,geometries,volumes,images,data frames或任何其他数据结构的数据。processor示意图如下:

6.1 交互式开发的使用抽象 Usage abstractions for interactive development

有三个抽象层。最上层的是,基于graphical interfaces,中间层的是scripting和shader editing,最底层的是,based c++ coding。

6.1.1 High usage abstraction level editing

网络编辑器是一个用于可视化构建、编辑、调试和运行处理器网络的应用程序。这是一个关键的组成部分,因为它为跨层开发提供了手段,允许开发人员在可视化编辑可视化管道、用Python脚本编写和C++中进行编码之间无缝移动。

从processor list中可以拖拽元素到network。port的类型可以通过颜色反应:image是蓝色,volume是红色,mesh是黄色。

在pipeline构建的时候,这个网络会自动执行。可以通过canvas或visual debugging查看。在Property list中可以编辑processor的属性。network中processor的properties属性可以相互关联(同步)。

6.1.2 Medium usage abstraction level editing

Inviwo已经集成了python脚本语言。inviwo中的python使用方式可以有以下几种。首先,可以使用处理器网络编辑器中的集成Python编辑器执行批处理。比如,camera参数可以脚本控制进行benchmarking。python编辑器的集成,可以方便开发者在high和medium两个抽象层之间顺利的过度。其次,数据可以在处理器内来回传输到Python进行计算。这个尤其当需要python丰富的处理能力的时候非常重要,这同样意味着Inviwo中的算法能够在python中调用。Python数据传输通常在处理器中使用,但脚本可以通过属性公开,从而实现高使用率抽象级别编辑。第三,处理器和处理过程,可以完全用python实现。这对于熟悉python的开发者而言更加友好。最后,python仍然通过module进行集成,并没有直接包含到Inviwo core中。

同时支持shader的编辑。shader文件的保存会触发重新编译。

6.1.3 Low usage abstraction level editing

Inviwo系统是基于模块结构的,所有的模块依赖于core,此外,还可以依赖其他的模块,或者外部的库,如Fig3. 模块系统允许引入新的功能的时候,不需要在core system中引入任何依赖。比如,OpenGL模块添加对于OpenGL平台的支持,其他模块可以在该模块的基础上构建新的功能。Inviwo能够管理不同模块之间的依赖。同时,如果需要依赖第三方库,尽可能的将库引入到构建系统中,这样能够确保版本兼容性。

交互式编程是在热更新的基础上构建的,即,能够在运行的过程中对模块中的内容进行更新。网络编辑器能够监测对应的模块是否发生了变化。然后会序列化processor网络,重新加载modules,反序列化网络。需要开发者确保对应的模块能够重复的被卸载和加载。比如,不能够引入API级别的更改。

6.2 Visual Debugging

6.3 Two-level document

6.4 Cross-layer testing

系统具有两种类型的test,unit tests(用于代码中每个element级别的测试),regression test(用于processors之间的集成测试)。模块开发人员需要在模块目录下面添加一个tests名的文件夹,然后在该文件夹下面创建名为‘unittests’的文件夹用于单元测试,创建名为‘regression’的文件夹,用于回归测试。文件夹下的测试会被框架自动处理。

6.4.1 Unit testing

依赖于Google Test。默认情况下,所有模块的单元测试,在系统构建的时候被包含进去,这意味着test,在构建成功后运行,并将信息输出到IDE中。

6.4.2 regression testing

6.5 Algorithm interoperability

inviwo通过模板的方式实现了section 5中描述的数据接口。返回的表示是强类型的。目前支持的有CPU,OpenGL,OpenCL。

7 Application

inviwo已经成功运用到了很多不同领域的项目中,如,advanced volumetric illumination [16],[17],[18],医学和分子可视化[19],[20],[21],体绘制的传输函数设计[12:1],[22],crowd-sourcing-based user studies[23],[24],[25],拓扑分析[26],[27],[28],不同数据和流可视化[29],[30],[31]


  1. D. J ̈onsson, E. Sund ́en, A. Ynnerman, and T. Ropinski, “A Survey of Volumetric Illumination Techniques for Interactive Volume endering,” Computer Graphics Forum, vol. 33, no. 1, pp. 27–51, 2014. ↩︎

  2. B. Cabral and L. C. Leedom, “Imaging vector fields using line integral convolution,” in Proceedings of the 20th annual conference on Computer graphics and interactive techniques. ACM, 1993, pp. 263–270 ↩︎

  3. G. Kindlmann, “Superquadric tensor glyphs,” in Proceedings of the Sixth Joint Eurographics-IEEE TCVG conference on Visualization. Eurograph- ics Association, 2004, pp. 147–154 ↩︎

  4. L. Bavoil, S. P. Callahan, P. J. Crossno, J. Freire, C. E. Scheidegger, C. T. Silva, and H. T. Vo, “Vistrails: Enabling interactive multiple-view visualizations,” in VIS 05. IEEE Visualization, 2005. IEEE, 2005, pp. 135–142 ↩︎

  5. S. Bruckner and M. E. Gr ̈oller, Volumeshop: An interactive system for direct volume illustration. IEEE, 2005 ↩︎

  6. MeVis Medical Solutions AG, “Mevislab,” www.mevislab.de, Accessed:2018-10-31. ↩︎

  7. H. Childs, E. Brugger, B. Whitlock, J. Meredith, S. Ahern, D. Pugmire,K. Biagas, M. Miller, C. Harrison, G. H. Weber, H. Krishnan, T. Fogal,A. Sanderson, C. Garth, E. W. Bethel, D. Camp, O. R ̈ubel, M. Durant, J. M. Favre, and P. Navr ́atil, “VisIt: An End-User Tool For Visualizing and Analyzing Very Large Data,” in High Performance Visualization–Enabling Extreme-Scale Scientific Insight, Oct 2012, pp. 357–372 ↩︎

  8. J. Clyne, P. Mininni, A. Norton, and M. Rast, “Interactive desktop analysis of high resolution simulations: application to turbulent plume dynamics and current sheet formation,” New Journal of Physics, vol. 9, no. 8, p. 301, 2007 ↩︎

  9. J. Meyer-Spradow, T. Ropinski, J. Mensmann, and K. Hinrichs, “Voreen: A Rapid-Prototyping Environment for Ray-Casting-Based Volume Visualizations,” IEEE Computer Graphics and Applications, vol. 29, no. 6, pp.6–13, 2009. ↩︎

  10. Thermo Fisher Scientific, “Amira,” www.fei.com, Accessed: 2018-10-31 ↩︎

  11. C. Reade, Elements of functional programming. Addison-Wesley, 1989 ↩︎

  12. D. J ̈onsson, M. Falk, and A. Ynnerman, “Intuitive Exploration of Volumetric Data Using Dynamic Galleries,” IEEE Transactions on Visualization and Computer Graphics (TVCG), vol. 22, no. 1, pp. 896 –905, 2016, 10.1109/TVCG.2015.2467294 ↩︎ ↩︎

  13. C. Konig, R. Sk ̊anberg, I. Hotz, A. Ynnerman, P. Norman, and M. Linares,“Binding sites for luminescent amyloid biomarkers from non-biased molecular dynamics simulations,” Chem. Commun., vol. 54, pp. 3030–3033, 2018. [Online]. Available: http://dx.doi.org/10.1039/C8CC00105G ↩︎

  14. S. Kottravel, R. Volpi, M. Linares, T. Ropinski, and I. Hotz, “Visual analysis of stochastic trajectory ensembles in organic solar cell design,” in Informatics, vol. 4, no. 3. Multidisciplinary Digital Publishing Institute,2017, p. 25 ↩︎

  15. R. Sicat, J. Li, J. Choi, M. Cordeil, W.-K. Jeong, B. Bach, and H. Pfister, “Dxr: A toolkit for building immersive data visualizations,” IEEE transactions on visualization and computer graphics, 2018 ↩︎

  16. E. Sund ́en and T. Ropinski, “Efficient Volume Illumination with Multiple Light Sources through Selective Light Updates,” in Proceedings of the 2015 IEEE Pacific Visualization Symposium, 2015, pp. 231–238. ↩︎

  17. D. J ̈onsson, “Enhancing Salient Features in Volumetric Data Using Illumination and Transfer Functions,” Ph.D. dissertation, Link ̈oping University, 2016. ↩︎

  18. D. J ̈onsson and A. Ynnerman, “Correlated Photon Mapping for Interactive Global Illumination of Time-Varying Volumetric Data,” IEEE Transactions on Visualization and Computer Graphics (TVCG), vol. 23, no. 1, pp. 901–910, 2017 ↩︎

  19. J. Kreiser, J. Freedman, and T. Ropinski, “Visually supporting multiple needle placement in irreversible electroporation interventions,” in Computer Graphics Forum, vol. 37, no. 6. Wiley Online Library, 2018, pp. 59–71. ↩︎

  20. M. Falk, A. Ynnerman, D. Treanor, and C. Lundstr ̈om, “Interactive visualization of 3D histopathology in native resolution,” IEEE TVCG (SciVis Proceedings), vol. 29, no. 1, 2019. ↩︎

  21. S. Kottravel, M. Falk, T. B. Masood, M. Linares, and I. Hotz, “Visual Analysis of Charge Flow Network for Complex Morphologies,” Computer Graphics Forum (EuroVis’19), vol. 38, no. 3, 2019, to appear ↩︎

  22. M. Falk, I. Hotz, P. Ljung, D. Treanor, A. Ynnerman, and C. Lundstr ̈om, “Transfer function design toolbox for full-color volume datasets,” in IEEE Pacific Visualization Symposium (PacificVis 2017), 2017. ↩︎

  23. R. Englund and T. Ropinski, “Evaluating the perception of semi-transparent structures in direct volume rendering techniques,” in SIG-GRAPH ASIA 2016 Symposium on Visualization. ACM, 2016. ↩︎

  24. R. Englund, S. Kottravel, and T. Ropinski, “A Crowdsourcing System for Integrated and Reproducible Evaluation in Scientific Visualization,” in Proceedings of the 2016 IEEE Pacific Visualization Symposium, 2016. ↩︎

  25. R. Englund and T. Ropinski, “Quantitative and Qualitative Analysis of the Perception of Semi-Transparent Structures in Direct Volume Rendering,” Computer Graphics Forum, 2018, dOI: 10.1111/cgf.13320. ↩︎

  26. A. Bock, H. Doraiswamy, A. Summers, and C. Silva, “Topoangler: Interactive topology-based extraction of fishes,” IEEE Transactions on Visualization and Computer Graphics, vol. 24, no. 1, pp. 812–821, Jan2018. ↩︎

  27. W. K ̈opp and T. Weinkauf, “Temporal treemaps: Static visualization of evolving trees,” IEEE Transactions on Visualization and Computer Graphics (Proc. IEEE VIS), vol. 25, no. 1, Jan. 2019. [Online]. Available: http://tinoweinkauf.net/publications/abskoepp19a.html ↩︎

  28. J. Jankowai, B. Wang, and I. Hotz, “Robust Extraction and Simplification of 2D Tensor Field Topology,” Computer Graphics Forum (EuroVis’19), vol. 38, no. 3, 2019, to appear. ↩︎

  29. J. Jankowai and I. Hotz, “Feature level-sets: Generalizing iso-surfaces to multi-variate data,” IEEE Transactions on Visualization and Computer Graphics, pp. 1–1, 2018. ↩︎

  30. R. Englund, T. Ropinski, and I. Hotz, “Coherence Maps for Blood Flow Exploration,” in Eurographics Workshop on Visual Computing for Biology and Medicine. Bergen, Norway: Eurographics Association, 2016. ↩︎

  31. R. Englund, K. Lundin Palmerius, I. Hotz, and A. Ynnerman, “Touching Data: Enhancing Visual Exploration of Flow Data with Haptics,” IEEE Computing in Science & Engineering, vol. 20, no. 3, pp. 89–100, 2018. ↩︎

posted @ 2022-01-07 09:26  grassofsky  阅读(81)  评论(0编辑  收藏  举报