基于VTK的三维医学图像可视化处理系统挑战杯论文_第1页
基于VTK的三维医学图像可视化处理系统挑战杯论文_第2页
基于VTK的三维医学图像可视化处理系统挑战杯论文_第3页
基于VTK的三维医学图像可视化处理系统挑战杯论文_第4页
基于VTK的三维医学图像可视化处理系统挑战杯论文_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于 vtkvtk 的三维医学图像可视化处理系统的三维医学图像可视化处理系统 basedbased onon vtkvtk 3d3d medicalmedical imageimage visualvisual processingprocessing systemsystem 毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明 原创性声明原创性声明 本人郑重承诺:所呈交的毕业设计(论文) ,是我个人在指导教 师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别 加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过 的研究成果,也不包含我为获得 及

2、其它教育机构的学位 或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人 或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论 文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和 电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并 提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其 它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论 文的部分或全部内容。 作者签名: 日 期: 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交

3、的论文是本人在导师的指导下独立进行 研究所取得的研究成果。除了文中特别加以标注引用的内容外,本 论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本 文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权 大学可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存和汇编

4、本学位论文。 涉密论文按学校规定处理。 作者签名:日期: 年 月 日 导师签名: 日期: 年 月 日 指导教师评阅书指导教师评阅书 指导教师评价:指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格 2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格 5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格 二、论文(设计)质量 1、论文(设计)的整体

5、结构是否符合撰写规范? 优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 建议成绩:建议成绩: 优优 良良 中中 及格及格 不及格不及格 (在所选等级前的内画“”) 指导教师:指导教师: (签名) 单位:单位: (盖章) 年年 月月 日日 评阅教师评阅书评阅教师评阅书 评阅教师评价:评阅教师评价: 一、

6、论文(设计)质量一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格 二、论文(设计)水平二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 建议成绩:建议成绩: 优优 良良 中中 及格及格 不及格不及格 (在所选等级前的内画“”) 评阅教师:评阅教师: (签名) 单位:单位: (盖章) 年

7、年 月月 日日 教研室(或答辩小组)及教学系意见教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价:教研室(或答辩小组)评价: 一、答辩过程一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格 2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格 3、学生答辩过程中的精神状态 优 良 中 及格 不及格 二、论文(设计)质量二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格 三、论文(设计)水平三、论文(设计)水平 1、论

8、文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格 2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格 3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格 评定成绩:评定成绩: 优优 良良 中中 及格及格 不及格不及格 (在所选等级前的内画“”) 教研室主任(或答辩小组组长):教研室主任(或答辩小组组长): (签名) 年年 月月 日日 教学系意见:教学系意见: 系主任:系主任: (签名) 年年 月月 日日 目目 录录 目录.2 摘要.3 abstract.4 第一章 引言.5 第二章 背景.6 第三章 设计特点.8 第四章 总体设计.9 第

9、五章 结论.34 第六章 附录.35 第七章 参考文献.50 摘摘 要要 医学图像三维可视化系统有助于医生对病情的诊断,在医学影像研 究方面具有重大的意义。 在医学图像三维可视化系统的开发中,主要 运用了 vtk 工具包完成可视化的具体操作,对结果进行分析。使用 marching cube 的算法和光线跟踪算法对体数据进行体绘制和面绘制显 示,通过文件模块、查看模块、图形变换模块、颜色处理模块、体数据 调节显示模块来实现整个系统的功能。基于 vtk 的面绘制及体绘制技术, 将绘制出来的物体需要显示到屏幕上,在基本绘制完成后,需要将绘制 过程中的参数以可视的方式送到当前的现实屏幕上,用户可以通过

10、调整 这些参数调整当前物体的绘制方式及最终绘制结果,以较好的呈现出三 维图像信息。 关键词:三维可视化 vtk marching cube 光线跟踪算法 abstract medical image 3d visualization system help doctors to diagnose disease,in medical imaging studies, is of great significance。in medical image 3d visualization system development,mainly utilized vtk toolkit complete

