專利名稱::一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,屬于空間信息
技術(shù)領(lǐng)域:
。
背景技術(shù):
:基于三維地形的虛擬空間環(huán)境已經(jīng)在各種商業(yè)系統(tǒng)和科學(xué)研究等領(lǐng)域具有巨大的應(yīng)用價(jià)值。在導(dǎo)航應(yīng)用中,基于三維空間環(huán)境導(dǎo)航的平臺(tái)較傳統(tǒng)的提供二維導(dǎo)航地圖的平臺(tái)具有較大的優(yōu)勢。因?yàn)槿S環(huán)境能使得用戶更為方便判讀,它幾乎不需要用戶具有地圖的判讀能力,從而使得用戶能更加方便、快速的了解其當(dāng)前位置、周邊環(huán)境以及感興趣區(qū)域位置等地理信息,將更多的精力投入到路徑查找、駕駛或旅行決策等任務(wù)中去。目前大都通過透視投影構(gòu)造三維地形空間環(huán)境。這種投影是基于人眼和相機(jī)對客觀世界的觀察模式,它能在虛擬空間環(huán)境中反映客觀世界。然而,這種投影卻會(huì)產(chǎn)生地形遮擋問題用戶感興趣區(qū)域常被較更靠近視點(diǎn)的物體所遮擋,在地形起伏較大的山區(qū)和建筑林立的城市中尤為普遍。盡管在三維視圖系統(tǒng)中嵌入二維導(dǎo)航圖能夠彌補(bǔ)被遮擋的感興趣區(qū)域信息,但是,會(huì)造成三維場景漫游時(shí),用戶不斷的判讀二維地圖,并占用了有限的屏幕空間。而對于導(dǎo)航平臺(tái)(GPS,PDA),一個(gè)重要的需求是在較小的屏幕上盡可能傳達(dá)更多的地理信息。因此,在三維導(dǎo)航中,現(xiàn)有的方法難以用于交互可視化的需求,有些使全景圖產(chǎn)生了較大的形變。在山區(qū)復(fù)雜地形導(dǎo)航時(shí),本發(fā)明實(shí)現(xiàn)了實(shí)時(shí)生成無遮擋三維地形圖的方法,以滿足導(dǎo)航交互可視化的要求。
發(fā)明內(nèi)容1、目的本發(fā)明的目的是提供一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,它克服了現(xiàn)有技術(shù)的不足,在復(fù)雜地形導(dǎo)航時(shí),它能夠?qū)崟r(shí)生成無遮擋三維地形圖以滿足導(dǎo)航交互可視化的要求。本發(fā)明所解決的問題為給定地形T,任意處于地形之上的視點(diǎn)Pv,觀察方向Dv以及處于T上的一組用戶感興趣地形特征F(點(diǎn)狀、線狀或面狀),若在Pv處朝Dv觀察所得到的視圖為Vtl,如何快速自動(dòng)生成與Vtl相似的視圖V,盡可能使得在V中F可見?這個(gè)問題的解決,可使得用戶無遮擋的實(shí)時(shí)漫游三維環(huán)境。2、技術(shù)方案本發(fā)明一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,目前的PC機(jī)或移動(dòng)式終端設(shè)備(如PDA等)能夠支持該方法,該方法的具體步驟如下步驟一按地貌特征對地形分塊,設(shè)定用戶感興趣特征上的參考點(diǎn)(1)地形的分割方法——采用Morse理論分割地形。Morse理論是對標(biāo)量場進(jìn)行拓?fù)浞治龅挠行Чぞ摺<俣╢(x,y)在區(qū)域D上連續(xù)可導(dǎo),對任意點(diǎn)P,若f在X和y方向上導(dǎo)數(shù)為0,則P為關(guān)鍵點(diǎn),即P為極大值點(diǎn)、極小值點(diǎn)或鞍點(diǎn),對地形而言,分別對應(yīng)于頂峰、山谷或山口。如果函數(shù)f所有關(guān)鍵點(diǎn)處的Hessian矩陣的行列式都不為0,則f為Morse函數(shù)。定義f的一條積分線為一條處處與最陡上升(下降)梯度方向相切的曲線。積分線一般起于極大值點(diǎn)、D的邊界或鞍點(diǎn),收斂于極小值點(diǎn)、D的邊界或鞍點(diǎn)。對于收斂于極小值的積分線所覆蓋的區(qū)域,稱作穩(wěn)定單元(stablecell)。對于極大值發(fā)出的積分線所覆蓋的區(qū)域,稱之為不穩(wěn)定單元(unstablecell)。由stablecell或unstablecell,可生成一種對標(biāo)量場f對區(qū)域D的分割,稱為Morse-Smale分割。在一定的視點(diǎn)條件下,對視線構(gòu)成遮擋的實(shí)體一般是地形的凸起部分(如山峰、山丘等)。若要消除這類遮擋,首先找出這類遮擋物。例如對一段被遮擋的道路而言(如圖1),要消除其遮擋,可以先提取出其遮擋物(如圖1(a)中的山丘),然后再將該山丘垂直收縮一定比例,從而消除遮擋(如圖1(b))。因此,預(yù)先按地形的地貌特征提取出這些凸部分,即按凸部分對地形分塊。地形可視為平面域D上的一個(gè)標(biāo)量場f(x,y)=z,我們采用Morse理論對地形進(jìn)行分割。(2)分割計(jì)算——采用分水嶺分割算法近似計(jì)算Morse-Smale分割。對地形而言,可采用分水嶺分割算法近似計(jì)算Morse分割。該算法的思想是,以極小值點(diǎn)為注水點(diǎn),以此從低處向高處泛洪,來自不同注水點(diǎn)的洪水相遇的邊界即為分水嶺。它計(jì)算的是各積水盆地。為了求凸部分,以地形的相反值作為算法的輸入,以極大值點(diǎn)為起點(diǎn),從高處向低處擴(kuò)展,得到地形凸部分作為地形Morse-Smale分割的近似。在實(shí)際計(jì)算過程中,由于地形上存在高頻噪聲,噪聲中微小的凸起都將作為注水點(diǎn),所以直接對地形進(jìn)行分水嶺分割會(huì)造成分割過度。本發(fā)明采用數(shù)學(xué)形態(tài)學(xué)開濾波來實(shí)現(xiàn)。如果濾波結(jié)構(gòu)元素為圓盤,將圓盤半徑設(shè)定為線特征平均線段長度的1/4。(3)參考點(diǎn)的確定——在當(dāng)前視點(diǎn)處,通過視線追蹤確定特征被遮擋的部分以及造成特征被遮擋的障礙物。為了消除遮擋的變形,需要確定在當(dāng)前視點(diǎn)處,特征被遮擋的部分以及造成特征被遮擋的障礙物,可通過視線追蹤來解決;而對于用戶感興趣的點(diǎn)狀、線狀或面狀特征的可視性及其遮擋物的確定,也可通過視線追蹤來解決。通過指定特征上的參考點(diǎn),對參考點(diǎn)做視線追蹤,從而確定特征的可視性。直接用視線追蹤確定點(diǎn)狀特征,而對多邊形狀特征只需判定其邊界的可見性。對于線特征,為了令參考點(diǎn)具有代表性,先將線段的端點(diǎn)設(shè)為參考點(diǎn),再根據(jù)線段長度對道路分段,以分段的端點(diǎn)作為控制點(diǎn)。在實(shí)際工作中,可將大于某閾值長度ο的道路作遞歸二分,以保證分段的長度不大于σ。本發(fā)明中σ=Τ^/2,其中S為地形分割后各塊的平均面積。步驟二從特征到視點(diǎn)的視線追蹤,獲取并更新變形參數(shù)視線追蹤的目的有兩個(gè),一是確定參考點(diǎn)的可視性;二是在視線追蹤過程中對遮擋物進(jìn)行標(biāo)記。在視線追蹤時(shí),如果發(fā)現(xiàn)參考點(diǎn)被遮擋,可以根據(jù)當(dāng)前光線位置,產(chǎn)生或更新變形控制點(diǎn)和變形參數(shù)。如果在當(dāng)前追蹤位置發(fā)現(xiàn)了遮擋,則對遮擋處所在的塊進(jìn)行變形,而忽略不造成遮擋的塊。為了控制各個(gè)塊的變形,其變形由一組變形參數(shù)來決定,包括控制點(diǎn),垂直收縮比例等。(1)視線追蹤設(shè)參考點(diǎn)為P(xp,yp,zp),視點(diǎn)為V(xv,yv,zv),若視線上存在任意點(diǎn)Q(X(1,yq,zq),使得<f(xq,y,),則參考點(diǎn)被遮擋,否則參考點(diǎn)可見。其中Q=(xp,yp,zp)+tX(χν-χρ,yv-yp,zv-zp),0^t^1。令視線追蹤從t=0開始,每進(jìn)行一步,令t=t+At,若發(fā)現(xiàn)參考點(diǎn)被遮擋,則Q所在的分塊S為遮擋物,這時(shí)根據(jù)當(dāng)前Q的高度來更新S的變形參數(shù),直到t=1結(jié)束。對所有參考點(diǎn)都做上述視線追蹤。追蹤完成后,可獲知哪些分塊需變形以及相應(yīng)的變形參數(shù)。本專利采用從遠(yuǎn)到近的順序?qū)Ω鲄⒖键c(diǎn)做視線追蹤,使得地形壓低是從遠(yuǎn)處到近處確定的,從而避免了重復(fù)變形造成的遮擋。由于遠(yuǎn)處的參考點(diǎn)受到遮擋的可能性較近處參考點(diǎn)更大,則先基于遠(yuǎn)處參考點(diǎn)做光線追蹤,減少了變形之后的地形遮擋數(shù)量,節(jié)省了變形的計(jì)算量。(2)計(jì)算變形為了消除遮擋,本發(fā)明是將造成遮擋的地形做垂直收縮,令其在視線之下。對于地形T來說,用參考點(diǎn)C和垂直收縮比例k兩個(gè)參數(shù)定義分塊的變形。對參考點(diǎn)不可見的情形,主要有兩種類型(1)參考點(diǎn)處于地形的背面,(2)參考點(diǎn)被地形所遮擋?;谝陨献冃尾呗裕覀兿愋?1)和類型(2)的遮擋(如圖2所示)。每個(gè)分塊代表的是一個(gè)可能成為潛在障礙物的凸部分。如果視線追蹤在某點(diǎn)發(fā)現(xiàn)了遮擋,該點(diǎn)所在的分塊需要變形。對于分塊的變形,存在參考點(diǎn)與遮擋物是否處同一分塊的情況。若參考點(diǎn)與遮擋物在同一分塊上,因?yàn)橹恍枳冃卧斐烧趽醯膮^(qū)域,所以變形只針對深度小于參考點(diǎn)的部分,我們將該類變形稱為變形I。而對于參考點(diǎn)與遮擋物在不同分塊的情形,可以對整個(gè)分塊做變形,稱其為變形II。在變形I中,一個(gè)分塊中可能有多個(gè)不同的變形,變形的個(gè)數(shù)等于分塊內(nèi)在光線追蹤時(shí)發(fā)現(xiàn)被遮擋的參考點(diǎn)個(gè)數(shù)。在圖3(a)中,分塊I中存在參考點(diǎn)A和B,其中AKB遠(yuǎn)。按照從遠(yuǎn)到近對參考點(diǎn)做視線追蹤的原則,先對A做視線追蹤,若發(fā)現(xiàn)其被遮擋,則計(jì)算分塊I中深度小于A部分gA的變形gAA=Ω[A](gA),(如圖3(b))。接著從gAA⑶開始視線追蹤,若發(fā)現(xiàn)其被遮擋,則產(chǎn)生分塊I中深度小于B部分gB的變形在一個(gè)分塊內(nèi),若存在η個(gè)參考點(diǎn)在視線追蹤時(shí)被遮擋,會(huì)產(chǎn)生η種變形,其中的第k個(gè)參考點(diǎn)Rk所產(chǎn)生的變形可表達(dá)為=(Rk)]。對分塊內(nèi),處于變形部分上的點(diǎn)P(χ,y,ζ),其變形后為0(χ,y,γι(/2)),其中,為深度值大于P,且深度方向上距離P最近參考點(diǎn),而,Yj(h)=h+k0{h-hd)(1)與公式(3)類似,、zminl^-r,,"、))/—-]"從)-ε,1·0丨(2)其中Zq為當(dāng)前視線的高度,ΓU1為變形I和變形II同時(shí)變形的結(jié)果,其值在下文中給出。對于變形II,類似于變形I,若變形前地形上某點(diǎn)高程為h,其遮擋物所在分塊的變形可表達(dá)為,yn(h)=h+k2(h-hE)(3)其中,hK為當(dāng)前視線追蹤參考點(diǎn)的高度,如果同時(shí)存在變形I和變形II,先令變形I維持不變,有7w、_Jh,如果不需變形如果需要變形()對于變形I后有變形II的情形,由公式⑴和公式(3)有,Yπ(h)=YJ(h)+k2(Yn(h)-hE)(5)綜合變形I和變形II,分塊的最終變形可表達(dá)為rh,如果不需變形lA)z=\ruXh),如果需要變形()在實(shí)現(xiàn)時(shí),記錄變形I和變形II的參數(shù),分別為控制點(diǎn)^及其收縮比例、的集合,以及參考點(diǎn)高程hK及其所對應(yīng)的收縮比例k2。在視線追蹤時(shí)被遮擋,則更新變形參數(shù)。步驟三根據(jù)變形參數(shù),重建變形后的地形對造成遮擋的分塊,ΓU1所產(chǎn)生的結(jié)果便是消除遮擋后的變形。本發(fā)明的變形不必加入新的頂點(diǎn),因此,對多細(xì)節(jié)層次地形模型中的頂點(diǎn)進(jìn)行變形,就可達(dá)到預(yù)期的變形結(jié)果。為了加速可視化的過程,在GPU頂點(diǎn)程序中實(shí)現(xiàn)這種頂點(diǎn)變形的計(jì)算。繪制頂點(diǎn)時(shí),如果其所在分塊需要變形,將該分塊的變形參數(shù)傳給GPU頂點(diǎn)程序。因變形是基于分塊的,為了增強(qiáng)分塊之間的連續(xù)性,我們對多細(xì)節(jié)層次地形模型中跨分塊的三角面片,采取細(xì)化(refinement)方法以平滑分塊之間的邊界。加入新頂點(diǎn)和頂點(diǎn)位移的過程都在GPU中完成。首先建立用于細(xì)化的三角網(wǎng),并在渲染前傳入頂點(diǎn)緩存。為了平滑細(xì)化的三角網(wǎng),在頂點(diǎn)著色器中采用B6zier多項(xiàng)式計(jì)算頂點(diǎn)格網(wǎng)進(jìn)行位移操作??筛鶕?jù)要細(xì)化的三角面片的頂點(diǎn)坐標(biāo)和頂點(diǎn)法向量,在CPU中計(jì)算獲得B6zier多項(xiàng)式,并在渲染細(xì)化的三角面片時(shí)傳給頂點(diǎn)著色器。對于本發(fā)明工作,只需細(xì)化和平滑跨分塊的三角面片。為了平行渲染跨分塊和不跨分塊的三角面片,首先以非細(xì)化的方式渲染,遍歷多細(xì)節(jié)層次地形模型,判斷三角面片是否跨分塊,如果跨分塊,便存入一個(gè)數(shù)組中,否則直接渲染三角面片。遍歷完成后,令頂點(diǎn)著色器采用細(xì)化平滑的方式進(jìn)行渲染數(shù)組中的三角面片。但是,細(xì)化和平滑后的三角形會(huì)與無上述操作的三角形之間產(chǎn)生裂縫。我們強(qiáng)制細(xì)化和平滑后的三角形頂點(diǎn)不進(jìn)行位移操作,而只對細(xì)化格網(wǎng)內(nèi)部的頂點(diǎn)做位移操作,達(dá)到消除裂縫的目的。圖4給出了跨分塊三角面片細(xì)化和平滑前后的渲染結(jié)果。圖5是截取一段場景中的原視圖與本發(fā)明生成的結(jié)果視圖。3、優(yōu)點(diǎn)及功效本發(fā)明一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,它與現(xiàn)有技術(shù)比,其主要優(yōu)點(diǎn)是在預(yù)處理時(shí)將地形分塊;在導(dǎo)航時(shí),通過視線追蹤獲得每幀的變形參數(shù),并借助GPU著色器的可編程功能有效的構(gòu)建、處理并渲染變形后地形;在保證視圖可讀性的前提下,交互式自動(dòng)產(chǎn)生用戶感興趣特性不被遮擋的視圖,以滿足在山區(qū)導(dǎo)航時(shí)以全景圖模式交互可視化的需要。四圖1.消除遮擋的例子圖1(a)—段道路被山丘遮擋圖1(b)道路的遮擋被消除圖2.變形結(jié)果圖2(a)遮擋類型1圖2(b)遮擋類型2圖3.遮擋的兩種類型圖3(a)對參考點(diǎn)A,分塊I和分塊II都造成了類型II的遮擋圖3(b)對參考點(diǎn)B,分塊I造成了類型I的遮擋,而分塊II造成了類型II的遮擋圖4.對跨分塊三角面片做細(xì)化和平滑前、后的渲染結(jié)果比較圖4(a)對跨分塊三角面片做細(xì)化和平滑前的渲染結(jié)果圖4(b)對跨分塊三角面片做細(xì)化和平滑后的渲染結(jié)果圖5.從地形南端向北觀察時(shí),地形在變形前、后的視圖比較圖5(a)從地形南端向北觀察時(shí),地形在變形前的視5(b)從地形南端向北觀察時(shí),地形在變形后的視6本發(fā)明的流程框圖五具體實(shí)施例方式請見圖1、圖2、圖3、圖4、圖5、圖6所示,本發(fā)明一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,該方法具體步驟實(shí)施如下步驟一按地貌特征對地形分塊,設(shè)定用戶感興趣特征上的參考點(diǎn)(1)地形的分割方法——采用Morse理論分割地形。Morse理論是對標(biāo)量場進(jìn)行拓?fù)浞治龅挠行Чぞ?。假定f(x,y)在區(qū)域D上連續(xù)可導(dǎo),對任意點(diǎn)P,若f在X和y方向上導(dǎo)數(shù)為0,則P為關(guān)鍵點(diǎn),即P為極大值點(diǎn)、極小值點(diǎn)或鞍點(diǎn),對地形而言,分別對應(yīng)于頂峰、山谷或山口。如果函數(shù)f所有關(guān)鍵點(diǎn)處的Hessian矩陣的行列式都不為0,則f為Morse函數(shù)。定義f的一條積分線為一條處處與最陡上升(下降)梯度方向相切的曲線。積分線一般起于極大值點(diǎn)、D的邊界或鞍點(diǎn),收斂于極小值點(diǎn)、D的邊界或鞍點(diǎn)。對于收斂于極小值的積分線所覆蓋的區(qū)域,稱作穩(wěn)定單元(stablecell)。對于極大值發(fā)出的積分線所覆蓋的區(qū)域,稱之為不穩(wěn)定單元(unstablecell)。由stablecell或unstablecell,可生成一種對標(biāo)量場f對區(qū)域D的分割,稱為Morse-Smale分割。在一定的視點(diǎn)條件下,對視線構(gòu)成遮擋的實(shí)體一般是地形的凸起部分(如山峰、山丘等)。若要消除這類遮擋,首先找出這類遮擋物。例如對一段被遮擋的道路而言(如圖1),要消除其遮擋,可以先提取出其遮擋物(如圖1(a)中的山丘),然后再將該山丘垂直收縮一定比例,從而消除遮擋(如圖1(b))。因此,預(yù)先按地形的地貌特征提取出這些凸部分,即按凸部分對地形分塊。地形可視為平面域D上的一個(gè)標(biāo)量場f(x,y)=z,我們采用Morse理論對地形進(jìn)行分割。(2)分割計(jì)算——采用分水嶺分割算法近似計(jì)算Morse-Smale分割。對地形而言,可采用分水嶺分割算法近似計(jì)算Morse分割。該算法的思想是,以極小值點(diǎn)為注水點(diǎn),以此從低處向高處泛洪,來自不同注水點(diǎn)的洪水相遇的邊界即為分水嶺。它計(jì)算的是各積水盆地。為了求凸部分,以地形的相反值作為算法的輸入,以極大值點(diǎn)為起點(diǎn),從高處向低處擴(kuò)展,得到地形凸部分作為地形Morse-Smale分割的近似。在實(shí)際計(jì)算過程中,由于地形上存在高頻噪聲,噪聲中微小的凸起都將作為注水點(diǎn),所以直接對地形進(jìn)行分水嶺分割會(huì)造成分割過度。本發(fā)明采用數(shù)學(xué)形態(tài)學(xué)開濾波來實(shí)現(xiàn)。如果濾波結(jié)構(gòu)元素為圓盤,將圓盤半徑設(shè)定為線特征平均線段長度的1/4。(3)參考點(diǎn)的確定為了消除遮擋的變形,需要確定在當(dāng)前視點(diǎn)處,特征被遮擋的部分以及造成特征被遮擋的障礙物,可通過視線追蹤來解決;而對于用戶感興趣的點(diǎn)狀、線狀或面狀特征的可視性及其遮擋物的確定,也可通過視線追蹤來解決。通過指定特征上的參考點(diǎn),對參考點(diǎn)做視線追蹤,從而確定特征的可視性。直接用視線追蹤確定點(diǎn)狀特征,而對多邊形狀特征只需判定其邊界的可見性。對于線特征,為了令參考點(diǎn)具有代表性,先將線段的端點(diǎn)設(shè)為參考點(diǎn),再根據(jù)線段長度對道路分段,以分段的端點(diǎn)作為控制點(diǎn)。在實(shí)際工作中,可將大于某閾值長度ο的道路作遞歸二分,以保證分段的長度不大于σ。本發(fā)明中a=V^/2,其中S為地形分割后各塊的平均面積。步驟二從特征到視點(diǎn)的視線追蹤,并獲取并更新變形參數(shù)視線追蹤的目的有兩個(gè),一是確定參考點(diǎn)的可視性;二是在視線追蹤過程中對遮擋物進(jìn)行標(biāo)記。此外,在視線追蹤時(shí),如果發(fā)現(xiàn)參考點(diǎn)被遮擋,可以根據(jù)當(dāng)前光線位置,產(chǎn)生或更新變形控制點(diǎn)和變形參數(shù)。如果在當(dāng)前追蹤位置發(fā)現(xiàn)了遮擋,則對遮擋處所在的塊進(jìn)行變形,而忽略不造成遮擋的塊。為了控制各個(gè)塊的變形,其變形是由一組變形參數(shù)來決定,包括控制點(diǎn),垂直收縮比例等。(1)視線追蹤設(shè)參考點(diǎn)為P(xp,yp,zp),視點(diǎn)為V(xv,yv,zv),若視線上存在任意點(diǎn)Q(X(1,yq,zq),使得ζ,<f(xq,y,),則參考點(diǎn)被遮擋,否則參考點(diǎn)可見。其中Q=(xp,yp,zp)+tX(χν-χρ,yv-yp,zv-zp),0^t^1。令視線追蹤從t=0開始,每進(jìn)行一步,令t=t+At,若發(fā)現(xiàn)參考點(diǎn)被遮擋,則Q所在的分塊S為遮擋物,這時(shí)根據(jù)當(dāng)前Q的高度來更新S的變形參數(shù),直到t=1結(jié)束。對所有參考點(diǎn)都做上述視線追蹤。追蹤完成后,可獲知哪些分塊需變形以及相應(yīng)的變形參數(shù)。本發(fā)明采用從遠(yuǎn)到近的順序?qū)Ω鲄⒖键c(diǎn)做視線追蹤,使得地形壓低是從遠(yuǎn)處到近處確定的,從而避免了重復(fù)變形造成的遮擋。由于遠(yuǎn)處的參考點(diǎn)受到遮擋的可能性較近處參考點(diǎn)更大,則先基于遠(yuǎn)處參考點(diǎn)做光線,最終能找出更多的遮擋,便可及早定義變形,減少了變形之后的地形遮擋數(shù)量,節(jié)省了變形的計(jì)算量。(2)計(jì)算變形為了消除遮擋,本發(fā)明是將造成遮擋的地形做垂直收縮,令其在視線之下(如圖5)。對于地形T來說,用控制點(diǎn)C和垂直收縮比例k兩個(gè)參數(shù)定義分塊的變形,其變形γ(h)可被定義為y(h)=h+k(h-hc)(1)假設(shè)對參考點(diǎn)R做視線追蹤而產(chǎn)生的地形Tk上,R的位置不變,hK為R的高程,需兩足hE=γ(hE)=hE+k(hE-hc)(2)為了滿足以上關(guān)系,令控制點(diǎn)C為參考點(diǎn)R。因此,需要確定垂直收縮比例k。要確定k,可根據(jù)視線來更新地形位置以消除遮擋。從參考點(diǎn)R引出的視線上存在某點(diǎn)QO^yq,zq),Q所對應(yīng)于地形上的點(diǎn)為P(χΡ,yP,hP),其中hP=f(xP,yP),若hP>ζ,,要保證R不被P遮擋,需將P變形為P’(xq,yq,Y(hP)),從而γ(hp)<v由公式(1)可得到,權(quán)利要求一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,其特征在于該方法具體步驟如下步驟一按地貌特征對地形分塊,設(shè)定用戶感興趣特征上的參考點(diǎn)(1)地形的分割方法——采用Morse理論分割地形Morse理論是對標(biāo)量場進(jìn)行拓?fù)浞治龅挠行Чぞ?,設(shè)定f(x,y)在區(qū)域D上連續(xù)可導(dǎo),對任意點(diǎn)p,若f在x和y方向上導(dǎo)數(shù)為0,則p為關(guān)鍵點(diǎn),即p為極大值點(diǎn)、極小值點(diǎn)或鞍點(diǎn),對地形而言,分別對應(yīng)于頂峰、山谷、山口;如果函數(shù)f所有關(guān)鍵點(diǎn)處的Hessian矩陣的行列式都不為0,則f為Morse函數(shù);定義f的一條積分線為一條處處與最陡上升或下降梯度方向相切的曲線,積分線一般起于極大值點(diǎn)、D的邊界或鞍點(diǎn),收斂于極小值點(diǎn)、D的邊界或鞍點(diǎn);對于收斂于極小值的積分線所覆蓋的區(qū)域,稱作穩(wěn)定單元即stablecell;對于極大值發(fā)出的積分線所覆蓋的區(qū)域,稱之為不穩(wěn)定單元即unstablecell;由stablecell或unstablecell,可生成一種對標(biāo)量場f對區(qū)域D的分割,稱為MorseSmale分割;在一定的視點(diǎn)條件下,對視線構(gòu)成遮擋的實(shí)體一般是地形的凸起部分即山峰、山丘,若要消除這類遮擋,首先找出這類遮擋物;對一段被遮擋的道路而言,要消除其遮擋,可以先提取出其遮擋物,然后再將該山丘垂直收縮一定比例,從而消除遮擋;因此,預(yù)先按地形的地貌特征提取出這些凸部分,即按凸部分對地形分塊,地形可視為平面域D上的一個(gè)標(biāo)量場f(x,y)=z,我們采用Morse理論對地形進(jìn)行分割;(2)分割計(jì)算——采用分水嶺分割算法近似計(jì)算MorseSmale分割對地形而言,可采用分水嶺分割算法近似計(jì)算Morse分割;該算法的思想是,以極小值點(diǎn)為注水點(diǎn),以此從低處向高處泛洪,來自不同注水點(diǎn)的洪水相遇的邊界即為分水嶺,它計(jì)算的是各積水盆地;為了求凸部分,以地形的相反值作為算法的輸入,以極大值點(diǎn)為起點(diǎn),從高處向低處擴(kuò)展,得到地形凸部分作為地形MorseSmale分割的近似;在實(shí)際計(jì)算過程中,由于地形上存在高頻噪聲,噪聲中微小的凸起都將作為注水點(diǎn),所以直接對地形進(jìn)行分水嶺分割會(huì)造成分割過度;這里采用數(shù)學(xué)形態(tài)學(xué)開濾波來實(shí)現(xiàn);如果濾波結(jié)構(gòu)元素為圓盤,將圓盤半徑設(shè)定為線特征平均線段長度的1/4;(3)參考點(diǎn)的確定為了消除遮擋的變形,需要確定在當(dāng)前視點(diǎn)處,特征被遮擋的部分以及造成特征被遮擋的障礙物,可通過視線追蹤來解決;而對于用戶感興趣的點(diǎn)狀、線狀、面狀特征的可視性及其遮擋物的確定,也可通過視線追蹤來解決;通過指定特征上的參考點(diǎn),對參考點(diǎn)做視線追蹤,從而確定特征的可視性;直接用視線追蹤確定點(diǎn)狀特征,而對多邊形狀特征只需判定其邊界的可見性;對于線特征,為了令參考點(diǎn)具有代表性,先將線段的端點(diǎn)設(shè)為參考點(diǎn),再根據(jù)線段長度對道路分段,以分段的端點(diǎn)作為控制點(diǎn);在實(shí)際工作中,可將大于某閾值長度σ的道路作遞歸二分,以保證分段的長度不大于σ;而其中S為地形分割后各塊的平均面積;步驟二從特征到視點(diǎn)的視線追蹤,獲取并更新變形參數(shù)視線追蹤的目的有兩個(gè),一是確定參考點(diǎn)的可視性;二是在視線追蹤過程中對遮擋物進(jìn)行標(biāo)記;此外,在視線追蹤時(shí),如果發(fā)現(xiàn)參考點(diǎn)被遮擋,可以根據(jù)當(dāng)前光線位置,產(chǎn)生、更新變形控制點(diǎn)和變形參數(shù);如果在當(dāng)前追蹤位置發(fā)現(xiàn)了遮擋,則對遮擋處所在的塊進(jìn)行變形,而忽略不造成遮擋的塊;為了控制各個(gè)塊的變形,其變形是由一組變形參數(shù)來決定,包括控制點(diǎn),垂直收縮比例;(1)視線追蹤設(shè)參考點(diǎn)為P(xp,yp,zp),視點(diǎn)為V(xv,yv,zv),若視線上存在任意點(diǎn)Q(xq,yq,zq),使得zq<f(xq,yq),則參考點(diǎn)被遮擋,否則參考點(diǎn)可見;其中Q=(xp,yp,zp)+t×(xvxp,yvyp,zvzp),0≤t≤1。令視線追蹤從t=0開始,每進(jìn)行一步,令t=t+Δt,若發(fā)現(xiàn)參考點(diǎn)被遮擋,則Q所在的分塊S為遮擋物,這時(shí)根據(jù)當(dāng)前Q的高度來更新S的變形參數(shù),直到t=1結(jié)束;對所有參考點(diǎn)都做上述視線追蹤,追蹤完成后,可獲知哪些分塊需變形以及相應(yīng)的變形參數(shù);這里采用從遠(yuǎn)到近的順序?qū)Ω鲄⒖键c(diǎn)做視線追蹤,使得地形壓低是從遠(yuǎn)處到近處確定的,從而避免了重復(fù)變形造成的遮擋;由于遠(yuǎn)處的參考點(diǎn)受到遮擋的可能性較近處參考點(diǎn)更大,則先基于遠(yuǎn)處參考點(diǎn)做光線,最終能找出更多的遮擋,便可及早定義變形,減少了變形之后的地形遮擋數(shù)量,節(jié)省了變形的計(jì)算量;(2)計(jì)算變形為了消除遮擋,將造成遮擋的地形做垂直收縮,令其在視線之下;對于地形T來說,用控制點(diǎn)C和垂直收縮比例k兩個(gè)參數(shù)定義分塊的變形,其變形γ(h)可被定義為γ(h)=h+k(hhC)(1)假設(shè)對參考點(diǎn)R做視線追蹤而產(chǎn)生的地形TR上,R的位置不變,hR為R的高程,需滿足hR=γ(hR)=hR+k(hRhC)(2)為了滿足以上關(guān)系,令控制點(diǎn)C為參考點(diǎn)R;因此,需要確定垂直收縮比例k;要確定k,可根據(jù)視線來更新地形位置以消除遮擋;從參考點(diǎn)R引出的視線上存在某點(diǎn)Q(xq,yq,zq),Q所對應(yīng)于地形上的點(diǎn)為P(xP,yP,hP),其中hP=f(xP,yP),若hP>zq,要保證R不被P遮擋,需將P變形為P’(xq,yq,γ(hP)),從而γ(hP)<zq;由公式(1)可得到,k=min{(zqhR)/|hPhR|ε,1.0}(3)其中,ε為一個(gè)極小的偏移量,以保證地形在視線的下方;對參考點(diǎn)不可見的情形,有兩種類型(1)參考點(diǎn)處于地形的背面,(2)參考點(diǎn)被地形所遮擋;基于以上變形策略,我們消除類型(1)和類型(2)的遮擋;每個(gè)分塊代表的是一個(gè)可能成為潛在障礙物的凸部分,如果視線追蹤在某點(diǎn)發(fā)現(xiàn)了遮擋,該點(diǎn)所在的分塊需要變形;對于分塊的變形,存在參考點(diǎn)與遮擋物是否處同一分塊的情況;若參考點(diǎn)與遮擋物在同一分塊上,因?yàn)橹恍枳冃卧斐烧趽醯膮^(qū)域,所以變形只針對深度小于參考點(diǎn)的部分,將該類變形稱為變形I;而對于參考點(diǎn)與遮擋物在不同分塊的情形,可以對整個(gè)分塊做變形,稱其為變形II;在變形I中,一個(gè)分塊中可能有多個(gè)不同的變形,變形的個(gè)數(shù)等于分塊內(nèi)在光線追蹤時(shí)發(fā)現(xiàn)被遮擋的參考點(diǎn)個(gè)數(shù);分塊I中存在參考點(diǎn)A和B,其中A比B遠(yuǎn);按照從遠(yuǎn)到近對參考點(diǎn)做視線追蹤的原則,先對A做視線追蹤,若發(fā)現(xiàn)其被遮擋,則計(jì)算分塊I中深度小于A部分gA的變形gAA=Ω[A](gA),接著從gAA(B)開始視線追蹤,若發(fā)現(xiàn)其被遮擋,則產(chǎn)生分塊I中深度小于B部分gB的變形在一個(gè)分塊內(nèi),若存在n個(gè)參考點(diǎn)在視線追蹤時(shí)被遮擋,會(huì)產(chǎn)生n種變形,其中的第k個(gè)參考點(diǎn)RK所產(chǎn)生的變形可表達(dá)為對分塊內(nèi),處于變形部分上的點(diǎn)P(x,y,z),其變形后為其中,為深度值大于P,且深度方向上距離P最近參考點(diǎn),而,<mrow><msub><mi>γ</mi><mi>I</mi></msub><mrow><mo>(</mo><mi>h</mi><mo>)</mo></mrow><mo>=</mo><mi>h</mi><mo>+</mo><msub><mi>k</mi><mover><mi>C</mi><mo>^</mo></mover></msub><mrow><mo>(</mo><mi>h</mi><mo>-</mo><msub><mi>h</mi><mover><mi>C</mi><mo>^</mo></mover></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>與公式(3)類似,<mrow><msub><mi>k</mi><mover><mi>C</mi><mo>^</mo></mover></msub><mo>=</mo><mi>min</mi><mo>{</mo><mrow><mo>(</mo><msub><mi>z</mi><mi>q</mi></msub><mo>-</mo><msub><mi>Γ</mi><mrow><mi>I</mi><mo>,</mo><mi>II</mi></mrow></msub><mrow><mo>(</mo><msub><mi>h</mi><mover><mi>C</mi><mo>^</mo></mover></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>/</mo><mo>|</mo><mi>h</mi><mo>-</mo><msub><mi>Γ</mi><mrow><mi>I</mi><mo>,</mo><mi>II</mi></mrow></msub><mrow><mo>(</mo><msub><mi>h</mi><mover><mi>C</mi><mo>^</mo></mover></msub><mo>)</mo></mrow><mo>|</mo><mo>-</mo><mi>ϵ</mi><mo>,</mo><mn>1.0</mn><mo>}</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>其中zq為當(dāng)前視線的高度,ΓI,II為變形I和變形II同時(shí)變形的結(jié)果,其值在下面給出;對于變形II,類似于變形I,若變形前地形上某點(diǎn)高程為h,其遮擋物所在分塊的變形可表達(dá)為,γII(h)=h+k2(hhR)(6)其中,hR為當(dāng)前視線追蹤參考點(diǎn)的高度,如果同時(shí)存在變形I和變形II,先令變形I維持不變,有對于變形I后有變形II的情形,由公式(4)和公式(6)有,γI,II(h)=γI(h)+k2(γII(h)hR)(8)綜合變形I和變形II,分塊的最終變形可表達(dá)為在實(shí)現(xiàn)時(shí),記錄變形I和變形II的參數(shù),分別為控制點(diǎn)及其收縮比例的集合,以及參考點(diǎn)高程hR及其所對應(yīng)的收縮比例k2;在視線追蹤時(shí)被遮擋,則更新變形參數(shù);步驟三根據(jù)變形參數(shù),重建變形后的地形對造成遮擋的分塊,ΓI,II所產(chǎn)生的結(jié)果便是消除遮擋后的變形;變形不必加入新的頂點(diǎn),因此,對多細(xì)節(jié)層次地形模型中的頂點(diǎn)進(jìn)行變形,就可達(dá)到預(yù)期的變形結(jié)果;為了加速可視化的過程,在GPU頂點(diǎn)程序中實(shí)現(xiàn)這種頂點(diǎn)變形的計(jì)算;繪制頂點(diǎn)時(shí),如果其所在分塊需要變形,將該分塊的變形參數(shù)傳給GPU頂點(diǎn)程序;因變形是基于分塊的,為了增強(qiáng)分塊之間的連續(xù)性,我們對多細(xì)節(jié)層次地形模型中跨分塊的三角面片,采取細(xì)化方法以平滑分塊之間的邊界,加入新頂點(diǎn)和頂點(diǎn)位移的過程都在GPU中完成;首先建立用于細(xì)化的三角網(wǎng),并在渲染前傳入頂點(diǎn)緩存;為了平滑細(xì)化的三角網(wǎng),在頂點(diǎn)著色器中采用Bézier多項(xiàng)式計(jì)算頂點(diǎn)格網(wǎng)進(jìn)行位移操作;根據(jù)要細(xì)化的三角面片的頂點(diǎn)坐標(biāo)和頂點(diǎn)法向量,在CPU中計(jì)算獲得Bézier多項(xiàng)式,并在渲染細(xì)化的三角面片時(shí)傳給頂點(diǎn)著色器;為了平行渲染跨分塊和不跨分塊的三角面片,首先以非細(xì)化的方式渲染,遍歷多細(xì)節(jié)層次地形模型,判斷三角面片是否跨分塊,如果跨分塊,便存入一個(gè)數(shù)組中,否則直接渲染三角面片;遍歷完成后,令頂點(diǎn)著色器采用細(xì)化平滑的方式進(jìn)行渲染數(shù)組中的三角面片;但是,細(xì)化和平滑后的三角形會(huì)與無上述操作的三角形之間產(chǎn)生裂縫,我們強(qiáng)制細(xì)化和平滑后的三角形頂點(diǎn)不進(jìn)行位移操作,而只對細(xì)化格網(wǎng)內(nèi)部的頂點(diǎn)做位移操作,達(dá)到消除裂縫的目的。FSA00000286269300021.tif,FSA00000286269300031.tif,FSA00000286269300032.tif,FSA00000286269300033.tif,FSA00000286269300034.tif,FSA00000286269300037.tif,FSA00000286269300041.tif,FSA00000286269300042.tif,FSA00000286269300043.tif全文摘要一種基于導(dǎo)航的交互式無遮擋三維地形圖的生成方法,它有三大步驟步驟一按地貌特征(如凸起的山體)對地形進(jìn)行分塊,設(shè)定用戶感興趣特征上的參考點(diǎn);步驟二實(shí)現(xiàn)從特征到視點(diǎn)的視線追蹤,在視線追蹤過程中獲取并實(shí)時(shí)計(jì)算和更新變形參數(shù);步驟三根據(jù)變形參數(shù),重建變形后的地形。該方法產(chǎn)生的無遮擋三維地形圖可有效的消除復(fù)雜地形所造成的用戶感興趣特征的遮擋。它以視點(diǎn)、觀察方向、地形以及用戶感興趣特征為輸入,直接對地形模型變形生成無遮擋三維地形圖。它在空間信息
技術(shù)領(lǐng)域:
里具有較好的實(shí)用價(jià)值和廣闊的應(yīng)用前景。文檔編號(hào)G06T17/05GK101950435SQ201010294149公開日2011年1月19日申請日期2010年9月27日優(yōu)先權(quán)日2010年9月27日發(fā)明者張立強(qiáng),鄧浩申請人:北京師范大學(xué)