相关标签

基于支持向量机的图像分割程序实现

发布时间:2019-12-04 18:16

摘要

本论文主要介绍了应用MATLAB编程,开发简易的图像分割软件,实行基于支持向量机实行真彩色图像的分割。其中图像分割模块使用MATLAB的LIBSVM包实现主要算法,与用户交互的界面使用MATLAB GUI达到自由输入图像进行切割的目的。

其中用支持向量机作图像分割是我这个项目主要的工作,大致流程是读入图像,训练选取样本点确定训练集,建立支持向量机进行图像切割。

此外,我用MATLAB的GUI功能制作了一个用户交互界面,这样使得上面的代码可以更加方便的达到效果。

关键字:图像分割;支持向量机;LIBSVM包;MATLAB GUI

第一章 背景资料

1.1研究的动机和目的

视觉作为人们认识、了解、体会大自然和社会的基本且重要的途径之一,图像又是视觉的物理基础。自近现代以来,随着第二次工业革命,电视机、相机发明以来,数字图像就开始进入人类的生活,随着第三次科技革命,显示屏、摄像头、计算机的问世与应用普及,数字图像成为了经济、产业、生活等诸多领域的感知手段。当今大数据、人工智能等领域的持续火爆又推动对它的研究和应用。因此,数字图像处理成为了一项重要的科学技术,在科研和工业领域的需求越来越大。

对于一个图像,我们通常只对它的某一部分感兴趣,需要将它从整个图像中提取出来,这种过程叫做图像分割或图像切割。

作为计算机视觉和图像处理中的热点问题,无数种不同的图像分割方法已经被提出,许多经典算法比如基于各种算子以及小波变换的边缘检测法,直线提取与边界跟踪法,各种阈值分割法,区域生长与合并法,区域处理法。[5]

传统的方法都在解决某些特定的图像分割问题中有良好的价值,但是它们又都有局限性,所以目前还没有一种可以广泛适用于各种图像的优秀切割方法。由于图像的复杂性,要想使分割出来的图像看起来完美,有令人满意的研究价值,经常需要操作人员在图像特征提取的阶段作大量的工作确保图像的不同特征被发掘出来。根据数理统计学中的渐近理论,样本越大得到的结果越与真实的情况接近。传统的图像切割方法正是基于此理论。但是它们难以在特征维度高、样本容量小的问题中取得理想的效果。[2]支持向量机的提出有望解决这一问题。

支持向量机是基于万尼普克(Vapnik)提出的统计学习理论,有别于一般统计学理论,该理论能够在有限样本的条件下对事物进行非原理分析。该方法很有可能通过小样本就得到不错的分类结果,从而得到良好的分割,所以它不失为图像分割一个很好的选择。本文就是要着重探讨支持向量机以及如何利用它编程实现简单的真彩色图像切割。[9]

1.2研究的背景和现状

1.2.1支持向量机

在机器学习中,支持向量机是一种有关联学习算法的监督学习模型,用来分析被用于分类和回归分析的数据。给定一组训练的例子,每个都被标记为属于两个类别中的一个或另一个,一个支持向量机训练算法建立一个模型,分配新例子到其中一或另一个类别中,使得该模型成为一个非概率二进制线性分类器(虽然存在使用概率分类设置状态下的支持向量机的方法,比如普拉特扩展)。一个支持向量机模型是将例子作为空间中的点的映射的展示,这样不同类别的例子被一个清晰的分界线尽可能明显地分开。然后新的例子被映射到相同的空间中并根据它落到分界线的哪一侧预测其所属的类别。除了执行线性分类,支持向量机能够使用核技巧有效地执行非线性分类,核技巧隐性地把输入的数据映射到高维特征空间中去。当数据没有被标类时,监督学习就没有成效了,这时我们需要非监督学习方法,该方法尝试着寻找原始聚类,把它们划分到组中,然后把新的数据映射到这些组中。支持向量簇类算法应用支持向量的统计方法来分类非标签数据,是目前业界最广泛应用的簇类算法。最初的支持向量机算法是由弗拉基米尔N.万普尼克(Vladimir N. Vapnik )和阿利克谢.雅(Alexey Ya. Chervonenkis)于1963年发明。Bernhard E. Boser,Isabelle M. Guyon和Vladimir N. Vapnik于1992年提出了通过把核函数运用到最大间隔超平面来创建非线性分类器的

