專利名稱:虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種圖像處理技術(shù)領(lǐng)域:
的檢測方法,特別是一種虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法。
背景技術(shù):
隨著科學(xué)技術(shù)的高速發(fā)展,高科技醫(yī)療設(shè)備的不斷涌現(xiàn)為醫(yī)療的現(xiàn)代化提供了越來越多的幫助。虛擬手術(shù)平臺的建立在醫(yī)生的培訓(xùn)、手術(shù)導(dǎo)航等方面起到重要作用。在與用戶的交互中,碰撞檢測作用至關(guān)重要。所謂碰撞檢測,是指檢測物體是否碰到了其它物體。它包括兩個不同物體之間的碰撞檢測和物體自身的碰撞,并要檢測出當(dāng)物體碰撞發(fā)生后,物體的哪一部分被碰到了。在虛擬手術(shù)中,兩個物體間的碰撞表現(xiàn)為手術(shù)器械與器官之間的碰撞,器官與器官間的碰撞;物體自身的碰撞指的是器官本身的碰撞,如血管等碰到自己其他的位置。在碰撞發(fā)生后,應(yīng)該有相應(yīng)的力施加到物體上被碰到的部分,物體受力產(chǎn)生形變,從而能模擬出真實(shí)的手術(shù)效果。碰撞檢測主要分為靜態(tài)物體的碰撞檢測與動態(tài)物體的碰撞檢測。其中靜態(tài)物體的碰撞檢測已經(jīng)是顯得較為成熟,而對于形變中物體間的動態(tài)碰撞檢測技術(shù)還面臨著很大的難題。這是由于形變中的物體的形狀在每一個時間步都在改變,所以計算所需要的數(shù)據(jù)需要實(shí)時更新,故而在檢測效率上有很大的局限。
經(jīng)對現(xiàn)有技術(shù)的文獻(xiàn)檢索發(fā)現(xiàn),M.Teschner等在Proceedings of Vision,Modeling,Visualization VMV’03(03年出版的視覺、建模、可視化會議的論文集),2003.pages 47-54,上發(fā)表的“Optimized spatial hashing for collisiondetection of deformable objects.”(《形變中物體的最優(yōu)化空間哈希表碰撞檢測方法》)中提出了一種利用基于哈希表的動態(tài)檢測方法,他使形變中的物體的碰撞檢測效率大為提高。但這種方法在分割空間時,采用的是規(guī)則的大小一致的網(wǎng)格進(jìn)行檢測,存在以下問題(1)網(wǎng)格的密度對實(shí)現(xiàn)的效率有很大的影響。
如果網(wǎng)格定義得過密,雖然檢測的精度會提高,但一個測試單元可能存在于多個網(wǎng)格中,這會導(dǎo)致計算量加大;如果網(wǎng)格密度過小,許多檢測單元會同是映射到一個哈希表項中,這降低了粗略碰撞檢測的效率,增加了精細(xì)碰撞檢測的時間,程序效率也會降低。(2)網(wǎng)格大小固定,在不同的場景下,對選取網(wǎng)格的大小有很高的要求,每次都要經(jīng)過很多次實(shí)驗(yàn)才能確定出合適的網(wǎng)格大小,方法的通用性受到限制。(3)如果待檢測的物體由無規(guī)律的四面體組成,確定網(wǎng)格的大小就變得很困難。
綜上所訴,對于龐大的數(shù)據(jù)集而言,現(xiàn)有的碰撞檢測方法依然存在著許多未決的難題,而在檢測方法的通用性上,現(xiàn)有的方法也面臨著很多問題,亟待解決。
發(fā)明內(nèi)容本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法,使其對龐大數(shù)據(jù)集(組成物體的頂點(diǎn)數(shù)超過104,組成物體的空間四面體數(shù)通常為103~105),特別是虛擬手術(shù)系統(tǒng)中手術(shù)器械與軟組織交互變得更快速(平均響應(yīng)時間提高12.9%以上)。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的,本發(fā)明采用空間層次哈希表的方式,通過映射模塊和檢測模塊來實(shí)現(xiàn),假設(shè)物體由m個四面體組成(m為正整數(shù)),映射模塊對每個四面體進(jìn)行動態(tài)空間分割,生成哈希表,計算各頂點(diǎn)地址,并將它們映射到相應(yīng)的哈希表項中;在映射過程中,本發(fā)明采用動態(tài)調(diào)整空間網(wǎng)格大小的形式,即根據(jù)各個四面體的大小生成邊長不同的網(wǎng)格,而不是像現(xiàn)有方法那樣,每個網(wǎng)格的邊長是固定的,從而改進(jìn)了現(xiàn)有方法的不足。碰撞檢測模塊利用映射模塊的結(jié)果,檢查哈希表項中是否出現(xiàn)沖突項,并利用動態(tài)碰撞檢測算法檢測碰撞是否發(fā)生。循環(huán)中,兩模塊交替進(jìn)行,直到循環(huán)結(jié)束。
以下對本發(fā)明方法作進(jìn)一步的描述,具體內(nèi)容如下1、所述的映射模塊,完成以下的處理(1)分割空間首先,定義網(wǎng)格本發(fā)明將空間分割成層次的網(wǎng)格,這些網(wǎng)格由一系列邊長可變的軸向包圍盒組成,把這些盒子稱為網(wǎng)格,網(wǎng)格的邊長定義為k,稱之為網(wǎng)格大小。
其次,層次分割為了為每個四面體找到最適宜的網(wǎng)格,網(wǎng)格的大小必須和四面體的大小相適應(yīng)。定義s=size(t)為四面體t的軸向包圍盒的最大邊長,則用以下公式定義映射t的網(wǎng)格大小kk=2[log2(s)]]]>公式1這里的[log2s]定義了空間網(wǎng)格的等級。
再次,分割等級為了區(qū)分分割后空間網(wǎng)格,定義了分割等級(level)l(l為整數(shù)),定義如下l=[log2s]]]>l有如下特性l:=<0ifs<1=0ifs=1>0ifs>1]]>(2)映射將空間分割成層次網(wǎng)格后,空間中的每一個點(diǎn)(x,y.z.)都屬于唯一的網(wǎng)格。為了找到每一點(diǎn)屬于的網(wǎng)格,需要計算出每一個點(diǎn)的地址,由于小的網(wǎng)格是嵌套在大的網(wǎng)格中的,需要給每個點(diǎn)計算出它唯一的地址。令k為網(wǎng)格的大小,l為分割等級,則可用如下方法計算出每一點(diǎn)(x,y.z.)的地址xyz=[x/k][y/k][z/k]l]]>公式2(3)哈希函數(shù)利用上述方法計算出的每點(diǎn)的地址(x,y.z.,l)通過哈希函數(shù)映射到哈希表項中,本發(fā)明中的哈希函數(shù)定義如下
hash(x,y,z,l)=(xp1yp2zp3lp4)mod sH公式3這里的p1,p2,p3,p4是大于108的質(zhì)數(shù),sH是哈希表的大小,表示異或。
2、碰撞檢測模塊,對物體A中的每一頂點(diǎn)v,做如下處理(1)通過上述方法將每一點(diǎn)映射到哈希表中(2)檢測哈希表中有沖突的表項,即對每一索引i,做如下工作如果在i對應(yīng)的哈希表項中不存在除A以外實(shí)體,則沒有碰撞發(fā)生;否則,有可能發(fā)生碰撞,這時,須將v與i對應(yīng)的表項中所有的四面體進(jìn)行檢測,看該頂點(diǎn)是否與四面體發(fā)生相交。
如果v與t相交,則可能出現(xiàn)如下三種情況i.如果v是t的頂點(diǎn)之一,則沒有發(fā)生碰撞;ii.如果v是同一物體中的其他四面體t中的點(diǎn),則發(fā)生自碰撞;iii.如果v和t分屬于不同物體,則碰撞發(fā)生。
本發(fā)明方法具體操作時,首先根據(jù)將物體表面點(diǎn)生成物體的體網(wǎng)格數(shù)據(jù)讀入系統(tǒng),再按照上述步驟進(jìn)行,然后對碰撞發(fā)生的部分進(jìn)行沖突響應(yīng)的處理即可。
本發(fā)明采用一種基于空間層次哈希表的方式,汲取現(xiàn)有方法的優(yōu)點(diǎn),并改進(jìn)了現(xiàn)有技術(shù)中網(wǎng)格大小固定的不足,實(shí)現(xiàn)實(shí)時和適用范圍廣泛的三維形變中物體沖突檢測功能。利用本發(fā)明進(jìn)行碰撞檢測,有如下優(yōu)點(diǎn)(1)易于實(shí)現(xiàn),用到的都是基本的數(shù)據(jù)結(jié)構(gòu),分割、映射、判斷等也都十分簡單。(2)運(yùn)算速度快,本發(fā)明克服了既有方法因運(yùn)算繁雜、冗余度大所造成的執(zhí)行速度慢的問題,采用哈希表查找形式,時間復(fù)雜度只與空間中四面體的個數(shù)成線性關(guān)系,而與物體的數(shù)量無關(guān),在普通的計算機(jī)上就能完成。(3)由于分割空間后的盒子只是虛擬概念,故無需對每一個物體另行分配存儲空間。(4)檢測自碰撞的方法與物體間的碰撞的方法相同,雖然分了自碰撞和物體間碰撞兩種情況,但實(shí)際執(zhí)行過程只是判斷點(diǎn)與面的相交,不存在判斷物體的碰撞時自碰撞還是不同物體間碰撞的問題,故無需另行判斷是否發(fā)生自碰撞,從而解決了自碰撞和物體間碰撞方法不同的矛盾。
圖1本發(fā)明方法流程圖具體實(shí)施方式
下面對本發(fā)明的一實(shí)施例作詳細(xì)說明本實(shí)施例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。
本實(shí)施例在CPU為Pentuim M 1.5GHz內(nèi)存為1.0GB的計算機(jī)中實(shí)現(xiàn),首先根據(jù)將物體表面點(diǎn)生成物體的體網(wǎng)格數(shù)據(jù)讀入系統(tǒng),再按照步驟進(jìn)行,然后對碰撞發(fā)生的部分進(jìn)行沖突響應(yīng)的處理。具體參數(shù)情況如表1所示表1 實(shí)施例中各種參數(shù)情況
1、首先利用VTK(Visualization Toolkit,一個三維圖形圖像處理類庫)中提供的函數(shù)vtkDelaunay3D()將表中各個物體的表面信息轉(zhuǎn)化成體信息,即將各物體表面頂點(diǎn)連成相互關(guān)聯(lián)的空間四面體。程序按圖1的循環(huán)實(shí)現(xiàn)兩物體的碰撞檢測,循環(huán)的結(jié)束條件是所有空間四面體位置不再發(fā)生變化。
2、在映射模塊中,對組成物體的所有空間四面體,根據(jù)公式1動態(tài)計算出每一四面體最適合的網(wǎng)格的大小,根據(jù)公式2計算出每一頂點(diǎn)的地址,根據(jù)公式3建立哈希表,例中分別取p1=73856093,p2=19349663,p3=83492791,p4=67867979,sH=67231,并根據(jù)計算出的網(wǎng)格大小和地址將這些頂點(diǎn)映射到相應(yīng)的哈希表項中。
3、在碰撞檢測模塊中,對組成物體的所有四面體的每一頂點(diǎn),將其映射到空間哈希表中,對有沖突的哈希表項采用上面提到的動態(tài)的碰撞檢測算法進(jìn)行檢測,判斷是否發(fā)生碰撞,如果碰撞發(fā)生,判斷發(fā)生自碰撞還是一般碰撞,并返回發(fā)生碰撞的具體的三角片。
4、對于返回的具體三角片,處理碰撞后的函數(shù)。這里的碰撞主要指不同物體發(fā)生碰撞,碰撞發(fā)生后返回被碰到的具體三角片,接著進(jìn)行碰撞響應(yīng)的處理,例中的處理主要是形變處理,由于物體發(fā)生形變,組成物體的空間四面體的位置信息會發(fā)生改變,故而需要回到步驟1,繼續(xù)執(zhí)行。
在該環(huán)境下的動態(tài)碰撞檢測能夠達(dá)到實(shí)時的效果,所有磁撞都能有效地被檢測出來,與傳統(tǒng)方法相比,性能也有了很大的提高,分別對應(yīng)于上述情況A和B,具體結(jié)果見表2。
表2 實(shí)施例結(jié)果及與傳統(tǒng)方法的比較情況
權(quán)利要求
1.一種虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法,其特征在于,采用空間層次哈希表的方式,通過映射模塊和檢測模塊循環(huán)來實(shí)現(xiàn),假設(shè)物體由m個四面體組成,m為正整數(shù),映射模塊對每個四面體進(jìn)行動態(tài)空間分割,生成哈希表,計算各頂點(diǎn)地址,并將它們映射到相應(yīng)的哈希表項中;在映射過程中,采用動態(tài)調(diào)整空間網(wǎng)格大小的形式,即根據(jù)各個四面體的大小生成邊長不同的網(wǎng)格;碰撞檢測模塊利用映射模塊的結(jié)果,檢查哈希表項中是否出現(xiàn)沖突項,并利用動態(tài)碰撞檢測算法檢測碰撞是否發(fā)生;循環(huán)中,兩模塊交替進(jìn)行,直到循環(huán)結(jié)束。
2.根據(jù)權(quán)利要求
1所述的虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法,其特征是,所述的映射模塊,完成以下的處理(1)分割空間首先,定義網(wǎng)格將空間分割成層次的網(wǎng)格,這些網(wǎng)格由一系列邊長可變的軸向包圍盒組成,把這些盒子稱為網(wǎng)格,網(wǎng)格的邊長定義為k,稱之為網(wǎng)格大小;其次,層次分割網(wǎng)格的大小必須和四面體的大小相適應(yīng),定義s=size(t)為四面體t的軸向包圍盒的得最大邊長,則用以下公式定義映射四面體t的網(wǎng)格大小kk=2[log2(s)]]]>這里的[log2s]定義了空間網(wǎng)格的等級;再次,分割等級為了區(qū)分分割后空間網(wǎng)格,定義了分割等級(level)l,l為整數(shù),定義如下l=[log2s],]]>l有如下特性l:=<0ifs<1=0ifs=1>0ifs>1;]]>(2)映射將空間分割成層次網(wǎng)格后,空間中的每一個點(diǎn)(x,y.z.)都屬于唯一的網(wǎng)格,令k為網(wǎng)格的大小,l為分割等級,計算出每一點(diǎn)(x,y.z.)的地址xyz=[x/k][y/k][z/k]l]]>(3)哈希函數(shù)利用計算出的每點(diǎn)的地址(x,y.z.,l)通過哈希函數(shù)映射到哈希表項中,哈希函數(shù)定義如下hash(x,y,z,l)=(xp1yp2zp3lp4)mod +sH這里的p1,p2,p3,p4是大于108的質(zhì)數(shù),sH是哈希表的大小,表示異或。
3.根據(jù)權(quán)利要求
1所述的虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法,其特征是,所述的碰撞檢測模塊,對物體A中的每一頂點(diǎn)v,做如下處理(1)將每一點(diǎn)映射到哈希表中;(2)檢測哈希表中有沖突的表項,即對每一索引i,做如下工作如果在i對應(yīng)的哈希表項中不存在除A以外的實(shí)體,則沒有碰撞發(fā)生;否則,有可能發(fā)生碰撞,這時,將物體中的頂點(diǎn)v與索引i對應(yīng)的表項中所有的四面體t進(jìn)行檢測,看該頂點(diǎn)是否與四面體發(fā)生相交;如果物體中的頂點(diǎn)v與四面體t相交,則可能出現(xiàn)如下三種情況①如果物體中的頂點(diǎn)v是四面體t的頂點(diǎn)之一,則沒有發(fā)生碰撞;②如果物體中的頂點(diǎn)v是同一物體中的除包含頂點(diǎn)v的四面體以外的四面體t中的點(diǎn),則發(fā)生自碰撞;③如果物體中的頂點(diǎn)v和四面體t分屬于不同物體,則碰撞發(fā)生。
4.根據(jù)權(quán)利要求
1所述的虛擬手術(shù)系統(tǒng)中形變物體的實(shí)時沖突檢測方法,其特征是,直接在運(yùn)行的計算機(jī)上進(jìn)行,首先根據(jù)將物體表面點(diǎn)生成物體的體網(wǎng)格數(shù)據(jù)讀入系統(tǒng),再按照步驟進(jìn)行,然后對碰撞發(fā)生的部分進(jìn)行沖突響應(yīng)的處理。
專利摘要
一種虛擬手術(shù)系統(tǒng)中的形變中物體實(shí)時沖突檢測方法,屬于圖形處理技術(shù)領(lǐng)域:
。本發(fā)明采用空間層次哈希表的方式,通過映射模塊和檢測模塊循環(huán)來實(shí)現(xiàn)假設(shè)物體由m個四面體組成,m為正整數(shù),映射模塊對每個叫面體進(jìn)行動態(tài)空間分割,生成哈希表,計算各頂點(diǎn)地址,并將它們映射到相應(yīng)的哈希表項中;在映射過程中,采用動態(tài)調(diào)整空間網(wǎng)格大小的形式,即根據(jù)各個四面體的大小生成邊長不同的網(wǎng)格;碰撞檢測模塊利用映射模塊的結(jié)果,檢查哈希表項中是否出現(xiàn)沖突項,并利用動態(tài)碰撞檢測算法檢測碰撞是否發(fā)生;循環(huán)中,兩模塊交替進(jìn)行,直到循環(huán)結(jié)束。本發(fā)明實(shí)現(xiàn)高精度,對龐大數(shù)據(jù)集,特別是虛擬手術(shù)系統(tǒng)中手術(shù)器械與軟組織交互變得更有效,更快速。
文檔編號G01B21/32GK1996388SQ200610147640
公開日2007年7月11日 申請日期2006年12月21日
發(fā)明者顧力栩, 張少霆 申請人:上海交通大學(xué)導(dǎo)出引文BiBTeX, EndNote, RefMan