(b)為波形負半軸填充顯示;(c)為波形正半軸填充顯示;(d)為灰度 顯示;(h)為彩色變密度顯示; 圖16中列出了本實施例通過采用顏色指數(shù)漸進調色板、線性幅度插值、線性紋理坐標 映射以及低傾斜自適應相關鑲嵌方式得到的地震剖面從各個三維角度觀察的顯示結果,其 中:(a)為正視圖;(b)為左下角繞中心垂直向上翻轉45度時結果;(c)為左下角繞中心垂 直向下翻轉45度時結果;(d)為右下角繞中心垂直向下翻轉45度時結果;(e)為繞X軸向 上旋轉30度時結果;(f)為繞X軸向下旋轉30度時結果;(g)為左下角向上翻轉約45度, 然后先繞y軸,再繞X軸向上旋轉后的結果;(h)為繞y軸向外旋轉大于90度,然后繞X軸 向下旋轉后的結果。 【具體實施方式】 下面結合附圖和實施方式對本發(fā)明做進一步說明。 本發(fā)明所述方法的流程圖如圖1所示,具體包括以下步驟: 步驟1 :地震數(shù)據(jù)讀取與解析,用S (X,y)表示讀取的標準segy格式的地震數(shù)據(jù),(X,y) 表示樣點在地震剖面中的二維坐標,x、y均為非負整數(shù),要顯示的地震剖面的范圍是以(j。, ic)為起始點的w道、h個樣點,考慮到求相關時窗口大小為5,窗口滑動范圍為(_1,1),所 以X、y的取值范圍為j。彡X彡j o+w-1,i〇-3彡y彡iQ+h+2,確定了要顯示的地震數(shù)據(jù)大小 之后,就可以確定窗口的大小了。在本實施例中將顯示從第1400道、第1150個樣點開始的 400 X 300個樣點數(shù)據(jù),即(j。,i。)為(1400,1150),w = 400, h = 300,所創(chuàng)建的窗口大小應 該大于400 X 300,本實施例創(chuàng)建的窗口大小為640 X 640 ;以二進制方式從本地磁盤中讀取 要顯示的標準segy地震剖面數(shù)據(jù)時,由于數(shù)據(jù)中包含3200字節(jié)EB⑶IC文件頭、400字節(jié)二 進制文件頭,每一道地震數(shù)據(jù)的前面都有240字節(jié)的道頭信息,讀取每一道地震數(shù)據(jù)時,都 要先將讀取地址指針定位到3600+1X (240+每一道的樣點總數(shù)X4)位置處,每一道的樣 點數(shù)等信息存儲在道頭信息中,在本實施例中為4001,然后讀取要顯示的地震樣點數(shù)據(jù),標 準segy地震剖面數(shù)據(jù)的編碼格式為32位的IBM浮點型格式,將其轉換為微機處理的IEEE 型格式并存儲,即完成了地震數(shù)據(jù)的讀取與解析。 步驟2 :頂點輸入布局創(chuàng)建,包括地震數(shù)據(jù)頂點輸入布局創(chuàng)建和渲染到紋理頂點輸入 布局創(chuàng)建兩部分,用于定義頂點的屬性結構。創(chuàng)建方法分別如下: 地震數(shù)據(jù)頂點輸入布局創(chuàng)建的步驟是: 第一步,先創(chuàng)建一個包含地震數(shù)據(jù)頂點所需屬性的結構體,此結構體包含了頂點各分 量的類型和屬性名,這里只需一個三維位置向量,這個三維位置向量用包含三個32位浮點 分量的D3DXVECTOR3類型來定義。如果通過將頂點的顏色屬性添加到此結構中來對頂點進 行著色,將會產(chǎn)生頂點之間顏色不能與地震幅度正確對應的問題,圖2中頂點處理流程解 釋了產(chǎn)生這一現(xiàn)象的原因,即:如果將顏色作為頂點結構的屬性之一,那么光柵化器在對頂 點位置進行光柵化與插值的同時也對顏色進行了插值,而它對顏色的插值并不是根據(jù)地 震幅度進行的,從圖2中也可以看出如果將頂點著色放在可編程像素著色器中進行,就可 以避免光柵化器對顏色的插值,這種方式正是后面本實施例所采用的,后面將進行詳細介 紹; 第二步,創(chuàng)建D3D10_INPUT_ELEMENT_DESC型數(shù)組,數(shù)組中的每個元素描述了頂點結構 體的一個分量,這里只需要描述位置分量即可,包括位置分量的語義、格式等; 第三步,創(chuàng)建地震頂點輸入布局layout,以使Direct3D知道該如何使用每個分量,同 時也建立了從頂點結構體到著色器輸入之間的映射關系; 第四步,在創(chuàng)建地震數(shù)據(jù)網(wǎng)格時,用于說明地震頂點的格式。 渲染到紋理頂點輸入布局創(chuàng)建的步驟是: 第一步,先創(chuàng)建一個包含渲染到紋理頂點的結構體,包含了頂點各分量的類型和 屬性名,這里需要一個三維位置分量和一個二維紋理坐標分量,即:D3DXVECT0R3和 D3DXVECT0R2 ; 第二步,創(chuàng)建D3D10_INPUT_ELEMENT_DESC型數(shù)組,數(shù)組中的每個元素描述了頂點結構 體的一個分量,這里描述了三維位置分量和二維紋理坐標分量; 第三步,創(chuàng)建渲染到紋理頂點輸入布局,以使Direct3D知道該如何使用每個分量,同 時也建立了從頂點結構體到著色器輸入之間的映射關系; 第四步,在設備使用渲染到紋理頂點輸入布局之前,頂點輸入布局綁定到管線的輸入 匯編階段。 步驟3 :調色板紋理創(chuàng)建與采樣,創(chuàng)建用于為地震數(shù)據(jù)頂點著色的調色板并定義調色 板的采樣方式,調色板紋理元素的格式為128位浮點數(shù),包含R、G、B、A四個分量,每個紋理 坐標對應了一種顏色,本實施例中調色板紋理大小為12X1,即包含了 12種顏色,紋理坐標 (U,V)中V = 0,U從0到1按12個級別漸變,從紅色漸變到藍色,在U = 0. 5處為白色,此 紋理實現(xiàn)了調色板的功能。顯示地震數(shù)據(jù)時,在渲染輸出效果文件的像素著色器中將地震 樣點幅度值轉換為紋理坐標,通過采樣調色板紋理來實現(xiàn)地震數(shù)據(jù)采樣點的幅度值與顏色 值的一對一映射,負最大值用最紅的顏色著色、正最大值用最藍的顏色著色,O值用白色著 色,其他中間值著色線性地漸變,本實施例將此稱為顏色幅度插值,線性顏色幅度插值時地 震樣點幅度與調色板的坐標映射關系如圖3所示,地震樣點幅度Z與紋理坐標U的映射關 系可表不為:
其中,Zgf和zg/j、分別為所要顯示的地震剖面中地震數(shù)據(jù)樣點幅度的最大值(為正) 和最小值(為負)。 像素著色器中由地震樣點幅度轉換得到的紋理坐標之所以可以線性地采樣調色板,是 由于此調色板是一個1維的浮點紋理,而在采樣浮點紋理時,紋理元素的值會根據(jù)紋理坐 標的不同線性地插值,其原理如圖4所示。采用線性幅度插值、線性紋理坐標映射時最終獲 得的地震剖面顯示結果如圖5所示:其中(a)為正視時的結果,(b)旋轉一定角度后的結 果,完成了地震數(shù)據(jù)樣點的準確著色。 從顯示結果不難看出,地震剖面顯示的對比度較低,有很大一部分區(qū)域都是白色或者 淺白色,這是由于地震樣點中極少數(shù)幅度較大的頂點對應到了調色板的兩端,而大部分中 間幅度的頂點就自然被著色為顏色較淺的紅色、藍色或者白色,可以用兩種方法來解決這 個問題。 一種方法是將像素著色器中的線性紋理坐標映射改為指數(shù)紋理坐標映射,原理如圖6 所示,地震樣點幅度與紋理坐標的映射關系可表示為:
其中,N為大于1的正整數(shù),在本實施例中取N = 5,這樣對于幅度大于O或者小于O的 地震樣點,頂點顏色就會很快地變?yōu)樗{色或者紅色,采用這種指數(shù)紋理坐標映射后所獲得 的最終地震剖面顯示結果如圖7中所示,從圖中可以看出,地震剖面三維顯示的對比度明 顯增強了,但是在地震幅度為O值的附近卻出現(xiàn)了顏色與地震幅度不一致的情況,如圖7中 (c)、(d)和(e)所示,之所以會產(chǎn)生這種現(xiàn)象,是由于在將歸一化的地震幅度以指數(shù)方式映 射為紋理坐標的時候,指數(shù)小于1,也就是要對小于1的歸一化地震幅度做開方運算(本實 施例選取的是開5次方),這樣就難以保證在O值附近的精度,從而導致了在O值附近顏色 不一致的現(xiàn)象。 另一種增強對比度的方法是將調色板中的白色區(qū)域向中間集中,將調色板顏色的線性 漸進方式改為指數(shù)漸進方式即可以產(chǎn)生這種調色板。原理如圖8所示,調色板中R/G分量 (藍色漸變到白色時)或者G/B分量(紅色漸變到白色時)與紋理坐標U的對應關系可表 示為:
其中,y值的意義為:當U值小于等于0. 5時,表示顏色分量中的G/B(G分量或者B分 量,G = B)的值, 當U值大于0. 5時,表示顏色分量中的R/G (R分量或者G分量,R = G)的值,U的值用 X表示0 < X < 1。產(chǎn)生這種調色板之后,在像素著色器中仍然采用圖3中所示的線性紋理 坐標映射,就可以實現(xiàn)地震樣點幅度與調色板中顏色的一一對應。采用這種方式得到的地 震剖面渲染結果如圖9中所示,可以看出地震剖面顯示的對比度得到了增強,同時由地震 幅度在〇值附近的頂點的著色可以看出,在三角形單元頂點之間的區(qū)域,顏色得到了正確 的插值,與地震幅度--對應,這一點由圖9(c)可以看出;
[0044] 步驟4 :傾斜方式紋理創(chuàng)建,創(chuàng)建一個同時用作渲染目標和著色器資源的紋理,每 一個紋理元素都含有R、G、B、A四個分量共128位,用于存儲地震樣點的數(shù)值化的傾斜方式, 將地震樣點的傾斜方式存儲在紋理元素的R分量中,在創(chuàng)建地震數(shù)據(jù)網(wǎng)格時利用地震樣點 的傾斜方式來定義頂點索引。此紋理同時用作渲染目標和著色器資源,在將GPU中計算得 到的地震樣點數(shù)值化的傾斜方式渲染到此紋理的時候,此紋理作為渲染目標;在根據(jù)地震 樣點數(shù)值化的傾斜方式來定義地震數(shù)據(jù)網(wǎng)格頂點的索引時,此紋理作為著色器資源,對存 儲在紋理元素中的數(shù)值化的地震樣點傾斜方式進行讀取。之所以要考慮地震樣點的傾斜方 式,是因為對于相鄰兩個地震道上同樣的四個地震樣點,采用不同的鑲嵌方式時會產(chǎn)生不 同的結果,如圖10中(a)和(b)所示,采用(a)圖所示的鑲嵌方式時會產(chǎn)生"脊"的結構, 采用(b)圖所示的鑲嵌方式時會產(chǎn)生"槽"的結構,采用圖10中(a)和(b)中的兩種鑲嵌 方式所生成的地震剖面顯示分別如圖11、12中所示,本實施例通過求相關系數(shù)的方式來查 找與以四邊形的控制點(四邊形左上角的地震樣點)為中心的地震樣點序列相關度最大的 下一地震道上的相同長度序列的中心點,以此來決定四邊形(由四個地震樣點鑲嵌生成) 究竟應該采取哪一種鑲嵌方式,本實施例在像素著色器中通過下式來計算以當前樣點為中 心的五個樣點序列與相鄰的下一地震道上的上下移動范圍為1個樣點間隔的五個地震樣 點序列的互相關函數(shù)值和相關系數(shù),原理如圖13所示,計算方法可分別表示為:
其中(4)式表示計算序列X和序列Y的互相關序列Rxy(T)的方法,下標xy表明了關 聯(lián)的序列,xy的順序表示序列X未移動,序列Y移動τ個單位,RXY( τ )表示序列X和序列Y 互相關函數(shù)值的大小,R' χγ( τ )表示序列X和序列Y相關系數(shù)的大??;τ是移位參數(shù),取值 為-1、0、1 ;Τ為序列周期,本實施例中取為5,Ν表示表示序列X和序列Y中元素編號的最大 值,N = 4;k表示元素序號的變量,k取值0~Ν,計算出τ分別為-1、〇、1時的相關系數(shù)之 后,找出對應相關系數(shù)最大值時的τ值,根據(jù)此τ值來判斷當前地震樣點應該是上傾斜還 是下傾斜或者不傾斜,上傾斜用1表示,下傾斜用-1表示,傾斜幅度較小時視為不傾斜,取 值為0,也就是將相關系數(shù)最大值對應的τ值取反即可得地震樣點數(shù)值化的傾斜方式;然 后通過渲染到紋理將數(shù)值化的傾斜方式渲染到傾斜方式紋理的對應紋理元素的R分量中, 紋理元素的其他分量都設為1. 〇 ;圖14中(a)是為了解釋低傾斜相關自適應鑲嵌方式而生 成的三維平面網(wǎng)格,(b)和(c)為本實施例采用低傾斜自適應相關鑲嵌方式獲得的地震剖 面顯示結果,對比圖14(b)和(c)與圖11、12中的(b)和(c)可以看出,在水平事件的峰值 處鋸齒得到了較少; 步驟5 :地震數(shù)據(jù)紋理創(chuàng)建,根據(jù)要顯示的地震剖面數(shù)據(jù)的大小,創(chuàng)建對應的浮點紋 理,然后將地震樣點數(shù)據(jù)對應填充到紋理元素中,在GPU中通過頂點著色