方法。当前的标准的典型(软间隔)是由Corinna Cortes和Vapnik在1993年提出并于1995年公布的。[9]

1.2.2支持向量机的应用

1.SVM在文本和超文本分类中很有帮助因为他们的应用可以在标准归纳和转换设置中显著减少对标签训练例子的需求。[9]

2.图像的分类也可以使用SVM实施。试验表明实验结果表明,在经过3 - 4轮相关反馈后,支持向量机的搜索精度明显高于传统的查询细化方案。对图像分割系统这个结论也同样适合,包括那些使用修改版的由万普尼克提出的优先方法的支持向量机。[9]

3.使用支持向量机识别出手写字体的特征。[9]

4.SVM算法已经被广泛应用于生物和其它科学领域。它们已经被用来对蛋白质进行分类,其中高达90%的化合物分类正确。[9]

1.3研究内容

1)MATLAB编程实现基于SVM的真彩色图像切割

2)MATLAB GUI制作交互界面

第二章 系统理论

2.1支持向量机

2.1.1定义

更常见的是,一个支持向量机在一个高维或无限维的空间建立一个或一系列超平

面,这些超平面可以被用于分类、回归或其它任务比如异常值检验。直观地来说,一个好的分离是通过一个合格的超平面得到的,该超平面必须是对任何类中的最近的训练点集有着最大的距离(这就是所谓的函数间隔),因为通常来说间隔越大,分类器的泛化误差越小。

虽然原始的问题可以在有限维空间中被表述,但是经常会出现要区分的数据集在

有限维空间不是线性可分的情况。正是这个原因,有人提出了将原始的有限维空间映射成一个维度更高的空间,认为这样可以使得划分更加容易。为了使运算量保持在合理的范围内,这种使用支持向量机方案的映射,通过定义适用于此问题的核函数

,被设计成能保证原始空间中的变量的点积很容易被算出来。在更高维空间的超平面被定义为与该空间某向量的点积是常数的点的集合。这些定义超平面的向量可以被选为出现在数据基中的特征向量的图像参数。通过这种超平面的选择,特征向量中被映射到超平面的点

的相近程度。在这种情况下,上面内核的和式可以用来度量每一个测试点离另一个来自待区分集合的数据点的相对接近程度。注意到一个事实,就是被映射到任何超平面的点的集合最终会慢慢变复杂,使得在初始空间一点也不复杂的的集合的划分会变得很复杂。[9]这3个点标号,然后用一条直线把这三个点正确分类。那么如果这三个点共线,并且同一直线上中间的点和两边的点的标签不一样,那么就无法用一条直线来把它们正确分类,那么这二维空间的三个点是不可打散的。依次类推,二维空间中的点大于3的情况也显然是不可打散的,那么二维空间的VC维就是2。

可学习性

对VC维概念的理解使得我们研究可学习性成为了可能,而可学习性决定了我们训练的样本数的大小。一般情况下,学习所需的训练样本数随着VC维的增加而增加,这也是我们避免使用高阶多项式作为分类器的原因。[7]

2.2 libsvm工具箱

LIBSVM是一个受欢迎的开源机器学习库,是由国立台湾大学开发的,通过C语言的应用程序编程接口用C++写的。LIBSVM实现了面向内核支持向量机的SMO算法,它能支持分类和回归。

它的库中的支持向量机学习代码经常在其它开源的机器学习工具箱被应用。对于许多语言比如JAVA,MATLAB,R都与LIBSVM绑定。[5]

在该设计中,我们通过调用它里面的训练和预测函数完成核心功能。

2.3 图像分割的定义

所谓图像分割,是将某图像的某一或某几个部分分割出来,并且分割出来的部分之间互相不重叠,与未分割出来的部分也不重叠。这个分割不是随意的,它必须根据图像的特点或特征集来分割。一个图像中同一区域的特征(比如灰度、色彩、形状、纹理、密集度)具有某种共性,而不同的区域的这些特征具有个性,区域和区域之间的特点会产生突变。从集合的角度来说,对于一个理想的分割我们有如下一些结论2.3.1人机交互界面

