APP下载

基于体纹理的肝脏可视化仿真方法研究

2012-06-26翟朝亮陈国栋刘凤霞

电视技术 2012年17期
关键词:四面体顶点纹理

翟朝亮,陈国栋,王 娜,刘凤霞

(1.福州大学物理与信息工程学院,福建 福州 350108;2.福建师范大学福清分校数学与计算机科学系,福建 福清 350300)

随着计算机图形技术及虚拟仿真技术的不断发展,虚拟手术技术也取得了很大的进展,并发挥着重要作用,但是也存在着一些难点问题,主要集中在三维物体重建、对手术过程中的仿真碰撞以及软组织的变形仿真等[1]。三维物体重建是虚拟手术中一个很关键的环节,它是虚拟手术切割显示的基础。在虚拟手术中,一个好的模型不仅要能够真实地反映人体器官的外部形状和内部结构,具有与真实人体器官相似的纹理,而且还要具有较为简单的结构以便于切割实现。

阎丽霞等[2]在虚拟手术中的模型实时绘制中从断层图像数据中提取相应的纹理图像,再以这些纹理图像构建立体纹理图,然后按照一定的映射法则将制作的体纹理映射到生成的几何模型上并实现了实时绘制,但是这种方法的体纹理完全来源于断层图像,并且需要对断层图像进行图像处理。采用当今技术获取的断层图像分辨力并不高,这就决定了生成的纹理质量也不高,难以满足虚拟手术的要求。方驰华等[3]在肝内外胆管结石64排CT数据三维重建及其临床意义中采用MIMICS交互式的医学影像控制系统重构肝脏模型,其数据来源于肝脏64排CT的原始数据,但是在对图像分割时需要手工勾勒出需要提取的部分并保存,工作量非常大。宋晓等[4]在基于Open Inventor的虚拟肝脏手术切割方法研究中由CT数据集转化为三维图形数据文件格式,再根据三维图形数据文件中保存的肝脏组织的相对位置来构建三维模型,其构建的模型比较粗糙且缺乏颜色信息。Daniel Bielser等[5]在三维软组织交互切割研究中,其对象体是从立方体按一定的规则剖分后得到的四面体集合。为了加强真实感,对对象体的外部和切割过程中新产生的外表面使用了二维的纹理映射。但是该方法不能真实地表述模型相对于人体某一部分的真实状态。本文针对以上方案存在的问题提出了基于体纹理的肝脏可视化仿真方法,提出了将肝脏划分为肝脏体和肝脏管道分别建模的思想,对肝脏体采用Takayama Kenshi等[6]的重叠体纹理贴图的方法,实现了对肝脏体的贴图。同时,本文所采用的方法有利于切割的实现,能够进行切面的实时绘制。

肝脏手术涉及肝脏本身复杂的解剖、管道结构的变异等因素导致的各种情况,致使手术的复杂度较高。本文从复杂的肝脏内部结构中抽象出肝脏体和肝脏管道,这样抽象是合理的,因为在肝脏手术中,肝脏管道的分布情况是至关重要的[7]。

虚拟肝脏手术最基本的要求是能够进行切割仿真并实时绘制。为了能够实时显示模型的剖面图且便于切割,本文选用以四面体为基本单位的模型表示方式,即形体的内部也用四面体来填充,这种表示模型的方法能够较为准确的反映模型的内部构造,同时也有利于切割的实现。通过简化的模型,参考可视化远程医疗监控前端系统[8],可以实现远程虚拟手术的切割和绘制。

纹理是表现物体表面细节的一种有效方式。为了能够在切割剖面上表现肝脏体的细节,本文采用体纹理[9]的方式来对肝脏体进行贴图。尽管,体纹理带来了存储空间的加大和计算量的增加,但这相对于渲染所需要的内存和时间是微不足道的。

1 模型的构建和纹理的生成

1.1 肝脏模型的构建

基于体纹理的肝脏模型的构建需要以下3个步骤:

1)模型原型建模,用3DS MAX建立肝脏体模型,导出为gw::OBJ-Exporter(*.obj)的文件格式,其网格结构如图1所示。

图1 肝脏体和肝脏管道模型

2)模型格式转换,利用3D Object Conveter v4.0将.obj文件另存为PLY ASCII(*.ply)格式文件,为下一步模型的处理做准备。

3)生成四面体网格模型,利用TetGen库将得到的.ply文件转化为四面体网格文件(*.ele)和(*.node),这两个文件分别包含了模型顶点的连接信息和顶点的位置信息。