11、visual specific operation, the analysis of the results。use marching cube algorithm and light tracking algorithm of body data and rendering shows, volume rendering,through the file module, check module, graphics transform module, color processing module, body data adjusts the display module to realiz

12、e the function of the whole system。based on vtk face paint and volume rendering technology, will be mapped out objects need displayed on the screen,the user can adjust the parameters adjustment by the current object and final rendering drawing mode, with better result shows 3d image information. key

13、words:3d visualization vtk marching cube light tracking algorithm 第一章第一章 引言引言 当医学影像图问世的时候,为医学界带来了一次革命性飞跃,它为 诊断病情提供了方便,但这种二维的图像有着一定的弊端,不能全面展 现出图像的效果,对医疗的诊断有影响。本系统是为医学影像图提供三 维影像图,便于医疗诊断和医学科研。 第二章第二章 背景背景 随着计算机技术的进步和计算机硬件的发展,人们可以从事越来 越多的研究、分析和模拟工作。由于从实际环境采集来的数据是非常巨 大的,例如卫星云图,每一幅图片都超过 1g 的存储量,如果只是通过 研究人

14、员的手工分析,那将是一件极其繁琐的事情。于是人们想到了计 算机对采集到的科学数据的可视化研究工作,三维数据可视化是科学数 据可视化技术的核心。国外的三维数据可视化研究最早可以追溯到 1980 年,目前已经取得了长足的发展,例如在面绘制技术方面的抛雪球算法 和 marching cube 算法等,结合材质和光照的处理,可以逼真地再现数 据场中隐含的结构信息的轮廓;在体绘制方面,光线跟踪算法是经典的 算法,其他的算法绝大多数是在此基础上进行快速算法的应用研究,例 如 shear-warp 算法等。体绘制算法可以有效地再现数据场中隐含信息 的细节,例如人体组织中骨骼和肌肉之间的肌腱部分,在面绘制算法

15、中 是很难表现出来的,体绘制可以完美地再现三者之间的关系。三维数据 可视化应用已经渗入到社会生活的各个方面,例如:股票分析、经济数 据分析、气象分析、军事模拟分析、医学人体数据显示及分析和科学研 究等等。三维数据可视化技术是集多种科学技术一体的交叉边缘学科。 国内在三维数据可视化研究方面主要是应用方向的研究,中国科学院北 京自动化研究所的田捷教授在这个方面的研究工作在国内处于领先的地 位,目前正在逐渐地推出综合处理的三维数据可视化处理平台,该平台 就是基于 vc 环境,对面绘制技术和体绘制技术进行了很好的集成。 1895 年,伦琴射线的发现对医学影响技术有着重要的作用,利用 仪器设备获得人体有

16、关部位的断层影像,这种方法对医生诊断病情带来 了革命性的飞跃。医生可以通过 ct、螺旋 ct、核磁共振等技术的得到 医学影像照片对病人的病情进行分析病因。然而这些医学影像都是二维 的,对医生分析病人的病情有一定的要求,不能充分的分析病因和查找 病灶。 医学图象三维可视化具有极大的医学研究和对临床诊疗作用,它 作为有效的辅助工具,可以弥补在二维医疗影像上的不足,能够为医生 提供更加真实的三维医学影像,有利于医生能够直观、准确、多角度的 分析与观察病灶,从而也提高了医生诊断病情准确率,提高了治疗效果。 因此医学图象三维可视化是现代医学影象研究的具有重要意义,为医学 的研究也提供了重要手段。 第三章

17、第三章 设计特点设计特点 本系统采用 vtk 结合 vc 环境的程序设计思想,针对医学图像进行 三维体数据的处理和快速绘制的算法及应用研究。 系统中采用的 marching cube 面绘制算法是目前最先进行的面绘制 技术中的面片提取算法;体绘制中的光线跟踪算法也是目前非常成熟的 体绘制技术之一。 vtk 工具包提供了完整的数据通道、绘制通道、材质和光照通道和 相机通道。通过 vtk 提供的模型可以方便的建立绘制界面并实现体数据 的绘制。但是 vtk 的一体化也严重地限制了实际应用中的灵活性。本作 品灵活地结合 vtk 的开放源码和 vc 开发环境。通过底层导出技术实现 本作品中的应用算法的独

