一種對於靈活的體資料視覺化流程的申明語法(A Declarative Grammar of Flexible Volume Visualiz...
直接體繪製是一種廣為接受的視覺化3D體資料的方法,通常採用統一化的流程。由於不同的體資料需要展示不同的特徵,一些定製的視覺化技術通常被應用。如為了強化分類的效果採用高階的傳遞函式,為了更好的視覺感官採用非真實感渲染技術等,這會導致流程中的每一個步驟都可能發生改變。同時多資料場視覺化同樣十分重要,當需要進行混合的場的個數發生改變時,視覺化的流程同樣會發生改變,同時這樣的改變在對於體資料初期的探索中十分常見。本文描述了一種對於靈活多變的體資料視覺化流程的申明語法。
當今的系統並沒有能較好的處理上述的問題。譬如一些傳統的圖形介面的體渲染應用軟體,它們不夠靈活多變,僅僅能適用於特定的場景。如使用者可以調節傳遞函式而體資料視覺化流程改變時,它們不能有效的處理。同樣另一些方法則顯得過於困難,需要大量直接體渲染的知識。這兩點就對我們提出了設計的需求。
本文的方法採用了一種申明式視覺化的方法,這早已被廣泛應用於資訊視覺化中,但本工作是第一個採用申明式視覺化的方法來定製不同體資料視覺化流程的工作。這樣的方式能夠將視覺化的指定從執行的模組中解耦合出來,頗具好處。
本文對於語法的設計針對於取樣層級的體資料視覺化流程,並將其表達為一系列的場和對映的組合。場的定義為從體資料不同位置到對應標量、向量、張量的函式。對映的定義為從一個場或多個場的組合輸入到另一個輸出的場的函式。本文采用一個類似於JSON的語言,基於其在對於層次資料的表達以及解析、整合中的優勢。
對於場的申明,通常有五種方式。包含由給定資料通道的申明方式、多個給定資料通道公式化計算的申明方式、解析定義的方式、類似預處理的方式以及複用之前定義的方式。
對於顏色和透明度場的對映,預設採用1D的傳遞函式,通過使用者定義的關鍵點,並插值形成分段的線性函式。當採用高維的傳遞函式時,本文考慮採用採用另一種定義的樣式。
對於光照的模式,本文考慮基本的Phong shading的模型以及一系列非真實感渲染的方式,主要包含tone shading、Silhouettes 和藝術化的光照方式。
為了方便使用者對於興趣區域的探索,過濾操作也常被用作預處理的方式。本文語法中支援基於掩模版的過濾以及基於值域的過濾。儘管光照和過濾的方式,同樣可以被認為是一種對映,但為了方便起見,本工作將其作為獨立的一個模組。
對於多場資料的融合通常有兩種基本的方式,包含影象層面的混合和累積層面的混合(Accumulation-level intermixing)。影象層面的混合通常比較簡單,先對多個體資料分別渲染再疊加,但會產生深度的錯誤。而累加層面的混合如透明度混合技術(Alpha blending),能夠生成深度正確的視覺化。
對於單個的引數,本工作可以生成動畫來觀察變化帶來的影響。使用者同樣可以通過定義多個關鍵點,並通過插值的方式生成中間的動畫過程。
除了以上的基本的語法,本工作同時給出了語法簡化的規則來滿足實際應用中的需要。本工作定義的語法中允許省略一些不必要的引數。如在早期探索性的試錯工作中,使用者並不想知道所有引數的具體設定,而是僅僅希望嘗試的操作,此時使用者應用此規則可以有效的進行操作。這樣的語句在解析時會被以預設的形式補充上缺失的引數。本工作定義的語法中還定義了繼承的規則,即由祖先模組來指定的孩子模組可以繼承祖先模組中的引數設定。這樣的規則是的由其他場生成的場的申明和對映大大簡化。
不止於枯燥的語法的定義,本工作還構建了一個系統來保證使用者有效的進行體資料探索工作。系統包含一個視覺化流程定義的指令碼編輯視窗,一個渲染視窗,一個動態的引數設定面板。當用戶在指令碼編輯視窗修改視覺化的流程時,動態引數設定面板的內容也會隨之而改變,反之亦然。
系統的實現主要包含兩個方面,分別為一個將類JSON語言轉變為中間表達的解析器和一個動態的GPU體資料渲染器。中間結果包含兩個不同的資料結構,其一為為了高效複用OpenGL光照渲染的光照圖結構,其二為一個樹形的層次引數儲存。
下圖展示了應用此係統生成地一系列的渲染結果,包含一個燃燒模擬和一個生物醫學影像PET、CT資料,同時還有一個人體的渲染和切面的動畫。
總之,本文提出了一種針對定製體資料視覺化流程的申明語法,同時附帶了一個對使用者友好的的介面,使使用者能夠高效的探索體資料,值得一讀。
參考文獻
[1] Shih M, Rozhon C, Ma K L. A Declarative Grammar of Flexible Volume Visualization Pipelines[J]. IEEE transactions on visualization and computer graphics, 2018.