本發(fā)明涉及一種圖像處理方法,尤其是涉及一種快速流體圖像表面追蹤方法。
背景技術:
三維顯示中三維物體通常是通過繪制物體封閉表面來達到繪制三維物體的目的,因此快速的追蹤到三維物體的表面,對于三維顯示具有重要意義。由于液體的表面形狀復雜,且其拓撲變化頻繁,追蹤液體表面是一個比較有挑戰(zhàn)性的問題。
將液體表面表示成柵格圖中的一系列標量函數(shù)是一種非??扇〉囊环N方法,因為通過這種方法可以自動應對拓撲的結構變化,但是柵格表示的分辨率由這一系列標量函數(shù)所能表示的最小的特征尺寸所限制,要想模擬大范圍空間中的小顆粒就需要非常龐大的柵格網(wǎng)。
最近出現(xiàn)了基于三角網(wǎng)格來追蹤液體表面的方法,以此來克服柵格網(wǎng)表示的缺點。通過三角網(wǎng)格來表示物體表面在理論上沒有特征尺寸的限制。但是通過三角網(wǎng)來表示液體表面時,由于液體融合與分裂等事件而導致的拓撲改變將必須得到有效的處理(主要是重疊部分的去處與修改)。
多數(shù)已有的基于三角網(wǎng)格的表面追蹤技術同時使用著柵格網(wǎng),通過使用柵格網(wǎng)來修正重疊部分。例如Wojtanetal.在2009年使用匹配立方體其后在2010年使用匹配凸殼的方式來處理拓撲變化帶來的重疊問題。這些處理方法都限制了拓撲改變時所能處理的最小尺寸,同時將柵格網(wǎng)轉化為三角網(wǎng)表示也是一個比較麻煩的過程,且其精度很難保證,其所導致的非流體網(wǎng)格還會導致后續(xù)處理進程中的困難。
技術實現(xiàn)要素:
本發(fā)明的目的就是為了克服上述現(xiàn)有技術存在的缺陷而提供一種快速去除拓撲噪音、確定流體表面的快速流體圖像表面追蹤方法,是一種完全用三角網(wǎng)格來表示物體表面時,對物體(主要是液體)融合與分裂等事件引發(fā)的三角網(wǎng)格拓撲變化的處理方法。
本發(fā)明的目的可以通過以下技術方案來實現(xiàn):
一種快速流體圖像表面追蹤方法,包括以下步驟:
S1,流體圖像三角形網(wǎng)格化,找到所有與其他三角形存在相交的三角形;
S2,將存在相交的三角形面積收縮,使其與其他三角形不相交;
S3,對步驟S1得到的不存在相交的三角形分別進行位置判斷,去除位于流體內(nèi)部的三角形;
S4,去除多余三角形,使每個頂點僅與零條或兩條邊相鄰,得到具有空洞的流體表面三角形網(wǎng)格;
S5,對空洞進行填充,得到完整的流體表面三角形網(wǎng)格。
所述的步驟S2中,三角形面積收縮的方法為:根據(jù)三角形原頂點v1、v2、v3確定新坐標,具體如下式:
其中,0<α<1。
所述的步驟S2中,α=0.5。
所述的步驟S5中,采用動態(tài)規(guī)劃的方法進行空洞填充。
所述的步驟S1中,若兩個三角形共享一個頂點則為不相交,若兩個三角形共享兩個頂點,則判斷兩個三角形法向量夾角,小于閥值判斷為相交,大于閥值為不相交。
與現(xiàn)有技術相比,本發(fā)明通過相交三角形收縮、刪除多余三角形和空洞填充,快速追蹤流體表面,具有速度快、魯棒性高的優(yōu)點。
附圖說明
圖1為本發(fā)明的流程圖。
具體實施方式
下面結合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
實施例
如圖1所示,本實施例快速流體圖像表面追蹤方法的主要目標是給定一個沒有邊界的但是存在重疊的流體,由于融合和分裂區(qū)域產(chǎn)生重疊交叉的三角網(wǎng)格,將其處理成具有多樣性但是沒有重疊部分的三角網(wǎng)格。
本方法分為以下六步:(1)找到相交的三角形。(2)拓撲噪音去除。(3)刪除多余的三角形。(4)確保網(wǎng)格的多樣性。(5)空洞匹配。(6)空洞填充。
第一步:尋找相交的三角形。
在這一步,首先對每對三角形判斷是否共享頂點,如果共享一個頂點則為不相交,如果有兩個點相交判斷其相交角度,小于閥值判斷為相交,大于閥值為不相交。對于不共享任何點的兩個三角形,采用Moller算法來判斷在三維空間中的兩個三角形是否相交。對于這一步的結果考慮到后面的步驟需求,需要將交叉的三角形對儲存在一個鏈表中。
由于后面的步驟需要檢查三角形是否是相交三角形,對于每個三角形都檢查鏈表代價比較大,因此對于每個三角形設置狀態(tài)記錄,當在判斷一對三角形是否相交時即將其標記,這樣在后面判斷是否屬于相交三角形時可以直接判斷,而省下了查找相交三角形對鏈表的時間。
第二步:移除拓撲噪音。
對于每一個相交的三角形,將其所有點按照下列公式進行變換:
這一步相當于將每一個三角形內(nèi)縮了,可以將那些處于相交邊緣的三角形通過較小幅度的變化來變成非相交的三角形,尤其是對于有非常多的小顆粒的數(shù)據(jù),可以將相交小顆粒變?yōu)榉窍嘟?,進而減少后續(xù)判斷處理的數(shù)據(jù)量。
第三步:刪除多余的三角形。
在這一步需要判斷出去相交三角形以外其余三角形是否在某一個物體內(nèi)部,對于這些三角形連通相交的三角形都需要刪除。由于所有相交三角形都已經(jīng)找出,其余三角形的所有頂點要么全部在物體內(nèi)部或全部在外部,也就變成了判斷三角形上某一頂點是否在物體內(nèi)部,對于這個問題有多種方法可選,本實施例采用的是Muller于2009年提出的一種射線投影的方法,具體過程可概括為對于一個點從這個點引出一條射線(射線方向需要指向其面垂直向外的方向),對于這條射線所相交的每一個三角形(要包括第一步中判斷為相交三角形的三角形,所以第一步中的相交三角形都不能直接刪除掉,需要等到這一步中判斷完所有體內(nèi)三角形后才可以一起刪除掉,在實現(xiàn)的時候,可采用將三角形標記而不是直接刪除掉的方式來處理的),將這個三角形的向外法向量方向與射線方向相乘,大于零加一計數(shù)小于零減一計數(shù)。如果最后計數(shù)為零,則為外部點,不為零則為內(nèi)部點(至關的幾何理解,一個外部點引出的射線經(jīng)過任何一個體都會從一面穿入在從一個面穿出,所過兩個面的上述乘積結果分別為負、正,因此外部點最終計數(shù)為零,而內(nèi)部點不為零)。最后刪除所有相交和在體內(nèi)的三角形。
對于每一個三角形都做如上判斷代價十分巨大,但由于已經(jīng)判斷出了相交三角形,如果這一判斷準確的話,去除這些三角形后相連通的三角形要么全部在內(nèi)部,要么全部在外部,理論上只要判斷其中一個三角形即可。
在實際實現(xiàn)中,由于數(shù)值計算的精度問題(其實使用射線法判斷本身在理論上就會有誤判,比如射線經(jīng)過兩個三角形邊界,這時不管是判斷為相交還是不相交都會使最后結果錯誤),單個的判斷并不準確,對每一聯(lián)通區(qū)域,任意選擇幾個來進行投票判斷。
對于這一步因為需要得到各個三角形向體外的法向量方向,三角形獲取法向量是可以實現(xiàn)的。
第四步:確保多樣性。
一條邊當且僅當其有不超過兩個相鄰三角形時具有有多樣性,一個頂點當且僅當其相鄰的三角形只通過邊相連時具有多樣性。而一個三角網(wǎng)格當且僅當其所有的邊和頂點都具有多樣性時才具有多樣性。
直接按照定義判斷是否具有多樣性代價十分巨大,但是由于當前三角網(wǎng)格是從一個具有多樣性的三角網(wǎng)格通過刪除部分三角形而形成的,所以只需要保證每個頂點只與兩個或零個邊界邊相鄰即可。對于不滿足的頂點只需刪除與這個點相鄰的三角形即可。
實現(xiàn)過程中是通過構建三角形到邊的映射計數(shù)表,只與一個未刪除三角形相連的為邊界邊。
第五步:洞匹配。
這一步主要是將之前各個步驟中產(chǎn)生的洞,進行配對修復。首先是對每一對洞是否應該進行配對修復進行判斷。對此采用一種評分標準,這一評分標準包括兩部分,第一部分是兩個洞中所有點對(一個點在洞1一個點在洞2)判斷是否分別在在第一步中判斷并存儲的相交三角形對中的兩個三角形上;第二部分判斷所有點對(還是一個點在洞1一個在洞2上)間的距離是否小于一個閥值。綜合上述兩項評分,進行排序,從評分高的到低的依序配對修復。
在這一評分系統(tǒng)中第一部分其對應于液體融合時刪去三角形形成的空洞對,第二部分則是對應于分裂時刪去三角形導致的空洞對。
對于每個空洞對修復,可以判斷每對邊的距離,選擇最近的開始,對一對邊添加三角形并判斷是否會導致非多樣性,然而對于每一對洞在獲取距離最近邊對時,并不能知道這一邊對在洞中時同向還是反向,故在添加三角形時需要嘗試多種情況,其次由于每添加一個三角形都會導致邊界變動,如第四步中的方法判斷是否多樣性代價十分巨大。
對于這一問題,可選取最近的邊到點,并進行三角化(最近點已經(jīng)三角化則不進行三角化),這樣既不需要判斷邊的方向,也不會產(chǎn)生非多樣性,因此不用再判斷多樣性。這種方法會產(chǎn)生很多小的缺口,但是這些小的缺口都是比較簡單的洞可以通過下一步簡單的填充。
第六步:空洞填充。
這一步主要是將前面各步留下的空洞進行填充。在此步中最快的方法只需O(n)的復雜度但其縫合的結果一般比較差。另一種是采用動態(tài)規(guī)劃的手段,其復雜度為O(n2)。