18、立导出。实现了 dicom 文件处理、marching cube 算法、ray-casting 算法等关键算法和技术的独立导出。结合 vc 的底层处理能力和 opengl 的开发接口实现了灵活的体数据处理和绘制, 有效地提高了数据绘制清晰程度和绘制速度。 本系统中针对体绘制算法较慢的缺点,独立导出了 shear_warp 算 法结合 rle 压缩编码,实现了对体数据无损的快速绘制。由于避免了 vtk 中黑箱式的流程处理过程,本系统可以在体数据的最高分辨率上完 成体数据的绘制,同时有效地提高了绘制的速度。 第四章第四章 总体设计总体设计 1.1.基本思路基本思路 系统将实现对医学影像图的显示和三

19、维体数据的绘制。结合 vtk(visualization toolkit)工具提供的算法模块和基本的三维数据 处理思想,运用 vc 环境编写程序,实现医学图像的读取并进行多种图 像处理;综合运用 opengl 技术和 marching cube 算法实现对体数据的 面绘制处理;采用光线跟踪算法对体数据进行体绘制显示。运用 shearwarp 技术,加速体绘制的绘制速度;利用 mfc 开发平台实现界面 的设计和系统的框架。系统的处理流程如下: 1.1. 数据的输入:输入的数据包括由课题组自己构建的三维体数 据,扩展名为.vol 的文件,文件的格式另外商议决定;另外的输入数据 来自于实际的工程,目

20、前流行的大部分来自于医学图像的 ct 或者 mri 的断层扫描图像,因此需要对序列的、多幅连续图像进行基本的显示和 预处理。 1.21.2 数据的输出的处理:包括几个部分:a、图像输入数据的格式 转换输出,例如 jpg 图像转存为 bmp 图像;序列输入图像转存为三维数 据格式.vol 输出;三维数据.vol 转存为单幅的图像数据输出等。b、三 维绘制后的图像的保存处理:包括当前参数的单幅图像的保存;在一定 条件下的连续的多幅图像的保存处理。c、其他的一些未预见的输出处 理等。 1.31.3 外部数据导入到软件系统内部后的处理:包括数据的构造, 即把序列图像按照原始的物理顺序重新排序并存入到专

21、门的三维数据的 数据存储结构内存中。数据的预处理:包括提取当前图片的直方图或者 提取三维数据场的直方图;确定数据场内有效数据的种类,并能够根据 数据的取值范围(图像 0-255)准确地划分不同的物体的取值区间,根 据这个条件为不同的物体划分不同的不透明度。 1.41.4 三维体数据的绘制处理:在前面的预处理基础上,开始根据 用户的不同的功能选择:面绘制、体绘制,来绘制体数据中在预处理中 已经确定的需要绘制的物体。 1.51.5 三维绘制的交互操作:绘制出来的物体需要显示到屏幕上, 在基本绘制完成后,需要将绘制过程中的参数以可视的方式送到当前的 现实屏幕上,用户可以通过调整这些参数调整当前物体的

22、绘制方式及最 终绘制结果:例如:可以调整三维数据场的有效灰度值得范围,由此确 定绘制新的物体;调整显示的彩色属性选项,由此决定绘制出来的物体 是否需要彩色显示;面绘制中的灯光显示和材质处理;当前绘制物体的 绘制角度的调整,由此可以观察不同空间角上观察到的物体的情况等等。 2.2.关于关于 vtkvtk 工具包与算法工具包与算法 2.12.1 vtkvtk 工具包工具包 视觉化工具函式库(vtk,visualization toolkit)是一个跨平 台、支援平行处理(vtk 曾用于处理大小近乎 1 个 petabyte 的资料,其 平台为美国 los alamos 国家实验室所有的具 1024

23、 个处理器之大型系统) 的图形应用函式库。 全世界的数以千计的研究人员和开发人员用它来进行 3d 计算机图 形,图像处理,可视化。vtk 包含一个 c+类库,包括 tcl/tk,java,python。 visualization toolkit 是一个用于可视化应 用程序构造与运行的支撑环境,它是在三维函数库 opengl 的基础上采 用面向对象的设计方法发展起来的。 visualization toolkit 是给从 事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大 的可视化开发工具,它以用户使用的方便性和灵活性为主要原则,具有 如下的特点: 2.1.12.1.1 具有强大的

