美章网 资料文库 三维肝脏内部可视化研究范文

三维肝脏内部可视化研究范文

本站小编为你精心准备了三维肝脏内部可视化研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

三维肝脏内部可视化研究

《电视技术杂志》2014年第十一期

1预处理工作

1.1肝脏的结构与纹理分析肝小叶是肝脏的基本单元,肝小叶的立体形态一般呈六角形棱柱体,长约2mm,宽0.1mm,其中以中央静脉横穿长轴。本文在构建肝脏基本模型时,由于肝脏软组织纹理是研究的重点,所以只考虑肝脏体的基本构造,而忽略肝小叶和血管的组成。而肝脏的纹理具有随机特征,区域分布均匀,没有明显的周期性和结构性。Markov随机场模型认为图像中每一像素值只与其邻域像素的取值有关,通过像素的概率密度函数来定义纹理分布。因此采用Markov模型可以比较好地反映肝脏纹理的随机特性。

1.2肝脏体的构建对于肝脏体的构建,首先在3dsmax里建立肝脏体的原型,目标是获得逼真的肝脏体模型,导出后缀为obj的模型文件,模型具有网格结构,如图2所示。由于只有表面网格构造,无法满足内部结构的显示以及后续复用工作的需要,所以先利用3DObjectConveter这款3D模型转换工具,将obj文件转换为ply文件,再导入TetGen库,该库是德国Weierstrass实验室开发的一个开源项目,可以将表面网格模型转换为四面体网格模型。四面体网格模型以ele文件和node文件形式保存。ele文件包含各个四面体四个连接顶点的索引信息,node文件则包含了各顶点的位置信息。本文构建的肝脏四面体模型总共有61014个四面体,14633个顶点。

1.3体纹理的生成在传统计算机图形学中,纹理是一种数据采样资源,一般为二维形式,通过纹理映射可以把二维纹理与三维表面的点相对应。而体纹理则是定义在三维空间,以体素为基本单元。体纹理可以很好地反映物体内部结构信息,非常适合用于虚拟肝脏手术这种需要观察物体内部结构并且对精度要求较高的场合。本文采用基于样本的体纹理合成方法,所以需要合成一个样本体纹理块。首先需要一个具有比较高精度的数据源,本文选用美国数字化可视人体数据集,其来源于美国国立医学图书馆的“可视人体计划(VHP)”,选用里面的180张彩色肝脏切片图作为数据源,其尺寸为600×630,如图3a所示。接着要对切片图进行分割提取,分离出肝脏体部分,排除其他的组织器官。在轮廓分割方法上,采用opencv编程实现,首先人工在图片上指定几个关键点,接着对几个关键点做Bezier曲线拟合,使得曲线更加光滑,如图3b所示。Bezier曲线是一种应用于二维坐标的数学曲线,它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形,随着点有规律地移动,曲线将产生皮筋伸引一样的变换,带来视觉上的冲击。分割的目标在于尽可能多地包含肝脏区域部分,尽可能少地包含其他区域部分。分割好肝脏图像后,参考文献[1]的做法,以分割图像为模版,分别在体纹理坐标的x轴和z轴方向上扩展,即先左右排列,再前后排列。其中相交的点的像素值则取平均值。这样构建的好处在于使得肝脏表面的纹理同内部纹理有所不同,增加肝脏纹理的多样性,更贴近现实中的肝脏纹理。体纹理以.vol文件形式保存,其头文件信息包含了版本号(version)、纹理数组(texName[])、纹理块尺寸(volSize)、通道数(numChannels)、每个通道位数(bytesPerChannel)等信息,如图3c所示。

2基于复用计算的肝脏软组织体纹理合成

合成肝脏软组织体纹理是本文的主要研究内容。基于样图的纹理合成技术由于可以克服传统纹理映射方法的缺点,又避免了过程纹理合成调整参数的繁琐,目前发展很快。2001年的SIGGRAPH会议上,Efros提出一种基于块拼贴的纹理合成算法[5],通过查找误差最小路径实现各匹配块的拼贴,对一些常见纹理取得了比较好的效果,该方法影响了后期许多的研究。总结来说,合成的基本单元可以是像素点或者像素块,基于像素点的合成利于保持纹理的局部特性,但对全局特征的把握不好,并且合成的速度比较慢。基于像素块的合成能够保持纹理的全局特征,并且合成速度提高很多,但是在块与块之间的衔接拼合上会有过渡不自然的现象。邻域的形状可以是正方形或者L形[6]。目前,大多数的纹理合成方法都采用Markov模型,即纹理中任一位置的色彩只由其局部有限邻域的情况决定。而邻域搜索的效率往往是决定纹理合成效率的一个关键因素,邻域搜索由于要在样本里逐点或者逐块搜索,计算量比较大。对于肝脏体纹理合成,本文构建的肝脏体模型总共有61014个四面体,数据量非常大,因此本文考虑采用复用计算的方法,进行基于像素块的纹理合成,复用计算适用于大尺寸的纹理合成,比较适合合成肝脏纹理这样数据量较大的场合。此外,复用计算适合合成结构性不强的纹理类型,肝脏软组织纹理属于结构性不强的纹理。本文参考了陈昕提出的二维平面的复用合成方法[8],并将其扩展至三维空间,只在合成初始区域时采用邻域搜索匹配像素块,而合成剩余区域时则复用之前的结果,以减少计算量,提高合成的效率。