用户界面是人和机器或程序交互的物理工具或方法。键盘、鼠标、操作杆、按钮等都可以成为交互的接口。常见的用户操作界面有直接操作界面,比如windows系统,用户可以很容易理解桌面上的应用程序是干什么的,根据固有常识去操作计算机。图形用户界面,这是当今社会应用最广泛的交互方式,比如大量的便携式电子产品(手机、平板、MP4),依赖视觉和手动控制参与操作。目前比较新兴的还有虚拟现实技术,让人有深入其境的感觉,人能够在虚拟现实环境里依靠自己更加自然的、本能的反应操作机器,随着科技的进步,这项技术的应用会越来越广泛。在该设计中,我使用的是图形用户界面来实现人对程序的控制与操作。

2.3.2 MATLAB GUI

图形用户界面(GUI)提供了对应用软件或程序指向和点击控制,这种指向和点击控制减少了学习一门语言或者为了运行应用程序而打字输入指令的需要。

MATLAB应用软件自动包含了具有GUI前端的MATLAB程序,这些程序能够用自动化一个任务或计算。这个GUI通常含有控制元件比如菜单、工具条、按钮和滑动条。许多MATLAB产品比如曲线拟合工具包,信号处理工具包、和控制系统工具包有具有自定义用户界面的应用程序。你也可以创建你自己的自定义应用程序以及它们相对应的用户界面给别人使用。[5]

2.3.3 MATLAB GUIDE

GUIDE是MathWorks开发的数学软件MATLAB GUI开发环境,它为人提供自定义app设计用户界面的工具。通过使用GUIDE版面编辑器,你可以形象地设计你的用户界面。然后GUIDE会自动产生MATLAB代码来建立这个用户界面,你可以这些被生成的代码对你的应用程序的行为来编程。[5]

2.3.4 函数句柄

一个函数句柄是一个将关联存储到函数中的一个数据容器。你可以使用一个函数句柄来建立匿名函数或者指定回调函数。你也可以使用一个函数句柄来把一个函数传递到另一个函数中去,或者从主函数外面调用一个本地函数。[6]

2.3.4 回调函数

当一个图形对象要发生特定的事件时,GUI传递要执行的子函数名到M文件中,该子函数称为回调函数。用户只需要对一些控制元件操作,比如点击某个按钮,控制元件会自动对此操作响应,然后启动其所对应的回调函数。该函数不会主动运行,只有被触发才会执行。[6]

第三章 需求分析

3.1需求分析的任务

通过对软件(程序)操作者的要求分析,从而了解到软件需要具备的功能,然后将这些需求或功能抽象化,将它们细化为系统功能模块。[10]

3.2程序功能分析

1) 用户读入jpg或rgb格式的图像

2) 用户使用鼠标操作在读入的图像上选取前景和背景样本点确定训练集

3) 建立支持向量机进行图像分割

4) 友好的用户界面

3.4程序功能模块设计

根据系统功能的要求,可将系统分解成以下几个功能模块来分别设计:

1)读图模块

2)选取样本模块

3)建立支持向量机进行图像分割模块

4)用户界面模块

①选择图片文件按钮模块(包含读取图像、选取样本功能)

② 输出图形模块(包含建立支持向量机切割以及输出切割

后的图像)

3.5程序功能调用图

3.6程序功能设计说明

我在设计时先是把前三个模块做出来,形成一个独立的基于支持向量机的能进行真彩色图形图像切割的程序。然后再单独设计用户界面模块,将前三段程序进行部分的修改后,嵌入到GUI对象的函数中,实现其功能。

第四章 详细设计与软件展示及课题展望

4.1详细设计与软件展示

4.1.1读图模块

结构流程图:

具体实现:

将位于某路径下的文件littleduck.jpg用image.read函数读取。用矩阵pic来存放读入的图片,查看矩阵pic的大小和类型,显示结果如下:

Name Size Bytes Class Attributes

pic 439x600x3 790200 uint8

结果说明:读入的图像数据pic是一个439行、600列、3页的三维矩阵,数据类型为8位无符号整形。

接下来规定图像显示的窗口的属性,然后将读入的图形在窗口中显示出来。

4.1.2选取样本模块

实现目标:本模块要实现合理选取背景和前景样本点确定训练集,选取样本阶段是关键的一个环节,因为样本的好坏决定了你分类的效果。

具体实现:

使用MATLAB中的ginput函数来提取前景和背景样本点作为训练的样本,实现过程如下:

用zeros函数生成两个20*3零矩阵TrainData_background和TrainData_foreground分别表示背景图像样本集和前景图像样本集。这两个矩阵存放的数值类型是double型。

