本發(fā)明屬于數(shù)據(jù)可視化,涉及海洋數(shù)據(jù)可視化領(lǐng)域,特別涉及一種海洋三維溫鹽流數(shù)據(jù)的可視化方法。
背景技術(shù):
1、數(shù)據(jù)可視化在科學(xué)研究、決策支持中發(fā)揮著重要的作用,這項技術(shù)通過將復(fù)雜的數(shù)據(jù)集轉(zhuǎn)換為圖形、圖像的形式,使得抽象的數(shù)值信息變得直觀易懂,從而有效地輔助科研人員進行數(shù)據(jù)觀測和分析。在海洋科學(xué)研究中,三維溫鹽流數(shù)據(jù)的可視化是一個關(guān)鍵環(huán)節(jié),它涉及到從海洋觀測和遙感數(shù)據(jù)中提取有用信息,并以易于理解的方式展示給研究人員。海洋數(shù)據(jù)因其復(fù)雜性和多變性,傳統(tǒng)的二維圖表難以全面地展示海洋數(shù)據(jù)的空間分布和動態(tài)變化。近年來,隨著計算機圖形學(xué)和可視化技術(shù)的發(fā)展,更加高級的可視化技術(shù)逐漸能夠滿足展示海洋數(shù)據(jù)多維特性的需求,如顏色映射和矢量場可視化等。然而,現(xiàn)有可視化方法在處理大規(guī)模、高維度的海洋數(shù)據(jù)集時仍面臨著一系列的挑戰(zhàn),尤其是在數(shù)據(jù)預(yù)處理階段,如何從包含噪聲和異常值的原始數(shù)據(jù)集中提取出真正有用的信息是一個技術(shù)難點。此外,顏色映射技術(shù)雖然在視覺上增強了數(shù)據(jù)的表現(xiàn)能力,但是如何保證在顏色映射過程中的準(zhǔn)確性,以及根據(jù)數(shù)據(jù)特點選擇合適的映射方法也需要進行研究。
2、海洋數(shù)據(jù)的多維度特性要求我們在可視化過程中采用高效的數(shù)據(jù)處理算法,以實現(xiàn)數(shù)據(jù)的快速集成。例如溫度、鹽度、密度等參數(shù)在空間與時間分布上都保持關(guān)聯(lián),這些數(shù)據(jù)的處理就需要保持一致性與準(zhǔn)確性。其次由于海洋數(shù)據(jù)采集具有較高難度,獲取到的海洋數(shù)據(jù)中可能存在缺失或者錯誤值,如何準(zhǔn)確地處理這些異常數(shù)據(jù)并生成平滑的、連續(xù)的可視化結(jié)果是一個技術(shù)難題,盡管現(xiàn)有的三維可視化工具在一定程度上滿足了這些需求,但在數(shù)據(jù)的科學(xué)準(zhǔn)確性、視覺效果和用戶交互方面仍有改進空間。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)存在的不足,本發(fā)明提供一種海洋三維溫鹽流數(shù)據(jù)的可視化方法,用于解析包含海洋溫度、鹽度等特征值的數(shù)據(jù)文件并生成可視化圖片。
2、為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:
3、一種海洋三維溫鹽流數(shù)據(jù)的可視化方法,包括以下步驟:
4、步驟1、自動化讀取數(shù)據(jù)文件并預(yù)處理:
5、自動化讀取海洋觀測數(shù)據(jù)以及配置文件,并對數(shù)據(jù)進行預(yù)處理,其中預(yù)處理包括使用掩膜標(biāo)記數(shù)據(jù)異常值或者無效數(shù)據(jù)、通過自適應(yīng)插值方法對缺失數(shù)據(jù)進行修復(fù);
6、步驟2、數(shù)據(jù)規(guī)范化與顏色映射:
7、將步驟1預(yù)處理后的數(shù)值信息根據(jù)用戶自定義的顏色映射規(guī)則轉(zhuǎn)換為顏色信息,輸出為jpg格式,實現(xiàn)海洋數(shù)據(jù)的二維可視化效果;
8、步驟3、繪制等值線圖案:
9、首先將步驟1預(yù)處理后的數(shù)據(jù)信息進行規(guī)范化得到數(shù)據(jù)紋理,然后通過閾值處理將數(shù)據(jù)紋理轉(zhuǎn)換為二值化圖像,并使用圖像修復(fù)算法對數(shù)據(jù)紋理進行平滑處理,遍歷等值線的索引數(shù)組,通過計算等值線關(guān)鍵點的實際位置來構(gòu)建輪廓線,然后繪制貝塞爾曲線,得到最終的等值線圖案;
10、步驟4、可視化矢量數(shù)據(jù)或三維數(shù)據(jù):
11、若海洋數(shù)據(jù)包含矢量環(huán)境數(shù)據(jù)或需三維展示,則分別構(gòu)建json格式文件以模擬海流運動或?qū)?shù)據(jù)填充至vtkimagedata對象并寫入vti文件,實現(xiàn)海洋數(shù)據(jù)的矢量模擬和三維可視化。
12、進一步的,步驟1中,海洋數(shù)據(jù)預(yù)處理具體采用以下步驟進行:
13、1)從配置文件中獲得的信息包括水域數(shù)據(jù)water_mask_datas,如果數(shù)據(jù)值不是空值且不是異常值,則相應(yīng)的water_mask掩膜位置被設(shè)置為255,表示水面區(qū)域;接下來遍歷輸入的原始數(shù)據(jù),一旦檢測到異常值或者無效數(shù)據(jù),使用mask掩膜變量來標(biāo)記這些數(shù)據(jù)點,將其標(biāo)記數(shù)據(jù)缺失區(qū)域;
14、2)對于缺失的數(shù)據(jù),采用一種自適應(yīng)的方法,根據(jù)海洋數(shù)據(jù)的空間分布特征,基于周圍有效像素點動態(tài)選擇插值算法來填補缺失值,具體是:在處理缺失數(shù)據(jù)前定義好鄰域范圍,在局部鄰域內(nèi)計算數(shù)據(jù)的梯度,根據(jù)梯度大小衡量數(shù)據(jù)的變化率,在梯度小的區(qū)域,選擇線性插值進行像素修復(fù);在梯度大的區(qū)域,選擇樣條插值來進行像素修復(fù);通過多次迭代修復(fù)所有的缺失像素,若處理后仍有像素?zé)o法填充,則將水面區(qū)域掩膜對應(yīng)的像素值設(shè)置為0,直到所有缺失像素都被處理。
15、進一步的,步驟2中,具體采用以下步驟進行:
16、步驟201、數(shù)據(jù)規(guī)范化:根據(jù)給定的配置信息,決定是否需要計算每個數(shù)據(jù)點的規(guī)范化值,這一步是將數(shù)據(jù)值映射到一個標(biāo)準(zhǔn)化的顏色索引范圍內(nèi);
17、步驟202、確定所在顏色區(qū)間:根據(jù)數(shù)據(jù)值確定其在顏色索引數(shù)組中的位置,找到包含該數(shù)據(jù)值的顏色區(qū)間,并記錄下該區(qū)間的左右端點索引;
18、步驟203、取區(qū)間左端顏色值或取插值結(jié)果:根據(jù)配置文件中的信息決定是否進行顏色插值,如果設(shè)置為0則直接返回區(qū)間左端點的顏色值;否則,進行顏色插值以得到更加平滑的顏色過渡;
19、步驟204、應(yīng)用于每個像素點:將計算得到的顏色值應(yīng)用于每個像素點,生成最終的顏色映射圖像。
20、進一步的,步驟203中,顏色插值的具體過程為:對于選定的顏色區(qū)間,使用線性插值方法,通過計算兩個區(qū)間端點顏色的加權(quán)平均值得到最終該像素點的rgb顏色值:
21、;
22、;;
23、;
24、其中,crelativevalue是原數(shù)據(jù)值或根據(jù)配置文件歸一化到0~1范圍內(nèi)的值,ci是當(dāng)前顏色區(qū)間起始索引所對應(yīng)的數(shù)據(jù)值,cnext是當(dāng)前顏色區(qū)間末尾索引所對應(yīng)的數(shù)據(jù)值,通過公式計算得到相對數(shù)據(jù)值在當(dāng)前區(qū)間內(nèi)的插值系數(shù)α,rleft、rright、gleft、gright、bleft、bright分別是當(dāng)前顏色區(qū)間起始索引和末尾索引的rgb值,r、g、b是每個像素點對應(yīng)的rgb值。
25、進一步的,步驟3中,等值線繪制的具體步驟是:
26、步驟301、二值化處理及修復(fù):首先將步驟1預(yù)處理后的數(shù)據(jù)信息規(guī)范化到一個統(tǒng)一的范圍內(nèi),并使用構(gòu)造函數(shù)將其存儲為數(shù)據(jù)紋理;然后將數(shù)據(jù)紋理轉(zhuǎn)換為二值化圖像,其中根據(jù)每個像素點對應(yīng)數(shù)據(jù)是否高于閾值來分配黑白色;然后對二值化圖像進行膨脹操作以及圖像修復(fù)操作,填充數(shù)據(jù)不連續(xù)部分;
27、步驟302、構(gòu)建關(guān)鍵點數(shù)組并優(yōu)化:首先,遍歷二值化圖像,通過分析像素值和給定的閾值來確定等值線條的路徑,構(gòu)建線條的關(guān)鍵點數(shù)組,然后遍歷關(guān)鍵點數(shù)組,實現(xiàn)去重;
28、步驟303、構(gòu)建輪廓并計算控制點:通過關(guān)鍵點數(shù)組構(gòu)建輪廓,然后計算貝塞爾曲線的控制點對線條進行擬合與繪制,得到等值線;然后對生成的等值線進行優(yōu)化,去除過于接近的點;
29、步驟304、數(shù)值文本標(biāo)注:根據(jù)用戶配置文件的需要,在等值線上添加數(shù)值文本標(biāo)注;
30、步驟305、輸出等值線圖案:根據(jù)用戶需要將等值線輸出為svg格式或者png格式。
31、進一步的,構(gòu)建等值線條關(guān)鍵點數(shù)組的具體實現(xiàn)方法是:首先考慮將當(dāng)前像素點及其周圍的像素點作為搜索鄰域,檢查該點數(shù)據(jù)值是否滿足水域范圍,若滿足條件則繼續(xù)進行相關(guān)計算;接下來,通過以下公式,根據(jù)閾值threshold和周圍像素點對應(yīng)的數(shù)據(jù)值來確定關(guān)鍵點的實際位置,使得等值線更加平滑地貼合數(shù)據(jù)的實際分布:
32、;
33、;
34、;
35、;
36、;
37、;
38、;
39、;
40、;
41、;
42、其中,、、、、、、、分別表示左上、右上、左下、右下像素點的橫縱坐標(biāo),、、、分別表示左上、右上、左下、右下像素點對應(yīng)的數(shù)據(jù)值,threshold是通過將用戶在config.json文件中定義的等值線數(shù)組進行規(guī)范化計算后得到的閾值,scale是縮放因子,stride是步長;通過上述公式,得到等值線在當(dāng)前像素點及其鄰居像素點處的交點,用于后續(xù)的繪制過程;
43、接下來,根據(jù)tempcount的值動態(tài)生成等值線段,具體來說:初始化計數(shù)器tempcount變量為0,然后根據(jù)四個端點所對應(yīng)的數(shù)據(jù)以及閾值的比較結(jié)果更新tempcount的值,這里使用不同的權(quán)重來區(qū)分左上、右上、左下、右下的點;根據(jù)tempcount的值來確定等值線可能穿過的像素邊界,使用之前計算得到的left、top、right、bottom決定等值線在局部區(qū)域內(nèi)的走向,將等值線段加入一個用于存放等值線的lines數(shù)組中,并將兩個端點作為關(guān)鍵點,并繼續(xù)遍歷剩下的像素點;遍歷完成后對所有關(guān)鍵點進行排序和降重,構(gòu)建輪廓線。
44、進一步的,步驟3中,構(gòu)建輪廓線的具體步驟為:創(chuàng)建三個數(shù)組contours、isclosedcontour和usedlines來標(biāo)記輪廓點集、輪廓是否閉合以及線段是否用于構(gòu)建輪廓;首先尋找可以作為輪廓起始點的點,從起始點開始不斷查找新點并檢查可連接的線條,將連接的關(guān)鍵點添加到輪廓線數(shù)組中,跟蹤已經(jīng)使用過的線條,避免重復(fù)使用,直到所有點都被用于構(gòu)建輪廓,無法找到可連接的線條;接下來去除構(gòu)建的輪廓中距離過近的點,并記錄輪廓是否閉合的信息;對于每一個輪廓,通過計算得到控制點后繪制貝塞爾曲線,得到最終的等值線圖案。
45、進一步的,步驟3中,在輸出等值線圖案前還需進行數(shù)值文本的標(biāo)注,數(shù)值文本標(biāo)注的具體步驟為:評估每個關(guān)鍵點處地局部輪廓方向,計算正弦值來確定輪廓的傾斜方向;評估文本標(biāo)注的預(yù)期寬度,選出文本標(biāo)注位置。
46、進一步的,步驟4中,若海洋數(shù)據(jù)中含有海流矢量環(huán)境數(shù)據(jù),則需要遍歷數(shù)據(jù)文件獲取對應(yīng)的經(jīng)度、緯度以及指定類型的數(shù)據(jù),用以構(gòu)建json格式的數(shù)據(jù)文件,使用粒子系統(tǒng)模擬海流的運動;
47、若需要采用三維的方式展示不同層深的海洋數(shù)據(jù),則需要循環(huán)遍歷三維數(shù)據(jù)集中的每個像素點,將變量數(shù)據(jù)填充到圖像數(shù)據(jù)集中的對應(yīng)位置,并將填充好數(shù)據(jù)的vtkimagedata對象寫入到vti文件中用以可視化三維效果。
48、與現(xiàn)有技術(shù)相比,本發(fā)明優(yōu)點在于:在數(shù)據(jù)預(yù)處理階段,使用了兩個掩膜mask和water_mask標(biāo)記數(shù)據(jù)中的無效像素和水域像素,這種區(qū)分使得本發(fā)明可以專注于水面區(qū)域缺失數(shù)據(jù)的修復(fù)工作,能夠有效地節(jié)省計算資源;同時,根據(jù)數(shù)據(jù)的空間分布特征,動態(tài)選擇不同的插值算法,這種自適應(yīng)插值方法能夠更好地適應(yīng)數(shù)據(jù)的局部特性。
49、在繪制等值線階段,與經(jīng)典的marching?squares算法相比,本發(fā)明改進了傳統(tǒng)的直線段繪制,使用貝塞爾曲線來平滑等值線,使得線條表示更加流暢和美觀。除此之外,本發(fā)明可以根據(jù)不同的閾值動態(tài)地繪制等值線,并提供了評估最佳文本標(biāo)注位置的功能,能夠更加靈活地適應(yīng)不同數(shù)據(jù)集,使得等值線上的數(shù)值信息能夠無遮擋地直觀顯示,增強了繪制結(jié)果的可讀性。本發(fā)明支持將等值線輸出為svg格式,適用于高質(zhì)量的圖像渲染和縮放,顯著提高了繪制質(zhì)量和可讀性。