毕业设计(论文)基于CT数据的三维重构.doc

上传人:仙人指路1688 文档编号:2299947 上传时间:2023-02-10 格式:DOC 页数:26 大小:1.21MB
返回 下载 相关 举报
毕业设计(论文)基于CT数据的三维重构.doc_第1页
第1页 / 共26页
毕业设计(论文)基于CT数据的三维重构.doc_第2页
第2页 / 共26页
毕业设计(论文)基于CT数据的三维重构.doc_第3页
第3页 / 共26页
毕业设计(论文)基于CT数据的三维重构.doc_第4页
第4页 / 共26页
毕业设计(论文)基于CT数据的三维重构.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《毕业设计(论文)基于CT数据的三维重构.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于CT数据的三维重构.doc(26页珍藏版)》请在三一办公上搜索。

1、基于CT数据的三维重构摘 要医学CT数据的可视化在临床上已经成为辅助诊断与治疗的重要手段之一,可视化是由一系列CT扫描后的二维图象数据重构出三维模型的技术手段,最后在计算机上显示出来。医生能够通过观察三维图像来获取患者病变的组织信息,这极大方便了医生的诊断,提高了医学诊断结果的正确性和治疗的质量。因此,可视化技术也成为近年来研究和应用的热点方向。在此基础上,提出采用VTK库进行医学数据的可视化。论文中重点研究了表面绘制和体绘制两种绘制方法。表面绘制采用移动立方体算法(Marching Cubes)实现,体绘制则用光线投射算法(Ray-casting)实现,并且通过比较两种算法的结果讨论了他们的

2、特点。从重构模型中可以看出,VTK作为一种流行的图像处理和三维可视化工具,其功能是非常强大的。 关键词:CT;三维重构;体绘制 3D Reconstruction based on CT DataABSTRACTVisualization for medical CT data has been one of the important methods to aided diagnosis, and treat in the clinicalThis technical can reconstruct the 3D models from a series of 2D images, then

3、 the data is being displayed by the computer.This greatly convenient diagnosis of the doctors. And improved the accuracy of medical diagnosis treat and the treatment qualitySo,visualization technology to become the hot spot of application and research in recent yearsOn this basis it is proposed that

4、 VTK library is used for visualization for medical dataTwo types of rendering method,surface rendering and volume rendering are studied in the paperThe marching cubes algorithm is used for surface rendering,both ray-casting methods are used for volume renderingIn additional,by comparing two algorith

5、ms and the results obtained their characteristicsThe reconstructed results showed that as a visualization tools,VTK has powerful function and it is very easy to be used for medical images processingKey words: CT;3D reconstruction; Momposited volume rendering目 录1 绪论11.1 课题的研究背景11.2 国内外研究现况11.3 论文的结构2

6、2 可视化工具VTK32.1 VTK的特点32.2 VTK的安装32.2.1 工具包的安装32.2.2 Cmake的配置42.3 VTK的结构和运行机制52.3.1 VTK的结构52.3.2 VTK的运行机制72.3.3 利用VTK对数据进行可视化82.4 小结93 CT图像的三维重构93.1 CT图像的获取与预处理93.2 三维重构流程103.3 三维重构的主要方法113.3.1 面绘制法113.3.2体绘制方法143.4 两种重构法的对比173.5 小结184 展望与总结19参考文献20致 谢211 绪论1.1 课题的研究背景计算机断层投影技术(CT)是通过采集三维空间中某一个断层上的图像

7、,利用一组断层图像以一定的间距叠放在一起就可以还原物体的三维信息。计算机断层投影技术的应用带给了医学诊断革命性的变革,为医生提供了丰富的病人组织器官信息,帮助医生更加快速准确的判断患者的病变组织。可是,医务人员所观察到的仍是二维图像,所得到的诊断结果仍然带有医生的主观判断,结论的准确性得不到保证,很大程度上取决于临床经验。近年来,面向医学的三维可视化技术得到了快速发展。通过三维重构医生可以对图像进行旋转、移动、剖面显示,使医生更为直观的了解人体内部复杂的结构。所以它能够提供具有真实感的医学图像,便于医生从多角度、多层次进行观察和分析,该技术在辅助诊断、手术仿真、引导治疗方面都发挥着极为重要的作