24、三维图形功能。visualization toolkit 既支 持基于体素 voxel-basedrendering 的体绘制 volume rendering 又保留 了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用 现有的图形库和图形硬件 。 2.1.22.1.2 visualization toolkit 的体系结构使其具有非常好的 流 streaming 和高速缓存 caching 的能力,在处理大量的数据时不必考 虑内存资源的限制 2.1.32.1.3 visualization toolkit 能够更好的支持基于网络的工 具比如 java 和 vrml 随着 web

25、和 internet 技术的发展 visualizationtoolkit 有着很好的发展前景。 2.1.42.1.4 能够支持多种着色。 2.1.52.1.5 visualization toolkit 具有设备无关性使其代码具有 良好的可移植性 2.1.62.1.6 visualization toolkit 中定义了许多宏,这些宏极大的 简化了编程工作并且加强了一致的对象行为。 2.1.72.1.7 visualization toolkit 具有更丰富的数据类型,支持 对多种数据类型进行处理。 2.1.82.1.8 既可以工作于 windows 操作系统又可以工作于 unix 操 作系

26、统极大的方便了用户。 vtk 中,要将一套医学体数据进行体绘制。下面是 vtk 中体绘制的 c+代码,对关键类和函数的作用进行了注释。 vtkrenderer *arender = vtkrenderer:new(); /设置绘制类 vtkrenderwindow*renwin=vtkrenderwindow:new();/设置绘制窗 口 renwin-addrenderer(arender); /装载绘制类 vtkrenderwindowinteractor*iren=vtkrenderwindowinteractor:n ew();/设置绘制窗口的交互 iren-setrenderwind

27、ow(renwin); /装载绘制窗口 vtkvolume16reader*reader=vtkvolume 16reader:new();/读取 dicom 数据 reader-setdatadimensions (64,64);/设置图像像素值 reader-setimagerange (1,93); /设置图片数量 reader-setdatabyteordertolittleendian(); reader-setfileprefix(x:/data );/设置数据路径 reader-setdataspacing (1.0, 1.0, 0.48); /设置数据的间距 vtkpiecew

28、isefunction*opacitytransferfunction=vtkpiecewise function:new();/设置不透明度传递函数 opacitytransferfunction-addpoint(0, 0.0); opacitytransferfunction-addpoint(500, 0.0); opacitytransferfunction-addsegment (600, 0.73, 900, 0.9); opacitytransferfunction-addpoint(1300, 2.0); vtkcolortransferfunction *colortran

29、sferfunction = vtkcolortransferfunction:new();/设置颜色传递函数 colortransferfunction-addrgbpoint(0, 0, 0, 0);/此处颜色设 置为灰度值 colortransferfunction-addrgbpoint(500, 0.1, 0.1, 0.1); colortransferfunction-addrgbpoint(600, 0.7, 0.7, 0.7); colortransferfunction-addrgbpoint(900, 0.85, 0.85, 0.85); colortransferfunc

30、tion-addrgbpoint(1300, 1.0, 1.0, 1.0); vtkpiecewisefunction *gradienttransferfunction = vtkpiecewisefunction:new();/设置梯度传递函数 gradienttransferfunction-addpoint(0, 2.0); gradienttransferfunction-addpoint(500, 2.0); gradienttransferfunction- addsegment (600, 0.73, 900, 0.9); gradienttransferfunction-ad

31、dpoint(1300, 0.1); vtkvolumeproperty*volumeproperty=vtkvolumeproperty:new();/ /定义并设置相关体属性 volumeproperty-setcolor(colortransferfunction); volumeproperty-setscalaropacity(opacitytransferfunction); volumeproperty- setgradientopacity(gradienttransferfunction); vtkvolumeraycastcompositefunction*composit

