首页 基于多边形图形绘制的医学图像交互式分割方法研究与实现

基于多边形图形绘制的医学图像交互式分割方法研究与实现

举报
开通vip

基于多边形图形绘制的医学图像交互式分割方法研究与实现基于多边形图形绘制的医学图像交互式分割方法研究与实现 基于多边形图形绘制的医学图像交互式分割方法研究 与实现 本科毕业论文 基于多边形图形绘制的医学图像交互式分割方法的研究与实现 姓 名杨 *学 院医疗器械与食品学院 专 业医学影像工程 指导教师陈** 副教授 完成日期2012年05月 上海理工大学 全日制本科生毕业设计(论文)承诺书 本人郑重承诺:所呈交的毕业设计(论文)基于多边形图形绘制的医学图像交互式分割方法的研究与实现是在导师的指导下,严格按照学校和学院的有关规定由本人独立完成。文中所引用的观点...

基于多边形图形绘制的医学图像交互式分割方法研究与实现
基于多边形图形绘制的医学图像交互式分割方法研究与实现 基于多边形图形绘制的医学图像交互式分割方法研究 与实现 本科毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 基于多边形图形绘制的医学图像交互式分割方法的研究与实现 姓 名杨 *学 院医疗器械与食品学院 专 业医学影像 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 指导教师陈** 副教授 完成日期2012年05月 上海理工大学 全日制本科生毕业设计(论文)承诺书 本人郑重承诺:所呈交的毕业设计(论文)基于多边形图形绘制的医学图像交互式分割方法的研究与实现是在导师的指导下,严格按照学校和学院的有关规定由本人独立完成。文中所引用的观点和参考资料均已标注并加以注释。论文研究过程中不存在抄袭他人研究成果和伪造相关数据等行为。如若出现任何侵犯他人知识产权等问题,本人愿意承担相关法律责任。承诺人(签名):日 期: 年月 基于多边形图形绘制的 医学图像交互式分割方法的研究与实现 摘要 随着计算机辅助诊断技术的不断发展,医学图像处理技术也越来越被人们所关注。医学图像由于其携带大量信息使得其一直是临床诊断的一个难题。如果对医学影像进行分割,提取感兴趣区域进行研究,将会大大增加诊断效率。而传 统的人工方式分割不仅需要大量时间和精力,也已无法满足目前在一些先进领域 的分割要求。计算机自动分割虽然可以大大提高分割效率,但很难得到令人满意 的分割结果。因此将两者优势相结合的方法,交互式分割方式成为如今的研究热 点。 关键词:多边形图形绘制 交互式分割 医学图像 RESEARCH AND REALIZATION ON AN INTERACTIVE SEGMENTATION METHOD OF PULMONARY NODULES BASED ON THE POLYGONAL GRAPHICS ABSTRACT With the development of computer aided diagnosis technology , medical image processing technique has been concerned by more and more people. Medical image carry a lot of information so it has been a difficult problem in clinical diagnosis. If the image can be segmented and region of interest can be extracted for research, this will greatly increase the efficiency of diagnosis. But the traditional artificial way of dividing not only needs a lot of time and energy, but also has been unable to meet the requirements in some advanced fields of segmentation. Computer automatic segmentation although can greatly improve the efficiency of segmentation, but it is difficult to get satisfactory segmentation results. Therefore the advantages of combining the two method of interactive segmentation method, has becomes the hot spot in research. KEYWORDS:medical imaging polygonal graphics interactive segmentation 目 录 中文摘要 ABSTRACT 第1 章 绪 论 1 1.1数字图像处理技术的发展现状 1 1.2数字图像处理技术在医学领域中的应用 1 第2章 图像分割技术 3 2.1图像分割的基本概念 3 2.2 图像分割的常用方式及特点 3 2.3交互式分割的优点及研究意义 3 第3章 基于VC++的数字图像处理技术 5 3.1 C++面向对象程序设计的技术优点 5 3.2 MFC编程介绍 6 3.3 MFC编程在本研究中的应用 6 3.4 BMP图像格式介绍 7 3.5 CDIB类的封装介绍 9 第4章 基于多边形绘制的交互感兴趣区域的选择和分割 12 4.1 C++图形绘制的技术要点 12 4.2多边形图形绘制技术 12 4.3使用C++打开BMP图像介绍 12 4.4使用C++显示BMP图像介绍 13 4.5感兴趣区域图像的分割 14 4.6感兴趣区域图像的保存 14 第5章 实验结果及总结 15 5.1 实验 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 15 5.2 实验结果 15 第6章 总结及展望 16 致 谢 17 参 考 文 献 18 第1 章 绪 论 1.1数字图像处理技术的发展现状 数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信 号并利用 计算机对其进行处理的过程。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。 数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。 图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。在以后的数字图像处理技术宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。 随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。 1.2数字图像处理技术在医学领域中的应用 随着计算机技术的不断推广和应用,计算机在医学领域的应用也越来越普遍, 数字图像处理也随着计算机技术的发展越来越广泛的应用于各个领域,在医学领域也不例外,尤其是医学影像方面体现的更为突出。 从根本上说医学影像离不开计算机现代医学影像成像,依据电离辐射和非电离辐射的自身性质和它们与物质相互作用的规律,用现代技术手段来采集成像数据,按一定的数学方法用计算机重建数字图像。这也就是说,要深入挖掘图像所蕴藏的生物信息和很好地控制图像质量,仅有雄厚的医学知识是不够的,还需要计算机、数学等理工基础知识作保障。计算机处理的是数字图像我们从显示器上可以识别出一条线、一幅照片、一部动画片。但对于计算机而言,却以相同的方式看待它们--把它们当成数据,一堆可操作的二进制数。不同的数据代表不同的信息,给我们以不同的视觉形象,即不同的数字图像。 医学影像质量的好坏、分辨率的高低以及对影像图片的读释能力,将影响着诊断的准确性。这就要求人们能对数字图像有更深一层的了解,对数字图像能有选择、有目的的进行各种调整,以便得到更精确的诊断依据。在数字图像处理中通过各种运算变换,可以突出强化出图像特征中需要的部分,提高医生的诊断 效率以及诊断准确率。 与一般意义上的图像处理比较,医学图像处理有其特殊性和不同的侧重点。自从显微镜问世以来,对医学图像的处理及分析就已成为医学研究中的重要方法,特别是X- CT、MRI、PET、SPECT 等新型成像技术和设备的问世,使得医学图像处理技术对医学研究及临床诊断的影响与日俱增,其结果使临床医生对人体内部病变部位的观察更直接、更清晰,确诊率也更高。计算机和医学图像处理技术作为这些成像技术的发展基础,带动着现代医学诊断正产生着深刻的变革。数字医学图像的计算机辅助诊断目前主要应用在乳腺癌的早期诊断、肺部疾病的诊断、心脏疾病和肝癌的诊断。各种新的医学成像方法在临床的应用,使医学诊断技术取得了巨大的进展。医学图像处理的基本步骤如图1.1: 图1.1 医学图像处理的基本步骤 第2章 图像分割技术 2.1图像分割的基本概念 图像分割是指将图像中的信息,根据某一特性将符合此特性的区域提取出来,从而进一步进行相关研究和处理的过程。医学图像分割就是按照解剖结构及医学治疗的意图,把医学图像的不同区域进行聚类,并提取出感兴趣的目标区域的技术和过程。通过对分割结果的定量分析和测量(如对人体器官、组织或病灶的体积测量等),可以为医师确定病情,制定相应的治疗 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 和方案提供依据。 2.2 图像分割的常用方式及特点 图像分割的方法有很多,主要可以分为三大类:人工分割,自动分割和交互式分割。人工分割是指完全由操作者利用鼠标等工具在图像中勾勒出感兴趣区 域的轮廓,人工分割耗时、枯燥、工作量大,而且对医生的经验和技术的要求也非常高。自动分割是指:利用计算机根据特定某种算法提取出相应的区域。特点是:不需要人机交互,适应性差,很难实现对一批图像同时获得满意的分割效果。交互式分割也可以称为半自动分割,是由用户给出图像中感兴趣区域的大致范围,并标记出目标区域中的典型像素,从而提供部分先验信息,然后分割算法再根据这些信息对图像进行分割。交互式分割的特点在于只要人工提供少量信息,就能适应不同的图像特性和需求,提高分割准确率,同时可以有效降低计算复杂度。 事实上,交互式分割与非交互式分割绝大多数在原理上没有本质区别,交互式操作往往在分割过程由人工参与,决定一些参数或者容许条件,而非交互式的算法则依照某种规律有算法自己确定。目前交互式分割算法由于其具有高精度、实用性较强等特点成为医学分割的重点。 2.3交互式分割的优点及研究意义 由于人体组织结构复杂、几何形态不规则,所以医学图像相比较其他图像而言,其携带的信息量大,并且对噪声非常敏感。正是由于这个特殊性,医学图像分割也就具有了其特殊的复杂性,从而成为近年图像分析中的热点和难点问题。早期的图像分割完全是靠手工完成的,完全人工分割费时费力,不能适应现代医学的发展要求,随着计算机技术的普及,自动分割方法被广泛应用,但是自动分割方法往往不能达到理想的分割效果,因此研究能尽可能降低人的工作量又能很好的融入人的主观经验的交互式分割算法成为近年来医学分割领域的研究重点。也就说明了在医学图像的分割过程中能够适时融入医师的主观经验的交互式分割方法在医学图像分割领域中具有不可替代的优势。 采用交互式图像分割方法与其他分割方法的不同之处在于:对图像实施 分割的过程中,操作者可对图像分割过程进行干预和控制,也就是说操作者和计算机协同完成图像的分割。这样,操作者的主观经验和知识与计算机的快速数据处理能力有机地结合起来。 可以说医学图像分割技术在医学临床诊断、病理分析、以及治疗计划制定等各个环节都起到重要作用。事实上,分割后的图像数据也为机体或组织器官的三维重建、医学治疗体系可视化、病情跟踪、医学教学及手术仿真,尤其为放射技术的发展也具有重要的意义。 第3章 基于VC++的数字图像处理技术 3.1 C++面向对象程序设计的技术优点 面向对象编程是一种计算机编程架构。面向对象程序设计可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。其基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。面向对象程序设计达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。 面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的 任务。在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。 这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。比较面向过程程序设计,面向对象程序设计有如下其他优点: 1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰 2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度; 3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程; 4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度; 5)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统; 6)通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。 3.2 MFC编程介绍 MFCMicrosoft?Foundation?Classes库是Microsoft为利用VC++开发windows应用程序而提供的应用程序框架。在这个框架的支持下,对于不同的应 用程序,编程的主要任务是填写各自特殊部分的代码。MFC类库由130多个类组成,封装了2000多个API函数。? MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制如创建,销毁,而是一些在Windows中实现内部处理的类,如数据库的管理类等. MFC是微软封装了的API。也就是说windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数API)对于程序员来说难度很大,因为,API函数实在太多了,而且名称很乱。MFC是面向对象程序设计与Application framework的完美结合,它将传统的API进行了分类封装,并且创建了程序的一般框架,大大简化了程序员的工作。 使用MFC编程具有很多优点:用类编程,将代码和数据封装在类中,大大减少了编程的复杂性;通过继承实现了基本的代码重用,在开发应用程序的过程中,我们可以通过继承来使用MFC中已经定义的大量类,在保有他们原有的特性的同时,可以根据我们的需要来修改他们,使其具有新的特性;在使用MFC进行编程的过程中,可以利用其提供的各种工具,提高编程的效率;借助MFC类库中设计良好的类资源可以减少代码规模。使用MFC类库,编程者只需要注意应用程序与通用的Windows程序所不同的特性,而几乎所有的应用程序与Windows之间的接口都是由应用程序框架来实现的,这大大降低了编程的难度。 Windows区别于DOS的一个重要特性就是它的图形界面,所以,在Windows的程序中绘图就成为了Windows编程的一个非常重要的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 。为了满足编程者在程序中绘图的需要,MFC提供了许多与绘图相关的函数和类,用户可以使用它们 绘制出各种理想的图形。 3.3 MFC编程在本研究中的应用 本研究使用的语言工具是Microsoft Studio VC++ 6.0,基本思想是利用MFC设计一个程序,使其能够打开并显示BMP图像,将图像数据保存到动态数组中,然后人工在图像中选取一些点作为感兴趣区域基准点,以这些点为顶点绘制不规则多边形,最后将感兴趣区域存储。此功能跟一般的画图工具很相似,不同的是由于MFC的特殊性,它可以动态地保存图像的数据并且可以随时调用。也就是说操作者可以对数组中的数据做任何需要的处理,如中值滤波,灰度化等等,但是在本研究中的重点是在图像中绘制图形。 同时利用 MFC框架编程可以对自己程序的界面进行设计,包括菜单项的关联,工具条的制定,按钮的设计等等。另外,在本研究中,笔者将很多基本函数和变量封装在了一个基类中,很多类都是由这个基类派生而来的,这样不仅让程序变得逻辑清楚,而且易于修改。也就是说,如果操作者需要再添加某些功能,或者说修改某一部分的代码,这都不会影响到程序本身。笔者后续的研究也将会在此基础上进行。 3.4 BMP图像格式介绍 在对图像进行数字处理之前,通常要先弄清楚图像的内部结构,从而可以调用图像中的数据进行相应的处理。这里主要介绍BMP图像,BMP是一种与硬件设备无关的图像文件格式,BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 BMP文件头: 主要包含BMP文件的大小、文件类型、图像数据偏离文件头的长度等信 息;其结构定义如下: typedef struct tagBITMAPFILEHEADER WORD bfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORD bfReserved1; // 位图文件保留字,必须为0 WORD bfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER;该结构占据14个字节。 位图信息头: 位图信息头包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息。 其结构定义如下: typedef struct tagBITMAPINFOHEADER DWORD biSize; // 本结构所占用字节数 LONG biWidth; // 位图的宽度,以像素为单位 LONG biHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的平面数不清,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1双色, 416色,8256色或24真彩色之一 DWORD biCompression; // 位图压缩类型,必须是 0不压缩,1BI_RLE8压缩类型或2BI_RLE4压缩类型之一 DWORD biSizeImage; // 位图的大小,以字节为单位 LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数 LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数 DWORD biClrImportant;// 位图显示过程中重要的颜色数 BITMAPINFOHEADER;该结构占据40个字节。 需要注意的是:对于BMP文件格式,在处理单色图像和真彩色图像的时候,无论图象数据多么庞大,都不对图象数据进行任何压缩处理,一般情况下,如果位图采用压缩格式,那么16色图像采用RLE4压缩算法,256色图像采用RLE8压缩算法。 颜色表: 颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。 RGBQUAD结构的定义如下: typedef struct tagRGBQUAD BYTErgbBlue;// 蓝色的亮度值范围为0-255 BYTErgbGreen; // 绿色的亮度值范围为0-255 BYTErgbRed; // 红色的亮度值范围为0-255 BYTErgbReserved;// 保留,必须为0 RGBQUAD; 颜色表中RGBQUAD结构数据的个数由BITMAPINFOHEADER 中的biBitCount项来确定,当biBitCount1,4,8时,分别有2,16,256个颜色表项,当 biBitCount24时,图像为真彩色,图像中每个像素的颜色用三个字节表示,分别对应R、G、B值,图像文件没有颜色表项。位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[1]; // 颜色表 BITMAPINFO; 需要注意的是:RGBQUAD数据结构中,增加了一个保留字段rgbReserved,它不代表任何颜色,必须取固定的值为0,同时, RGBQUAD结构中定义的颜色值中,红色、绿色和蓝色的排列顺序与一般真彩色图像文件的颜色数据排列顺序恰好相反,即:若某个位图中的一个像素点的颜色的描述为00,00,ff,00,则表示该点为红色,而不是蓝色。 位图数据 位图数据记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序在扫描行内是从左到右,扫描行之间是从下到上。这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式。位图的一个像素值所占的字节数:当biBitCount1时,8个像素占1个字节;当biBitCount4时,2个像素占1个字节;当 biBitCount8时,1个像素占1个字节;当biBitCount24时,1个像素占3个字节,此时图像为真彩色图像。当图像不是为真彩色时,图像文件中包含颜色表,位图的数据表示对应像素点在颜色表中相应的索引值,当为真彩色时,每一个像素用三个字节表示图像相应像素点彩色值,每个字节分别对应R、G、B分量 的值,这时候图像文件中没有颜色表。需要注意的是:图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。 图像文件中一个扫描行所占的字节数计算方法: DataSizePerLine biWidth* biBitCount+31/8;// 一个扫描行所占的字节数 位图数据的大小按下式计算不压缩情况下: DataSize DataSizePerLine* biHeight。 了解了BMP内部的文件结构之后,就可以对BMP文件做任何需要的处理了。 3.5 CDIB类的封装介绍 在MFC中不提供对于DIB的支持,为了方便复用,这里设计了一个DIB类。这个类的主要作用有:构造DIB:包括从文件中和从DDB中构造DIB;处理DIB:包括得到像素组、图像尺寸及取得调色板等功能;显示DIB:包括将DIB在相应的DC上等尺寸输出或缩放输出。基于上述功能,设计并完成了这个类,下面是这个类的声明,它位于Dib.h中。 // Dib.h: interface for the CDib class. #if !definedAFX_DIB_H__D5E53EE7_EBE9_4223_AC5B_E216AF8B8560__INCL UDED_ #define AFX_DIB_H__D5E53EE7_EBE9_4223_AC5B_E216AF8B8560__INCLUDED_ #if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000 #ifndef _CDIB_H #define _CDIB_H class CDib : public CObject DECLEARE_DYNAMICCDib;//DIB句柄 public: void CDib::Saveconst char *pszDibFileName, CPoint Origin, CPoint End;int CDib::DrawHDC hdc, CPoint origin, CSize size; BYTE GetBitCount;//获取颜色位数 void ClearMemory;//释放内存 CDib;//构造函数 CDibconst char *pszDibFileName;//重载构造函数 virtual ~CDib;//析构函数 DWORD GetDibWidthBytesint nWidth,BYTE byBitCount;//获取每行的宽度, 以字节为单位 DWORD GetSize;//获取图像数据缓冲区的字节数 LONG GetWidth;//获取位图宽度 LONG GetHeight;//获取位图高度 UINT GetColorNumber;//获取颜色总数 char* GetFileName;//获取文件名 BOOL IsValid;//判断装载是否成功 RGBQUAD* GetRGBQuad;//获取颜色表项RGBQUAD BYTE* GetDibData;//获取图像数据 BITMAPINFO* GetBmpInfo;//获取BITMAPINFO信息 BYTE m_nBitCount;// 颜色位数 LPBITMAPINFOHEADER m_lpBMIH; DWORD m_dwSizeImage; LPVOID m_lpvColorTable; int m_nColorTableEntries;//这张图像实际使用的色彩数 LPBYTE m_lpImage;//指向DIB位的指针,这些位的值按字节类型数组存储 protected: HPALETTE CreateBitmapPalatte;//创建位图调色盘 void LoadFileconst char *pszDibFileName;//将位图文件的数据从硬盘载 入内存中 BOOL m_bValid;//表示装载位图的过程是否成功 RGBQUAD *m_pRGBQuad;//为指向颜色表项的指针 BYTE *m_pDibData;//指向位数据的指针 LONG m_nWidth;//图像宽度 LONG m_nHeight;//图像高度 UINT m_nTotalColors;//颜色总数 char *m_pszFileName;//文件名(含路径) BITMAPFILEHEADER *m_pBitmapFileHeader;//指向位图头文件的指针 BITMAPINFOHEADER *m_pBitmapInfoHeader;//指向信息头的指针 BITMAPINFO *m_pBitmapInfo;//指向BITMAPINFO的指针 HGLOBAL m_hDIB;//内存管理句柄 private: void ComputePaletteSizeint nBitCount; void ComputeMetrics; void Init;//成员变量初始化 ; #endif #endif // !definedAFX_DIB_H__D5E53EE7_EBE9_4223_AC5B_E216AF8B8560__INCLUDED_ 在定义好这些函数之后,再写入相应的构造函数,就完成了这个类的封装。有了这个类,再处理DIB相关的问题就简单多了。 第4章 基于多边形绘制的交互感兴趣区域的选择和分割 4.1 C++图形绘制的技术要点 图形与图像两个概念间的区别很容易被混淆,图像纯指计算机内以位图形式存在的灰度信息,而图形含有几何属性,或者说更强调场景的几何表示,是由场景的几何模型和景物的物理属性共同组成的。研究计算机图形学主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图像的方式提供的,也就是说计算机图形学和图像处理有着密切的关系。 4.2多边形图形绘制技术 在对医学图像进行交互式分割时,由于医学图像的特殊性,往往感兴趣区域是不规则的,所以多边形图形的绘制技术成为了一个关键点。多边形的实质就是一个由多条边组成的有一定规则的图形,比如三角形就是由三条边组成,我们要画多边形就需要知道多边形几个顶点的坐标值,然后逐个从一个顶点到下一个顶点话一条直线,直到形成一个封闭曲线。要想对这个多边形进行处理,则需要将这些顶点的坐标值储存在一个动态数组中,以便程序随时调用。 4.3使用C++打开BMP图像介绍 使用C++处理BMP图像的第一步则是打开并显示BMP图像。根据C++的消息处理机制,可以将打开显示文件流程总结如图4.1: 图4.1 打开并显示BMP图像流程 该流程可以解释为:首先需要利用Class Wizard建立打开文件的消息处理函数,本研究中采用的是与“打开”菜单项相关联;然后需要建立类CFileDialog的对象,以获取该bmp的文件路径;接着建立类CFile对象,读取bmp文件内容,即获得文件头,信息头,调色板数据及图像数据组。当然本程序也添加了判断是否为bmp文件等查错程序。最后通过CDC类从图像数据数组中取图像数据显示。则完成了BMP数据的打开与显示。 4.4使用C++显示BMP图像介绍 将源设备环境区域中的像素传送到目标设备环境的过程叫做显示。在MFC中,具有显示功能的函数有很多。了解了函数的功能和参数,便能按照需求调用函数了。本研究使用的是StretchDIBits。此函数原型为: int StretchDIBitsHDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop; 参数为: hdc:指向目标设备环境的句柄。 XDest:指定目标矩形左上角位置的X轴坐标,按逻辑单位来表示坐标。 YDest:指定目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。 nDestWidth:指定目标矩形的宽度。 nDestHeight:指定目标矩形的高度。 XSrc:指定DIB中源矩形(左上角)的X轴坐标,坐标以像素点表示。 YSrc:指定DIB中源矩形(左上角)的Y轴坐标,坐标以像素点表示。 nSrcWidth:按像素点指定DIB中源矩形的宽度。 nSrcHeight:按像素点指定DIB中源矩形的高度。 lpBits:指向DIB位的指针,这些位的值按字节类型数组存储,有关更多的信息,参考下面的备注一节。 lpBitsInfo:指向BITMAPINFO结构的指针,该结构包含有关DIB方面的信息。 iUsage:表示是否提供了BITMAPINFO结构中的成员bmiColors,如果提供了,那么该bmiColors是否包含了明确的RGB值或索引。参数iUsage必须取下列值,这些值的含义如下: DIB_PAL_COLOR:表示该数组包含对源设备环境的逻辑调色板进行索引的16位索引值。 DIB_RGB_COLORS:表示该颜色表包含原义的KGB值,若想了解更多的信息,请参考下面备注一节。 dwRop:指定源像素点、目标设备环境的当前刷子和目标像素点是如何组合形 成新的图像。若想了解更多信息,请参考下面的备注一节。 返回值:如果函数执行成功,那么返回值是拷贝的扫描线数目,如果函数执行 失败,那么返回值是GDI_ERROR。 本研究中所使用的代码为: StretchDIBitspDC-m_hDC,pt.x, pt.y, m_nWidth, m_nHeight, 0, 0, m_nWidth, m_nHeight, pDib-m_lpImage,LPBITMAPINFO pDib-m_lpBMIH,DIB_RGB_COLORS, SRCCOPY; 4.5感兴趣区域图像的分割 本研究旨在将人工选择的不规则多边形感兴趣区域以BMP格式保存下来, 由于时间关系,现在完成了先将不规则多边形的外接矩形找出来,然后将外接矩 形保存为BMP位图。这样所保存的区域中也包含了所有感兴趣的区域,同样达到 了分割的要求。对于不规则多边形数据的存储,笔者会做进一步的研究。 寻找不规则多边形区域的外接矩形的基本思想是,利用排序的方法,找到 多边形所有顶点中的横坐标最大、最小的点,纵坐标最大、最小的点,也就是得到 了外接矩形的起始点和终止点,就可以绘制出外接矩形了。在本研究中使用的寻 找最小点、最大点的核心代码如下: m_MinPointm_Pointm_PointList-GetAt0;// 多边形的顶点的坐标保存在 m_PointList中 for i0;im_PointList-GetSize;i++//循环比较各个x、y的值,得到最大、 最小的x、y的值 m_MinPoint.xminm_MinPoint.x,m_PointList-GetAti.x; m_MinPoint.yminm_MinPoint.y,m_PointList-GetAti.y; m_Point.xm_Point.x,m_PointList-GetAti.x; m_Point.ym_Point.y,m_PointList-GetAti.y; 4.6感兴趣区域图像的保存 图像数据的保存和图像数据的打开可以说是一个逆过程,打开图像时需要将图像的像素值一个一个提取出来,而保存图像时则是将图像的像素值按照顺序一个一个写进去。所以,存储之前需要先建立好文件头,信息头,然后将数据按照规则存储进去。当然,了解BMP文件中像素值的表示规律非常重要,假设内存中位图数据的指针为m_pBMPbuf,一行像素所占的字节数位lineByte4的倍数,那么,对于灰度图像,第i行第j列的像素指针(所在的存储空间位置)为:m_pBMPbuf+i*lineByte+j,该像素的灰度值为:* m_pBMPbuf i*lineByte+j,根据这个规则就可以编写保存代码,在本研究中使用的代码如下: forj0;jbmInfo.biHeight;j++// bmInfo.biHeight为图像的高度 fori0;ibmInfo.biWidth;i++// bmInfo.biWidth为图像的宽度 lpbit[bmInfo.biHeight-1-j*liByte+i]*m_lpImage+lineByte*m_nHeight- 1-Origin.y+j+Origin.x+i; 第5章 实验结果及总结 5.1 实验方案 本研究的实验方案为:先完成BMP图像的打开及保存,然后完成矩形及不 规则多边形的绘制,然后完成基于矩形绘制的感兴趣区域分割及保存,最后完成不规则多边形图形绘制的最大外接矩形区域的分割及保存。 本实验所使用的程序语言为Microsoft Visual studio c++ 6.0,运行环境为Windows 2000、Windows XP或Windows NT4.0。 5.2 实验结果 根据以上的实验方案,顺利得到了实验结果,图5.1是打开并显示的原图像,图5.2是在图像上绘制不规则多边形的结果,图5.3是求得不规则多边形的外接矩形的结果,图5.4是保存多边形外接矩形部分的结果。该实验结果基本达到了本设计的要求和目的。 第6章 总结及展望 本文查阅了大量文献资料,对于图像分割、基于Visual c++的数字图像处理、BMP图像的内部格式等进行了详细的阐述。本文通过对计算机图像学的深入了解,结合数字图像处理进行了研究,总的来说完成了以下工作: 了解计算机图形学的原理,利用C++绘制简单的图形,如:直线、矩形、多边形等; 完成了打开显示并保存BMP图像的编程; 将图像与图形代码融合,完成人机交互过程; 对感兴趣区域的分割、扫描以及保存 本研究旨在完成对医学图像进行交互式分割,提取出感兴趣区域进行进一步研究,以助于临床的诊断和治疗。通过以上的研究与实验,可以发现图像信息的正确性对于医学诊断与治疗的有着十分重大的影响,图像分割也是进行三维重 建的基础,分割的效果直接影响到三维重建后模型的精确性,分割可以帮助医生将感兴趣的物体病变组织等提取出来,帮助医生能够对病变组织进行定性及定量的分析,从而提高医生诊断的准确性和科学性。所以如何正确有效利用人机交互对图像进行分割将会是一个重点研究方向。 由于时间的关系,本研究暂时只能完成对多边形外接矩形数据的存储,对多边形内部数据的存储笔者将在后续的研究中进行。后续的研究可以从以下几个方面开展: 如何将不规则多边形区域的数据保存; 如何在已选择的多边形基础上修改此多边形区域; 如何绘制其他不规则的感兴趣区域; 其他不规则感兴趣区域的数据保存和修改等; 当然,医学图像处理技术发展至今,各个学科的交叉渗透已是发展的必然趋势,其中还有很多亟待解决的问题。有效地提高医学图像处理技术的水平,与多学科理论的交叉融合、医务人员和理论技术人员之间的交流就显得越来越重要。 总之,医学图像作为提升现代医疗诊断水平的有力依据,使实施风险低、创伤性小的化疗、手术方案成为可能,必将在医药信息研究领域受到更多的关注。 致 谢 本论文最终能顺利完成,首先应感谢陈老师自始至终给予的关心和指导。无论是在论文选题、开题、写作阶段还是在项目的实践过程中,陈老师都加以悉心的指导。同时陈老师严谨的治学作风和求实的工作态度也深深地影响着我。 也忠心感谢各位专业老师,在我本科生阶段,无论是精神上还是学习上给我提供的巨大支持,使我顺利完成了学业。 在论文的写作过程中,很多同学为我提供了很多帮助,值此机会向他们表示诚挚的谢意。 本论文的写作参考、引用了很多书籍及文献,在此向这些文章的作者表示真诚的谢意。 感谢在百忙之中抽出时间、精心审阅本论文的各位专家、学者! 感谢我的父母和亲人,正是有了他们的关心和支持,我的学业才得以顺利完成。 最后,再次感谢所有指导和关心我的老师、亲人、同学和朋友! 参 考 文 献 [1] 张瑞兰,华晶,安巍力,刘迎九.数字图像处理在医学影像方面的应用.医学信息上旬刊.2006,3. [2] 黄晓山.数字图像处理及其在医学上的应用.2009年浙江省医学工程学术年会论文汇编.2009. [3] 王爱民,沈兰荪.图像分割研究综述.测控技术,2000,19(5):4-5. [4] 杨旭,医学CT序列图像交互式分割方法的研究与实现, 硕士毕业论文.2011年6月. [5] 张志宏.医学图像处理技术概述.长治学院学报,2009,4,26 2. [6] 吴 琳,李海燕.面向生物医学图像的交互式分割算法.图形图像处理.2010,8,3616. [7] 陈浩,李本富. 医学图像处理技术新进展.第四军医大学学报.2004,3,25(5). [8] 尧德中,李永杰,周山宏. 生物医学中的信息技术[J]. 电子科技大学学 报(社科版),2001;3(2):3-9. [9] 左飞,万晋森,刘航.数字图像处理.电子工业出版社.2011,04:135-138.
本文档为【基于多边形图形绘制的医学图像交互式分割方法研究与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_105949
暂无简介~
格式:doc
大小:55KB
软件:Word
页数:0
分类:工学
上传时间:2017-11-12
浏览量:22