8、用。1.2国内外研究现况三维医学图像重构综合了计算机图像处理与分析、计算机图形学、生物医学工程技术。近十多年来,在美国、德国、日本的著名高校中三维重构研究工作十分广泛。(1)可视化人体工程1988年到1994年间,美国国家医学图书馆开展了一项名为“可视化人体”的工程。其目的是建立一个应用于临床医学和生物医学研究的数据库,它的数据采集与躯体断面的数字化照片图像、计算机断层图像和磁共振图像,都通过少量付费获得使用。这极大方便了教学和科学研究。VHP数据集的出现,标志计算机三维重构图像和虚拟现实技术进入了医学领域,从而大大促进了医学领域的发展。(2) 狗心脏CT数据显示美国国家超级计算机应用中心(N

9、CSA),它利用远程计算机并行资源,用体绘制技术实现CT扫描三维数据场动态显示。其具体内容是显示一个狗的心脏跳动周期的动态图像。 (3)三维重构系统的发展目前在国外有很多比较成熟的三维医学图像重建系统,其中包括美国宾州大学开发的3DVIEWNIX系统和德国汉堡大学开发的Voxel-Man系统等,但都是运行在UNIX环境下。以色列埃尔新特公司,美国通用电器公司生产的螺旋CT扫描设备,均附有基于图形工作站的医学图像可视化系统,但它需要计算速度高,存储容量很大的计算机系统,很多系统还必须配有专用的硬件加速工具1。 在国内,清华大学,浙江大学,西北大学,中科院自动化所均作了大量研究工作,开发了一些实验

10、系统。从断层扫描数字图像精确重建人体解剖组织涉及到一系列图像采集和处理的科学和技术问题,如图像的分割、分类、配准、重建和显示等都是当前医学图像研究的重点。1.3论文的结构论文共分为四部分展开研究讨论。第一部分为绪论,主要提到了题研究的背景与在医学中的应用,以及三维重构技术在国内外的发展情况。第二部分主要介绍了可视化工具VTK。从VTK的重构原理、特点、安装几个方面展开。其中重点讨论了VTK的运行结构和运行机制。第三部分研究的是三维重构的方法。作为本文的重点,提到了两种重要的重构方法:即面绘制法和体绘制法,最后对比两种方法的优缺点,使得研究结果更为直观。第四部分为论文的展望与总结。总结了论文的优

11、势与不足之处。2 可视化工具VTK VTK是美国Kitware公司开发的一套C+类库,是一个开放源代码、免费使用的软件包。它最初设计的目的是作用于医疗领域,但是现在已经广泛应用于计算机图形学、图像处理和可视化等领域。VTK利用面向对象的建模技术,设计和实现开放的三维可视化工具箱,它被设计成一个工具包而不是一个系统,这使它能嵌入任何一种开发工具中。VTK包括了众多优秀的图像处理和图形生成算法,目前已经成为最流行图像应用软件开发平台。2.1 VTK的特点 VTK是一个面向对象的可视化类库,具有强大的可视化功能和图像处理功能。它以用户使用的方便性和灵活性为主要原则,具有如下的特点2: 具有强大的三维

12、图形功能。VTK既支持体绘制,又保留了传统的面绘制,在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件。 VTK的体系结构使其具有非常好的流(streaming)和高速缓存(caching)的能力,在处理大量的数据时不必考虑内存资源的限制。 VTK能够更好的支持基于网络的工具,比如Java和VRML。随着Web与Internet技术的发展,VTK有着很好的发展前景。 能够支持多种着色,如OpenGL等。 VTK具有设备无关性,使其代码具有良好的可移植性。 VTK中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为。 VTK具有更丰富的数据类型,支持对多种数据类型进行

13、处理。 既可以工作于Windows操作系统,又可以工作于Unix操作系统,极大的方便了用户的使用。2.2 VTK的安装2.2.1 工具包的安装 VTK需要在Visual Studio 2008环境下运行,所以计算机需提前安装好该软件,接下来就是下载VTK相关的工具包:cmake-2.8.2-win32-x86.exe;vtk-5.6.0-win32.exe;vtk-5.6.0.zip;vtkdata-5.6.0.zip。 双击vtk-5.6.0-win32.exe运行程序,选择安装路径为C:vtk,安装后会产生vtk文件夹,文件夹里还包括bin子文件夹。 将vtk-5.6.0.zip解压到C:

