虚拟手术系统中形变物体的实时冲突检测方法

文档序号:6116688阅读:216来源:国知局
专利名称:虚拟手术系统中形变物体的实时冲突检测方法
技术领域
本发明涉及的是一种图像处理技术领域的检测方法,特别是一种虚拟手术系统中形变物体的实时冲突检测方法。
背景技术
随着科学技术的高速发展,高科技医疗设备的不断涌现为医疗的现代化提供了越来越多的帮助。虚拟手术平台的建立在医生的培训、手术导航等方面起到重要作用。在与用户的交互中,碰撞检测作用至关重要。所谓碰撞检测,是指检测物体是否碰到了其它物体。它包括两个不同物体之间的碰撞检测和物体自身的碰撞,并要检测出当物体碰撞发生后,物体的哪一部分被碰到了。在虚拟手术中,两个物体间的碰撞表现为手术器械与器官之间的碰撞,器官与器官间的碰撞;物体自身的碰撞指的是器官本身的碰撞,如血管等碰到自己其他的位置。在碰撞发生后,应该有相应的力施加到物体上被碰到的部分,物体受力产生形变,从而能模拟出真实的手术效果。碰撞检测主要分为静态物体的碰撞检测与动态物体的碰撞检测。其中静态物体的碰撞检测已经是显得较为成熟,而对于形变中物体间的动态碰撞检测技术还面临着很大的难题。这是由于形变中的物体的形状在每一个时间步都在改变,所以计算所需要的数据需要实时更新,故而在检测效率上有很大的局限。
经对现有技术的文献检索发现,M.Teschner等在Proceedings of Vision,Modeling,Visualization VMV’03(03年出版的视觉、建模、可视化会议的论文集),2003.pages 47-54,上发表的“Optimized spatial hashing for collisiondetection of deformable objects.”(《形变中物体的最优化空间哈希表碰撞检测方法》)中提出了一种利用基于哈希表的动态检测方法,他使形变中的物体的碰撞检测效率大为提高。但这种方法在分割空间时,采用的是规则的大小一致的网格进行检测,存在以下问题(1)网格的密度对实现的效率有很大的影响。
如果网格定义得过密,虽然检测的精度会提高,但一个测试单元可能存在于多个网格中,这会导致计算量加大;如果网格密度过小,许多检测单元会同是映射到一个哈希表项中,这降低了粗略碰撞检测的效率,增加了精细碰撞检测的时间,程序效率也会降低。(2)网格大小固定,在不同的场景下,对选取网格的大小有很高的要求,每次都要经过很多次实验才能确定出合适的网格大小,方法的通用性受到限制。(3)如果待检测的物体由无规律的四面体组成,确定网格的大小就变得很困难。
综上所诉,对于庞大的数据集而言,现有的碰撞检测方法依然存在着许多未决的难题,而在检测方法的通用性上,现有的方法也面临着很多问题,亟待解决。

