《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于NURBS方法和OpenGL平臺的地震層位建模與實現(xiàn)
基于NURBS方法和OpenGL平臺的地震層位建模與實現(xiàn)
趙 勇 吳繼偉 岳繼光 姚 進(jìn)
上海同濟(jì)大學(xué)電子與信息工程學(xué)院(200092)
摘要: 結(jié)合三維地震層位數(shù)據(jù),,使用OpenGL圖形庫和NURBS模型,,分析了NURBS 構(gòu)造自由曲面的方法。討論和總結(jié)了相關(guān)關(guān)鍵算法和技術(shù),,實現(xiàn)了地震層位的三維多方顯示,,為很多領(lǐng)域的空間數(shù)據(jù)曲面擬合提供了通用性方法。
關(guān)鍵詞: NURBS OpenGL 地震層位 可視化
Abstract:
Key words :

摘   要: 結(jié)合三維地震層位數(shù)據(jù),,使用OpenGL圖形庫和NURBS模型,,分析了NURBS 構(gòu)造自由曲面的方法。討論和總結(jié)了相關(guān)關(guān)鍵算法和技術(shù),,實現(xiàn)了地震層位的三維多方顯示,,為很多領(lǐng)域的空間數(shù)據(jù)曲面擬合提供了通用性方法。
關(guān)鍵詞: NURBS  OpenGL  地震層位  可視化

  地震數(shù)據(jù)和測量數(shù)據(jù)能否被正確解釋是準(zhǔn)確定位礦藏位置的關(guān)鍵,,只有對上述原始測量數(shù)據(jù)做大量處理之后才能獲得正確地層結(jié)構(gòu)信息[1],。近年來,三維可視化技術(shù)被成功應(yīng)用到地質(zhì)勘探領(lǐng)域中,,它可對各種復(fù)雜的地質(zhì)模型和三維地震數(shù)據(jù)進(jìn)行描述,,并以直觀的形式在三維空間顯示。通過三維空間對地震數(shù)據(jù)的可視化顯示,,使油氣勘探工作者能更加深刻和準(zhǔn)確地理解地質(zhì)構(gòu)造以及各種地質(zhì)現(xiàn)象的發(fā)生,、發(fā)展和影響,從而提高鉆井的準(zhǔn)確率和成功率,。
  地震層位的三維顯示是地質(zhì)勘探可視化的基本功能之一,。它把經(jīng)過速度場解釋后的層位信息在三維空間中實現(xiàn)多方顯示。本文研究了地震層位的NURBS曲面擬合方法,,并在Sun Blade 2000工作站Solaris平臺下,,基于NURBS使用OpenGL,在X/Motif環(huán)境下實現(xiàn)了地震層位模型的建立和顯示,。
1  地震層位模型的表達(dá)
  地層面又稱層面,,是地層與地層的分界面,也是通過地震剖面來識別層序的關(guān)鍵界面之一,。在一個油氣探區(qū)內(nèi),,經(jīng)過處理獲得的地震層位信息可能由若干層組成。一般情況下,,各地層在地下由淺到深排列,,每個特定層位可以由一個空間曲面來擬合,。但在復(fù)雜地質(zhì)情況下由于斷層的錯斷切割,一個層位可能由若干個空間曲面組成,,但這些空間曲面一般是相互獨立的[2],。因此,地震層位的表達(dá)問題就可以轉(zhuǎn)換成多個空間曲面的表達(dá)問題,。
  地震層位信息是一個離散的四維數(shù)據(jù)集{x,,y,z,,p},,其中x、y,、z描述了空間某點的坐標(biāo)信息,,p是該點的物性,一般可以用顏色等來標(biāo)注,。關(guān)鍵問題是如何通過插值的方法,,描述這些空間離散數(shù)據(jù)點集,從而還原地質(zhì)層面或者斷面的空間形態(tài),,并最終多方位顯示給用戶,。下面就以一個層位數(shù)據(jù)集中的空間曲面為對象,以該曲面的數(shù)據(jù)集為基礎(chǔ),,用一個計算機能生成的曲面來插值這些數(shù)據(jù)點,。通過對多個獨立的曲面進(jìn)行這樣的處理,來模擬地層和斷層的形態(tài),、空間位置和相互關(guān)系,。