14、vtk文件夹下。 双击vtkdata-5.6.0.zip运行程序,将其解压到C:vtkvtkdata下。 双击cmake-2.8.2-win32-x86.exe运行程序,选择安装路径为C:CMake。 设置变量,使VTK数据文件和程序能够匹配。在XP系统下,控制面板-系统-高级-环境变量-新建,添加variable=VTK_DATA_ROOT,value=C:vtkvtkdata。2.2.2 Cmake的配置设置sourse code目录为C:vtkvtk,build目录为C:vtkbin。接下来单击configure按钮,选择使用的编译器,然后cmake会描所需要的文件,之后就可以修改cma

15、ke选项了。需要修改的有以下几个参数:BUILD_EXAMPLES : 选择ONBUILD_SHARED_LIBS: 选择ONVTK_USE_GUISUPPORT: 选择ON参数改完之后,继续点击Configure 。继续修改参数:VTK_USE_MFC 选择ON至此,Cmake配置完成,配置图如2-1:图2-1 Cmake配置图经过上述步骤后,在C:vtkbin文件夹下会生成vtk.dsw文件,用已安装好的Visual Studio打开,点击工程,生成解决方案。此操作用来来生成可执行程序以及软件运行时所需要的控件。当出现All Build时,解决方案完成。这里需要提到一点,CMake是开源的

16、跨平台自动化构建系统,可以产生多种构建文件,如:C+环境下的projects/workspaces。它使得开发者可使用各种平台上的原生构建系统,这是CMake的重要优势。CMake并不直接构建出最终的软件,而是产生标准的构建档,然后再依据各自平台的构建方式使用。这使得熟悉某个平台集成开发环境的开发者可以用熟悉的方式构建软件。图2-2 Visual Studio 2008下生成解决方案2.3 VTK的结构和运行机制2.3.1 VTK的结构 VTK有两种不同的对象模型:图像模型和可视化模型。(1)图像模型:采用了3D图形系统简单易用的特点,同时也采用了图形用户接口的方法。整个图形模型表现3D图形系

17、统的本质特点,主要有9类基本对象:渲染控制器,渲染器,灯光,渲染窗口,照相机,角色,特性,映映射,变换。 渲染控制器定义与设备无关的坐标计算方法,并创建渲染窗口。 渲染窗口管理显示设备上的窗口,一个或多个绘制方法可在渲染窗口上创建一个场景渲染窗口是用户图形界面,其中包括设置渲染窗口的大小,产生立体显示效果等方法。 渲染器管理光源照相机和绘制对象等位置和属性,提供了三类坐标系之间的转换。 灯光可在场景中照亮绘制对象,调用参数控制灯光的状态、照射角度与强度、颜色等。 照相机是定义观察者的位置,聚焦点和其他相关属性,参数可有调用者根据需要设置。 角色代表渲染场景中的绘制对象实体,通过参数调节设置角色

18、的位置、方向和渲染特性。 属性说明几何物体的一些特性,对参数跟硬件解释说明,包括实现三维图形真实感。 映射指定了渲染数据和基本图元之间的关系,一个或多个角色可同时使用相同映射。 变换是一个放置4x4变换矩阵的堆栈,可以进行各种操作。 下面用面向对象技术的对象模型图表示VTK框架结构,如图2-3所示。vtkSourcevtkFilervtkObjectvtkRendervtkMappervtkActor 图2-3 VTK的对象模型图 (2) 可视化模型:利用数据流程模型,由过程对象和数据对象组成。过程对象包括可视化流程的模块及算法,数据对象包括数据处理及当数据在网络中流动时对数据进行的操作。过程