接下来实施背景采样,先用msgbox函数创建一个对话框,执行到该步骤时该对话框会自动弹出,告诉你在背景区域采集20个背景样本点,点击OK后按任意键继续。对话框结束后,用pause语句来实现一个暂停功能,按任意键后执行下面的程序。

需要说明的是,选取训练点时有一个需要注意的地方,应该选取有代表性的点作为训练点,拿此列来说,比如选取鸭子眼睛或鸭子边缘部位的点作为样本点。最初选取的训练点可能导致图片分割不是很完美,例如鸭子后面溅起的水花被分割成鸭子区域,这时候可以对错分的水花区域添加一两个典型到湖面区域,一般尝试几次后就可以将鸭子图像从整个图像中分割出来了。

前景采样阶段也遵循上面的步骤。

背景和前景的样本点都选取完毕后的图像图片说明:由于我是将程序按段执行的,目的是为了展示每一段程序运行后的效果,所以前后图片上的样本点取点不一致。

4.1.3建立支持向量机并进行图像分割模块

实现目标:利用上面选取的样本点作为训练样本,将背景的标签设为0,前景的标签设为1,进行训练和预测。这里采用了一次多项式核函数(LIBSVM参数’-t 1 -d 1’)

结果说明:选取的图像复杂性比鸭子图片的要高很多,所以相同样本数效果要相对差一点,但是大体上还是可以的,花朵的那一部分已经分割出来了。由图中可以看出,样本数越密集的区域,分割得越完整。

4.2设计缺陷与课题展望:

对于本次设计由于前景和背景图像的色彩单一且对比度大,可以达到好的效果,但是如果换一张更复杂的图片,它的效果就会非常差,甚至会出现一片黑色,究其原因还是模型太简单了,一元多项式核函数不能适用于复杂的图像。并且在本次设计中,即便是那两张比较简单的图片,样本点选取不够多的情况下切割效果还有很多瑕疵,而增加样本点数后的效果就相当完美了,说明更多的样本数使得我们尽可能多地选择有代表性的图像特征,这也验证了机器学习中一条简单的经验法则,即训练样本数越多,学习分类器的效果越好。

图像切割,在大数据、人工智能前景非常广阔的今天有着越来越热门和广泛的应用,与它相关的很多领域比如模式识别需要它发挥作用。一种优秀的算法,不仅仅能在解析图像阶段大大减少计算复杂度,还能得出很好的分割效果。[2]对图像切割的研究也已经不是一天两天的事情了,目前已经有成熟的理论方法。这些方法在不同的情况下有着不可或缺的作用,但是也都有局限。基于统计学习的支持向量机方法可以说是比较创新的技术。它能够应对快速地对图像特征进行分析,从而达到分割的目的。其最为可贵的是在图像切割的诸多算法中通用性相对比较强,但是,支持向量机的图像分割方法不是很容易理解的,对于不同的图像,它的核技巧是需要变化的,才能适应生活中千奇万变的问题。随着数学工具的引入,一种种新的核方法被提出来,这为支持向量机的分类和预测功能更加强大,能够适应越来越复杂的图像。在高光谱遥感图像分类问题研究中,基于紧密度的Grey-Sigmoid核方法就很好地处理了传统Sigmoid核函数难以解决的对边缘噪声敏感的问题,达到了精度很高的分类效果。[4]随着机器学习,数据挖掘,高性能计算的发展,还会有越来越复杂的支持向量机模型来处理高分辨率、多特征的图像。

第五章 总结

本次毕业设计和毕业论文的写作包含了学习相关知识,开发应用程序,完成论文撰写。通过毕业设计,我对应用程序的开发有了详细的了解,对支持向量机和图像切割也有了初步的了解,并把书中的理论运用到了实现。在此过程中我意识到了从理论到完成实践是需要不断地取探索和试错的,即使是照搬课本现成的知识让它们在实践中发挥价值也是需要解决不少困难的,并且有很多问题在课本中都无法找到答案,需要自己去专门研究和实践才能解决。

从本次毕业设计和论文中,我主要有如下体会:

①合理的时间管理在保证项目的正常甚至超前进展中发挥至关重要的作用

②理论与实践相结合

③研究领域的深度和广度

④虚心向老师求助

⑤如何从互联网中提取对自己的研究有价值的信息

毕业论文:http://www.3lunwen.com/jsj/dzjs/5424.html

上一篇:基于远程监督数据的关系抽取系统构建

下一篇:没有了

     移动版:基于支持向量机的图像分割程序实现

本文标签:
最新论文