2  地震層位模型的NURBS曲面建立
  NURBS 方法是最廣為流行的自由曲線和自由曲面描述技術(shù)。應(yīng)用NURBS方法可統(tǒng)一表示初等解析形狀和自由型曲線曲面,、有理非有理Bezier曲線曲面和非有理B樣條曲線曲面[4],。本文采用NURBS對地震層位的單個獨立曲面進(jìn)行擬合,由多個曲面的組合來表達(dá)復(fù)雜的層面和斷面,。
2.1 NURBS的定義
  K次NURBS曲線的數(shù)學(xué)表達(dá)式如下:
    

 式中Pi是特征多邊形頂點位置矢量,,Wi是相應(yīng)控制點的權(quán)因子,分別與控制頂點Pi相聯(lián)系,,節(jié)點向量中節(jié)點個數(shù)m=n+k+1,n為控制點數(shù),,k為B樣條基函數(shù)的次數(shù),,Ni,j(u)是k次B樣條基函數(shù),,其遞推公式如下:
  

  NURBS曲面是曲線的推廣,,由雙參數(shù)變量分段有理多項式定義的NURBS曲面如下式:
 

2.2 NURBS曲面擬合地震層位的步驟和關(guān)鍵算法
2.2.1 地震層位數(shù)據(jù)預(yù)處理
  找一個曲面使之通過已知數(shù)據(jù)點,,實際上就是已知型值點求相應(yīng)樣條曲面的控制點,即控制點的反算問題,。由于反算曲面要求型值點為矩形網(wǎng)格數(shù)據(jù),,而實際層位數(shù)據(jù)常常在XOY投影平面內(nèi)并不呈矩形分布,因此要對層位數(shù)據(jù)進(jìn)行重采樣,,使之最終在形式(數(shù)目)上表現(xiàn)為矩形,,常用如下3種方法:
  (1)如果原始數(shù)據(jù)較為密集,可以重新采樣,,摒棄一些多余數(shù)據(jù),,使之成為矩形網(wǎng)格分布。
  (2)對于各行上點數(shù)目不相等的情況,,可以在點少的行上使用最末網(wǎng)格點重復(fù)法,。
  (3)對于點數(shù)目較多的行,以最短的行的點數(shù)為基準(zhǔn),,隔點采樣,,構(gòu)造不等間距網(wǎng)格。
2.2.2 反算B樣條曲面控制點
  本文使用NURBS的退化形式——雙三次B樣條曲面來擬合地震層位的方法,,可以滿足精度要求,。反算控制點有雙向曲線反算法、廣義矩陣法等方法[4],。本文采用雙向曲線反算法,,即對n×m的型值點矩陣P,先橫向使用B樣條曲線的邊界條件及反算公式,,求出n×(m+2)的n組樣條曲線控制點矩陣M,;再把M的每列看成曲線上的型值點,以相同的方法縱向反算控制點,,得到(n+2)×(m+2)的曲面控制點矩陣Q,。對于B樣條曲線,控制點Q和型值點P應(yīng)滿足:

2.2.3 確定節(jié)點矢量


 