19、对象又分为:源对象,过滤器,映射。源对象是可视化流程的起点,源对象包括从文件中读入及程序内部产生的数据,过滤器接收从源对象来的输入数据,处理数据及输出数据,映射指定了基本图元与数据之间的接口,接收过滤输出的数据,并把数据映射为基本图元。 Graphics interface图2-4 VTK的可视化模型图 2.3.2 VTK的运行机制VTK采用的是流水线(pipeline)的机制3。根据所获得的原始数据的类型以及所要得到的显示结果,我们可以选择适当的算法并构建起自己的可视化流程。在用可视化工具VTK对体数据进行可视化的过程中:按照所要处理的原始数据类型不同选择不同的类,vtkObject是VTK

20、类库的基类,它为整个可视化流程提供基本的法,vtkSource 是 vtkObject 的派生类和vtkFilter的父类,它为整个可视化流程的开始比如读取数据等定义具体的行为和接口。过滤器接收数据源中的数据,进行各种不同的过滤操作。vtkFilter是vtkSource的派生类,它对数据进行各种处理,将原始数据经过各种过滤器的处理后,转换为可以直接用某种算法模块对其进行处理的形式。映射将处理过的适当数据形式映射为几何数据,vtkMapper是vtkObject的派生类,它经过各种filter处理后的应用数据映射为几何数据,为原始数据与图像数据间定义了口。角色将可视化的数据在窗口中表现出来,在

21、Visualization Toolkit中任何可视化的数据都是通过角色在窗口中表现出来的。vtkActor类用来表达绘制场景中的一个实体,它通过SetMapper方法将几何数据的属性告诉角色。最后通vtkRender类将结果在窗口中显示出来。这样,依据要处理的数据的类型和想要实现的功能,多种类型的Sources,Filters和Mappers就连接了起来。 Source FilterActorMapper Renderer 图2-5 可视化运行机制2.3.3 利用VTK对数据进行可视化 Tcl/Tk工具指令语言与工具箱是一个命令描述与图形界面描述工具。Tcl包由该语言描述解释器构成,解释器用

22、于嵌入应用程序中。Tk是一个图形工具集,是Tcl的图形扩展。Tcl/Tk是以解释方式执行的,只需提供各种平台上的解释器,Tcl/Tk程序描述的图形界面就可以统一表达,因此在开发多平台图形用户界面时,使用Tcl/Tk非常方便。VTK可以借助Tcl实现了一个可视化应用程序4。 package require vtk/加载vtk和vtkinteraction包 package require vtkinteraction vtkConeSource cone/生成一个数据源并设置它的属性 cone SetHeight 3.0 cone SetRadius 1.0 cone SetResolution

23、 10 vtkPolyDataMapper coneMapper/生成一个映射,并接收数据源产生的数据 coneMapper SetInput cone GetOutput vtkActor coneActor/生成一个角色,并用来绘制图形 coneActor SetMapper coneMapper vtkRenderer ren1/生成渲染器和渲染窗口ren1 AddActor coneActorren1 SetBackground 0.1 0.2 0.4vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 300 300v

24、tkRenderWindowInteractor iren/在渲染窗口检测出现的VTK事件iren SetRenderWindow renWinvtkInteractorStyleTrackballCamera style/设置交互样式 iren SetInteractorStyle style iren AddObserver UserEvent wm deiconify.vtkInteract/初始化交互窗口 iren Initialize图2-6 VTK重构锥形效果图2.4 小结 本章对VTK的安装进行了展示,对安装过程中重要的CMake配置环节进行了详细介绍。并且对VTK框架结构与运行

25、机制进行了分析,研究了各个部分的功能,展示了框图。对VTK有所了解后,接下来需要介绍的就是本文的重点三维重构的流程。3 CT图像的三维重构3.1 CT图像的获取与预处理 目前比较先进的扫描设备是螺旋式CT扫描,如图3-1所示。它由三部分构成:X光断层扫描装置、微型电子计算机和图像显示存储系统。其原理是人体向前做匀速运动,而X光断层扫描装置围绕人体做圆周运动,人体每前进一个单位距离,X光断层扫描装置采集一个切片的厚度,切片的多少由扫描频率决定5。CT图像的本质是利用X射线的衰减强度获得数据,从而为诊断提供依据的,表达式为3-1所示: (3-1) 其中表示扫描后的衰减强度,表示入射的X线强度,为衰