发明内容
本发明的目的在于克服现有技术中的不足,提供一种虚拟手术系统中形变物体的实时冲突检测方法,使其对庞大数据集(组成物体的顶点数超过104,组成物体的空间四面体数通常为103~105),特别是虚拟手术系统中手术器械与软组织交互变得更快速(平均响应时间提高12.9%以上)。
本发明是通过以下技术方案实现的,本发明采用空间层次哈希表的方式,通过映射模块和检测模块来实现,假设物体由m个四面体组成(m为正整数),映射模块对每个四面体进行动态空间分割,生成哈希表,计算各顶点地址,并将它们映射到相应的哈希表项中;在映射过程中,本发明采用动态调整空间网格大小的形式,即根据各个四面体的大小生成边长不同的网格,而不是像现有方法那样,每个网格的边长是固定的,从而改进了现有方法的不足。碰撞检测模块利用映射模块的结果,检查哈希表项中是否出现冲突项,并利用动态碰撞检测算法检测碰撞是否发生。循环中,两模块交替进行,直到循环结束。
以下对本发明方法作进一步的描述,具体内容如下1、所述的映射模块,完成以下的处理(1)分割空间首先,定义网格本发明将空间分割成层次的网格,这些网格由一系列边长可变的轴向包围盒组成,把这些盒子称为网格,网格的边长定义为k,称之为网格大小。
其次,层次分割为了为每个四面体找到最适宜的网格,网格的大小必须和四面体的大小相适应。定义s=size(t)为四面体t的轴向包围盒的最大边长,则用以下公式定义映射t的网格大小kk=2[log2(s)]]]>公式1这里的[log2s]定义了空间网格的等级。
再次,分割等级为了区分分割后空间网格,定义了分割等级(level)l(l为整数),定义如下l=[log2s]]]>l有如下特性l:=<0ifs<1=0ifs=1>0ifs>1]]>(2)映射将空间分割成层次网格后,空间中的每一个点(x,y.z.)都属于唯一的网格。为了找到每一点属于的网格,需要计算出每一个点的地址,由于小的网格是嵌套在大的网格中的,需要给每个点计算出它唯一的地址。令k为网格的大小,l为分割等级,则可用如下方法计算出每一点(x,y.z.)的地址xyz=[x/k][y/k][z/k]l]]>公式2(3)哈希函数利用上述方法计算出的每点的地址(x,y.z.,l)通过哈希函数映射到哈希表项中,本发明中的哈希函数定义如下
hash(x,y,z,l)=(xp1yp2zp3lp4)mod sH公式3这里的p1,p2,p3,p4是大于108的质数,sH是哈希表的大小,表示异或。
2、碰撞检测模块,对物体A中的每一顶点v,做如下处理(1)通过上述方法将每一点映射到哈希表中(2)检测哈希表中有冲突的表项,即对每一索引i,做如下工作如果在i对应的哈希表项中不存在除A以外实体,则没有碰撞发生;否则,有可能发生碰撞,这时,须将v与i对应的表项中所有的四面体进行检测,看该顶点是否与四面体发生相交。
如果v与t相交,则可能出现如下三种情况i.如果v是t的顶点之一,则没有发生碰撞;ii.如果v是同一物体中的其他四面体t中的点,则发生自碰撞;iii.如果v和t分属于不同物体,则碰撞发生。
本发明方法具体操作时,首先根据将物体表面点生成物体的体网格数据读入系统,再按照上述步骤进行,然后对碰撞发生的部分进行冲突响应的处理即可。
本发明采用一种基于空间层次哈希表的方式,汲取现有方法的优点,并改进了现有技术中网格大小固定的不足,实现实时和适用范围广泛的三维形变中物体冲突检测功能。利用本发明进行碰撞检测,有如下优点(1)易于实现,用到的都是基本的数据结构,分割、映射、判断等也都十分简单。(2)运算速度快,本发明克服了既有方法因运算繁杂、冗余度大所造成的执行速度慢的问题,采用哈希表查找形式,时间复杂度只与空间中四面体的个数成线性关系,而与物体的数量无关,在普通的计算机上就能完成。(3)由于分割空间后的盒子只是虚拟概念,故无需对每一个物体另行分配存储空间。(4)检测自碰撞的方法与物体间的碰撞的方法相同,虽然分了自碰撞和物体间碰撞两种情况,但实际执行过程只是判断点与面的相交,不存在判断物体的碰撞时自碰撞还是不同物体间碰撞的问题,故无需另行判断是否发生自碰撞,从而解决了自碰撞和物体间碰撞方法不同的矛盾。


图1本发明方法流程图具体实施方式
下面对本发明的一实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
本实施例在CPU为Pentuim M 1.5GHz内存为1.0GB的计算机中实现,首先根据将物体表面点生成物体的体网格数据读入系统,再按照步骤进行,然后对碰撞发生的部分进行冲突响应的处理。具体参数情况如表1所示表1 实施例中各种参数情况

1、首先利用VTK(Visualization Toolkit,一个三维图形图像处理类库)中提供的函数vtkDelaunay3D()将表中各个物体的表面信息转化成体信息,即将各物体表面顶点连成相互关联的空间四面体。程序按图1的循环实现两物体的碰撞检测,循环的结束条件是所有空间四面体位置不再发生变化。
2、在映射模块中,对组成物体的所有空间四面体,根据公式1动态计算出每一四面体最适合的网格的大小,根据公式2计算出每一顶点的地址,根据公式3建立哈希表,例中分别取p1=73856093,p2=19349663,p3=83492791,p4=67867979,sH=67231,并根据计算出的网格大小和地址将这些顶点映射到相应的哈希表项中。
3、在碰撞检测模块中,对组成物体的所有四面体的每一顶点,将其映射到空间哈希表中,对有冲突的哈希表项采用上面提到的动态的碰撞检测算法进行检测,判断是否发生碰撞,如果碰撞发生,判断发生自碰撞还是一般碰撞,并返回发生碰撞的具体的三角片。
4、对于返回的具体三角片,处理碰撞后的函数。这里的碰撞主要指不同物体发生碰撞,碰撞发生后返回被碰到的具体三角片,接着进行碰撞响应的处理,例中的处理主要是形变处理,由于物体发生形变,组成物体的空间四面体的位置信息会发生改变,故而需要回到步骤1,继续执行。
在该环境下的动态碰撞检测能够达到实时的效果,所有磁撞都能有效地被检测出来,与传统方法相比,性能也有了很大的提高,分别对应于上述情况A和B,具体结果见表2。
表2 实施例结果及与传统方法的比较情况

