毕业设计(论文)-岩石显微薄片图像分割工具的设计与实现.doc_第1页
毕业设计(论文)-岩石显微薄片图像分割工具的设计与实现.doc_第2页
毕业设计(论文)-岩石显微薄片图像分割工具的设计与实现.doc_第3页
毕业设计(论文)-岩石显微薄片图像分割工具的设计与实现.doc_第4页
毕业设计(论文)-岩石显微薄片图像分割工具的设计与实现.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

盐城师范学院毕业设计盐 城 师 范 学 院 毕业设计岩石显微薄片图像分割工具的设计与实现 学生姓名 学 院 信息工程学院 专 业 计算机科学与技术 班 级 12(2) 学 号 指导教师 2016年5月16日岩石显微薄片图像分割工具的设计与实现摘 要图像分割是图像处理中的一类重要问题,在商业、医疗以及刑侦等方面都有着十分重要的应用意义。目前已存在多种可被实际应用的图像分割工具。然而,经过深入研究后我们发现,这些工具不能够对灰度值不均匀的图像进行很好的分割。对于岩石显微薄片的有效分割能够为地质勘查人员与作业施工人员提供准确、清晰的数据信息,从而为后期的勘查与施工提供有利保障。鉴于岩石显微薄片的图像一般具有边界模糊、颜色差异小等特征。从而导致已有的图像分割工具不能够被有效使用。本文对阈值分割、区域分割以及边缘分割等算法进行了深入分析,并结合这些算法实现出了能够有效处理岩石显微薄片的图像分割工具。实验表明,该工具在岩石显微薄片的处理方面较之已有的工具在分割效果上有较大的性能提升。【关键词】图像分割;岩石显微薄片;Python全套设计加扣 3012250582Design and implementation of rock micro slice image segmentation toolAbstract Image segmentation is one of the most important problems in image processing, commercial, medical and criminal investigation is very important. There have been several practical applications of image segmentation tool. However, after extensive research we discovered that these tools are not able to uneven grayscale values good segmentation of images. For a micro-thin slices of rock segment to the geological survey personnel and construction personnel to provide accurate and clear information, which provides favorable guarantees for later exploration and construction. View images of microscopic flakes of rock generally have fuzzy boundaries, small color differences and so on. Resulting image segmentation tools already in place cannot be used effectively. This article on threshold segmentation, segmentation, as well as in-depth analysis of the edge segmentation algorithm, and the algorithm of image segmentation tools to deal effectively with micro-thin slices of rock. Experiments show that the tool in the treatment of micro-thin slices of rock over the existing tools in effect a greater performance improvements.Key words Image segmentation; rock micro slice; Python目录引言12 工具相关技术介绍22.1 Python语言介绍22.2 wxPython图形库介绍22.3 图像分割的介绍22.3.1 图像分割的原理22.3.2 图像分割方法的分类22.4 本章小结43 需求分析与概要设计43.1 需求分析43.2 性能分析43.3 概要设计53.4 本章小结64 详细设计74.1 流程设计74.2 本章小结85 具体实现85.1界面设计实现85.1.1 界面布局实现85.1.2 工具栏实现95.1.3 工具相关信息展示实现105.1.4 图像相关信息显示实现115.2 功能设计实现125.2.1 图像导入与输出实现125.2.2 图像预处理功能实现135.2.3 图像分割处理功能实现145.2.4 缩略图浏览功能实现155.3 本章小结166 测试及结果分析176.1 功能测试176.2 本章小结187 总结和展望18参考文献20致 谢22引言对岩石显微薄片的图像分割处理为识别岩性、评价储集层、显示落实等地质勘探方面提供了准确的数据信息,不仅能够满足观察岩石与烃类的需求,而且能够清晰地显示出储集层中烃类物质的存在方式以及储集层的空间微观结构特点,揭示岩石显微薄片中的岩石构造、结构、次生缝洞与油气分布之间的关系 ,为油气层的准确识别提供了可靠保证1。虽然目前已经存在了一些能够被实际应用的图像分割工具如ImageJ2,然而通过深入研究我们发现,这些图像分割工具对于噪声污染大、目标灰度值不均匀、边界模糊的图像分割效果不明显,因而,现有的图像分割工具不能为地质勘探与作业施工人员提供准确且较为详细的数据信息保障,更不能为后续的图像分析提供有效的关键数据信息。 目前已经存在多种类型的图像分割算法,理论分析表明,这其中的一些例如梯度下降3、阈值分割4、区域分割5以及边缘分割6 等算法能够对具有目标灰度值不均匀以及边界模糊特征的图像进行很好的特征提取,本文通过对这几类算法进行深入研究,并利用Python语言实现出了集成这些优秀算法的图像分割工具。工具中包含图像导入与输出功能,该功能能够对岩石显微薄片图像的导入以及图像分割处理后结果的输出;图像预处理功能,可以对载入的图像根据算法的要求进行预处理,如:改变图像色彩模式;图像信息显示功能,对载入的图像显示其相关信息,如:高、宽、图像像素信息;图像分割处理功能,此功能为核心功能,其中包含了Laplacian7、Watershed8、Slic9等算法,用户可以对预处理后的岩石显微薄片图像自由的选择核心算法进行分割,以达到最优的分割效果;此外,本工具中还包括缩略图浏览功能,能够将上一次图像分割处理后的图像以缩略图形式显示,从而可以为用户提供两次分割后图像的直观比较。本文所实现的针对岩石显微薄片的分割工具在岩石图像分割效果方面明显优于之前已有的图像分割工具,从而能够为地质勘查人员与作业施工人员提供准确、清晰的数据信息,同时为后期的勘查与施工提供有利保障。本文的后续组织结构如下:第2章, 简要说明了岩石显微薄片图像分割工具详细研究过程中所涉及的相关技术。第3章, 阐述了岩石显微薄片图像分割工具的需求分析,软件的性能分析和概要设计。第4章, 阐述了岩石显微薄片图像分割工具的详细设计,包括各功能的详细设计。第5章, 阐述了岩石显微薄片图像分割工具的具体实现,并说明各功能的作用,附带代码截图做详细说明。第6章, 进行岩石显微薄片图像分割工具测试及结果分析。第7章, 总结岩石显微薄片图像分割工具的设计研究,并未下一步研究提出方向。2 工具相关技术介绍2.1 Python语言介绍Python是一种脚本语言,由于其语法简洁清晰,使用者能够快速上手,深得科研人员和编程爱好者的喜欢。Python具有丰富且标准的库、数据结构、友好的转义等特性,因此能够直接调用其他不同的语言封装处理后的模块。常见的使用情形就是,利用Python快速搭建原型,如果对其中某一块内容不满意,例如对性能要求比较高,则可以直接使用C/C+这种对性能提高比较好的语言重写,然后封装为python可以直接调用的扩展模块。2.2 wxPython图形库介绍wxPython是使用Python编写的一套GUI图形库,能够让使用者很方便的创建功能完善的图形界面。由于wxPython是使用Python编写的,所有具有很好的跨平台性和易使用性,能够很好的运行在不同的操作系统平台下,极大的方便不同环境的使用者。2.3 图像分割的介绍2.3.1 图像分割的原理图像分割的原理是指根据图像中的一些基本特征把图像划分成若干且互不重合干扰的区域,将人们所需要的部分从被分割的图像中提取出来,并使这些基本特征在同一个区域内呈现出相关联系性,而在不同区域之间呈现出明显的差异区别性10。图像分割处理后,方便了后面进行的相关处理过程,如图像分析等所要处理的数据量大大减少,同时保留了原图像的结构特征。2.3.2 图像分割方法的分类这里就当前常见的图像分割方法进行介绍:1)阈值分割 阈值分割方法是一种传统的较为常见的区域并行技术11,其原理是:将要分割的图像中每个像素的灰度值与预先设定的特征阈值进行比较,根据比较结果将图像的像素划分到对应的类别之中。由于直接利用图像的灰度值特征,因而具有实现技术比较简单、计算方式方便快捷、实用性较强等特点,从而成为图像分割方法中最基础和应用最普遍的分割技术12。但是,阈值的合适选取是此方法重点和难点,所以可以处理一些简单的图像,如二值图像,但是在处理前要进行去噪处理。2)区域分割 区域分割方法是设定同一区域中的图像像素存在相似特点。此类常见的算法的有区域生长分割、区域分裂合并分割13。区域生长是一种串行区域技术,原理就是将具有相似性值得像素集合起来构成区域。它的特点是计算方式的复杂度较低、运行计算的速度快。但是,此分割方法存在两方面的重点与难点:一是种子像素的选择,不同的种子像素将会得到不同的分割效果;二是事先确定的准则的设置,即如何判断相似性,由于这两点因素的存在,当要分割处理的图像目标比较大时,其图像分割处理的速度就会随之变慢,应尽量提高运行效率。区域分裂合并是与区域生长完全相反的一种图像分割方法,它是把要被分割的图像分成随意大小且并不重合干扰的区域,按照事先约定的准则,分裂得到各个子区域,然后将分裂后所得到的各个子区域按照准则再进行合并以满足预期分割的要求。因此对于复杂图像的分割效果比较好。因此,这种方法的关键是分裂合并前事先约定的准则。事先准则设定的好坏直接影响着分割的效果。并且由于其算法的计算方式比较复杂庞大,计算运行算的量大,后果很有可能会破坏区域的边界。3)边缘分割 边缘分割方法是检测要分割的图像中对象与背景间的交界线14。同时这种边界线的不连续性就是边缘。边缘分割较常用的方法就是用梯度算子来实现边缘检测,常用模板卷积来实现近似计算15。边缘分割具有运算速度快等特点。4)特定理论 由于图像分割至今尚无通用的普适的一般性的自身理论。因此随着不同学科的发展变化,出现了许多图像分割方法与不同学科的方法或特定理论进行连接对比然后分析处理相结合的方法。聚类分析方法是将要被分割图像的空间中的像素灰度等性质,映射到根据预先设定的一些固定规则划分的几个区域的特征空间点,然后再根据它们在特征空间的聚集对特征空间进行分割,判定其所属的区域,并加以标记,之后再将加以标记的空间信息内容映射回原来的图像空间之中,最后得到分割结果。目前较常用的聚类方法是FCM(模糊C均值)算法和K均值算法。二进小波变换能够将要分割图像的边缘检测出来,与之相对应的就是二进小波变换中的模极大值点。通过此点可以确定图像边缘的小波变换位于那个尺度上,由于每个尺度上的小波变换能够提供图像边缘的空间信息,从而达到图像分割的效果。2.4 本章小结本章论述了基于Python语言和wxPython图像库构建的岩石显微薄片图像分割工具的一些关键技术。描述了基于Python语言和wxPython图像库的技术选型的特点和优越性,并且简单介绍了图像分割算法领域的相关知识。3 需求分析与概要设计3.1 需求分析本课题是一个基于Python的针对岩石显微薄片的图像分割工具,该工具主要实现了图像预处理、图像信息显示、图像分割处理、缩略图浏览等功能模块的设计实现。本课题的总体目标是图像分割,即为岩石显微薄片提供图像分割的功能,并提供缩略图浏览,能够将上次分割效果与本次分割效果进行直观对比。对此课题进行分析,分析如下:1)图像导入与输出功能对岩石显微薄片图像的导入以及图像分割处理后结果的输出2)图像预处理功能对载入的图像根据算法的要求进行预处理,如:改变图像色彩模式3)图像信息显示功能对载入的图像显示其相关信息,如:高、宽、图像像素信息4)图像分割处理功能此功能为核心功能,对预处理后的岩石显微薄片图像进行分割5)缩略图浏览功能将上一次图像分割处理后的图像以缩略图形式显示,从而可以与本次图像分割后的图像有直观的比较6)工具相关信息显示功能显示岩石显微薄片图像分割工具的介绍、版本号、作者等相关信息3.2 性能分析为了保证该工具的易操作性以及可靠安全性,在岩石显微薄片图像分割工具的设计过程中,应尽量保证技术不落后且易于后期可持续扩充升级,保障工具能够有高效可靠的运行环境平台,保障该工具在运行过程中的稳定可靠安全。除了上述提出的一些具体的目标要求,还要全盘考虑到下面在具体设计过程中有可能遇到的一些要求设计:保证岩石显微薄片图像分割工具的稳定运行及可靠性,并尽可能实现跨平台运行,并且能够处理像素比较高的图像,并且图像分割处理过程的时间不能太慢,要在尽可能接受的时间之内。总体来说,不可以单单的认为不经过设计和性能分析就可以把工具做到完善,而是应该从整个岩石显微薄片图像分割工具的整体上进行考虑,把整个需求分析归入到整个岩石显微薄片图像分割工具的生命周期之中。一般而言,应该从功能性和非功能性两个方面进行通盘的全面深刻考虑,在非功能性需求分析之中还应该考虑到具体的界面布局、操作环境、性能稳定高效等方面的因素,通过有效的界面、操作、性能的分析,最后达到工具具有比较高的美观、易用、稳定性的设计目标。对于开发者而言,实现该工具的高性能是矢志不渝的追求。但是工具最后的性能能够达到什么样的显示效果,是无法确定的,从而导致整个工具的生命周期的后期维护阶段变得非常麻烦。由于该岩石显微薄片图像分割工具具有较强的针对性,专业人员使用的频率较高。所以,要追求安全高效稳定性、便携移动可靠性、稳定操作无误性。图像载入速度不超过7秒;图像处理速度不超过5秒;其他需求。3.3 概要设计根据以上对岩石显微薄片图像分割工具的需求分析,得出了基于岩石显微薄片图形分割工具的总体结构图,如图3-1所示:图3-1 岩石显微薄片图像分割工具概要设计界面设计包含了工具栏设计、界面布局设计、工具相关信息展示和图像信息显示等功能。当用户进入岩石显微薄片图像分割工具后,首先会看到工具的整体布局,包含工具栏、图像显示、图像相关信息显示以及缩略图浏览。功能设计包括图像导入与输出、图像预处理、图像分割处理和缩略图浏览等功能。用户导入岩石显微薄片图像后,会先显示原图像,在选择某个具体的图像分割算法后,会先经过该算法的预先处理的细节部分,处理完成后再进行对该图像的具体分割处理,最后显示某一具体算法分割处理后的图像。在选择另一种图像分割算法后,上一次处理的图像会以缩略图的形式显示在一侧,可供使用者对比不同分割算法的效果。3.4 本章小结本章对岩石显微薄片图像分割工具中的基本功能进行了系统性地分析,分析了岩石显微薄片图像分割工具的性能要求,按照结构化的分析方法绘制了岩石显微薄片图像分割工具的结构图,并在此基础之上将岩石显微薄片图像分割工具划分为八大功能能模块,为岩石显微薄片的设计与实现奠定了基础。4 详细设计4.1 流程设计根据第三章中对岩石显微薄片的需求分析,得出了详细分割处理过程的设计流程图,如图4-1所示:图4-1 岩石显微薄片图像分割工具流程图整个工具的流程包括岩石显微薄片图像导入与输出功能,图像相关信息显示功能,图像预处理功能,图像分割功能和缩略图浏览功能。具体每个功能的设计如下:1) 图像导入与输出功能。当用户使用该工具的时候,要导入需要处理的岩石显微薄片。当用户处理完岩石显微薄片图像,形成图像分割处理之后的图像时,可以方便用户导出图片另作他用。2) 图像相关信息显示功能。当用户导入岩石显微薄片图像后,工具将会展示了关于将要被分割处理的图像的相关信息,以便让用户能够更好的了解图像的属性。3) 图像预处理功能,该功能是应对用户采取不同的图像分割算法而对岩石显微薄片采取的必要措施。4) 图像分割功能,该功能是本工具的的核心功能,涵盖了阈值分割、区域分割、边缘分割等常见图像分割算法,以及分割效果相对较的超像素分割算法,可用用户随意选择,采取合适的算法应对不同的岩石显微薄片。5) 缩略图浏览功能,该功能是为了方便用户在采取不同的图像分割算法后,将上一次图像分割后的结果以缩略图形式展现,能够让用户有最直观的感受,明显了解那种算法最适合当前岩石显微薄片图像。4.2 本章小结本章根据第三章对岩石显微薄片的需求分析,对岩石显微薄片图像分割工具进行详细设计,将岩石显微薄片图像分割工具分为几个模块,将这几个模块按使用流程进行了模块设计,并利用Python语言进行开发,实现易于wxPython图像库的岩石显微薄片图像分割工具。5 具体实现5.1界面设计实现5.1.1 界面布局实现为了使用户能够易上手操作,界面布局分为四个部分:工具栏、岩石显微薄片图像显示、岩石显微薄片图像信息显示和岩石显微薄片图像缩略图浏览。主要具体实现的代码如下面的代码段1所示:/代码段1class MyFrame(wx.Frame): def _init_(self): self.panel = wx.Panel(self, -1) / 设置一个全局Panel self.ImgShow = wx.StaticBitmap(self.panel, -1)/设置图像显示的StaticBitmapif _name_ = _main_: frame.Show(True) / 设定显示框架 app.MainLoop() / 显示主体框架界面布局采用wxPython框架,分为三个主要部分,分别是菜单栏,左侧图片显示部分以及右侧图片信息展示和缩略图预览部分。实现界面如图5-1所示:图5-1 工具界面布局实现5.1.2 工具栏实现工具栏部分包括了图像的输入与输出,图像分割算法的选择以及该工具的相关信息显示。主要具体实现的代码如下面的代码段2所示:/代码段2def createmenubarfun(self): menubar = wx.MenuBar() / 创建MenuBar 菜单对象 menu1 = wx.Menu() / 创建Menu对象 openmenu = menu1.Append(wx.NewId(), &Open, ) / 为menu1实例化对象 self.Bind(wx.EVT_MENU, self.openmenufun, openmenu) / 设定openmenu的类型是EVT_MENU,并且绑定对应的函数openmenufun savemenu = menu1.Append(wx.NewId(), &Save, ) self.Bind(wx.EVT_MENU, self.savemenufun, savemenu) menu1.AppendSeparator() / 添加分隔符 self.SetMenuBar(menubar) 根据wxPython框架提供的MenuBar类,创建该类对象,同时创建Menu类型的对象,并为其赋值进行实例化和绑定触发事件函数,随后将创建好的Menu对象添加到MenuBar对象之中,这样就完成了对工具栏的实现。实现界面如图5-2所示:图5-2 工具栏实现5.1.3 工具相关信息展示实现该功能主要是显示岩石显微薄片工具的介绍、版本号、制作信息等内容。主要具体实现的代码如下面的代码段3所示:/代码段3def onaboutboxfun(self, event): description = This software uses python language production, including a third-party open source library OpenCV. Software functionality is to show some image segmentation technology, including Canny, Watershed other classic algorithms. Of which there are relatively new SLIC algorithm. / 对该工具的描述 info = wx.AboutDialogInfo() / 信息弹出框 info.SetVersion(3.0) / 设置版本号 info.SetDescription(description) / 设置描述 info.SetLicence(licence) / 设置licence info.AddDeveloper(TC XJ WMJ) / 设置开发者信息 info.AddDocWriter(TC XJ WMJ) / 设置文档编写者 wx.AboutBox(info) / 将info对象添加到AboutBox中根据wxPython框架所提供的AboutDialogInfo类,针对该类中的成员方法进行赋值,可以设置版本号、工具简要描述、licence、开发者信息和文档编写者,完成对工具相关信息展示的实现。实现界面如图5-3所示:图5-3 工具相关信息展示实现5.1.4 图像相关信息显示实现该功能主要是为了方便用户了解图像的相关信息,主要具体实现的代码如下面的代码段4所示:/代码段4self.widthname = wx.StaticText(self.panel, -1, Width, pos=(700, 45) / 设置字段显示self.widthtext = wx.TextCtrl(self.panel, -1, , pos=(750, 40), size=(70, 25) / 设置字段文本框对StaticText静态文本和TextCtrl文本框的设置,然后根据载入的岩石显微薄片图像得到的详细信息,显示在对应的文本框中,实现岩石显微薄片的相关信息显示。实现界面如图所示:图5-4 图像相关信息展示实现5.2 功能设计实现5.2.1 图像导入与输出实现该功能是为了方便用户可以直接的导入岩石显微薄片图像以及输出岩石显微薄片图像分割处理后的图像.实现界面如图5-5,5-6所示:图5-5 图像导入实现图5-6 图像输出实现5.2.2 图像预处理功能实现由于岩石显微薄片图像分割工具的核心功能是图像分割,而不同的图像分割算法要对图像进行不同的程度的预处理,方便后期的图像分割。对于Canny算法的图像预处理是先定义矩形结构元算,随后对图像进行开运算去噪处理,接着是对去噪后的图像进行轮廓绘制,便于后期的图像分割处理。对于分水岭算法的图像预处理,首先要将图像转换成灰度图,随后进行开运算对图像进行去噪处理,然后对其进行膨胀运算增加前景色,接着进行距离变换处理,阈值处理得到前景色区域,再进行比较得到未划分区域,之后再创建标签笔记每一个元素的值,如果是背景则标记为0,其他的对象使用从1开始的正整数标记。主要具体实现的代码如下面的代码段5所示:/代码段5/- canny算法的预处理-kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7) / 定义矩形结构元素closed = cv2.morphologyEx(edged, cv2.MORPH_CLOSE, kernel) / 开运算cv2.drawContours(img, contours, -1, (0, 0, 255), 1) / 绘制轮廓/- watershed(分水岭)算法的预处理-/ 简单阈值kernel = np.ones(3, 3), np.uint8)opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2) / 开运算sure_bg = cv2.dilate(opening, kernel, iterations=3) / 膨胀运算dist_transform = cv2.distanceTransform(sure_bg, cv2.DIST_L2, 3) / 距离变换ret, sure_fg = cv2.threshold(dist_transform, 0.3 * dist_transform.max(), 255, 0)sure_fg = np.uint8(sure_fg)unknown = cv2.subtract(sure_bg, sure_fg) / 比较ret, markers1 = cv2.connectedComponents(sure_fg) / 标记markers = markers1 + 1markersunknown = 255 = 05.2.3 图像分割处理功能实现该功能是本工具的核心功能,能够对岩石显微薄片图像进行图像分割,包括了阈值分割算法、区域分割算法、超像素分割算法等分割算法,可以使用户选择合适的图像算法应对不同的岩石显微薄片。将载入的岩石显微薄片图像分割成一系列的子区域,并且保证该区域之中的种子点要在以它为中心的3*3的窗口中移动到梯度值对小的位置中,避免种子处于区域的边缘位置对于后续的聚类处理造成干扰。并且还要给每个种子分配一个单独的标签。随后计算每个像素点与最近的种子的相似度,将最相似的种子标签赋给该像素,随后通过不断地迭代处理收敛,得到分割后的图像。主要具体实现的代码如下面的代码段6所示:/代码段6def slic_s(np.ndarraynp.uint8_t, ndim=3 img, superpixel_size=300, compactness=10): if (img.shape2 != 3): / 判断图像的三通道数值是否齐全 raise ValueError(Image needs to have 3 channels.) if np.isfortran(img): raise ValueError(The input image is not C-contiguous) cdef np.ndarraynp.uint8_t, ndim=3 img_ = np.empty(img.shape0, img.shape1, 4), dtype=np.uint8) img_:, :, 1: = img cdef int h = img.shape0 cdef int w = img.shape1 cdef int * labels cdef int n_labels cdef SLIC* slic = new SLIC() slic.DoSuperpixelSegmentation_ForGivenSuperpixelSize(img_.data, w, h, labels, n_labels, superpixel_size, compactness) cdef np.npy_intp shape2 shape0 = h shape1 = w label_array = np.PyArray_SimpleNewFromData(2, shape, np.NPY_INT32, labels)return label_arraydef drawcontours(np.ndarraynp.uint8_t, ndim=3 img, 32_t, ndim=2 labels, color=10): cdef SLIC* slic = new SLIC() assert(img.shape2 = 3) cdef int h = img.shape0 cdef int w = img.shape1 cdef int n_labels cdef np.ndarraynp.uint8_t, ndim=3 img_ = np.empty(img.shape0, img.shape1, 4), dtype=np.uint8) img_:, :, :-1 = img slic.DrawContoursAroundSegments(&img_.data, labels.data, w, h, color) return img_实现界面如图5-7所示:图5-7 图像分割处理功能实现5.2.4 缩略图浏览功能实现该功能是为了方便用户能够对不同的分割算法能够有直观的比较,将上一次分割后的图片形成缩略图,可以直接和这次图像分割的结果进行对比。主要具体实现的代码如下面的代码段7所示:/代码段7h, w = source.shape:2 / 获取当前图像的长和宽wxbmp = wx.BitmapFromBuffer(w, h, source) img2 = wxbmp.ConvertToImage()if img2.IsOk(): w = img2.GetWidth() h = img2.GetHeight() p = img2.CountColours()img3 = img2.Scale(w / 2, h / 2)self.counttext.SetValue(%s % p) temp = self.ImgShow.GetBitmap().ConvertToImage() x = temp.GetWidth() / 2 y = temp.GetHeight() / 2 thum = temp.Scale(x, y) / 图像进行缩略 self.ImgShow.SetBitmap(wx.BitmapFromImage(img3) self.ImgThumShow.SetBitmap(wx.BitmapFromImage(thum) self.Fit()首先根据BitmapFromBuffer方法获取上一张处理后的图像的内容,随后用Scale方法对其进行等比例的缩放,最后用BitmapFromImage方法将其防止放置在缩略图的位置,实现岩石显微薄片图像分割过后的缩略图浏览功能。实现界面如图5-8所示:图5-8 缩略图浏览功能实现5.3 本章小结岩石显微薄片图像分割工具包括工具栏设计、界面布局设计、工具相关信息展示、图像信息显示、图像导入与输出、图像预处理、图像分割处理和缩略图浏览等功能。本章是对这些功能的具体实现,并给出了截图和主要代码说明。岩石显微薄片图像分割工具总体的功能都已经实现。6 测试及结果分析6.1 功能测试岩石显微薄片图像分割工具的关键功能模块,也是开发本工具的难点所在。谨慎地测试这个模块的功能是确保工具正常运行的必要条件。所以在开发完本工具后对整个工具进行了详细的功能验证测试。用户进入岩石显微薄片图像分割工具后,导入岩石显微薄片的图像成功后,能够了解图像的相关信息。用户选定具体的某一种图像分割算法后,工具能够显示图像分割后的分割效果图像,并形成了上一张分割处理后的图像的缩略图,使用户能够有最直观的感受和比较。并且用户选择导出目录后能够导出分割后的图像。经过测试,测试结果和预期的结果是一致的。详细的功能验证测试如表6-1所示:表6-1 岩石显微薄片图像分割工具测试用例表测试项目名称岩石显微薄片图像分割工具测试程序版本3.0.0V测试环境实际硬件测试环境:CPU:i3-2328M RAM:4.00 GB软件环境:操作系统 win7测试编制人唐诚功能模块测试工具相关信息展示、图像信息显示、图像导入与输出、图像分割处理和缩略图浏览功能项目测试目的保证上述功能能够正常运行测试预置条件按照图像分割的流程依次点击工具的按钮测试参考说明需求分析中关于该工具功能的说明测试附加说明无测试用例编号测试步骤测试预期结果测试平均加载时间(s)测试结果T001打开岩石显微薄片图像分割工具能够打开岩石显微薄片图像分割工具5一切运行正常T002点击File菜单下的Open弹出文件选择框,选择test.jpg文件,点击打开按钮岩石显微薄片图像分割工具显示test.jpg图像,并显示图像对应的相关信息5test.jpg图像正常显示,显示了图像对应的相关信息T003点击Algorithm菜单下Slic按钮,弹出参数选择框,不做修改,点击ok按钮进行超像素图像分割6显示超像素分割处理后的图像T004点击Region菜单下的watershed按钮进行分水岭分割算法处理,并显示上一次图像分割处理后的缩略图5显示分水岭算法分割处理后的图像,并显示了上一次的超像素分割处理后的图像的缩略图。T005点击File菜单下的Save按钮,选择保存文件夹,点击选择文件夹按钮保存当前显示的图像2保存了分水岭分割算法处理后的图像6.2 本章小结本章节对岩石显微薄片图像分割工具采取了功能测试的测试方案,制订了带有详细测试用例的测试表并记录了测试后的对应情况。该工具完成了既定的基本功能设计目标,能够正常地导入岩石显微薄片图像,并显示相关信息,能够运用不同的图像分割算法对岩石显微薄片进行分割,能够正常显示缩略图,在用户用输出图像分割后的图片时,能够输出到指定位置。但是在测试过程中也暴露了一些问题,例如:在采用Laplacian分割算法的时候,存在过分割现象,导致图像分割效果不太理想。运行过程中可能存在卡顿现象,所以在后期维护升级过程中要对岩石显微薄片工具进行及时更新,让用户能够更加方便快速的进行使用。7 总结和展望本文通过调用不同的图像分割算法,设定合理的算法参数,实现对岩石显微薄片图像分割的不同效果。该工具是对常用的图像分割算法实现了一次整合,每个算法的运行时间不足6s,完全可以满足对岩石纤维薄片的图像分割处理。但在实际应用中,仍需操作人员手动输入参数进行算法调用,进行不同参数的比对后才能得到较好的图像分割效果

温馨提示

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

最新文档

评论

0/150

提交评论