26、减系数,为穿透人体的距离。图3-1 螺旋CT设备 CT医学图像与普通图像不同,除了图像格式上的区别,还在于CT图像具有模糊性和不均匀性。因此为了达到更好的展示效果,需要对CT图像进行预处理工作。常用的方法有滤波、插值、增强、恢复以及旋转、平移等几何变换技术。滤波、插值、增强、恢复技术可以消除CT数据中的噪声,提高图像的质量,目的是突出感兴趣的组织结构,方便诊断观察。而旋转、平移等几何技术可以从多角度观察医学图像。3.2 三维重构流程 利用VTK实现CT图像的三维重建,从算法和数据结构来看,就是一个读取数据和图形显示问题。对于已获取的CT图像,因为它们符合DICOM3.0标准,读取它们相对容易。

27、编程时只要设定必须的参数,就可以实现对单张CT图像乃至CT图像序列的读取。 需要说明一下,该部分被封装为Reconstruction类的一个成员函数Set-DCMDirectory(char*sdir),其中参数sdir为DICOM文件的文件夹路径。另外,许多图像处理软件不支持DICOM格式,因此系统还实现了DICOM文件到BMP文件的转换,以便为其他图像处理软件提供医学影像资料6。具体流程为: 读取并显示DICOM图像文件。因医学图像的存储和交流格式标准为DICOM,因此系统支持DICOM标准。读取DICOM文件的代码如下:vtkDICOMImageReader*mdcmreader;m_d

28、cmreaderSetDirectoryName(sdir);m_dcmreaderUpdate( ); 图像预处理是为了消除由于各种垫子期间的随机扰动及周围环境的印象给DICOM格式的图片带来的噪声与失真,包括二维图像滤波、图像的层间插值。 图像分割就是把图像分成不同特性的小区域,并对感兴趣的目标进行提取的过程。实际上就是把图像中具有某种特殊涵义的不同区域区分出来,这些区域是互不相交的,每个区域都满足特定区域的一致性。 重建得到三维模型后,辅助功能模块主要完成对模型的三维视角变换操作,并根据交互式的区域选择,显示不同部分的组织,利用鼠标操作或键盘输入实现定量的物体分离功能。 三维重构系统的功

29、能框图如3-2所示。 数据预读取 图像滤波 三维重构图像三维重建系统 图像预处理读取DICOM文件 面绘制 体绘制 三维重构 存储 图3-2 三维重构系统的功能框图3.3 三维重构的主要方法 医学图像的三维重建主要是指对CT和MRI数据进行处理,方法主要有面绘制和体绘制两大类。面绘制技术首先由三维空间数据场构造出中间几何图元,然后由计算机图形学技术实现画面绘制。最常见的几何图元是平面多边形,三维表面抽取的常用方法是从体数据中抽取三维表面,最有代表性的是MarchingCubes(MC)方法。面绘制方法可以产生比较清晰的等值面图像,而且可以利用图形硬件实现绘制功能,加快图形的生成和变换的速度。体

30、绘制则并不构造中间几何图元,直接由三维数据场产生在屏幕上显示的二维数据。它对每一个体元赋以不同的颜色、透明度属性,在观察平面上进行投影,生成图像。3.3.1 面绘制法 面绘制方法由三维数据场中构造出等值面找出经过该等值面的体元(Cubes),通过旋转和变换光照效果来生成高质量的三维图像。其中最常用的是移动立方体算法(Marching Cubes)。该算法是将数据体中位于两个相邻面上的8个相邻的体素构成一个立方体7,然后逐个处理数据场中的立方体,分类出与等值面相交的立方体,采用插值计算出等值面与立方体边的交点,根据立方体每一顶点与等值面的相对位置将等值面与立方体的交点按一定方式连接成等值面,最后