权利要求
1.一种虚拟手术系统中形变物体的实时冲突检测方法,其特征在于,采用空间层次哈希表的方式,通过映射模块和检测模块循环来实现,假设物体由m个四面体组成,m为正整数,映射模块对每个四面体进行动态空间分割,生成哈希表,计算各顶点地址,并将它们映射到相应的哈希表项中;在映射过程中,采用动态调整空间网格大小的形式,即根据各个四面体的大小生成边长不同的网格;碰撞检测模块利用映射模块的结果,检查哈希表项中是否出现冲突项,并利用动态碰撞检测算法检测碰撞是否发生;循环中,两模块交替进行,直到循环结束。
2.根据权利要求1所述的虚拟手术系统中形变物体的实时冲突检测方法,其特征是,所述的映射模块,完成以下的处理(1)分割空间首先,定义网格将空间分割成层次的网格,这些网格由一系列边长可变的轴向包围盒组成,把这些盒子称为网格,网格的边长定义为k,称之为网格大小;其次,层次分割网格的大小必须和四面体的大小相适应,定义s=size(t)为四面体t的轴向包围盒的得最大边长,则用以下公式定义映射四面体t的网格大小kk=2[log2(s)]]]>这里的[log2s]定义了空间网格的等级;再次,分割等级为了区分分割后空间网格,定义了分割等级(level)l,l为整数,定义如下l=[log2s],]]>l有如下特性l:=<0ifs<1=0ifs=1>0ifs>1;]]>(2)映射将空间分割成层次网格后,空间中的每一个点(x,y.z.)都属于唯一的网格,令k为网格的大小,l为分割等级,计算出每一点(x,y.z.)的地址xyz=[x/k][y/k][z/k]l]]>(3)哈希函数利用计算出的每点的地址(x,y.z.,l)通过哈希函数映射到哈希表项中,哈希函数定义如下hash(x,y,z,l)=(xp1yp2zp3lp4)mod +sH这里的p1,p2,p3,p4是大于108的质数,sH是哈希表的大小,表示异或。
3.根据权利要求1所述的虚拟手术系统中形变物体的实时冲突检测方法,其特征是,所述的碰撞检测模块,对物体A中的每一顶点v,做如下处理(1)将每一点映射到哈希表中;(2)检测哈希表中有冲突的表项,即对每一索引i,做如下工作如果在i对应的哈希表项中不存在除A以外的实体,则没有碰撞发生;否则,有可能发生碰撞,这时,将物体中的顶点v与索引i对应的表项中所有的四面体t进行检测,看该顶点是否与四面体发生相交;如果物体中的顶点v与四面体t相交,则可能出现如下三种情况①如果物体中的顶点v是四面体t的顶点之一,则没有发生碰撞;②如果物体中的顶点v是同一物体中的除包含顶点v的四面体以外的四面体t中的点,则发生自碰撞;③如果物体中的顶点v和四面体t分属于不同物体,则碰撞发生。
4.根据权利要求1所述的虚拟手术系统中形变物体的实时冲突检测方法,其特征是,直接在运行的计算机上进行,首先根据将物体表面点生成物体的体网格数据读入系统,再按照步骤进行,然后对碰撞发生的部分进行冲突响应的处理。
全文摘要
一种虚拟手术系统中的形变中物体实时冲突检测方法,属于图形处理技术领域。本发明采用空间层次哈希表的方式,通过映射模块和检测模块循环来实现假设物体由m个四面体组成,m为正整数,映射模块对每个叫面体进行动态空间分割,生成哈希表,计算各顶点地址,并将它们映射到相应的哈希表项中;在映射过程中,采用动态调整空间网格大小的形式,即根据各个四面体的大小生成边长不同的网格;碰撞检测模块利用映射模块的结果,检查哈希表项中是否出现冲突项,并利用动态碰撞检测算法检测碰撞是否发生;循环中,两模块交替进行,直到循环结束。本发明实现高精度,对庞大数据集,特别是虚拟手术系统中手术器械与软组织交互变得更有效,更快速。
文档编号G01B21/32GK1996388SQ200610147640
公开日2007年7月11日 申请日期2006年12月21日 优先权日2006年12月21日
发明者顾力栩, 张少霆 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1