劉暢 宋浩全

摘要:實現了海洋流場數據的可視化。整個過程首先采用雙線性插值對數據進行預處理,然后使用LIC算法對各像素點進行紋理運算,得到輸出圖像的紋理信息,將紋理信息與顏色信息進行融合后得出各像素點的最終像素值,最終通過OpenGL將流線的繪制結果顯示出來。實驗結果驗證了上述方法的可行性。
關鍵詞:流場數據可視化線卷積積分雙線性插值
中圖分類號:TN957.52 文獻標識碼:A 文章編號:1007-9416(2016)06-0000-00
1引言
科學可視化是融合了圖形學、計算機視覺、數據管理、圖像處理和人機交互等多學科的一門新興的綜合學科。科學可視化的方法在發展到一定程度后可以與相關的領域結合應用,這可將科學實驗結果以及大規模的計算數據直觀地呈現出來,為用戶挖掘數據中的深層信息提供極大的便利。由于自然界沒有直接可用的表現矢量數據的可視化的表達模型,目前針對這類數據還沒有找到一種可以通用的技術。然而海洋水體中采集的數據大部分為矢量場數據,矢量場的可視化對理解復雜的流體制意義重大,所以尋求有效的解決方案是十分必要的。
矢量場中的特征各有不同,通常特征對流場數據描述的精確度與特征的維數正相關,因此常選取維數相對較高的特征來描述流場。對于這類特征,其可視化方法大致分為四種方法。直接法:直接將相應特征的數據表現出來,不進行分析操作,此方法直觀、易懂、運算量相對小。幾何法:在流線上指定一系列點,記錄這些點的運動軌跡;基于這些軌跡來繪制幾何對象。基于特征的方法:提取數據中被用戶視為有意義的部分,對這一部分信息進行可視化操作。基于紋理的方法:將向量場的局部性質呈現給可視化向量場,這類方法可以在一些復雜的流場中,繪制出一個具備很多細節的密集連貫的可視化結果。基于紋理的可視化可以依賴的技術可歸納為點噪聲技術、線積分卷積(LIC)、紋理平流和運用GPU的技術等。本文選用基于紋理的線卷積積分(即LIC方法)實現海洋流場數據的可視化,為海洋領域的研究提供新的方法。
2 關鍵技術
2.1雙線性插值
由于采集的海洋流場數據點是離散且無特殊規律可循的一個離散的點集,而計算機在處理無規則的數據時有很大難度,因此為了流場數據可視化的順利進行,對海洋流場數據進行預處理是必不可少的。本文的數據預處理工作采用雙線性插值法進行。雙線性插值,又稱為雙線性內插,是含有兩個變量的插值函數的線性插值擴展,其核心思想是在兩個方向分別進行一次線性插值。
如圖1所示,設要得到未知函數 在點 的值,假設函數 在 四個點的函數值是已知的。第一步,沿著 軸的方向采用線性插值的方法進行插值操作,經過這一步操作可以得到 的坐標值。第二步,沿著 軸的方向進行線性插值,得到 的坐標。這樣就得到所要的結果 。
2.2龍格庫塔法
在求解微分方程的眾多方法中,龍格庫塔法是一種較為常用,精度也較高的方法。因此,龍格庫塔方法在工程領域的應用也較為廣泛。泰勒公式和用斜率作為近似表達微分,是龍格庫塔算法的兩大特征。其主要思路是將積分區間上計算出幾個點的斜率進行加權平均,得到的結果作為下一組計算參考。根據預先計算的點的個數不同,龍格庫塔算法可以分為二階龍格庫塔法、四階龍格庫塔法等。
2.3 線卷積積分
LIC(Line Integral Convolution,線卷積積分)是流場紋理方法中最主要的一種技術,其主要思路是以矢量場數據的噪聲紋理為根據進行低通濾波,生成具有矢量方向相關性的紋理圖像。輸出圖像中每一點的像素值如下:
其中, 是輸出圖像中像素 的灰度值; 是噪聲圖像中像素 的灰度值; 和 分別是沿流線正向、反向第 步的像素位置; 和 分別是正向和反向流線的積分步數; 表示反向流線的權值。
LIC方法基于運動模糊的圖像處理,在流場數據的方向上進行卷積濾波,使得結果可以表現出流線的空間相關性。LIC算法可以提高處理數據的效率,每一個像素點的速度矢量也能較為快速的得到。
LIC通常選擇白噪聲作為輸入紋理,本文也是這么操作的。采用卷積積分的方法得出每一個像素點的輸出紋理值。第一步,針對成像區域中的每一個像素點,沿著其流場的正、反兩個方向進行積分操作,這的積分操作是對稱的。通過這過程可得到該點的流線。第二步,每個像素點對應的輸入噪聲值根據選取的卷積核參與卷積,得到的結果作為輸出紋理的像素值。
3海洋流場數據可視化設計與實現
本文設計了基于LIC的海洋流場數據可視化的流程如下:
首先,從數據文件中讀取出海洋二維流場可視化數據。將讀取處的數據存入預先定義好的的數據結構中;建立均勻網格的結構化數據模型,然后對數據運用線性插值法進行預處理,使流場數據均勻的分布在二維網格上。本文定義一個新的數據結構,其數據組成包括經度位置、緯度位置,在經度方向的速度大小和在緯度方向的速度大小。
第二,輸入噪聲確定為白噪聲,同時設置好流線的控制參數。其中,步數設置的在進行卷積運算的次數,即通過幾步可以生成所需的整條流線;步長設置的是每一次運算所選取的數據點移動的距離大小;流線總長度設置的是卷積運算次數的最大值,即何時強制終止此次運算。
第三,經過上述處理的各個像素點,根據LIC算法原理分別沿著正向、反向進行流線計算。這里采用龍格庫塔算法對各像素點進行流線計算。完成流線計算后進行卷積操作,得到對應像素的紋理值。最后輸出的像素值是紋理值與顏色值融合的結果。
第四,將運算的結果以圖像的形式顯示出來。本文采用的是OpenGL的方法。
為驗證該方案的有效性,本文選取某海域的一組海洋流線數據,對該數據集運用雙線性插值進行預處理,將該海域劃分分為361 x 723的網格數據,每個數據點記錄13個時刻的流線數據,構成數據集大小為361x 723 x 13的數據集用以本文功能的檢驗。在Visual Studio 2008的控制臺程序運行后,得到如圖2所示的繪制結果。
4 討論
本文運用線卷積積分的方法,實現了海洋流場數據的可視化。由于本文的設計是在基于單機實現的,但在實際工程應用中,面對的數據通常是規模龐大的,因此計算能力不足時需要解決的問題之一。目前的研究尚不能妥善地解決這個問題。在接下來的工作中,進一步提升計算效率,采用分布式的方法是需要努力的方向。
參考文獻
[1]Brian Cabral, LeithLeedom. Imaging Vector Fields Using Line Integral Convolution[J]. Lawrence Livermore National Laboratory. 1997.
[2]周迪斌.基于紋理的高質量矢量可視化研究.計算機科學與技術,2008.
[3]朱宏瑋,姜國華,王寶智.矢量場可視化線積分卷積方法研究與系統設計.計算機應用與軟件,2010.4.