《基于VTK的三维医学图像可视化处理系统挑战杯论文(43页).doc》由会员分享,可在线阅读,更多相关《基于VTK的三维医学图像可视化处理系统挑战杯论文(43页).doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于VTK的三维医学图像可视化处理系统挑战杯论文-第 39 页基于VTK的三维医学图像可视化处理系统Based on VTK 3d medical image visual processing system毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名
2、: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已
3、在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业
4、知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格
5、 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及
6、格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解
7、决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日目 录目录2摘要3ABSTRACT4第一章 引言5第二章 背景6第三章 设计特点8第四章 总体设计9第五章 结论34第六章 附录35第七章 参考文献50摘 要医学图像三维可视化系统有助于医生对病情的诊断,在医学影像研究方面具有重大的意义。 在医学图像三维可视化系统的开发
8、中,主要运用了VTK工具包完成可视化的具体操作,对结果进行分析。使用Marching Cube的算法和光线跟踪算法对体数据进行体绘制和面绘制显示,通过文件模块、查看模块、图形变换模块、颜色处理模块、体数据调节显示模块来实现整个系统的功能。基于VTK的面绘制及体绘制技术,将绘制出来的物体需要显示到屏幕上,在基本绘制完成后,需要将绘制过程中的参数以可视的方式送到当前的现实屏幕上,用户可以通过调整这些参数调整当前物体的绘制方式及最终绘制结果,以较好的呈现出三维图像信息。关键词:三维可视化 VTK Marching Cube 光线跟踪算法 AbstractMedical image 3d visual
9、ization 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 visual specific operation, the analysis of the results。Use Marching Cube algorithm and light tracking algorit
10、hm 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 realize the function of the whole system。Based on VTK face paint and volume rendering technology, will be mapped ou
11、t 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.Keywords:3d visualization VTK Marching Cube light tracking algorithm 第一章 引言当医学影像图问世的时候,为医学界带来了一次革命性飞跃,它为诊断病情提供了方便
12、,但这种二维的图像有着一定的弊端,不能全面展现出图像的效果,对医疗的诊断有影响。本系统是为医学影像图提供三维影像图,便于医疗诊断和医学科研。第二章 背景随着计算机技术的进步和计算机硬件的发展,人们可以从事越来越多的研究、分析和模拟工作。由于从实际环境采集来的数据是非常巨大的,例如卫星云图,每一幅图片都超过1G的存储量,如果只是通过研究人员的手工分析,那将是一件极其繁琐的事情。于是人们想到了计算机对采集到的科学数据的可视化研究工作,三维数据可视化是科学数据可视化技术的核心。国外的三维数据可视化研究最早可以追溯到1980年,目前已经取得了长足的发展,例如在面绘制技术方面的抛雪球算法和Marchin
13、g cube算法等,结合材质和光照的处理,可以逼真地再现数据场中隐含的结构信息的轮廓;在体绘制方面,光线跟踪算法是经典的算法,其他的算法绝大多数是在此基础上进行快速算法的应用研究,例如Shear-Warp 算法等。体绘制算法可以有效地再现数据场中隐含信息的细节,例如人体组织中骨骼和肌肉之间的肌腱部分,在面绘制算法中是很难表现出来的,体绘制可以完美地再现三者之间的关系。三维数据可视化应用已经渗入到社会生活的各个方面,例如:股票分析、经济数据分析、气象分析、军事模拟分析、医学人体数据显示及分析和科学研究等等。三维数据可视化技术是集多种科学技术一体的交叉边缘学科。国内在三维数据可视化研究方面主要是应
14、用方向的研究,中国科学院北京自动化研究所的田捷教授在这个方面的研究工作在国内处于领先的地位,目前正在逐渐地推出综合处理的三维数据可视化处理平台,该平台就是基于VC环境,对面绘制技术和体绘制技术进行了很好的集成。1895年,伦琴射线的发现对医学影响技术有着重要的作用,利用仪器设备获得人体有关部位的断层影像,这种方法对医生诊断病情带来了革命性的飞跃。医生可以通过CT、螺旋CT、核磁共振等技术的得到医学影像照片对病人的病情进行分析病因。然而这些医学影像都是二维的,对医生分析病人的病情有一定的要求,不能充分的分析病因和查找病灶。医学图象三维可视化具有极大的医学研究和对临床诊疗作用,它作为有效的辅助工具
15、,可以弥补在二维医疗影像上的不足,能够为医生提供更加真实的三维医学影像,有利于医生能够直观、准确、多角度的分析与观察病灶,从而也提高了医生诊断病情准确率,提高了治疗效果。因此医学图象三维可视化是现代医学影象研究的具有重要意义,为医学的研究也提供了重要手段。第三章 设计特点本系统采用VTK结合VC环境的程序设计思想,针对医学图像进行三维体数据的处理和快速绘制的算法及应用研究。系统中采用的Marching Cube面绘制算法是目前最先进行的面绘制技术中的面片提取算法;体绘制中的光线跟踪算法也是目前非常成熟的体绘制技术之一。VTK工具包提供了完整的数据通道、绘制通道、材质和光照通道和相机通道。通过V
16、TK提供的模型可以方便的建立绘制界面并实现体数据的绘制。但是VTK的一体化也严重地限制了实际应用中的灵活性。本作品灵活地结合VTK的开放源码和VC开发环境。通过底层导出技术实现本作品中的应用算法的独立导出。实现了DICOM文件处理、Marching Cube算法、Ray-Casting算法等关键算法和技术的独立导出。结合VC的底层处理能力和OpenGL的开发接口实现了灵活的体数据处理和绘制,有效地提高了数据绘制清晰程度和绘制速度。本系统中针对体绘制算法较慢的缺点,独立导出了Shear_Warp算法结合RLE压缩编码,实现了对体数据无损的快速绘制。由于避免了VTK中黑箱式的流程处理过程,本系统可
17、以在体数据的最高分辨率上完成体数据的绘制,同时有效地提高了绘制的速度。第四章 总体设计1.基本思路系统将实现对医学影像图的显示和三维体数据的绘制。结合VTK(Visualization ToolKit)工具提供的算法模块和基本的三维数据处理思想,运用VC环境编写程序,实现医学图像的读取并进行多种图像处理;综合运用OpenGL技术和Marching Cube算法实现对体数据的面绘制处理;采用光线跟踪算法对体数据进行体绘制显示。运用ShearWarp技术,加速体绘制的绘制速度;利用MFC开发平台实现界面的设计和系统的框架。系统的处理流程如下:1. 数据的输入:输入的数据包括由课题组自己构建的三维体
18、数据,扩展名为.vol的文件,文件的格式另外商议决定;另外的输入数据来自于实际的工程,目前流行的大部分来自于医学图像的CT或者MRI的断层扫描图像,因此需要对序列的、多幅连续图像进行基本的显示和预处理。1.2 数据的输出的处理:包括几个部分:a、图像输入数据的格式转换输出,例如 Jpg图像转存为Bmp图像;序列输入图像转存为三维数据格式.vol输出;三维数据.vol转存为单幅的图像数据输出等。B、三维绘制后的图像的保存处理:包括当前参数的单幅图像的保存;在一定条件下的连续的多幅图像的保存处理。C、其他的一些未预见的输出处理等。1.3 外部数据导入到软件系统内部后的处理:包括数据的构造,即把序列
19、图像按照原始的物理顺序重新排序并存入到专门的三维数据的数据存储结构内存中。数据的预处理:包括提取当前图片的直方图或者提取三维数据场的直方图;确定数据场内有效数据的种类,并能够根据数据的取值范围(图像0-255)准确地划分不同的物体的取值区间,根据这个条件为不同的物体划分不同的不透明度。1.4 三维体数据的绘制处理:在前面的预处理基础上,开始根据用户的不同的功能选择:面绘制、体绘制,来绘制体数据中在预处理中已经确定的需要绘制的物体。1.5 三维绘制的交互操作:绘制出来的物体需要显示到屏幕上,在基本绘制完成后,需要将绘制过程中的参数以可视的方式送到当前的现实屏幕上,用户可以通过调整这些参数调整当前
20、物体的绘制方式及最终绘制结果:例如:可以调整三维数据场的有效灰度值得范围,由此确定绘制新的物体;调整显示的彩色属性选项,由此决定绘制出来的物体是否需要彩色显示;面绘制中的灯光显示和材质处理;当前绘制物体的绘制角度的调整,由此可以观察不同空间角上观察到的物体的情况等等。2.关于VTK工具包与算法2.1 VTK工具包视觉化工具函式库(VTK,Visualization Toolkit)是一个跨平台、支援平行处理(VTK曾用于处理大小近乎1个Petabyte的资料,其平台为美国Los Alamos国家实验室所有的具1024个处理器之大型系统)的图形应用函式库。全世界的数以千计的研究人员和开发人员用它
21、来进行3D计算机图形,图像处理,可视化。VTK包含一个c+类库,包括Tcl/Tk,Java,Python。 Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的。 Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具,它以用户使用的方便性和灵活性为主要原则,具有如下的特点: 2.1.1 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体
22、绘制Volume Rendering又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件 。2.1.2 Visualization Toolkit 的体系结构使其具有非常好的流streaming和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制 2.1.3 Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展VisualizationToolkit 有着很好的发展前景。 2.1.4 能够支持多种着色。2.1.5 Visualization Too
23、lkit 具有设备无关性使其代码具有良好的可移植性2.1.6 Visualization Toolkit 中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为。 2.1.7 Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理。 2.1.8 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户。VTK中,要将一套医学体数据进行体绘制。下面是VTK中体绘制的C+代码,对关键类和函数的作用进行了注释。vtkRenderer *aRender = vtkRenderer:New(); /设置绘制类vtkRenderW
24、indow*renWin=vtkRenderWindow:New();/设置绘制窗口renWin-AddRenderer(aRender); /装载绘制类vtkRenderWindowInteractor*iRen=vtkRenderWindowInteractor:New();/设置绘制窗口的交互iRen-SetRenderWindow(renWin); /装载绘制窗口vtkVolume16Reader*reader=vtkVolume 16Reader:New();/读取DICOM数据reader-SetDataDimensions (64,64);/设置图像像素值reader-SetIm
25、ageRange (1,93); /设置图片数量reader-SetDataByteOrderToLittleEndian();reader-SetFilePrefix(X:/data );/设置数据路径reader-SetDataSpacing (1.0, 1.0, 0.48); /设置数据的间距vtkPiecewiseFunction*opacityTransferFunction=vtkPiecewise Function:New();/设置不透明度传递函数opacityTransferFunction-AddPoint(0, 0.0);opacityTransferFunction-A
26、ddPoint(500, 0.0);opacityTransferFunction-AddSegment (600, 0.73, 900, 0.9);opacityTransferFunction-AddPoint(1300, 2.0);vtkColorTransferFunction *colorTransferFunction = vtkColorTransferFunction:New();/设置颜色传递函数colorTransferFunction-AddRGBPoint(0, 0, 0, 0);/此处颜色设置为灰度值colorTransferFunction-AddRGBPoint(
27、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);colorTransferFunction-AddRGBPoint(1300, 1.0, 1.0, 1.0);vtkPiecewiseFunction *gradientTransferFunction = vtkPiecewiseFunction:New();/设置梯度传递函数gradientTransferFunction-AddP
28、oint(0, 2.0);gradientTransferFunction-AddPoint(500, 2.0);gradientTransferFunction- AddSegment (600, 0.73, 900, 0.9);gradientTransferFunction-AddPoint(1300, 0.1); vtkVolumeProperty*volumeProperty=vtkVolumeProperty:New();/定义并设置相关体属性volumeProperty-SetColor(colorTransferFunction);volumeProperty-SetScala
29、rOpacity(opacityTransferFunction);volumeProperty-SetGradientOpacity(gradientTransferFunction);vtkVolumeRayCastCompositeFunction*compositeRaycastFunction = vtkVolumeRayCastCompositeFunction:New();/定义光线投射方法为合成体绘制方法vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper:New();volumeMapper-SetVolu
30、meRayCastFunction(compositeRaycastFunction);/载入体绘制方法volumeMapper-SetInput(reader-GetOutput();vtkVolume *volume = vtkVolume:New();/定义Volumevolume-SetMapper(volumeMapper); volume-SetProperty(volumeProperty);/设置体属性aRender-AddVolume(volume); /将Volume装载到绘制类中aRender-SetBackground(0, 0, 0);renWin-SetSize(5
31、00, 500); /设置背景颜色和绘制窗口大小renWin-Render(); /窗口进行绘制iRen-Initialize(); iRen-Start(); /初始化并进行交互绘制2.2 Marching cube算法Marching Cubes算法是面显示算法中的一种,因为他的本质是从一个三维的数据场中抽取出一个等值面,所以也被称为“等值面提取”算法。Marching Cubes算法采用了隐式的等值面提取方法,它不直接计算f(x.y.z),而是直接从体数据中获取等值面的信息。Marching Cubes算法的的处理过程每次读出两张切片,形成一层。两张切片上下相对应的四个点构成一个立方体(
32、Cube),然后从前到后顺序处理一层中的Cuubes,再从下到上顺序处理(n-1)层,算法就结束了。Marching Cubes算法的的处理过程图对于每一个Cube而言,它的八个顶点的灰度值可以直接从输入数据中得到,要抽取的等值面得域值也已经知道。如果一个顶点的灰度值大于域值,则它标记为黑色,而小于的不标。Marching Cubes算法原理图Marching Cubes算法原理图因此Marching Cubes算法的优点是:(1)算法的实现相当直接。(2)图案的解析度很高。2.3光线跟踪算法光线跟踪算法能够生成高质量真实感图形。由光源发出的光到达物体表面后,产生反射和折射,形成简单光照明模型
33、和光透射模型模拟这两种现象。在简单光照明模型中,反射被分为理想漫反射和镜面反射光,在简单光透射模型把透射光分为理想漫透射光和规则透射光。由光源发出的光称为直接光,物体对直接光的反射或折射称为直接反射和直接折射,相对的,把物体表面间对光的反射和折射称为间接光,间接反射,间接折射。这些是光线在物体之间的传播方式,是光线跟踪算法的基础。最基本的光线跟踪算法是跟踪镜面反射和折射。从光源发出的光遇到物体的表面,发生反射和折射,光就改变方向,沿着反射方向和折射方向继续前进,直到遇到新的物体。但是光源发出光线,经反射与折射,只有很少部分可以进入人的眼睛。因此实际光线跟踪算法的跟踪方向与光传播的方向是相反的,
34、而是视线跟踪。由视点与象素(x,y) 发出一根射线,与第一个物体相交后,在其反射与折射方向上进行跟踪。如图:光线跟踪算法原理图视线是由视点与象素(x,y)发出的射线;阴影测试线是物体表面上点与光源的连线;以及反射光线与折射光线。 当光线V与物体表面交于点P时,点P分为三部分,把这三部分光强相加,就是该条光线V在P点处的总的光强,由光源产生的直接的光线照射光强,是交点处的局部光强,可以由下式计算: 光线跟踪算法实际上是光照明物理过程的近似逆过程,这一过程可以跟踪物体间的镜面反射光线和规则透射,模拟了理想表面的光的传播。虽然在理想情况下,光线可以在物体之间进行无限的反射和折射,但是在实际的算法进行
35、过程中,我们不可能进行无穷的光线跟踪,因而需要给出一些跟踪的终止条件。我们用伪码的形式给出光线跟踪算法的源代码。光线跟踪的方向与光传播的方向相反,从视点出发,对于视屏上的每一个象素点,从视点作一条到该象素点的射线,调用该算法函数就可以确定这个象素点的颜色。光线跟踪算法的函数名为RayTracing(),光线的起点为start,光线的方向为direction,光线的衰减权值为weight,初始值为1,算法最后返回光线方向上的颜色值color。对于每一个象素点,第一次调用RayTracing()时,可以设起点start为视点,而direction为视点到该象素点的射线方向。代码如下:RayTrac
36、ing(start, direction, weight, color) if ( weight MinWeight ) color = black; else 计算光线与所有物体的交点中离start最近的点; if ( 没有交点 ) color = black; else Ilocal = 在交点处用局部光照模型计算出的光强;计算反射方向 R RayTracing(最近的交点, R, weight*Wr, Ir);计算折射方向 T;RayTracing(最近的交点, T, weight*Wt, It);color = Ilocal + KsIr+ KtIt;光线跟踪的优点它比其它渲染方法如扫
37、描线渲染或者光线投射更加能够现实地模拟光线,象反射和阴影这样一些对于其它的算法来说都很难实现的效果,却是光线跟踪算法的一种自然结果。光线跟踪易于实现并且视觉效果很好,所以它通常是图形编程中首次尝试的领域。2.4 Shear-Warp算法Shear-Warp算法,又称错切变化算法。该算法是将体会制度中的视线方向进行分解,简化从物体空间到图像空间的投影。首先将数据场从物体空间坐标系变化到中间坐标系,称为错切空间,在错切空间,所有视线方向平行于该空间的第三坐标轴方向。其次在错切空间内将体系切片投影到中间过渡图像,在变换得到最终图像。 Shear-Warp算法原理图Shear-Warp算法有如下的性质
38、:1) 中间图像的像素扫描线与数据体切片上的体元扫描线相平行:2) 透视投影时同一数据体切片中的全部体元用相同的因子来缩放:3) 平行投影时,将切片投影到中间图像时,所有切片有相同的比例因子。因此可选择一单元比例因子,使体元扫描线内的体元与中间图像的像素意义对应。这也是Shear-Warp算法的优势之处。3.基本设计概念和处理流程本系统的主要处理流程如下:打开文件打开系统开始设置显示模式 选择文件格式选择文件(一个或者多个)显示选择要处理图片显示图片框架显示图片属性图片黑白显示图片移动图片旋转图片镜像图片缩放调节图片亮度调节图片灰度图像保存.vol文件保存选择多幅序列位图三维体数据显示RT算法
39、显示MC算法显示移动旋转图像序列显示4.结构 系统框架图4.1文件模块本子系统主要完成数据的打开输入、保存、另存为、打印处理。4.1.1打开输入:软件中通过菜单栏中的菜单项的打开来输入数据,基本的输入界面如图所示:图示中的文件类型中可以限制只显示图像文件和扩展名为.vol的文件。打开的时候可以根据不同的文件扩展名,调用不同的字程序(对象)实现对图像文件和体数据文件的打开。在这里我们定义了一个关于数据输入输出的一个类COutIn类来实现数据的输入输出处理,用户可以打开一个文件对话框,在对话框中选择所需的数据文件,之后通过获取相应数据文件的名字,然后调用COutIn类中的ReadImageFile
40、方法将数据文件的信息读取出来,之后就可以调用StretchDIBits方法将数据文件的信息显示在屏幕上,在文件选择对话框中,用户可以通过鼠标选择自己想要的一张图片,也可以选择多张,选择多张时用户摁住键盘上的shift键然后通过鼠标一张张的选择或者鼠标点击第一张然后点击最后一张就可以选中中间的多张图片,所选择的文件格式为.bmp、.jpg、.vol。(对于多幅的图像文件应该如何同时打开)。 序列图浏览图 文件打开图4.1.2保存、另存为:软件中通过菜单栏中的菜单项的”另存为”来输出数据,输出数据我们用到的类也是COutIn类,在这个类中我们定义了一个方法WriteImageFile来用于数据的输
41、出处理,基本的界面如图所示:图示中的文件类型可以设置为.bmp、.jpg、.vol类型。文件保存1) 图像输入数据的格式转换输出,例如 Jpg图像转存为Bmp图像,可以通过打开的方式导入一张Jpg图像,显示在显示区域中,之后点击另存为命令选择文件类型Bmp,就可以实现图像格式的转换输出。2) 序列输入图像转存为三维数据格式.vol输出,在导入多张序列图像并在显示区域显示之后,用户可以通过鼠标点击选择多幅序列图像,选择的方法是摁住键盘上的shift键然后通过鼠标一张张的选择或者鼠标点击第一张然后点击最后一张就可以选中中间的多张图片,选中之后用户就可以通过另存为命令保存这些图像为.vol三维数据格
42、式输出。3) 三维数据.vol转存为单幅的图像数据输出,在用MC算法或者RT算法在三维体数据对话框显示区域中显示出三维体数据之后,通过调节摄像机的角度可以从各个方向观察体数据,摄像机确定角度之后用户可以点击三维体数据对话框操作中的按钮“保存为”将用户所看到的三维数据图像保存为单幅图像输出,保存的格式可以有.bmp、.jpg、.vol类型。4) 三维绘制后的图像的保存处理:包括当前参数的单幅图像的保存;在一定条件下的连续的多幅图像的保存处理。5) 其他的一些未预见的输出处理等。4.1.3打印:主要是对当前显示的图像或者处理完之后的三维体数据进行打印,用于用户观察鉴别。4.2查看模块4.2.1工具
43、栏:主要是一些功能的快捷键,用户可以点击相应的工具栏中的快捷键来实现一些操作。4.2.2图片显示条:主要是显示多幅导入的序列位图,便于用户浏览,选择查看哪一幅位图。4.2.3图片属性的查看:用于显示图片的信息,如大小,灰度值以及亮度值。4.2.4图片框架的显示:当用户选择一幅或者多幅位图之后,点击该功能就会在图片的框架上显示出不同颜色的线,以区别于别的未选中的位图。4.2.5图片显示模式:该功能是用于设置图片显示区域中的图片显示模式,会有一个模式对话框可以设置图片显示的个数,如3*3显示。4.3图形变换模块4.3.1 图像缩放:在选择该功能中的放大或缩小功能之后鼠标放到要调节的图片上鼠标指针变成了一个放大镜,通过点击鼠标左键右键调节图片的放大缩小,点击左键放大图片,点击右键缩小图片。实现图像缩放的方法是使用StretchBlt或者StretchDIBits函数,这两个函数能方便快速的实现位图的缩放,为了保证不丢失和改变DIB的颜色信息,应该使用DIBSECTION来处理位图。先从DIB创建DIBSECTION,并针对DIBSECTION句柄调用StretchBlt函数,以实现位图的缩放,再将经缩放的DIBSECTION