32、eraycastfunction = vtkvolumeraycastcompositefunction:new();/定义光线投射方法 为合成体绘制方法 vtkvolumeraycastmapper *volumemapper = vtkvolumeraycastmapper:new(); volumemapper- setvolumeraycastfunction(compositeraycastfunction);/载入体绘 制方法 volumemapper-setinput(reader-getoutput(); vtkvolume *volume = vtkvolume:new();

33、/定义 volume volume-setmapper(volumemapper); volume- setproperty(volumeproperty);/设置体属性 arender-addvolume(volume); /将 volume 装载到绘制类中 arender-setbackground(0, 0, 0); renwin-setsize(500, 500); /设置背景颜色和绘制窗口大小 renwin-render(); /窗口进行绘制 iren-initialize(); iren-start(); /初始化并进行交互绘制 2.22.2 marchingmarching cu

34、becube 算法算法 marching cubes 算法是面显示算法中的一种,因为他的本质是从一 个三维的数据场中抽取出一个等值面,所以也被称为“等值面提取”算 法。 marching cubes 算法采用了隐式的等值面提取方法,它不直接计算 f(x.y.z) ,而是直接从体数据中获取等值面的信息。 marching cubes 算法的的处理过程每次读出两张切片,形成一层。 两张切片上下相对应的四个点构成一个立方体(cube) ,然后从前到后 顺序处理一层中的 cuubes,再从下到上顺序处理(n-1)层,算法就结 束了。 marching cubes 算法的的处理过程图 对于每一个 cub

35、e 而言,它的八个顶点的灰度值可以直接从输入数 据中得到,要抽取的等值面得域值也已经知道。如果一个顶点的灰度值 大于域值,则它标记为黑色,而小于的不标。 marching cubes 算法原理图 marching cubes 算法原理图 因此 marching cubes 算法的优点是: (1)算法的实现相当直接。 (2)图案的解析度很高。 2.32.3 光线跟踪算法光线跟踪算法 光线跟踪算法能够生成高质量真实感图形。 由光源发出的光到达物体表面后,产生反射和折射,形成简单光照 明模型和光透射模型模拟这两种现象。在简单光照明模型中,反射被分 为理想漫反射和镜面反射光,在简单光透射模型把透射光分

36、为理想漫透 射光和规则透射光。由光源发出的光称为直接光,物体对直接光的反射 或折射称为直接反射和直接折射,相对的,把物体表面间对光的反射和 折射称为间接光,间接反射,间接折射。这些是光线在物体之间的传播 方式,是光线跟踪算法的基础。最基本的光线跟踪算法是跟踪镜面反射 和折射。从光源发出的光遇到物体的表面,发生反射和折射,光就改变 方向,沿着反射方向和折射方向继续前进,直到遇到新的物体。但是光 源发出光线,经反射与折射,只有很少部分可以进入人的眼睛。因此实 际光线跟踪算法的跟踪方向与光传播的方向是相反的,而是视线跟踪。 由视点与象素(x,y) 发出一根射线,与第一个物体相交后,在其反射与 折射方

37、向上进行跟踪。如图: 光线跟踪算法原理图 视线是由视点与象素(x,y)发出的射线;阴影测试线是物体表面上 点与光源的连线;以及反射光线与折射光线。 当光线 v与物体表面交 于点p时,点p分为三部分,把这三部分光强相加,就是该条光线v在 p点处的总的光强,由光源产生的直接的光线照射光强,是交点处的局 部光强,可以由下式计算: 光线跟踪算法实际上是光照明物理过程的近似逆过程,这一过程可 以跟踪物体间的镜面反射光线和规则透射,模拟了理想表面的光的传播。 虽然在理想情况下,光线可以在物体之间进行无限的反射和折射,但是 在实际的算法进行过程中,我们不可能进行无穷的光线跟踪,因而需要 给出一些跟踪的终止条

38、件。 我们用伪码的形式给出光线跟踪算法的源代码。光线跟踪的方向与 光传播的方向相反,从视点出发,对于视屏上的每一个象素点,从视点 作一条到该象素点的射线,调用该算法函数就可以确定这个象素点的颜 色。光线跟踪算法的函数名为 raytracing(),光线的起点为 start,光 线的方向为 direction,光线的衰减权值为 weight,初始值为 1,算法 最后返回光线方向上的颜色值 color。对于每一个象素点,第一次调用 raytracing()时,可以设起点 start 为视点,而 direction 为视点到该 象素点的射线方向。代码如下: raytracing(start, dir

39、ection, weight, color) if ( weight 1000 #pragma once #endif / _msc_ver 1000 class cmarchingcubes : public cobject public: short m_ngraylimit; void marchingcube(cdicompdata* m_pdicomdata); ctriangles m_arrtriangles; cmarchingcubes(); virtual cmarchingcubes(); private: byte m_bytepos3; cubepoints m_ns

40、trucubepoints17; /cubepoints m_nstrucubepointsmirror3; byte m_byteindex14; short m_wordorin256256;/=new short(m_nnewwidth*m_nnewheight); short m_worddes256256;/=new short(m_nnewwidth*m_nnewheight); bool getcubepoints(cubechange* m_strucube,int m_ny,int m_nx,int nslices); void constructtri(cdicompdat

41、a* m_pdicomdatafinal); cdicompdata m_pdicompdatafinal; void insertvalue(cdicompdata* m_pdicomdata16); ccubepoints m_arrcubepoints; byte* m_narrpoint137;/,m_narrpoint28,m_narrpoint38,m_narrpoin t48,m_narrpoint58,m_narrpoint68,m_narrpoint78,m_narrpo int8;/,m_narrpoint88,m_narrpoint98,m_narrpoint108,m_

42、n arrpoint118; void initial(); cdicompdata* m_pdicomdatacube; ctypeofcube m_arrtypeofcube128; /ctriangles m_arrtriangles; int m_ncofpoint1,m_ncofpoint2,m_ncofpoint3,m_ncofpoint4,m_ncofpoin t5,m_ncofpoint6,m_ncofpoint7,m_ncofpoint8,m_ncofpoint9,m_ncofp oint10,m_ncofpoint11,m_ncofpoint12,m_ncofpoint13

43、,m_ncofpoint14; int m_nindex;/m_nindex should be a value between 255 and 0; ; #endif / !defined(afx_marchingcubes_h_491aaf2b_1636_4d23_be65_dfed6a24 457f_included_) 6.2.26.2.2 类的实现的部分原代码类的实现的部分原代码 / marchingcubes.cpp: implementation of the cmarchingcubes class. / / / #include stdafx.h #include dicom

44、see.h #include marchingcubes.h #include dicom3ddoc.h #include math.h #include marchcube.h #ifdef _debug #undef this_file static char this_file=_file_; #define new debug_new #endif / / / construction/destruction / / extern cdicom3ddoc* m_pdicom3ddoc; cmarchingcubes:cmarchingcubes() initial(); m_ngray

45、limit=400; cmarchingcubes:cmarchingcubes() void cmarchingcubes:marchingcube(cdicompdata *m_pdicomdata) m_pdicomdatacube=m_pdicomdata; insertvalue(m_pdicomdatacube); constructtri( cmarchcube m_marchcube; m_marchcube.m_arrtriangles= m_marchcube.domodal(); void cmarchingcubes:initial() lpcstr filename=

46、c:documents and settingsadministrator桌面marching data.txt; file *stream; char buffer3; char* endnum; int ch; int m_nindex; int m_nindexlength; int m_nnum=0; /* open file to read line from: */ if( (stream = fopen( filename, r ) = null ) exit( 0 ); /* read in first 80 characters and place them in buffe

47、r: */ int m_bflag=true; bool m_first=true; ch = fgetc( stream ); while( m_bflag (i =48 m_ntemp1+; ch=fgetc(stream); m_nindexlength=(int)strtod(buffer, else /ch=fgetc(stream); int m_ntem; for(int m_nlength=0;m_nlengthm_nindexlength;m_nlength+) int m_ntemp6; for(int m_nnum=0;m_nnum=48 m_ntemp1+; ch=fg

48、etc(stream); m_ntem=(int)strtod(buffer, m_ntempm_nnum=m_ntem; typeofcube m_strutype; m_strutype.m_nx1=m_ntemp0;m_strutype.m_nx2=m_ntemp1;/ 后面的系数是指相应的立方体角值。 m_strutype.m_ny1=m_ntemp2;m_strutype.m_ny2=m_ntemp3; m_strutype.m_nz1=m_ntemp4;m_strutype.m_nz2=m_ntemp5; m_arrtypeofcubem_nindex.add(m_strutype

49、); /算法中注意得到的点的系数减 1。 m_first=true; /ch = fgetc( stream ); ch = fgetc( stream ); fclose(stream ); /loop:m_first=true; /* add null to end string */ /bufferi = 0; /printf( %sn, buffer ); /*for(int i=0;i=3;i+) if(ch!=44) bufferi=(char)ch; if(bufferi=r|bufferi=n) m_first=true; i=4; m_nnum=6; m_nlength=m_

50、nindexlength; else m_ntem=(int)strtod(buffer, i=4; ch = fgetc( stream ); if(ch=10|ch=13) ch=fgetc(stream); / if(ch=10)/ / m_ntempm_nnum=m_ntem;for(int i=0;i=3;i+)/ 索引值 if(ch!=44) bufferi = (char)ch; else if(m_nindex=127) m_bflag=false; i=4; ch = fgetc( stream ); memset( buffer, , 3 ); for(i=0;i=3;i+

51、)/当前行的大小。 if(ch!=44) bufferi = (char)ch; else m_nindexlength=(int)strtod(buffer, i=4; ch = fgetc( stream ); */ 第七章第七章 参考文献参考文献 1祁丽娜,罗述谦.基于 vtk 的医学图像三维重建.北京生物医学工程, 2006 年 2 月. 2杜俊利,郭清宇,黄心汉.基于 vtk 的医学图像快速重建系统.计算机 应用,2007 年 6 月. 3william. j schroeder kenneth m. martin lisa s avila the vtk users guid. k

52、itware inc. 1998. 4刘志健,王蓉,刘玉玲,余飞鸿.基于 vtk 的医学图像系统研究.ct 理论 与应用研究.2006 年 5 月第 15 卷第 2 期. 5陈传波等, 计算机图形学基础电子工业出版社,2002. 6管伟光, 体视化技术及其应用电子工业出版社,1998. 7唐泽圣, 三维数据场可视化清华大学出版社,1999 8实战 opengl 三维可视化设计及代码精解电子书.王利.基于 vtk 的医学图像可视化研究及应用硕士学位论文.泰安:泰山医学院,2009. 9张翔,肖小玲,张爱华.基于 vtk 库的人脑三维可视化面绘制.长江大 学学报,2006,3(1):75-76.

53、10王树秀,雷声,常发亮.利用 vtk 实现 dicom 医学图像三维重建.信息 技术与信息化,2008,5:115-116. 11张季,王宜杰.医学图像三维重建方法的比较研究.医学信息, 2006,19(5). 12schroeder wj. the vtk users guide (vesrnin 4.0).kitware, inc 1998:19-20. 13王利.基于 vtk 的医学图像可视化研究及应用硕士学位论文.泰 安:泰山医学院,2009. 14宋海友.基于 vtk 的医学图像三维重建及其可视化技术研究硕士学 位论文.成都:成都理工大学,2006. 15胡战利.基于 vtk 的医学图像三维重建及交互研究.哈尔滨:哈尔滨 工程大学,2008. 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所 取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文 不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要 贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声 明的法律结果由本人承担。 学位论文作者(本人签名): 年 月 日 学位论文出版授权书 本人及导师完全同意 中国博士学位论文全文数据库出版章程 、 中国优秀硕士学 位论文全文数据库出版章程 (以下简称“章程”),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论