天天看點

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]。

2 Related work

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。

Papre - Inviwo - a visualization system with usage abstraction levels

Game engines Unity和Unreal Engine。Sicat et al. [15]在unity基礎上提出了建立沉浸式資料可視化的工具,但是還缺少對應的debug和graph工具。同時,unity對網格的預處理,可能并不滿足科學可視化的目的。

3 system requirements

可視化系統通常使用多個抽象層來實作以抽象為中心的設計。

Papre - Inviwo - a visualization system with usage abstraction levels

此處我們認為比較關鍵的點是性能和開發效率,必須保證跨抽象層通路不能影響性能,以及能夠幫助定制化顯示應用。另一個具有挑戰的地方是,和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最重要的對象如下圖:

Papre - Inviwo - a visualization system with usage abstraction levels

圖中,提供了資料通路的抽象層(Volume),representation管理資料,converter用來在不同的計算平台之間傳輸資料。在請求的時候才會建立representation(lazily crated)。一旦請求過,那麼就會被緩存。data對象使用過的representation的清單需要被存儲。需要能夠知道清單中哪個representation需要更新。converter的兩個任務是基于其他的representation建立或更新目前的representation。

為了在請求資料時形成最佳轉換路徑,必須考慮現有計算平台之間的所有組合。是以,手動實作所有可能的轉換器組合很快變得不可行。通過從開發人員提供的各個轉換器中通過算法建立轉換器包,解決了這一難題。其中一個包包含将資料從一個表示形式傳輸到另一個表示形式的路徑。這些包可以按性能順序排序,并在運作時選擇。實際上,這種算法轉換器路徑建立意味着開發人員隻需在新表示和現有表示之間實作一個轉換器,它就可以正常工作。指定更多的資料傳輸組合可以提高性能,例如在共享資料的情況下。

更複雜的資料結構,例如包含頂點緩沖區和其他屬性的網格,可以利用作為建構塊提供的基本類型,進而獲得相同的屬性。提出的概念提高了可視化系統的可持續性,同時仍然允許通路本機計算平台功能。提出的使用抽象級别和計算平台互操作性概念已在Inviwo中實作。以下部分提供了這些實作的詳細資訊。

6 realization in the inviwo framework

先介紹inviwo的不同部分怎麼和上面的概念關聯。然後介紹level abstractions是怎麼使用的,以及計算平台互操作性在inviwo中是怎麼實作的。

Papre - Inviwo - a visualization system with usage abstraction levels

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示意圖如下:

Papre - Inviwo - a visualization system with usage abstraction levels

6.1 互動式開發的使用抽象 Usage abstractions for interactive development

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

6.1.1 High usage abstraction level editing

Papre - Inviwo - a visualization system with usage abstraction levels

網絡編輯器是一個用于可視化建構、編輯、調試和運作處理器網絡的應用程式。這是一個關鍵的組成部分,因為它為跨層開發提供了手段,允許開發人員在可視化編輯可視化管道、用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

Papre - Inviwo - a visualization system with usage abstraction levels

6.3 Two-level document

Papre - Inviwo - a visualization system with usage abstraction levels

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

Papre - Inviwo - a visualization system with usage abstraction levels

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. ↩︎

版權說明

作者: grassofsky

出處: http://www.cnblogs.com/grass-and-moon

本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 原文連結 如有問題, 可郵件([email protected])咨詢.