《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于NURBS方法和OpenGL平臺的地震層位建模與實(shí)現(xiàn)
基于NURBS方法和OpenGL平臺的地震層位建模與實(shí)現(xiàn)
趙 勇 吳繼偉 岳繼光 姚 進(jìn)
上海同濟(jì)大學(xué)電子與信息工程學(xué)院(200092)
摘要: 結(jié)合三維地震層位數(shù)據(jù),使用OpenGL圖形庫和NURBS模型,分析了NURBS 構(gòu)造自由曲面的方法。討論和總結(jié)了相關(guān)關(guān)鍵算法和技術(shù),實(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ù),實(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)過速度場解釋后的層位信息在三維空間中實(shí)現(xiàn)多方顯示。本文研究了地震層位的NURBS曲面擬合方法,并在Sun Blade 2000工作站Solaris平臺下,基于NURBS使用OpenGL,在X/Motif環(huán)境下實(shí)現(xiàn)了地震層位模型的建立和顯示。
1  地震層位模型的表達(dá)
  地層面又稱層面,是地層與地層的分界面,也是通過地震剖面來識別層序的關(guān)鍵界面之一。在一個油氣探區(qū)內(nèi),經(jīng)過處理獲得的地震層位信息可能由若干層組成。一般情況下,各地層在地下由淺到深排列,每個特定層位可以由一個空間曲面來擬合。但在復(fù)雜地質(zhì)情況下由于斷層的錯斷切割,一個層位可能由若干個空間曲面組成,但這些空間曲面一般是相互獨(dú)立的[2]。因此,地震層位的表達(dá)問題就可以轉(zhuǎn)換成多個空間曲面的表達(dá)問題。
  地震層位信息是一個離散的四維數(shù)據(jù)集{x,y,z,p},其中x、y、z描述了空間某點(diǎn)的坐標(biāo)信息,p是該點(diǎn)的物性,一般可以用顏色等來標(biāo)注。關(guān)鍵問題是如何通過插值的方法,描述這些空間離散數(shù)據(jù)點(diǎn)集,從而還原地質(zhì)層面或者斷面的空間形態(tài),并最終多方位顯示給用戶。下面就以一個層位數(shù)據(jù)集中的空間曲面為對象,以該曲面的數(shù)據(jù)集為基礎(chǔ),用一個計(jì)算機(jī)能生成的曲面來插值這些數(shù)據(jù)點(diǎn)。通過對多個獨(dú)立的曲面進(jìn)行這樣的處理,來模擬地層和斷層的形態(tài)、空間位置和相互關(guān)系。
2  地震層位模型的NURBS曲面建立
  NURBS 方法是最廣為流行的自由曲線和自由曲面描述技術(shù)。應(yīng)用NURBS方法可統(tǒng)一表示初等解析形狀和自由型曲線曲面、有理非有理Bezier曲線曲面和非有理B樣條曲線曲面[4]。本文采用NURBS對地震層位的單個獨(dú)立曲面進(jìn)行擬合,由多個曲面的組合來表達(dá)復(fù)雜的層面和斷面。
2.1 NURBS的定義
  K次NURBS曲線的數(shù)學(xué)表達(dá)式如下:
    

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

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

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

2.2.3 確定節(jié)點(diǎn)矢量


 

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

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

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