3DS MAX是一款功能强大的建模工具,利用3DS MAX建模可以获取逼真的肝脏体模型,然而,所建立的模型只是表面的网格模型,不能满足切割后显示切面的要求,因此必须进行格式的转换。3D Object Conveter是一个强有力的3D模型转换和交互式查看共享工具,可以从外部数据源中导入任意3D模型,也能够以极高的精确度和质量输出为多种工业标准格式,把由3DS MAX建模得到的.obj文件通过3D Object Conveter v4.0转换为.ply文件,以便利用TetGen库。TetGen是德国Weierstrass实验室的一个项目,目前支持的文件格式有.off,.ply,.stl和.mesh。通过TetGen可以将三角面片模型转化为四面体网格模型。

1.2 体纹理的生成

肝脏模型的贴图很重要的一个步骤就是体纹理的制作。肝脏有丰富的血液供应,呈现棕红色,肝细胞单排围绕中央静脉呈放射状排列,由此信息,可以通过photoshop画出一张二维的纹理图,再以这张纹理图为模板,分别在体纹理坐标的x轴方向和z轴方向(即左右方向和前后方向)上扩展,好比是同一张照片先在左右方向上排列,再在前后方向上排列,对于相交的点,取相交像素的平均值。采用在2个方向上扩展的方法对于肝脏体体纹理的构建是有帮助的,因为肝脏表面的纹理和内部的纹理是有差别的,恰好可以利用体纹理表面是原图像的像素值而中间是原图形像素值的叠加平均来达到不同的效果,肝脏体体纹理如图2所示。

图2 肝脏体体纹理(左上角为纹理模板)

建立的体纹理文件以.vol文件格式保存,这种格式和Johannes Kops的格式是一致的,其头文件的结构体如下:

.vol文件的前4096个字节包含了.vol的头文件信息以及其后用0填充的字节。volSize×volSize×volSize×numChannels×bytesPerChannel是体数据真实的字节数。

本文采用了吴剑煌等[10]提出的基于曲率的局部细分方法生成肝内血管,具体方法可参见文献[10]。

2 贴图和切割

贴图和切割是本文的主要研究内容。贴图的过程类似于重叠体纹理[6]的方法。首先,为已经制作好的体纹理创建一个蒙版,使贴在物体上的纹理块交界处看起来不那么明显,然后沿着主动脉肝内血管的方向构建一个张力场使体纹理块沿着这个张力场对齐产生放射状排列的效果,最后,纹理块沿着张力场的方向重复的贴图,直到整个模型贴图完毕为止。

2.1 体纹理蒙版的创建

在二维的情况下,Praun等[11]使用标准的图像编辑工具来创建二维纹理的蒙版,对于构造简单的纹理,使用了独立于纹理内容的“斑点”纹理蒙版,而对于构造复杂的纹理,创建了一个近似的alpha蒙版来尽可能地保留重要的纹理特征。

在三维的情况下,本文用已存在的3D建模工具来建模一个蒙版的形状,相当于二维情况下的“斑点”,但是这种蒙版也只能适用于构造比较简单的纹理,不能满足构造较为复杂的纹理,肝脏体可以认为是构造较为简单的纹理,这种纹理蒙版的构造方法可以满足肝脏体贴图的要求。

2.2 构建张力场

首先,定义了一个全局的张力场,它的第1个方向是深度场的渐变方向,第2个方向是根据肝脏管道在肝脏内的分布而设置,第3个方向就是与前2个方向都垂直的一个方向,其纹理的大小是从深度场上自动设置的。

在四面体网格上采用Laplacian平滑来插入指定方向场的大小,采用这种方法可以通过调整权重参数,更多地控制插入的过程。在获取网格定点的张力后,四面体的张力是该四面体4个顶点张力的平均值。

在指定的限制下,Laplacian平滑就是要使每个顶点的纹理值与它邻点的纹理值的加权平均之差要尽可能地小。用 xi表示顶点 vi的纹理值,δi表示差值(i=1,2,…,n),则Laplacian定义如下

式中:Ni是顶点vi相邻点索引的集合,是顶点vj纹理值的权重。比如,设,也就是取顶点vi相邻点的平均值。目标就是在满足指定的限定下,使得值δi尽可能地小。假定,三维空间中的一点p,限定值为c,首先搜索重心最靠近点p的四面体T,然后用以下的式子来表示p并计算系数λ1~λ4:

式中:i1~i4分别是四面体T的4个顶点的索引。其限制条件为

在满足式(3)的限制下,求解式(1)的最小值,这是一个稀疏线性方程组,可以很快地求解。

2.3 种子四面体的选择

首先,初始化网格中所有的四面体组成的列表,标记为“未覆盖”状态,对于每一次的贴图操作,从列表中随机地选择一个四面体作为种子四面体。在每次的贴图操作后,如果四面体在上次的贴图操作中全部被贴图,则从列表中将其移除,重复这一过程,直到所有的四面体被完全贴图。

2.4 纹理的映射过程

首先,将选择的种子四面体从几何空间映射到纹理空间,以便使张力坐标轴与标准的纹理空间坐标轴对齐,并且使四面体变换后的中心位置落在纹理的中心。