31、由计算机图形学技术实现画面的绘制。 DICOM数据 体元集合 三维网络 三维显示图3-3 面绘制法三维重建流图移动立方体算法实现过程: 建立一个vtkDICOMImageReader读取对象,通过其SetDirectoryName方法设定DICOM CT断层文件的目录,调用Update方法将数据读入。相关程序如下:vtkVolume16Reader *v16 = vtkVolume16Reader:New();v16-SetDataDimensions(64,64);v16-SetDataByteOrderToLittleEndian();v16-SetFilePrefix (G:CThead

32、sqquarter);v16-SetImageRange(1, 93);v16-SetDataSpacing (3.2, 3.2, 1.5); /读取ct数据 分别对骨骼和皮肤建立Marching Cubes算法对象vtkMarchingCubes。利用其SetValue方法设定灰度阈值,进行表面抽取。相关程序如下:vtkImageCast *readerImageCast = vtkImageCast:New();readerImageCast-SetInputConnection(smooth-GetOutputPort();readerImageCast-SetOutputScalarT

33、ypeToUnsignedShort ();readerImageCast-ClampOverflowOn();/ 数据预处理的,滤波 分别对骨骼和皮肤建立vtkPolyDataNormals对象和vtkPolyDataMapper对象。将vtkMarchingCubes对象的输出通过流水线和vtkPolyDataNormals连接起来,通过流水线将vtkPolyDataNormals对象输出和vtkPolyDataMapper连接起来进行映射,为输出准备。相关程序如下:vtkPolyDataMapper *skinMapper1 = vtkPolyDataMapper:New();skinM

34、apper1-SetInput(dci-GetOutput();skinMapper1-ScalarVisibilityOff(); 分别建立代表骨骼和皮肤的角色vtkLODActor。相关程序如下:vtkMarchingCubes *skinExtractor1 = vtkMarchingCubes:New();skinExtractor1-SetInputConnection(readerImageCast-GetOutputPort();skinExtractor1-SetValue(0,800);/该处确定显示的是骨骼vtkMarchingCubes *skinExtractor =

35、vtkMarchingCubes:New();skinExtractor-SetInputConnection(v16-GetOutputPort();skinExtractor-SetValue(0, 500);/该处确定显示的是皮肤 建立绘制者vtkRenderer和绘制窗口vtkRenderWindow,通过vtkRenderWindow的AddRenderer方法将建立的vtkRenderer对象添加到绘制窗口中,最后通过调用Render方法进行绘制。 建立vtkRender-WindowInteractor的操作对像,通过SetRender-Window的方法将其vtkRender-

36、Window设定为交互的绘制窗口,这样用户可以对绘制结果进行交互操作。 vtkActorvtkRenderWindowInteractorvtkStrippervtkMarchingCubesvtkImageDatavtkPolyDataMappervtkRendervtkRenderWindow图3-4 VTK实现移动立方体算法流程图图3-5 面绘制法重建皮肤和骨骼图3-6 面绘制法重建皮肤 从这两幅图中可以看到,重构的三维图像通过鼠标的拖动可以从多角度进行观察。在不同的等值面下,图像显示出不同的效果。图3-5从头顶部看到皮肤和骨骼,图3-6面绘制的结果是从正面观察皮肤。3.3.2 体绘制方

37、法 体绘制方法通常不对被显示物做精确的分割,而是对体数据场中每个体元素分别进行处理,进而合成具有三维效果的图像。更重要的是,在体绘制方法中,透明度的引入大大增强了数据的整体显示效果。通过对不同的组织分配相应的透明度,可以同时将各组织器官的质地属性、形状特征及相互之间的层次关系表现出来,从而丰富了图像的信息。因此,对于形状特征模糊不清的组织和器官进行三维显示,适合采用体绘制方法。在体绘制三维重建算法的实现中,我们用的是光线投射(Ray-casting)算法8,其重建流程图如3-7所示。数据读取数据点赋值采样与合成图像显示图3-7 体绘制法三维重建流图光投射算法的实现过程: 建立一个vtkDICO

38、MImageReader读取对象,通过其SetDirectoryName设定DICOM的CT断层文件目录,调用Update方法将数据读入。 对骨骼和皮肤赋以不同的不透明度值。设置骨骼与皮肤的灰度阈值。建立不透明度函数的对象vtkPiecewiseFunction,通过其AddPoint方法确定不透明函数的拐点以及其对应的不透明度。相应程序如下:opacityTransferFunction-AddPoint(1024+0, 0.0); opacityTransferFunction-AddPoint(1024+199, 0.0);opacityTransferFunction-AddPoint

39、(1024+210, 0.2);opacityTransferFunction-AddPoint(1024+215, 0.0);opacityTransferFunction-AddPoint(1024+498, 0.0);opacityTransferFunction-AddPoint(1024+500, 0.5);opacityTransferFunction-AddPoint(1024+510.0, 0.0);opacityTransferFunction-AddPoint(1024+1090.0, 0.0);opacityTransferFunction-AddPoint(1024+1

40、100.0, 1);opacityTransferFunction-AddPoint(1024+1210.0, 0.0);opacityTransferFunction-AddPoint(1024+1345.0, 0.0);opacityTransferFunction-AddPoint(1024+1355.0, 0);opacityTransferFunction-AddPoint(1024+1367, 0.0);opacityTransferFunction-AddPoint(1024+1855.0, 0.0);/设置不透明度及皮肤灰度值 建立色彩传递函数对象vtkColorTransfe

41、rFunction,通过其AddRGBPoint方法对骨骼和皮肤赋以不同的颜色。我们把骨骼设定为白色(1, 1, 1),把皮肤设定为红色(1, 0, 0)。相应程序如下:vtkColorTransferFunction *colorTransferFunction=vtkColorTransferFunction:New(); /设置颜色传递函数colorTransferFunction-AddRGBPoint(1024+200, 1, 1,0.878);colorTransferFunction-AddRGBPoint(1024+500,2, 0.49, 0.24);colorTransfe

42、rFunction-AddRGBPoint(1024+880,1,0.714,0.757); colorTransferFunction-AddRGBPoint(1024+1180, 1, 1, 0.9412); /设置指定的灰度 建立vtkFixed-PointVolume-RayCasMtapper对象对三维数据进行体绘制运算。利用其GetOutput方法从vtkDICOM-ImageReader读取对象中获得数据。相应程序如下:vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeF

43、unction:New(); /设置光线投射算法vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper:New(); volumeMapper-SetVolumeRayCastFunction(compositeFunction); /设置合成算法 建立vtk-Volume对象,通过其SeMtapper方法利用流水线获得vtkFixed-PointVolume到RayCastMapper的输出。 建立绘制者vtkRenderer绘制窗口vtkRender-Window,通过vtkRenderer的AddVolume将vtkVo

44、lume对象添加,用vtkRenderWindow的AddRenderer方法将建立对象vtkRenderer添加到绘制窗口中,再调用Render方法进行绘制。 建立vtkRender-WindowInteractor对象,通过SetRenderWindow将vtkRender-Window 设定为交互的绘制窗口,使用户可以对绘制结果进行交互操作。图3-8 VTK实现光投射算法流程图图3-9 光投射法重构头部骨骼与组织图3-10 光线投射法重构头部皮肤 从图3-9图3-10可以看出,体绘制法重构图没有面绘制法清晰,这就体现了体绘制法不对图像做精确分割这一特点。另外,由于体绘制法透明度设置的不同

45、,图3-9可以看到骨骼与人体组织的图像,而图3-10只能看到皮肤。3.4 两种重构法的对比 本文提供的脑部CT数据大小为12812890,层间隔为3mm .9采用移动立方体算法和光线投射算法三维重建骨骼效果见图3-11所示。我们还对这两种算法的不同指标进行了比较,在硬件条件相同的情况下,在Visual Studio 2008环境下结合VTK分别运行。 图3-11 光投射算法与移动立方体算法重建骨骼时间比较: 移动立方体算法耗时200ms左右;光投射算法耗时较长,在1200ms 左右,这是因为光投射算法要遍历体数据场中的每一个体素。效果比较:通过对重建效果进行比较可以看到,MC算法重建结果表面不光滑,有阶梯效应。造成这种结果的原因可能是由于图像像素之间的距离太大。对于这个问题,可以通过将两幅相邻帧进一步插值解决。但是图像帧数越多,对于计算机的存储能力和处理速度的要求越高,所以要权衡一下效果和速度。而用Ray-casting算法重建的结果,几乎看不出阶梯状。这是因

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号