3  震層面的OpenGL繪制
  確定了控制點和節(jié)點矢量后就可以使用OpenGL來生成NURBS曲面了,。OpenGL是目前跨平臺最廣泛的三維圖形引擎,,也是目前應(yīng)用最廣泛的事實上的三維圖形工業(yè)標(biāo)準(zhǔn)。它具有的GLU庫提供了NURBS曲線和曲面接口,。繪制NURBS曲面的基本步驟如下[3]:
  (1)調(diào)用gluNewNurbsRenderer( )創(chuàng)建NURBS對象指針,,在繪制曲面時使用該指針。
  (2)調(diào)用gluNurbsProperty( )控制NURBS對象的采樣方式及顯示模式等屬性,。
  (3)調(diào)用gluBeginSurface( )開始繪制曲面,。
  (4)調(diào)用gluNurbsSurface( )創(chuàng)建并繪制曲面。
  (5)調(diào)用gluEndSurface( )結(jié)束繪制曲面,。
  由于直接關(guān)系到對NURBS的正確理解和曲面能否生成,,因此,,下面重點說明函數(shù)gluNurbsSurface(GLUnurbs *nurb,Glint sKnotCount,,Glfloat*sKnots,,GLint tKnotCount,Glfloat*tKnots,,GLint sStride,,GLint tStride,Glfloat*control,,GLint sOrder,,GLint sOrder,GLint tOrder,,Glenum type)的各個參數(shù)和用法,。其中sKnots和tKnots分別為曲面在u和v方向的節(jié)點序列,程序中一般要規(guī)約處理到區(qū)間[0,,1]內(nèi),,節(jié)點的取法上文已詳細(xì)討論。sKnotCount和tKnotCount為這二個方向的節(jié)點數(shù)目,,而sOrder 和tOrder為這二個方向上的多項式基函數(shù)的階數(shù),。本文采用雙4階的NURBS曲面。變量sStride和tStride表示每個參數(shù)方向上控制點之間浮點數(shù)的個數(shù),。變量control指定控制點數(shù)組,。由于NURBS中節(jié)點、控制點,、階數(shù)間在u,、v方向上必須分別滿足m=n+k+1,其中m,、n,、k+1分別為該方向上節(jié)點個數(shù)、控制點個數(shù),、階數(shù),,所以control數(shù)組中必須有(sKnotCount-sOrder)×(tKnotCount-tOrder)個控制點。
  提供了控制點及節(jié)點數(shù)據(jù)后就可以調(diào)用函數(shù)gluNurbsSurface生成NURBS曲面來擬合地震層位,。利用OpenGL的強大功能和友好接口,,可以很方便地加上材質(zhì)、光照和紋理效果,,并且通過平移,、旋轉(zhuǎn)來實現(xiàn)多方顯示。本文采用勝利油田實際地震采樣數(shù)據(jù),擬合后,,某地層單個層位的點云方式和NURBS曲面方式的實現(xiàn)分別如圖1和圖2所示。多個地層的點云方式和NURBS曲面方式的實現(xiàn)分別如圖3和圖4所示,。由圖可見,,NURBS對連續(xù)層位的形態(tài)描述取得了很好的擬合效果。

4  結(jié)束語
  本文基于NURBS模型,,分析了NURBS構(gòu)造地震層面的方法,,討論和總結(jié)了相關(guān)關(guān)鍵算法,使用OpenGL實現(xiàn)了地震層位的三維多方顯示,。OpenGL是性能優(yōu)秀的圖形接口,,具有穩(wěn)定、可靠,、易用,、易擴展和擴充等優(yōu)點,是進(jìn)行三維可視化開發(fā)的的首選底層引擎,。NURBS方法是建立在非有理Bezier方法和非有理B樣條方法基礎(chǔ)上,,為自由型曲面的精確表示提供了公共的數(shù)學(xué)表達(dá)式。該方法具有計算穩(wěn)定,、速度快,,且在比例、旋轉(zhuǎn),、平移和投影等圖形變換下具有不變性,。所以基于NURBS使用OpenGL擬合地震層位具有建模快,、算法清晰,、程序穩(wěn)定的特點。相對于其他建模方法而言,,更利于實現(xiàn),。但對于更復(fù)雜的模型,如被多個斷層作用的地震層位,,模型表達(dá)和實現(xiàn)都將有一定難度,。這時,結(jié)合其他優(yōu)秀建模方法,,如三角網(wǎng)格法(Delaunay三角剖分)是一個行之有效的思路,。這也將是下一步需要繼續(xù)做的工作。
參考文獻(xiàn)
1   石教英,,蔡立文.科學(xué)計算可視化算法與系統(tǒng).北京:科學(xué)出版社,,1996
2   張劍秋,張福炎.地震層位信息三維可視化方法.石油地球物理勘探,,1998,;33(1)
3   李穎,,薛海斌,朱伯立.OpenGL技術(shù)應(yīng)用實例精粹.北京:國防工業(yè)出版社,,2001
4   孫家廣,,楊長貴.計算機圖形學(xué).北京:清華大學(xué)出版社,1995
5   卓磊.地震勘探三維可視化方法研究與實現(xiàn).中國科學(xué)院地質(zhì)與地球物理研究所碩士學(xué)位論文,,2002
6   施法中.計算機輔助幾何設(shè)計與非均勻有理B樣條.北京:高等教育出版社,,2001
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。