通信工程专业实训报告蒲永德.doc_第1页
通信工程专业实训报告蒲永德.doc_第2页
通信工程专业实训报告蒲永德.doc_第3页
通信工程专业实训报告蒲永德.doc_第4页
通信工程专业实训报告蒲永德.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古科技大学通信工程专业实训报告 成绩: 通信工程专业实训报告项目名称: 基于VTK的医学图像处理 学 号: 0867119245 姓 名: 蒲永德 班 级: 通信082班 指导教师: 赵剑锋 时间:2011年 6 月 20 日-2011年 7 月 1 日目 录第一章 引 言11.1 实训背景11.2 开发环境配置2第二章 软件功能规划32.1软件功能32.2 界面设计3第三章 功能开发流程33.1程序执行流程33.2 功能实现方案3第四章 软件功能展示34.1界面展示34.2 功能展示3第五章 实训总结35.1实训总结35.2 实训展望3 第一章 引言1.1 研究背景今天,计算机技术和互联网络的飞速发展把社会的信息化进程推向了一个全新的阶段,信息的传递与交流已经成为整个现代社会生活运作的重要基础,电子可读文本大量涌现并成为网络时代主要的信息载体和人们的生活中不可缺的一部分。随着信息化进代的来临,自然语言处理技术已逐渐成为一项大从的迫切需求,计算语言学的研究也越来越受到人们的重视。自然语言分析技术(Natural Language Parsing)一直是计算语言学领域一个基础性的研究课题。大部分自然语言处理系统,包括机器翻译,文本理解,信息的检索与过滤,语音识别与合成,都毫无疑问地会从高质量的分析技术中受益。从科学的观点来看,计算机的自然语言分析过程是对人类语言理解过程的模拟:即根据一定的语言知识,通常是一具由规则、树或图组成的形式文法系统,将输入句子的一维线性结构赋予某种二维平面结构解释;从人工工智能研究的角度来讲,这是一个基于推理的问题求解过程,分析方法则对应了其推理控制策略。本实训是在学校日常课程的基础上,再拓展知识层面,利用vc+ vtk cmake平台实现位图的显示及可视化的3D效果的综合性设计。VTK是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行3D计算机图形,图像处理,可视化。VTK包含一个c+类库,众多的翻译接口层,包括Tcl/Tk,Java,Python。Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的,它将我们在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如 Visualization Toolkit 将我们在表面重建中比较常见的MarchingCubes 算法封装起来,以类的形式给我们以支持,这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes 算法的代码,而直接使用Visualization Toolkit 中已经提供的vtkMarchingCubes 类。 Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具,它以用户使用的方便性和灵活性为主要原则,具有如下的特点: 1) 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体绘制Volume Rendering又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件 2) Visualization Toolkit 的体系结构使其具有非常好的流streaming和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制 3) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展VisualizationToolkit 有着很好的发展前景 4) 能够支持多种着色如OpenGL 等 5) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性6) Visualization Toolkit 中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为 7) Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理 8) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户。CMake 是个跨平台的自动化建构系统,它用组态档控制建构过程(build process)的方式和 Unix 的 Make 相似,只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C+ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支援 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支援静态与动态程式库的建构。 “CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。 1.2环境配置1.cmake2.8的安装和环境配置1下载cmake2.8安装包/cmake/resources/software.html2 解压安装包并运行cmake-2.8.4-win32-x86安装cmake3 将安装路径改为D:/CMAKE 2.ITK的安装1下载 ITK: /ITK/resources/software.html , 这里下载的版本是 InsightToolkit-3.14.0.tar.gz2. 在 D 盘新建文件夹: D:I_VTKITK , 之所以要多建立一个 ITK 文件夹, 是为了以后 ITK, VTK 混合编程, 4. 解压 InsightToolkit-3.14.0.tar.gz 到 D:I_VTKITK, 重命名为ITK-3.14.0, 即 D:I_VTKITKITK-3.14.0(source code directory)5. 再建立一文件夹 ITK-3.14.0-bin, 作为 ITK 编译目标. D:I_VTKITKITK-3.14.0-bin (binary code directiory)再建立一新文件夹 bin, 用于安装 ITK 生成的示例程序执行文件, bin 文件夹可以不建立,不进行安装。6. 打开 CMAKE 进行配置. 假设你已经安装好 VS2008Where is the source code: 点击 Browse, 选择刚才 ITK 源码目录: D:I_VTKITKITK-3.14.0 Where to build the binaries: 点击 Browse, 选择 ITK 编译目标: D:I_VTKITKITK-3.14.0-bin7.点击 Configure 进行配置, 选择编译器,这里选择 Visual stdio 8 2005, VC6 配置,编译的速度都太慢,不见意使用.将 BUILD_DOXYGEN, BUILD_EXAMPLES, BUILD_SHARED_LIBS, BUILD_TESTING 都设置为 OFF. 再点击 Configure, 直至所有条目都变成灰色,表示配置成功, 点击 OK 确认.8. 编译ITK,在 D:I_VTKITKITK-3.14.0-bin 目录下找到 ITK.sln, 点击,使用 VS2008 进行编译. 如果选择ITK 选项里面的EXAMPLES 和生成动态LIB 文件的选择ON 编译时间则相对较长,生成的库也比较大。这里默认是不进行安装的,可以点击 Build-Configure Manager, 将工程 INSTALL 选上。3. Microsoft Visual Studio 2008的安装 1.解压Microsoft Visual Studio 2008压缩包,并运行安装程序 2.选中要安装的项目,并设置安装路径为C:Program FilesMicrosoft Visual Studio 9.0 3.等待安装完成并运行Microsoft Visual Studio 2008.exe第二章软件功能规划2.1软件功能1. 用C+语言实现bmp格式图片的读入和显示。2. 实现简单的几何题的三维显示。3. 实现将BMP图像进行简单的3D化并进行显示。4. 实现一些简单的交互功能 如:图片/图形的放大缩小,拖动图片实现不同角度的观测。2.2界面设计由于时间仓促,界面设计的很简单,仅将同一窗口分为三个不同的显示区域,以用于同时显示三维几何体、BMP图片以及BMP图片3D化后的显示。界面的设计主要用到了vtkRenderer的SetViewport(double, double, double, double),其主要功能为将一个窗口分为几个不同的窗口,其参数的主要含义为(所在x轴的最小值,所在y轴的最小值,所在x轴的最大值,所在y轴的最大值)实现代码如下:renderer-SetViewport(0.0,0.0,0.33,1.0);renderer1-SetViewport(0.33,0.0,0.66,1.0);renderer2-SetViewport(0.66,0.0,1.0,1.0);设计图如下:三维几何体显示Bmp位图3D化效果显示Bmp位图显示第三章 功能开发流程3.1程序执行流程VTK的可视化设计是基于管线流的设计模式,将要处理的数据作为流动介质在管线中流动,不同的阶段对数据有不同的处理方式,VTK的可视化管线主要由图形模型和可视化模型组成,可视化模型主要对数据进行处理,生成可被绘制的几何体,而图形模型主要对生成的几何体进行绘制,在VTK的可视化管线中所包含的对象一般包括:源对象、过滤器对象(可选)、映射器对象、Props对象、绘制器对象、绘制窗口,其中源对象、过滤器对象(可选)、映射器对象、绘制器对象、绘制窗口为处理对象,Props对象为数据对象,映射器对象是可视化模型和图形模型的接口。3.2功能实现方案3.2.1显示功能的实现vtkRenderWindow, 管理显示设备上的窗口, 一个或多个绘制方 法可在渲染窗口上创建一个场景。渲染窗口是用户图形界面, 其中包括 了设置渲染窗口的大小, 产生立体显示效果等的方法。vtkRenderer,作用是管理光源、照相机和绘制对象等的位置、属性等; 提供 世界坐标系, 观察坐标系及显示坐标系之间的转换。建立好一个Renderer 后将其加入RenderWindow中即可将场景显示出来。vtkActor代表渲染场景中的绘制对象实体,通过参数的调节可以设置角色的位置方向, 渲染 特性(Property),引用(renference),纹理影射(Texture)等属性,并可对Actor进行放缩。角色 的改变是通过一个4*4的变换矩阵实现的。vtkMapper指定了渲染数据和图形库中基本图元之间的联系。实现代码如下:vtkRenderer *renderer = vtkRenderer:New();/创建绘制器对象vtkRenderWindow *renWin = vtkRenderWindow:New();renWin-SetSize(900,400);renWin-Render();/创建绘制窗口vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor:New();/创建交互器vtkPolyDataMapper *mapper;mapper = vtkPolyDataMapper:New();/创建映射器对象vtkActor *Actor;Actor = vtkActor:New();/创建对象(Actor)3.2.2三维几何体的创建及显示本程序所显示的三维几何体为简单的三维圆锥,用到了VTK数据源中vtkConeSource。其主要功能为在指定的中心点,创建一个指向一个特定方向的圆锥。默认情况下,该中心是原点和方向是X轴。在创建时可以进行分辨率的设置,如分辨率resolution=0,则创建一个三角形,如分辨率resolution= 2,则创建两个交叉的三角形,如分辨率resolution2,则创建一个三角锥。并且可以通过其成员函数对其具体参数进行设置如SetHeight (double)可对锥的高度进行设置,SetRadius (double)为设置设置锥底半径等等。创建圆锥的代码如下:vtkConeSource *cone;cone = vtkConeSource:New();/创建一个圆锥cone-SetHeight( 3.0 );/设置圆锥的高为3.0cone-SetRadius( 1.0 );/ 设置锥底半径为1.0cone-SetResolution( 10 );/设置分辨率为10显示圆锥的代码如下:vtkRenderer *renderer;renderer = vtkRenderer:New();renWin-AddRenderer(this-renderer);vtkPolyDataMapper *mapper;mapper = vtkPolyDataMapper:New();mapper-SetInputConnection(this-cone-GetOutputPort(); vtkActor *Actor;Actor = vtkActor:New();Actor-SetMapper(this-mapper);renderer-AddActor(this-Actor); /将Actor对象添加到绘制器中renderer-SetBackground(0.2,0.4,0.3); /设置背景颜色renWin-Render(); /绘制renWin-Delete();renderer-Delete();cone-Delete();mapper-Delete();Actor-Delete();/删除对象3.2.3读取BMP位图及显示 读取BMP图片文件用到了vtkBMPReader,BMPReader创建结构点的数据集。该数据集的尺寸取决于读取的文件数,读取二维图像读一个文件的结果,读取三维图形多个文件的结果,本程序只用到了读取二维图像。 读取图片的代码如下:vtkBMPReader *reader; reader = vtkBMPReader:New();/创建一个vtkBMPReader reader-SetFileName(F:/mm.bmp);/设置图片的路径及文件名 reader-Update();/更新reader 显示图片的代码如下: vtkPolyDataMapper *mapper2;mapper2 = vtkPolyDataMapper:New(); mapper2-SetInput(vtkPolyData *)(this-reader-GetOutput();vtkRenderer *renderer2;renderer2 = vtkRenderer:New();renWin-AddRenderer(this-renderer2);mapper2 = vtkPolyDataMapper:New(); mapper2-SetInput(vtkPolyData *)(this-reader-GetOutput();Actor2 = vtkImageActor:New(); Actor2-SetInput(this-reader-GetOutput();renderer2-AddActor(this-Actor2); /将Actor对象添加到绘制器中renderer2-SetBackground(0.2,0.4,0.0);/设置背景颜色renWin-Render();/绘制renWin-Delete();reader-Delete();renderer2-Delete();mapper2-Delete();Actor2-Delete();/删除对象3.2.4BMP位图的简单3D化及显示该功能主要用到了vtkImageDataGeometryFilter和vtkWarpScalar。vtkImageDataGeometryFilter是一个过滤器,提取数据集中点的几何结构,通过指定适当IJK指数,它可以提取一个点,线,面(即形象),还是“量”的数据集。vtkWarpScalar也是一个过滤器,对图像数据进行处理使图像变为三维实现数据的提取及三维化的代码如下:vtkBMPReader *reader; reader = vtkBMPReader:New();/创建一个vtkBMPReader reader-SetFileName(F:/mm.bmp);/设置图片的路径及文件名 reader-Update();/更新readervtkImageDataGeometryFilter *geo; vtkWarpScalar *scalar;geo = vtkImageDataGeometryFilter:New();geo-SetInput(vtkDataObject*)(this-reader-GetOutput();scalar = vtkWarpScalar:New();scalar-SetInput(this-geo-GetOutput();scalar-SetScaleFactor(0.5);显示的代码如下:mapper1 = vtkPolyDataMapper:New();mapper1-SetInput(this-scalar-GetPolyDataOutput();Actor1 = vtkActor:New();Actor1-SetMapper(this-mapper1);renderer1-AddActor(this-Actor1); renderer1-SetBackground(0.2,0.4,0.6);renderer1-SetViewport(0.33,0.0,0.66,1.0);renWin-SetSize(900,400);renWin-Render()geo-Delete(); scalar-Delete();

温馨提示

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

评论

0/150

提交评论