以(R,S,T)表示与种子四面体T相关的正交张力场。首先,用四面体T的4个顶点表示R并计算系数r1~r4,公式如下

式中:v1~v4是四面体T的4个顶点,用同样的方式来表示S和T。通过以下等式计算变换到纹理空间的顶点位置w1~w4

式中:s1~s4,t1~t4,c1~c4分别是表示S,T的系数和四面体T重心坐标的系数,设置四面体的重心位置时令c1=c2=c3=c4=0.25。顶点位置变换后,可以得到从几何空间顶点vi到纹理空间顶点wi的仿射变换矩阵M。接着,把邻近的四面体添加到四面体群中,添加到该四面体群中需满足:1)该四面体的张量与种子四面体的张量相同;2)经过矩阵M变换后,该四面体的一部分在纹理空间的alpha蒙版内。

2.5 切割

当用户用鼠标在模型上任意划一条线段“切割”模型时,系统在四面体网格上构建一个标量场,使这条线段的左右两边分成正、负两部分。然后用径向基函数(RBF)差值作用于这个标量场,再从网格中提取值为0的面作为横截切面。对于横截切面上的三角形纹理坐标是通过原始四面体的纹理坐标插值来得到的。在横截切面上,对四面体网格再进行细分,以满足再次切割的操作。

3 实验及结果分析

利用Visual C++和OpenGL在PC机上实现了上述算法,PC机的配置为Core 2 Duo E47002.6 GHz的CPU,2 Gbyte的RAM,NVIDIA GeForce GT 430显卡。通过对肝脏体和肝脏管道分别贴图,再将其合为一体。从不同的角度切割所得到的肝脏效果图如图3所示。

图3 不同角度切割的效果图(切面上深色的点为肝脏管道切割后的效果)

用本文方法实现的肝脏纹理贴图在切割重绘时所需的时间和占用的内存都很小。统计信息如表1所示。

表1 肝脏贴图统计信息

从表1中可以看出,在对肝脏体进行重叠体纹理贴图时需要占用较长的时间,这是因为在对肝脏体进行渲染时,需要把重叠体纹理中四面体4个顶点的纹理坐标转化为模型表面三角形3个顶点的纹理坐标,然后再渲染这些多边形模型,而且,在重叠体纹理贴图时,表面的多边形要被多次渲染。

4 结论

本文提出将肝脏的建模分为对肝脏体和肝脏管道分别建模的思想,对肝脏体采用重叠体纹理的贴图方式,对肝脏管道采用合成纹理的贴图方式,再将这两部分有机地结合在一起。实验结果表明该方法能够实现肝脏切割的实时可视化,在虚拟手术的应用中能够发挥一定的作用。

[1]邢英杰,张少华,刘晓冰.虚拟手术系统技术现状[J].计算机工程与应用,2004(7):88-90.

[2]阎丽霞,洪津津,石教英.虚拟手术中的模型实时绘制[J].计算机工程与应用,2001(7):8-10.

[3]方驰华,常旭,鲁朝敏,等.肝内外胆管结石64排CT数据三维重建及其临床意义[J].南方医科大学学报,2008(3):370-372.

[4]宋晓,王博亮,黄绍辉,等.基于Open Inventor的虚拟肝脏手术切割方法研究[J].厦门大学学报:自然科学版,2009(5):672-675.

[5]BIELSER D,MAIWALD V A,GROSS M H.Interactive cuts through 3-dimensional soft tissue[J].Computer Graphics Forum,1999,18(3):31-38.

[6]TAKAYAMA K.Lapped solid textures:filling a model with anisotropic textures[J].ACM Transactions on Graphics,2008,27(3):1-9.

[7]蔡秀军,杨扬.肝脏手术中的缝合吻合技术和材料选择专家共识(2008)[J]. 中国实用外科杂志,2008(10):800-801.

[8]肖啸,李凌,苏航,等.嵌入式可视化远程医疗监控前端系统的设计[J]. 电视技术,2011,35(11):125-129.

[9]PEACHEY D R.Solid texturing of complex surfaces[J].Computer Graphics(ACM),1985,19(3):279-286.

[10]吴剑煌,马炘,胡庆茂.血管结构三维几何建模研究进展[J].先进技术研究通报,2010,4(12):47-52.

[11]PRAUN E,FINKELSTEIN A,HOPPE H.Lapped textures[C]//Proc.the ACM SIGGRAPH Conference on Computer Graphics.New Orleans,LA:[s.n.],2000:465-470.

猜你喜欢

四面体顶点纹理
四面体垂心研究的进展*
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
R3中四面体的几个新Bonnesen型不等式
R3中四面体的Bonnesen型等周不等式
基于BM3D的复杂纹理区域图像去噪
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
消除凹凸纹理有妙招!
基于CoⅡ/ZnⅡ的四面体笼状配合物对ATP选择性荧光识别