本站小编为你精心准备了医学图像三维重建探讨参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1三维重建分类
图像三维重建的方法主要有两大类:一类是三维面绘制;另一类是三维体绘制。体绘制更能反应真实的人体结构。由于体绘制算法运算量太大,即使利用高性能的计算机,仍然无法满足实际应用中交互操作的需要,因此,面绘制仍是目前的主流算法。
1.1三维面绘制(SurfaceRending)表面表示是表示三维物质形状最基本的方法,它可以提供三维物体的全面信息,其具体形式用边界轮廓线和表面曲面表示。
1.1.1基于断层轮廓的表面重建
在断层图像中,通过手工或自动方式实现目标轮廓的确定性分割,然后用各层的轮廓线“堆砌”在一起表示感兴趣物体的边界,这种轮廓线表示方法简单且数据量小,但是不很直观。除了以轮廓线表示物体外,还可以由轮廓重建物体的表面来表示。最早的方法是基于多边形技术,主要采用平面轮廓的三角形算法,用三角片面拟合这组表面轮廓的曲面,Bussonnat提出了另外一种基于表面轮廓的Delaunay三角形方法,解决了系列表面轮廓的三维连通性问题。用三角形或多边形的小平面(或曲面)在相邻的边界轮廓线间填充形成物体的表面,所得出的只是分片光滑的表面,Lin采用从轮廓出发的B样条插值重建算法,得到了整体光滑的表面。
1.1.2基于体素(Voxel)的等值面重建[1,2]
所谓等值面是指空间中的一张曲面,该曲面上函数F(x,y,z)的值等于某一给定值。等值面生成的最早研究是从医学图像的应用开始的。由于医学图像数据是三维正交等距网格,组织三维图像的基本六面体单元称为体素(Voxel)。基于体素的等值面重建方法主要有以下几种。
(1)Cuberille方法。该方法将三维图像中的每一像素看成是空间中的一个六面体单元,即体素。在体素内数据场具有相同的值,用边界体素的六个面拟合等值面,即边界体素中相互重合的面去掉,只把不重合的面连接起来近似表示等值面。这种方法的特点是算法简单易行,便于并行处理,因为对每个体素的处理都是独立的;主要问题是出现严重的走样,显示图像给人一种“块状”感觉,尤其在物体边界处锯齿形走样特别醒目,而且显示粗糙,不能很好地显示物体的细节。
(2)MarchingCubes方法[3,4]。这是由Lore2nesen提出的一种基于体素的表面重建方法,MC方法是三维规则数据场等值面生成的经典算法,它先确定一个表面阈值,计算每一个体素内的梯度值,并与表面阈值进行比较判断,找出那些含有表面的立方体,利用插值的方法求出这些表面,这其实是抽取等值面的过程。其主要优点是可以采用比较成熟的计算机图形学方法进行显示。计算量小,运行速度快,借助于专用硬件支持,在高性能PC上面绘制完全可以实现实时交互显示,但它存在连接上的二义性,为解决二义性问题,提出了很多有效的方法。例如MarchingTetrahedral,DiscMC方法。
(3)MarchingTetrahedral方法[5]。Marc2hingTetrahedral算法(简称MT算法)是在MC算法的基础上发展起来的,该算法首先将立方体体素剖分成四面体,然后在其中构造等值面,进行四面体剖分后,等值面在四面体中的剖分模式减少,算法实现简单。其次,构造的等值面较MC算法构造的等值面精度高。而最直接的原因是企图通过在四面体内构造等值面来避免MC算法中存在二义性问题。常见的立方体剖分成四面体的方法有5个、6个和24个四面体剖分法。一般最常用的是5个四面体剖分法。
(4)DividingCubes方法。这种方法是逐个扫描每个体素,当体素的8个顶点越过等值面时,将该体素投影到显示图像上。如果投影面积大于一个像素的大小,则该体素被分割成更小的子体素,使子体素在显示图像上的投影为一像素的大小,每一子体素在图像空间被绘制成一表面点。每一表面点由对应子体素的值,对象空间中的位置和剃度三部分表示,可使用传统的图形学消影技术,将表面点绘制到图像空间中。采用绘制表面点而不是绘制体素内等值面片,从而节省了大量的计算时间。
1.2三维体绘制(VolumeRending)[6]体绘制由于直接研究光线通过体数据场与体素的相互关系,无需构造中间面,体素的许多细节信息得以保留,结果的保真性大为提高。从结果图像的质量上讲,体绘制要优于面绘制,但从交互性能和算法效率上讲,至少在目前的硬件平台上,面绘制还是要优于体绘制的。下面讨论三种体绘制方法。
1.2.1投影法(Projection)首先根据视点位置确定每一体素的可见性优先级,然后,按优先级由低到高或由高到低的次序将所有体素投影到二维像平面上,在投影过程中,利用光学中的透明公式计算当前颜色与阻光度,依投影顺序(即体素可见性优先级)的不同,投影法分为从前至后(Front2to2Back)算法与从后至前(Back2to2Front)算法。一般说来,前一种算法运算速度快,但除需一个颜色缓存区外,还需要一个阻光度缓存区;后一种算法仅需一个颜色缓存区,并在执行过程中产生不同层面的图像,有助于医生更好地理解医学图像。
1.2.2光线跟踪法(Ray2Casting)此法是在体数据进行分类后,从像空间的每一体素出发,根据设定的方法反射一条光线,在其穿过各个切片组成体域的过程中,等间距地进行二次采样,由每个二次采样点的8个领域体素用三次线性插值法得到采样点的颜色和阻光度值,依据光照模型求出各采样点的光亮度值,从而得到三维数据图像。光线跟踪法所面临的问题是运行速度慢,可利用空间相关性提高算法的效率。
1.2.3最大密度投影(MIP)最大密度投影是一种广泛使用的体绘制技术,传统的MIP算法使用光线跟踪法(Ray2Cast2ing)跟踪图像平面上每个像素发出的投影光线与体数据相交的每个体素,逐个比较,找出每条光线上的最大值,将它作为投影平面上对应点的像素值。临床上在病人血管中注入造影剂后进行CT或磁共振成像,然后,用MIP算法显示血管的位置、形状和拓扑结构,也称为血管造影(Angiogra2phy)。几乎所有的商用医学图像系统都包含MIP绘制模块。由于MIP的结果缺少深度信息,观察时要对体数据旋转,这意味着每次要计算5~20帧图像。显然,若不优化,血管造影只能在昂贵的大型工作站上实现。
2三维表面重建MC算法的改进
2.1离散MarchingCubes算法
离散MarchingCubes算法(简称DiscMC)是MONTANIC,SCATENIR和SCOPIGNOR在2000年提出的一种新型的MarchingCubes的改进算法[3],它将三维表面的重构和简化过程融为一体,在等值面的生成过程中就自适应地完成了面片合并。与其它简化算法相比[2],DiscMC具有算法效率高、简化比例高、损失精度小等优点。同时,DiscMC还采用了非常简捷的办法解决了经典MarchingCubes算法中的二义性问题。说明DiscMC的算法流程如图1所示。其中左面是4个相邻的体元(Cubes),带有黑点侧的9个顶点位于等值面内,另外9个顶点位于等值面外,上面一行说明了用经典的MarchingCubes算法构造等值面三角面片的结果,下面一行说明了DiscMC的构造和简化流程。经典MarchingCubes算法直接根据这4个体元顶点的内外状态构造出8个三角面片,这些三角面片的顶点是根据所在边的两个顶点的密度值通过插值计算得出。DiscMC则把整个过程分成三步:(1)扫描(Marching):首先,所有与等值面相交的体元被逐一扫描,根据其8个顶点的内外状态,按照规定好的方式生成三角面片。在这一步中,所有生成的三角面片只是用它所在体元的位置和其形态的编号进行记录,并不计算实际的顶点坐标值。(2)合并(Merging):三角面片生成后,将凡是位于同一平面并且相邻的三角面片得到合并,形成大的多边形,随后,大的多边形又被重新划分为三角形。(3)插值(Interpolating):DiscMC的最后一个步骤是通过线性插值计算出最后所得的三角面片的顶点坐标,这一步和经典的MC算法是相同的。
2.2三维重建的代码实现[7~12]
采用格式为dcm的256×256×110的MRI人头图像序列,采用VisualC++6.0进行开发的,应用了MFC,OpenGL等技术,运行于Win2dows2000环境下。这里仅列出DiscMC算法实现的程序框架:DiscMC算法实现的伪代码如下:{清除当前正在显示的三维表面的数据结构;从CT数据与处理文件(PRE)中读取原始数据;if从PRE文件中读取数据{通过轮廓线数据进行体数据的填充;清除断层轮廓线的数据结构;}for(对每一个物体){初始化存储扫描形成的三角面片的两层链表结构INCIDENCE;for(对每个个体元){查表找到对应的三角面片分布情况;将每一个三角面片根据其平面方向和所处位置加入INCIDENCE;}初始化三角面片链表FaceList、顶点链表PointList和多边形链表PolyList;for(对INCIDENCE中的每一个平面){清空用于合并的二维数组Merger;for(对于该平面上的每个三角形或矩形){查表找到该三角形或矩形的边对应于Merger中的编号;以异或模式将每条边写入Merger;}至上而下扫描Merger,将合并的图形划分为凸多边形,加入PolyList;}将PolyList中涉及到的顶点加入PointList,同时建立顶点的逆向索引;for(PolyList中的每个凸多边形){检查其边界上(不含端点)是否有点在PointList中;找到这样的“T”型点,加入该多边形,同时做标记;进行“之”字形的三角形划分,生成的三角面片加入FaceList;if(不能划分完)进行扇状划分;}清除PolyList;清除INCIDENCE;将FaceList中的数据转移到数组FaceArray中;清除FaceList;将PointList中的数据转移到数组VertexArray中,同时进行插值;清除PointList;}对所有顶点计算其法向量;进行OpenGL的有关设置,准备显示。
3结语
三维重建在医学中应用越来越广泛,用其作为医生诊断病情的辅助手段,能够极大地提高医疗诊断的准确性和科学性。目前,OpenGL已成为开放的图际图形标准,基于OpenGL开发的大量三维图形应用软件系统,已经广泛应用于科学可视化、实体造型、CAD/CAM、模拟仿真、图像处理、地理信息系统、虚拟现实等各个领域。运用OpenGL进行医学图像的三维图形重建,可大大节省开发时间,提高软件的可靠性。目前,利用OpenGL来实现医学图像的三维可视化已经成为一个热点。