2.1初始区域的合成算法首先合成一个初始区域,因为邻域搜索是合成计算中系统开销最大的部分,很大程度上决定了合成的速度和效率。所以本文只在合成初始区域时采用邻域搜索,而在后期合成剩余区域时则复用已合成的部分,以达到节省系统开销的目的。具体实现上,参考文献[9]的做法,先在样本体纹理块中按照块体积大小做均匀的划分,即所谓同“相位”纹理间隔排布,然后针对每个纹理块,在样本纹理块中进行邻域搜索,求出可与其拼接的纹理块的集合,匹配原则采用颜色差值的距离公式,分别计算RGB颜色的差值再取平方和的距离公式此外,为了增加纹理的随机性,本文采用一种类似文献[7]提出的经典方法,对于当前待合成空白区域,则其左边的已合成块的拼接块集合中的所有块往右位移一个单位,其他方向上的相邻纹理块也根据位置关系做类似的操作,最后再做集合的求交计算。由于均匀布块与空白区域填充可以并行进行,所以该方法可以提高合成的速度,如图4所示。对于纹理块尺寸大小和重叠区域体积的确定,文献[10]作了深入研究。主要思想是考察不同尺寸下纹理块对于样本纹理块的全局特征以及周期性的反映程度。由于肝脏纹理没有明显的周期性,本文只考察对于全局特征的反映程度。文献[10]针对黑白图像主要考察其灰度直方图,由于本文的数据源是彩色图像,所以将计算转换至RGB颜色空间,通过颜色差值来考察该尺寸下纹理块对样本全局特征的反映程度。所选纹理块尺寸不能太大,否则可匹配的纹理块数目太少,尺寸也不能太小,否则无法反映纹理的全局特征。实现上选取样本纹理体积1/4的纹理块作为划分依据。而重叠区域体积的确定,文献[10]主要考察特定宽度下对于相邻两个纹理块的区分程度,对于肝脏这种随机性比较强的纹理,不同尺寸下这种差异并不大,因此本文选取固定的重叠体积进行计算,对实验结果影响并不大。

2.2剩余区域合成在合成剩余部分区域时,则采用复用计算,从已合成的区域中选取合适的纹理块,填充到剩余的待合成区域。参考文献[8]的方法,将其扩展至三维空间。逐步扩大合成纹理块体积,迭代完成整个纹理合成过程。合成剩余区域时,重新计算合成纹理块的尺寸,在已合成区域选择纹理块进行填充。具体实现上,采用成倍增长的方式,每次合成时,将新的纹理块尺寸设置为已合成区域长宽高的各一半,即体积为已合成区域的1/8,当已合成区域长宽高都扩大一倍后,当前区域将被设置为新的已合成区域,并且重新计算合成纹理块的尺寸,开始新一轮的复用操作,进行下一步的合成。这种方式可以有效减小合成纹理块的数目,同时又可以利用已有的合成结果,对于提高合成速度与效率很有帮助。由于本文已经预先对纹理块尺寸做了计算,能够反映样本的全局特性,并且在初始阶段按照相位原则进行了排布,所以在复用选块操作时,只要按照相位标准随机选择块位置即可。

2.3重叠区域缝合在重叠区域像素的缝合上,采用类似“羽化”的缝合方法[10],即对重叠区域像素根据其到边界的距离做色彩的插值计算。

2.4边缘像素的处理最后一步是处理边缘像素,在处理边缘像素时,先判断当前待合成的纹理块是否大部分处于边界外部,若在边界外部的比例小于给定的阈值,则保留该块在内部的部分,舍弃在外部的部分,若在边界外部的比例大于给定的阈值,则舍弃该块,用“羽化”方法合成剩余部分,在这里CB和LB失去意义将其舍去,设K为边界邻近的已合成块,则CA为K的边界像素值,C则与当前待合成像素到K边界的距离LA有关。公式更改为C=CA*LA。实现中,取阈值为30%,可以比较好地判断边界分布情况。由于切割不是本文研究的主要内容,采用了翟朝亮的切割算法[1]实现对肝脏体的切割。

3实验及结果分析

利用VisualC++和OpenGL在PC机上实现了上述算法,PC机的配置为Core2DuoE47002.6GHz的CPU,2Gbyte的RAM,NVIDIAGeForceGT430显卡。所得到的肝脏效果图如图5所示。本文方法在合成纹理上时间消耗较小,内存占用不大,可以满足虚拟手术显示的要求,统计信息见表1。

4小结

本文提出一种合成肝脏软组织体纹理的方法,把二维的复用计算方法扩展到三维,只在初始区域进行邻域搜索,而在合成剩余区域则迭代利用之前的结果。实验结果表明该方法能够很大程度上提高合成效率,在虚拟手术实时可视化方面有一定的应用价值。

作者:潘翔陈国栋单位:福州大学物理与信息工程学院