首页 【毕业设计】基于面绘制技术的医学影像三维重建

【毕业设计】基于面绘制技术的医学影像三维重建

举报
开通vip

【毕业设计】基于面绘制技术的医学影像三维重建【毕业设计】基于面绘制技术的医学影像三维重建 更多相关参考论文设计文档资源请访问 学号,4109005035 泰山医学院毕业设计(论文) 题目:基于面绘制技术的医学影像三维重建 院(部)系 放射学院 生物医学工程 所 学 专 业 2009级1班 年级、班级 刘宸 完成人姓名 指导教师姓名 侯庆锋 讲师 专业技术职务 2013年6月1日 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系6866150...

【毕业设计】基于面绘制技术的医学影像三维重建
【毕业设计】基于面绘制技术的医学影像三维重建 更多相关参考论文设计文档资源请访问 学号,4109005035 泰山医学院毕业设计(论文) 题目:基于面绘制技术的医学影像三维重建 院(部)系 放射学院 生物医学工程 所 学 专 业 2009级1班 年级、班级 刘宸 完成人姓名 指导教师姓名 侯庆锋 讲师 专业技术职务 2013年6月1日 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 论文原创性保证书 我保证所提交的论文都是自己独立完成,如有抄袭、剽窃、雷同等现象,愿承担相应后果,接受学校的处理。 专业: 生物医学工程 班级 1 班 签名: 刘宸 2013年 6 月 1 日 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 摘要 医学图像三维重建是目前医学图像可视化技术领域的研究热点,在诊断医学、手术规划及模拟仿真等方面具有广泛的应用。因此,医学图像三维重建的研究,具有重要的学术意义和应用价值。 VTK 是开放源码的自由软件系统,可应用于图像处理、计算机图形学和科学计算可视化,在国内外被广泛用于各行各业。本文重点介绍了 VTK 的基本组成、系统架构、可视化流程。并且将 VTK 应用于医学图像可视化,使用面绘制的移动立方体法和体绘制的光线投影法,在 Microsoft Visual Studio 2010 下使用 C++语言分别实现了医学图像三维重建,并给出了系统实例。实践证明,使用 VTK 开发医学图像三维重建系统,重建效果好,开发时间少,代码重用率高等特点。 关键词:VTK;三维重建;动立方体法;光线投影法;医学图像可视化 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 Abstract Medical image 3D reconstruction is one of the hotspot in the field of medical image visualization technology, in the medical diagnosis, surgical planning and simulation, etc. It has been widely applicated. Therefore, the research of medical image 3D reconstruction, has important academic significance and application value. VTK, which is an open source free software system, can be applied to image processing, computer graphics and visualization in scientific computing, and it is widely used. This study describes the basic composition, system architecture, and visualization process of VTK. Furthermore, VTK was applied to the visualization of medical images. A surface rendering- Marching Cubes algorithm- and a volume rendering- Ray Casting algorithm were studied. All the program were implemented under Visual Studio2010, using VTK to develop medical images reconstruction system. The results illustrated that can achieve good reconstruction results, less development time and high reusable code. Keywords: VTK; 3D reconstruction; marching cubes algorithm; ray casting algorithm; medical visualization 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 目录 第一章 绪论 ................................................................ 1 1.1 课题的研究目的和意义 ................................................. 1 1.2 医学图像三维重建的发展以及趋势 ....................................... 1 1.3 论文工作的主要 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ................................................... 2 第二章 三维医学图像重建基础 ................................................ 3 2.1 系统设计思路和实现流程图 ............................................. 3 2.2 VTK开发包组成和框架结构 ............................................. 5 第三章 VTK应用研究 ......................................................... 7 3.1 VTK的安装 ........................................................... 7 ........................................................ 18 3.2 VTK 基本构成 3.3 用VTK进行三维重构的技术特点 ........................................ 20 第四章 基于 VTK 的三维重建的实现 .......................................... 24 4.1 三维重建的基本流程 .................................................. 24 4.2 面绘制原理 .......................................................... 25 4.3 结论 ................................................................ 37 第五章 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 与展望 ......................................................... 39 参考文献: ................................................................. 40 致 谢 ................................................................... 41 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第一章 绪论 1. 课题的研究目的和意义 近年来,计算机图形图像等技术不断发展,并逐步渗入到医学领域,开创了数字医疗的新时代。基于计算机数字图像处理、计算机图形学、虚拟现实和计算机网络等技术的医学图像处理与三维重建技术,已逐渐成为了一门具有特色的交叉学科。 医学图像三维重建技术是根据成像设备上的二维图像集合,利用计算机重建并合成病灶区或者人体器官的三维图像,可选择不同的重建算法使人体不同组织内部空间结构和物理属性被显示出来,方便医生对病变部位内部结构的可视化观察和 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 。随着医学图像三维重建技术的不断发展,医生可依据病人实际病情的具体诊断需要,重点三维显示可能的病变区域细节,可大大提高确诊率。医学图像三维重建技术已成为现阶段可视化领域的研究热点。 VTK是开放式的免费软件,并且具有强大的三维图形图像处理功能,良好的体系结构、 [1]高度的灵活性及可移植性,目前在美国、西欧等各高校、研究所已经得到广泛的应用。 [2]在美国的耶鲁大学里就有专门的教材用于高校教学。 2. 医学图像三维重建的发展以及趋势 伴随着医学影像技术自20世纪70年代以来的迅速发展,医学可视化技术也迈开了发展的步伐。医学影像技术日新月异的发展成熟,许多技术问题迎刃而解,大大推进了医学可视化技术的发展成熟。到目前为止,医学可视化技术即:维重建技术是医学领域研究的热点。 医学体可视化技术的早期研究主要集中在欧、美和日本等发达国家,他们对此研究领域十分重视,不仅奠定了医学体可视化的理论基础,而且还开发了实际应用系统。在美国、德国、日本等国有许多著名研究机构和知名大学都开展这方面的研究,如美国的国家实验室、National Laboratory、研究中心、麻省理工大学、卡罗拉多大学、俄亥俄大学、纽约州立 [3]大学、德国的汉堡大学、日本的大学等。在理论研究方面,他们不断引入新的理论和方法来拓展医学体可视化的研究内容,特别是与虚拟现实技术的结合,使医学体可视化研究更具活力。 近十年来,在美国、德国、日本、法国、英国等发达国家的著名大学、国家实验室及大公司中,关于三维医学图像重建的研究工作及应用实验十分活跃,其技术水平正在从后处理向实时跟踪和交互控制发展,并且已将超级计算机、光纤高速网、高性能工作站及虚拟现实四者结合起来,体现在这一领域技术发展的重要方向。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问医学图像三维可视化技术未来将向两个方向发展: (1) 继续沿着它的开拓计划可视化人体计划(VHP)的方向前进。VHP是一个长期的规划,其早期目标已经完成(即获得全套的数字化人体图像数据库),但它的应用范围在不断延伸。利用VHP,结合科学计算可视化技术的研究,人们就可以对绘制算法加以改进、提高,为虚拟现实提供技术准备,甚至可以建立起模拟人体用来进行航空航天、汽车工业等的测试。 (2) 结合图像管理和处理系统(PACS)、远程医学的发展、从海量数据存储的研究到利用压缩数据获得绘制信息的技术,从智能化图像信息的管理到完善的图像 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的建立。因为要使医学图像可视化在临床上得到推广和普及,势必要求摆脱昂贵的硬件条件的限制,建立通用的标准,进行方便的存储和传输,以期在微机环境以及现有的网络通讯条件下,实现 [4]在线可视化或者实时绘制。 3. 论文工作的主要内容 本文首先对医学图像处理和三维可视化技术进行了重点的研究与分析,在此基础上,结合医学图像领域优秀的开源工具VTK(VisuaUzation Toolkit),在Microsoft Visual Studio 2010平台上设计实现了能够对医学图像断层序列的三维重建及其对三维重建体的交互操作的系统。 具体研究内容如下: 第1章分析了当前医学图像三维重建技术的研究目的与研究领域,及其在临床医学中的应用前景。总结了国内外的研究发展现状,归纳了本文的主要研究内容和结构。 第2章在分析研究可视化开发工具包VTK的结构和绘制模式的基础上,给出了本文医学图像三维重建系统的实现流程,其中包括三维医学图像重建的系统设计思路和实现流程图、VTK开发包组成和框架结构、光线投射体绘制算法。 第3章介绍了医学影像三维数据场的可视化及可视化工具 VTK。包括数据结构、数据场的可视化流程、三维重建的两类基本的算法以及 VTK 的特点和体系结构。 第4章,应用 VTK 工具对医学图像三维重建及其动态显示的实现过程进行了阐述,使用所开发的应用程序对 CT 切片进行了面绘制和体绘制的重建。 第5章,对全文作了总结。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第二章 三维医学图像重建基础 1. 系统设计思路和实现流程图 医学图像三维可视化的主要任务是三维可视化显示、操作及分析,即在绘制出存真实感的人体组织结构后,可以对其完成交互式操作,对人体组织结构进行形态或功能上的分析处理。 医学图像三维可视化的基本实现流程如图2-1所示: 医学图像获取 图像预处理 可视化映射 绘制 绘制后显示及操作 图2-1医学图像三维可视化流程 第1步是医学图像数据读取,即通过图像设备获取CT或MRI等对真实物体扫描所得到的二维断层DIC0M格式医学图像序列。 第2步是数据预处理。由于医学影像设备的复杂性,DICOM图像的质量在影像输出、传输和转换过程中可能会有一定程度下降。比如引入噪声等,因此在进行三维绘制前,需要对质量降低了的图像进行预处理,改善图像质量。一般会根据实际需要对医学图像迸行滤波和分割处理。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第3步是可视化映射。这是整个流程的核心步骤,在该过程中将经过处理的原始数据转化为可供绘制的几何图素和属性。包括显示的形状、颜色以及其他属性的设置,以绘制出感兴趣的物体的性质。 第4步是绘制。将前面一步所产生的具有不同属性的几何模型转换成显示的图像,通过采用不同的绘制算法,进行光照计算、明暗变换等计算,最终实现三维图像绘制。最后一步就是对绘制出的三维医学图像进行显示以及在此基础上对其进行交互操作和分析。 本文就是依照此三维可视化的基本流程,完成了一个面向对象的、可实现多种绘制算法及其进行交互操作的医学图像三维重建系统。重建系统实现流程图如图2-2所示: 读取医学图像 预处理 体绘制算法 面绘制算法 透伪三光平阈 明色角照滑值度彩 片设处处设设消 置 理理 置置 减 三维绘制算法 交互操作 三维绘制显示 结束 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图2-2三维重建系统实现流程图 要完成上述医学图像三维建系统,需要解决以下关键技术: (1)医学数据读取,首先是DICOM格式医学图像的获取问题。因为DICOM格式医学图像是专用的医学图像格式,一般的图片浏览器工具不能读取。因此,本文采用针对医学图像的可视化工具VTK来对这种格式的图像进行显示,并读取相关信息。 (2)医学图像的预处理。图像在传输过程中或多或少会受到噪声干扰,为了提高三维重建的效果,对它的预处理尤为关键。又鉴于医学图像的复杂性,对医学图像的预处理操作在 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 选择上需要非常严谨。应针对不同的人体组织器官和病灶结构,选取不同的方案选择。 (3)三维重建算法实现。这是构建三维重建系统的核心步骤,重建算法的绘制速度,内存占用率等因素直接影响并决定了系统的实时性等关键性能。 (4)对三维重建模型的操作,以达到较好的人机交互。 本文就是在对以上关键技术的逐步研究和解决后,实现了能够完成不同算法的医学图像三维重建系统。 2. VTK开发包组成和框架结构 VTK是美国GE公司以开源形式发布的面向对象的三维可视化开发工具包。它将图像处理的可视化算法封装成类,为医学图像三维重建技术的开发提供了强大的跨平台(如Linux、Windows等)开发的底层算法支持。开发人员可以根据自己的开发需求将VTK嵌到特定的应 [5]用程序中进行开发。现在,VTK在可视化研究领域最为流行,并且还在持续的发展进步。 VTK由核心层和解释层组成。核心层是C++类库,封装了图像处理的底层算法和与之相关的数据结构;解释层支持使用Java、Python等脚本语言实现快捷开发,提高开发效率。 为了有效地管理庞大的类库,VTK中的类按照功能可划分为:Common、Graphics、Imaging、IO、Rendering、Filtering等,并均能够生成与之对应的动态链接库。各部分在类库中的层次如图2-3所示: Common Graphics Imaging IO Filtering Rendering 图2-3 VTK中类的划分 Common是公有基类部分,每个模块的类从Common基类承下来。Imaging是对图像的处参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问理的操作,用来处理各种数字图像算法,如图像增强、图像的缩放、滤波等。IO实现各种格式图像的读写操作,如vtkDlCOMImageReader类用来读取DICOM格式的医学图像。 Filtering与数据转换部分;Graphics则用于图形处理。Rendering是图像绘制部分,实现窗口屮可视化数据的显示。 上述各个模块的类都是对公有基类的继承,根据要完成的相应功能对Common类进行特定的扩展,使得开发工作敏捷、快速。 VTK库的框架结构是一个面向对象的可视化系统,它将可视化过程中常用的算法封装起来,隐藏了具体的实现细节。类的框架结构如图2-4所示: VtkSource VtkFilter VtkObject VtkActor VtkRenderer VtkMapper 图2-4 VTK类的框架结构 vtkObject是VTK的基类,它为整个可视化流程提供基本的方法。vtkSource是VtkObject的派生类和vtkFilter的父类,它为整个可视化流程义具体的行为和接口。VtkFilter是vtkSource的派生类,经过filter的处理后,原始的数据能够转换成可以直接用某种算法模块进行处理的形式。VtkMapper是vtkObject的派生类,它将经过filter处理后的应用数据映射成几何数据,为说始数据和图像数据之间定义接口。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第三章 VTK应用研究 1. VTK的安装 第一步:下载并安装 vtk 首先从 VTK 的官方网站 的 Download 选项中下载: vtk-5.8.0. zipVTK的源码 vtkdata-5.8.0.zip vtk 例子所需要的数据。 Windows (Installer) vtk-5.8.0-win32.exe 然后下载 cmake 下载地址在 选择 Download 选项进行下载。下载的版本越新越好,另外,cmake 版本的选择是根据VTK 版本来定的。 下载好后进行安装 1、 先执行 vtk-5.8.0-win32.exe 安装到你选定的目录下,安装时只要不断点击 next 就 可以完成相应的安装。安装后会产生 vtk5.8文件夹里面还包括 bin 等子文件夹。这 时候将 vtk-5.8.0.zip 解压到 vtk5.8 文件夹下解压后会生成VTK(d:\vtk5.8\VTK) 将 vtkdata-5.8.0.zip 也解压 vtk5.8主目录下生成 VTKdate 文件夹 (c:\vtk5.0\vtkdata) 。这样就完成了 VTK 的安装。具体步骤如下图3-1所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图3-1 VTK 的安装 2、 安装 cmake 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 运行cmake-2.8.11-win32-x86,不停地点击下一步就行了。具体步骤如下图所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图3-2 cmake的安装 、 装载Microsoft Visual Studio 2010 3 具体步骤如下图3-3所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图3-3 Microsoft Visual Studio 2010的安装 第二步:运行 cmake 首先,将源码和编译工作目录两个目录添好sourse code 目录是 d:\vtk5.8\VTK\, vtk5.8\bin\。 build 目录是d:\ 再按 configure 按钮,cmake 软件会让你选择需要使用的编译器,这里我们选Microsoft Visual Studio 2010,然后,cmake 就会对系统进行扫描了,停下来之后,我们就可以修改 cmake选项了。最后按Generate按钮。下给大家看几个已经配置好的 cmake 的截图,如下图3-4: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图3-4 已经配置好的 cmake 的截图 第三步:用Microsoft Visual Studio 2010编译 用Microsoft Visual Studio 2010打开 bin 目录下的 vtk.sln文件,因为文件很多,可能打开速度会有些慢。 打开后,直接 build。编译的用时和计算机性能,以及 cmake 中的一些选项有关,一 般1个小时内可以完成。结果保存在. d:\vtk5.8\bin \bin(d:\vtk\bin\bin)目录下。 第四步执行成功后用Microsoft Visual Studio 2010打开 bin 目录下的install. vcxproj 文件点击 build 对 VTK 进行安装。成功后,然后就完成了所有的安装。相应文件如下图3-5所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图3-5 build 对 VTK 进行安装完成后的文件所在位置 2. VTK 基本构成 2.1 VTK层次结构 VTK 主要有两大部分组成,利用 C 语言编写的编译后的核心层(C++ ClassLibrary)和按照一定规则生成的支持脚本语言的解释层(Tcl/Tk,java vtkInterpreted lnterface)。当前 VTK 的解释层支持 Tcl,Java,Python 等语言。如图 3-6所示,在 VTK的编译层中,参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问有关图形图像处理相关的数据结构、算法、时间关键性的功能等被封装成 C++对象,为VTK 其它的类或其它程序所调用。在该层中,将公共的功能抽像成一系列基类,利用这些基类中定义的虚函数(Virtual functions),确保VTK 的移植性和该类库的可扩展性。 Tcl/Tk(or Java) Interpreted Interface C++ Class Library (Compiled) 图 3-6 VTK 的层次结构 在解释型语言界面层。计算机语言有两种类型,编译型和解释型。用编译型语言所写的程序通常能够获得比解释型语言更高的性能,但这往往需要牺牲编写程序的效率和跨平台功能。编译后的VTK 动态连接库,在与相应脚本语言绑定以后,形成这些解释型语言的接口,成为解释层部分。利用解释层的接口,我们可以很方便的用 Tcl/Tk, Python/Tk,Java AWT 等解释型语言进行快速开发或试验VTK 的新功能,极大的提高了效率。与编译型的语 GUI 原型言相比,解释型的语言在灵活性、可扩展性有较大的优势。例如,利用脚本性的 的解释语言 Tcl/Tk,Python/Tk,或 Java AWT,能够非常容易、快速地开发专业的基于窗口的应用。但由于我们的医学图像处理系统是用Microsoft Visual Studio 2010开发的,因而我们主要是对 VTK 的核心C++类库进行扩展,实现我们所需的功能。 2(2 VTK功能分类 从VTK 4.0 版本开始,它新增加了常用的图像处理算法,如图像滤波、缩放、各种格式图像的存取等。VTK 从功能上来分,可以分为三部分:计算机图形显示部分(Graphics Model)、可视化处理部分(The Visualization Model)、图像处理部分(Image Processing)。从VTK 中的对象类型来分,可以分为两种:一种是数据对象(Data Object),该类对象用来表示常用的图形或图像数据,在数据对象中,以数组的方式保存数据,数据集对象(Data Sets Object)是一类特殊的数据对象,该类对象除保存数据外,还附带数据对象的属性,如几何拓扑结构、法向量等等,例如表示一个点的对象则需保存该点的三维坐标,而表示三角形的对象则需有该三角形的每个顶点的坐标,每个顶点的法向量等等,图 3-7 显示了几种典型的数据对象,该图包含了四种对象,分别是图像对象、基本图元对象、结构化点参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问集对象、非结构化点集对象等;另一种对象可称作操作对象(Processing Object),该类对象对数据对象进行处理后获得所需数据,将图形、图像数据处理算法封装后形成的类,一般都属于操作对象。VTK 包含上百个这样的对象,使用 VTK 的关键就是怎样正确的是使用各种操作对象,对数据对象进行处理,得到我们需要的结果,最后在窗口中把它绘制出来。 VTK 中的操作对象可分为三种类型,包括:Sources、 Filter、Mapper、Sources 类型对象的输出为数据对象,各种图像的读写类,像 VTKBmpReader,VTKFiltReader, VTKBmpWriter 等都在该部分内。Filter 对象以一种数据对象作为输入,然后输出相同或不同的数据对象。各种实现图像处理算法,图形数据处理的类都属于该类型。Mapper 类对象则是图形、图像处理的最后一步,它将各种处理结果合在一起,控制其在窗口中的显示或将处理结果数据存到硬盘上。 图 3-7 VTK 几种常用数据对象 3. 用VTK进行三维重构的技术特点 3.1 VTK应用结构 前面己经提到VTK 是在三维函数库 OpenGL 的基础上,采用面向对象的设计方法发展起来的。它将我们在可视化开发过程中常用的算法封装起来,屏蔽了具体的细节。VTK 采用的是 Pipeline(流水线)机制,几乎可以对任何类型的数据进行处理,并提供了许多相应的类对各种类型的数据进行转换或处理。根据所要处理的原始数据类型的不同和所使用的算法以及所要达到的结果,我们可以设计和建立起自己的可视化流程,并由此选择不同的数据处理和转换的类,用数据通道将这些类连接起来,将原始数据类型转换为所采用的算法模块可以直接进行处理的数据类型,最终得到我们所需要的可视化的结果,而且所有的参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问类和算法模块都是可扩充的,用户可以将自己开发的类或模块转换成系统可以接受的形式,并可替换或扩充原有的类。所以 VTK 是一个开放的系统,可以扩展到任何应用领域。用面向对象技术的对象模型图表示 VTK 的框架结构。用 VTK 来产生图形和进行可视化应用是非常方便的,它包括两个基本部分。首先,建立一个数据流水线(datapipeline)来处理数据;其次,建立适当的目标图形来演示数据。建立流水线(pipeline)就是将 Sources、Filters 和 Mappers 连接起来。 VTK 一个很特别的地方是,对于任何进行可视化的数据,它都是通过角色在窗口中表现出来的,因此建立目标图形应该做以下工作: .建立 renderingwindow(绘制窗口); .建立 actor(交互操作者),VTKActor 类用来表达绘制场景中的一个实体,也就是绘制场景中的演员。它通过 SetMapper()方法将几何数据的属性告诉演员; .建立 renderer(演示者),通过 VTKRender 类将结果在窗口中显示出来。 3.2 VTK绘制过程 VTK 的设计目标之一是将复杂的图形、图像处理和显示过程分割成尽量简单的对象,每个对象都必须定义明确,实现上述处理过程的部分功能。在图形、图像的显示方面,共有许多种类控制他们的属性和操作。一是窗口类,该种类型的类都是从 VTKWindow 继承而来,要显示计算机图形或图像到计算机屏幕上,必须首先打开一个计算机屏幕上的窗口,窗口类负责打开一个窗口,管理打开的窗口资源以及该窗口在屏幕上的位置,使用底层的图形图像显示函数库,将图形、图像显示到该窗口,VTKRenderWindow 就是我们进行绘制时主要使用的窗口类,为了使用工业标准的图形库,我们还可以使用VTKRenderWindow 扩展类 VTKOpenGLRenderWindow,实现对 OpenGL 图形库的支持。 另一种重要的类是绘制类(Rendering),基类为 VTKRenderer,该类包含所要显示的数据对象,控制该图形或图像数据的空间坐标系,控制它们在窗口中的显示区域,该类还可以设置相机坐标,控制显示图形图像的平移、旋转、缩放等操作,可以通过该类设置显示背景、光照等参数,因而绘制类是控制图形和图像等显示的最重要的一个类。一个绘制窗口类可以包含多个绘制类,这样在一个窗口中就可以同时显示几个不同的场景,这样的设计对于在一个窗口中比较可视化的效果是非常有效的。通常所用的绘制类为 VTKOpenGLRenderer,它继承自VTKRenderer,增加了对 OpenGL 图形库的支持。VTKOpenGLRenderWindow 和VTKOpenGLRenderer 在类库中的继承关系如下图 3-8所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图 3-8 VtkOpenGLRenderWindow 和 VtkOpenGLRenderer 在类库中的继承关系 VTKRenderWindow 类管理绘制进程,它通过调用 Render()函数,促使VTKRenderer 类刷新窗口中显示的内容,完成绘制过程。一般的绘制过程如下: VTKRenderWindowrenWin renWinSetSize 600 300//设置显示窗口在计算机屏幕上的位置。 VTKRendererrent //在这里需设置绘制类所包含的图形、图像数据及其属性。 real SetViewport 0.0 0.0 0.5 1.0 //设置第一个绘制类所控制的图形图像的窗口坐标系。 rentSetBackground 0.8 0.4 0.2 //设置背景。 renWinAddRenderet rent //将它包含到绘制窗口类中。 VTKRenderer rent //在这里需设置绘制类所包含的图形、图像数据及其属性。 renWin AddRenderer rent //将它包含到绘制窗口类中。 renWin Render //开始执行绘制命令,完成绘制操作。 上面所介绍的是普通的绘制过程,没有涉及到图形图像数据的装载、处理等内容。在VTK中,控制具体的图形、图像数据,还有它们属性的类,主要是 Props,mappers, properties 三种类型的类。Props 类型的类表示所要显示的二维、三维实体,它包含该实体的可见性信息、方向、大小以及该实体的位置等。VTKProp 是所有这些类的基类,在VTK Prop 中引用 mapper 类型和 property 类型的对象,mapper类型的对象引用数据对象,并知道怎样绘制该数据对象,property 类型的对象包含绘制时所需的参数,例如绘制时的前景和背景颜色、材质等。mapper 类型和 property类型对象的基类分别为 VTKMapper, 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问这几种类型的类在绘制过程中的包含、引用关系。上面为简要的引用、包含关系图,实际在绘制时一般都是生成这些类的子类的对象的实例,在绘制过程中,如果没有设置各种属性,则采用这些属性的缺省值。 3.3 VTK 图形处理 在VTK 中,处理图形和可视化有两种不同的方式: (1)图形模式:用于 2D, 3D 图形,如一般的图形处理。 (2)可视化模式:用于可视化过程的数据流模型,如 CT 数据输入及处理。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第四章 基于 VTK 的三维重建的实现 1. 三维重建的基本流程 使用VTK 处理图像最重要的一点是要知道所处理的图像数据的结构是什么,这样才能够选择正确的方法进行处理。VTK 将图像数据分为这样几类:结构点,直线网格,结构网格,非结构点,多边型数据和无结构网格。并给每一种不同格式的数据分配了一套不同的滤波器(filter)进行处理,但其基本处理流程大同小异,如图4-1所示: 开始 二维图像获取 预处理 三维数据结构 光源视线等选择 三维重建 显示 需要交互吗 结束 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图4-1 VTK 基本软件流程 其中,二维图像获取模块用来产生数据,也叫数据层。预处理模块由Filter构成,是对原始数据进行处理的一系列滤波器。显示模块由Mapper实现一个由数据到图形的映射关系。当然,光是有映射关系是不行的,因为看不到一个真实的图像,Actor (体绘制时为Volume)的作用就是将由Mapper得到的映射关系进行实体化,使人们能够看到它的绘制结果。Actor还可以通过调用属性对象( vtkproperty )来控制图像的显示属性。从而使显示出的图像更加的逼真。下一步就是要将图像显示在电脑窗口上了,由Render和 Re nderwindow来完成这项工作。它们提供了一个图形引擎和电脑视窗系统之间的接口。通过调用它们的方法就可以将绘制出的图形在一个窗口中显示。而 RenderwindowInteractor 是用来实现使用者与图像的互操作的,通过设置这个方法,可以通过鼠标操作使图像旋转以便从各个角度把图像看清楚。 2. 面绘制原理 面绘制法将感兴趣的部分以等值面的方式抽取出来便于利用真实感技术,通过灵活地进行旋转和变换光照效果来生成高质量的三维图像,并可以方便地对其进行观察和分析。这种绘制方法速度快,适合于实时性要求高的情形,如交互操作、图像引导手术等。它适用于绘制表面特征分明的组织和器官(例如由 CT 数据生成骨骼三维图像),由于其形象清晰,可以在一定程度上替代实物模型。但是面绘制方法对表面分割精确程度要求高,所以对形状特征不明显、有亮度变化特征的软组织,以及血管、细支气管等精细组织或器官的三维显示效果不佳。而且面绘制方法不能保留数据的完整性,其物体仅显示为一个空壳,表面里面没有东西。面绘制方法是对整个三维数据场进行逐个体素的处理,结果会生成一个数据量极大的三角面片数组。 表面绘制算法有表面跟踪法MC法(Marching cube)、MT法(Matching Tetrahedral) 和 DC法(Dividing Cube)方法等。其中较为常用的是方法是“移动立方体算法”,它提出一种精确定义体素及其体素内等值面的生成方法,随后又有很多人在它的基础上进行研究,如今已经成为一种很成熟的三维重建方法。应用在大量的商业软件中。 面绘制算法介绍主要的面绘制算法有:表面轮廓重建法、Cuberille方法、移动立方体法、剖分立方体法等。 [6] 2.1 MC 方法 Marching Cubes 算法是 W.Lorensen 等人于 1987 年提出来的一种三维重建方法,其参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问原理简单,容易实现,因此得到了广泛的应用,此算法在美国己经申请专利,它被认为是至今为止最流行的面显示算法之一。Marching Cubes 算法是面显示算法中的一种,因为它的本质是从一个三维的数据场中抽取出一个等值面,所以也被称为“等值面提取( Isosurface Extraction)算法”。 一个标准的医学图像的体数据集往往是由一系列的二维切片数据组成的,而每张切片都有空间上的分辨率。假设有一个体数据集,包含 58 张切片,每张切片的分辨率是 512 连续函数 f ( x,y,z)在×512,那么它可以被认为是一个 x,y ,z三个方向上按一定的间隔分别采样了 512,512,58 次所得到的。而所谓的等值面,实际上是指空间中的一张曲面,在该曲面上 f ( x,y,z)函数的值等于某一给定值。等值面提取算法的核心就是要从给定的采样点中找出等值面来,这时最容易想到的方法就是首先由采样点恢复出连续函数 f ( x,y,z),然后由 f ( x,y,z)和某一给定的值(通常叫阈值)来得出等值面。这种方法一般被称为显式的等值面提取算法,其计算复杂度比较高,并且由于重构和重采样所带来的误差比较大,所以精度也得不到保证。 与此相反,Marching Cuhes 算法采用了隐式的等值面提取方法,它不直接计算f ( x,y,z),而是直接从体数据中获取等值面的信息。算法需要用户提供一个阈值,也就是所希望提取出来的物质的密度值,比如要提取出骨骼,阈值就要相对大一些,然后根据体数据的信息就可以提取出等值面的三角网格表达。 Marching Cubes 算法的过程可以描述如下: (1)每次读出两张切片,形成一层。 (2)两张切片上下相对应的四个点构成一个立方体(Cube),如图4-2 所示。 (3)从左至右、从前到后的顺序处理一层中的立方体(抽取每个立方体中的等值面),然后从下到上顺序处理到 n -1层,则算法结束。故名 Marching Cubes。对于每一个立方体而言,它的 8 个顶点的灰度值可以直接从输入数据中得到,要抽取的等值面的阈值也已经知道。如果一个顶点的灰度值大于阈值,则将它标记为黑色(Marked),而小于阈值的顶点不标记(Unmarked ),如图4-3 所示: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图 4-2 立方体示意图 图 4-3 Marked 与 Unmarked 很显然,在 Marked 和 Unmarked 之间必然存在等值点,那么等值点的位置如 何计算,它们该怎么连接以形成等值面呢, 因为一个立方体有8个顶点,每个顶点有 Marked,Unmarked 两种状态,所以等值面的分 8布总共可能有2=256 种。但是考虑到立方体有旋转不变性,即旋转不影响等值面的拓扑结 Marked,等值面的连构;对称性不变性,即所有的Marked变为Unmarked,Unmarked变为 接方式不会改变,如图 4-4所示: 图4-4 对称示意图 考虑了旋转对称性和反对称性两种情况后,总结15种基本立方体,它们覆盖了所有 256 种可能的情况,如图 4-5 所示。 根据这15种基本立方体,可以造出一个查找表。表的长度为 256,记录了所 有情况下的等值面连接方式。所以此时只需分别比较一个立方体的 8 个顶点与阈值之间的大小关系,即可得出一个 0,255 之间的索引值,然后直接查表就可得到此立方体在哪条边上有等值点,并且还能得到等值点的连接方式等信息,这时候就可以将等值点连接起来参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问以形成等值面。要想用真实感图形学技术将等值面显示出来,除了要知道每个等值点的坐标外,还必须知道每个等值点的法向量。在计算立方体某条边上的等值点坐标与法向量时,有两种方法:一种是线性插值;另一种是中点选择。 (1)线性插值 线性插值的公式如下: p = p+(isovalue?V)(p?p)/(V?V) (2.1) 1112X1 N = N+(isovalue?V)(N?N)/(V?V) (2.2) 112121 其中,p 代表等值点坐标;p, p代表两个端点的坐标;V,V代表两个端点的灰度1212 值;isovalue代表阈值;N 代表等值点法向量;N,N代表两个端点的法向量。 12 (2)中点选择 图4-5 种基本立方体的拓扑 p = ( p1+p2)/2 (2.3) N = ( N1+N2)/2 (2.4) 其中, p 、N 、p、p、N、N 所代表的意义同线性插值一样。中点选择所具有的优点是: 1212 ? 引起的误差低于 1/2 立方体边长,这在医学图像的分辨率越来越高的情况下,所重建参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问出来的图像与线性插值得到的图像并没有明显的视觉上的差异。 ? 如果先放大 l0 倍再进行运算,就可以完全采用整数运算,避免浮点运算。 ? 可以使得局部表面更平坦,有利于后续的化简过程。 当立方体的一个面的一条对角线上的两个顶点是有标记的(Marked),而另外一条对角线上的两个顶点是无标记的(Unmarked),则会产生二义性面,即此时有两种连接方式。如图 4-6。 在前面所提到的 15 种基本立方体中,在连接方式的选择上也不一致,即会出现二义性面。如果两个包含二义性面的立方体相邻,并且两个面的连接方式选择不一致时,在相邻的面之间可能会出现空洞,如图 4-7所示: 图 4-6 二义性面示意图 图4-7 由二义性面产生的空洞 为了解决二义性面问题,提出了很多解决办法,比如对立方体进行细分,即增大分辨率。还有渐近线法也是比较常用的一种方法,它通过计算得到等值面和体素边接口的交线(双曲线)的渐近线与体素的边接口的相互位置关系,再判断等值面的正确连接方式。虽然这种方法可以正确地修正二义性面,但是需要额外的计算,并且比较繁琐。另外,从前参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问面的介绍可以看出,Marching Cubes 算法是顺序检测每个立方体,是一种使用蛮力的方法。经有关人员研究表明,在抽取一个等值面的过程中有超过 90%的时间花在了对空立方体的检测上。由此可见其计算效率较低。此外,由前面的 15 种基本立方体可以看到,一个立方体里最多可以有 4 个三角片。考虑在医学图像中最常使用的中等规模的一个数据集,其数据规模为 512×512×58,那么立方体的个数总计是 511×511×57,14 883 897,假设只有十分之一的立方体里包含有等值面,每个立方体平均按两个三角片来计算的话,那么此数据集将平均产生 300 万个三角片,这对于目前的计算机硬件来说是很难实时处理的。 由此看来,对移动立方体的改进方向有两个: ? 消除二义性面; ? 提高计算效率,包括降低时间复杂度和空间复杂度。 目前,已经有很多改进的移动立方体算法出现,如八叉树算法和表面跟踪算 法等。 2.2 表面轮廓法 表面轮廓重建算法是最早被用来进行面绘制的方法,它的基本思想是首先将每层图像中感兴趣区域的轮廓提取出来,然后以轮廓线上的采样点为顶点生成多边形,将每层的轮廓 [7]线连接起来,从而拼接出物体表面.轮廓拼接的关键在于如何确定对应轮廓上各点之间的对应关系.因为三角形总能保证面上各顶点共面,处理起来比较简单,所以利用三角形面片进行轮廓拼接是目前使用最广泛的一种方法。 2.3 Cuberille算法 Cuberille算法由Herman和Liu提出,适合于正交密集数据场的表示,主要适用于医 [8]学图像中序列断层图像的等值面抽取。该方法将三维图像中的每一像素着成是空间中的一个六面体单元,即体素。在体素内数据场具有相同的值,用边界体素的六个面拟合等值面,即把边界体素中相互重合的面去掉,只把不重合的面连接起来近似表示等值面。这种方法的特点是算法简单易行,便于并行处理。 2.4剖分立方体法 对密集数据场处理时,特别是医学图像,包含等值的单元数很多,有时生成的每一个三角面片很小,使面片的投影接近于像素级别,因此往往是显示精度而不是体紊大小限制了图像精度.一种提高效率的方法是直接在显示图像上渲染像素点,这就是剖分立方体法 [9](nvidingCubes)的基本思想.Dividing Cubes算法逐个扫描每个体素,当体素的8个顶点越过等值面时,将该体素投影到显示图像上。如果投影面积大于一个像素的大小,则该体素参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问被分割成更小的子体素,使子体素在显示图像上的投影为一像素大小,每一子体素在图像空间中被绘制成一个表面点.表面点由对应子体素的值、对象空间中的位t和梯度三部分表示,可使用传统的图形学消隐技术,将表面点绘制到图像空间中。该算法绘制表面点而不是绘制等值面片,从而节省了运算时间。它的一个基本出发点是点的绘制一般要比多边形的绘制快,点集的表示形式比多边形的表示形式更适合物体的剖切、合并等几何操作。 面绘制算法比较: 本节将分析4种面绘制算法的特点,并应用这些算法实现医学图像的绘制。通过算法特点与绘制效果的结合,阐述4种面绘制算法的适用场合。 面轮廓重建法较适用于断层扫描数据且断层间等值面变化较小或大致相似,同时精度要求较低的场合。但是该方法在处理多重轮脚、分叉、孔洞等情况时并不理想,算法中两相邻层轮廓线对应点的确定和连接常常是难以解决的问题。 由于Cuberille算法对每个体素的处理都是独立的,重建图形经常会出现走样,尤其在物体边界处锯齿形走样比较明显,而且显示粗糙,难以显示物体的细节。 移动立方体法对感兴趣的等值面可以产生清晰的图像,而且可以利用现有的图形硬件实现加速渲染,速度较快。 分立方体法实质上是用离散点集来近似表示物体表面,结果为等值面的近似表示,对于数据场密度很高的医学图像来说,其视觉效果是可以接受的。剖分立方体法的缺点是:绘制的图形不够精细,如果对图形进行放大,看到的只是一些点云,而无法观测图形的细节。 [10-11]面绘制的实现: int main (int argc, char *argv[]) { if (argc < 2) { cout << "Usage: " << argv[0] << "input data dir" << endl; return EXIT_FAILURE; } // Create the renderer, the render window, and the interactor. The renderer // draws into the render window, the interactor enables mouse- and // keyboard-based interaction with the data within the render window. 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 // vtkSmartPointer aRenderer = vtkSmartPointer::New(); vtkSmartPointer renWin = vtkSmartPointer::New(); renWin->AddRenderer(aRenderer); vtkSmartPointer iren = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); // The following reader is used to read a series of 2D slices (images) // that compose the volume. The slice dimensions are set, and the // pixel spacing. The data Endianness must also be specified. The reader // uses the FilePrefix in combination with the slice number to construct // filenames using the format FilePrefix.%d. (In this case the FilePrefix // is the root name of the file: quarter.) vtkSmartPointer v16 = vtkSmartPointer::New(); v16->SetDataDimensions (64,64); v16->SetImageRange (1,93); v16->SetDataByteOrderToLittleEndian(); v16->SetFilePrefix ("E:\01092025"); v16->SetDataSpacing (3.2, 3.2, 1.5); // An isosurface, or contour value of 500 is known to correspond to the // skin of the patient. Once generated, a vtkPolyDataNormals filter is // is used to create normals for smooth surface shading during rendering. vtkSmartPointer skinExtractor = vtkSmartPointer::New(); 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 skinExtractor->SetInputConnection(v16->GetOutputPort()); skinExtractor->SetValue(0, 500); vtkSmartPointer skinNormals = vtkSmartPointer::New(); skinNormals->SetInputConnection(skinExtractor->GetOutputPort()); skinNormals->SetFeatureAngle(60.0); vtkSmartPointer skinMapper = vtkSmartPointer::New(); skinMapper->SetInputConnection(skinNormals->GetOutputPort()); skinMapper->ScalarVisibilityOff(); vtkSmartPointer skin = vtkSmartPointer::New(); skin->SetMapper(skinMapper); // An outline provides context around the data. // vtkSmartPointer outlineData = vtkSmartPointer::New(); outlineData->SetInputConnection(v16->GetOutputPort()); vtkSmartPointer mapOutline = vtkSmartPointer::New(); mapOutline->SetInputConnection(outlineData->GetOutputPort()); vtkSmartPointer outline = vtkSmartPointer::New(); outline->SetMapper(mapOutline); 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 outline->GetProperty()->SetColor(0,0,0); // It is convenient to create an initial view of the data. The FocalPoint // and Position form a vector direction. Later on (ResetCamera() method) // this vector is used to position the camera to look at the data in // this direction. vtkSmartPointer aCamera = vtkSmartPointer::New(); aCamera->SetViewUp (0, 0, -1); aCamera->SetPosition (0, 1, 0); aCamera->SetFocalPoint (0, 0, 0); aCamera->ComputeViewPlaneNormal(); aCamera->Azimuth(30.0); aCamera->Elevation(30.0); // Actors are added to the renderer. An initial camera view is created. // The Dolly() method moves the camera towards the FocalPoint, // thereby enlarging the image. aRenderer->AddActor(outline); aRenderer->AddActor(skin); aRenderer->SetActiveCamera(aCamera); aRenderer->ResetCamera (); aCamera->Dolly(1.5); // Set a background color for the renderer and set the size of the // render window (expressed in pixels). aRenderer->SetBackground(.2, .3, .4); renWin->SetSize(640, 480); // Note that when camera movement occurs (as it does in the Dolly() 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 // method), the clipping planes often need adjusting. Clipping planes // consist of two planes: near and far along the view direction. The // near plane clips out objects in front of the plane; the far plane // clips out objects behind the plane. This way only what is drawn // between the planes is actually rendered. aRenderer->ResetCameraClippingRange (); // Initialize the event loop and then start it. iren->Initialize(); iren->Start(); return EXIT_SUCCESS; } 程序运行完成后编译得到如下图像4-7: 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 图4-7 不同位置的图像 3. 结论 综上所述,可以看出表面绘制4种方法各有各的优点,适用于不同的情况之下。如果对已经分割出来的单一组织的数据进行三维重建,首选表面绘制。因为表面绘制用到的数据量小,重建速度快,也完全能够满足应用的需要。而且在有些情况下,如虚拟内窥镜和手术模拟,由于要进入到器官内部,所以必须用移动立方体法面绘制的方法进行重建。而其他面绘制则适用于对多个器官的CT或MR扫描图像进行重建,它更有利于观察各器官之参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问间或病灶与正常组织的空间位置关系,所以在实际的临床应用中有较大的意义。但是,它的致命缺点就是数据量太大,对硬件的要求较高,重建和交互的速度依然较慢,不能达到实时的要求。 VTK作为一种图像处理和可视化软件,其功能是十分强大的,用途也是十分广泛的。它不仅可以使表面绘制的可视化效果较好,而且还可以比较方便的实现体绘制,这是其它任何的软件所不能比拟的。 当然,以上工作只是对该软件的一个初步的探索,其他的许多功能都有待于进一步实现,今后将继续致力于用VTK 进行三维可视化的研究,并力争能够对该软件的功能进行一些扩充。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 第五章 总结与展望 医学图像三维重建技术是科学计算可视化的一个重要分支,是计算机图形学和图像处理技术在生物医学工程中的重要应用。它涉及到计算机图形学、数字图像处理、生物医学工程等多种技术,是一项多学科交叉的研究课题。 本文主要研究了基于 VTK 对 CT/MRI 切片图像进行三维重建的若干技术。主要目的在于使用普通 PC 机来实现以前只有在高端的图形、图像工作站才具有的图形、图像处理功能。取得了以下几个方面的研究成果: 对医学三维图像重建的常见方法进行了介绍和讨论,如以 MC 为代表的三维表面重建绘制方法、以光线投射体绘制算法为代表的直接体绘制方法。对它们的原理、算法特点进行了研究,并通过实验比较了它们存在的优缺点。论文的主要重点放在对体绘制技术的研究,由于体绘制技术绘制的图像能更好的反映细节,对医学诊断和治疗过程有很好的辅助作用。其主要的问题就是数据量大,处理时间长,不能实现实时处理;针对体绘制中的这些问题,论文中采用了基于物体空间数据相关性进行体绘制的方法,减少了数据量计算,提高了速度。 介绍了三维重建开发工具 VTK,在Microsoft Visual Studio 2010 环境下,编写了基于 VTK 的使用Marching Cube 和 Raycasting 算法的三维重建程序,能够对 DICOM 格式的 CT 切片数据重建出三维立体图像。并能够对图像进行平移、缩放和旋转等交互操作。通过实验分析表明,在目前的软件算法条件下,三维图像的重建和交互的速度依然很慢,不能达到实时化的要求。鉴于传统体绘制技术数据量大、绘制速度慢的情况,提出了基于空间数据相关性的快速体绘制算法思路,减少重复计算,以此来提高绘制速度。 下一步,我将做进一步研究,采用软件和硬件结合的办法,设计专用硬件来处理重复次数多、耗时较长的计算工作,从而达到在普通PC 机上进行三维重建的目标。参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 参考文献 [1] 祁俐娜,罗述谦.基于 VTK 的医学图像三维重建.北京生物医学工程,2006,25(2):1-5. [2] Papademetris X. An Introduction to Programming for Medical Image Analysis with The Visualization Toolkit, Yale University, 2006,12. [3] 饶家声,彭承琳,罗洪艳.Visualization Toolkit软件在医学图像二维可视化中的应用 [J].中国组织工程研究与临床康复,2009,13(26): 5083-5086. [4] 陈闯,黄淑秋,黎刚(医学 CT 三维重建(北京:首都师范大学学报(自然科学 版)(2004,25,29-33. [5] Xenophon Papademetris. An introduction to Programming for Medical Image Analysis with The Visualization Toolkit[M]. American: 2006,35-47. [6] PCI-SIG,PCI Express Base Specification[Z].Revision1.1,2005. [7] JonesM W,ChenM. A new approach to the construction surfaces from contour data[J].Computer Graphics Forum,1994,13(3):75-84. [8] Chen L S. Herman G T,Reynolds R A,et al. Surface shading in thecuberille environment[J]. IEEEC Computer Graphics and Application,1985.5(12):33一45 [9] 薛斌党,姜志国,周孝宽.共聚焦三维数据表面重建的一种反走样方法口[J].北京航空 航天大学学报,2005,31(10):1054一1057. [10] 李贵山,陈金鹏.PCI 局部总线及其应用[M].西安:西安电子科技大学出版社,2003. [11] Shalloway A, James R.Trott.Design Patterns Explained[J].Addison-Wesley,2002.参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要 更多相关参考论文设计文档资源请访问 致谢 四年的大学生活就要结束了,通过毕业设计使我们对在大学期间所学到的知识有了进一步的加深和理解。毕业设计能够顺利完成,首先要感谢北京TCL医疗器械集团所为我提供了良好的实习条件,使我在实习期间学习到了很多在书本上学不到的知识。卢爽总经理、人事部杜妍经理在工作和生活上给予我很多帮助。在此向他们表示感谢。卢爽总经理为我提供了许多宝贵资料,并且非常耐心的帮我解答疑问。他丰富的实践经验使我受益匪浅。在此向卢爽总经理表示衷心的感谢。 本课题是在侯庆锋老师精心的指 导下完成的,侯老师在百忙之中多次给我指出错误所在并耐心的给出修改意见,使我从中学到了很多专业以外的东西,获益良多。侯老师渊博的学识,严谨的治学态度对我产生了深远的影响。在此谨对侯老师致以崇高的敬意。 我还要衷心感谢放射学院的各位老师以及曾经帮助过我的同学,是你们热心帮助才使得我能够按时、顺利的完成毕业设计。 参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计 文件及源代码,资料请联系68661508索要
本文档为【【毕业设计】基于面绘制技术的医学影像三维重建】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_841159
暂无简介~
格式:doc
大小:588KB
软件:Word
页数:52
分类:
上传时间:2018-03-18
浏览量:45