第八章_图像分割.pptx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;图像分割就是把图像分成若干个具有独特性质的区域并提取出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。

在该章节中我们将对各个图像分割方法进行学习,并应用在案例中。;;K-Means是我们最常用的基于欧式距离的聚类算法,聚类是数据挖掘中的基本任务,聚类是将大量数据集中具有“相似”特征的数据点划分为统一类别,并最终生成多个类的方法,K-Means算法认为两个目标的距离越近,则相似度越大。;假定我们有n个样本需要进行观测聚类,并且要求聚为K类,则首先选择K个点作为初始中心点。如图所示,假设聚为2类,在样本中选择2个点作为初始中心点。;对各个观测点计算它们到每个中心点的距离,按照距离初始中心点最小的原则,把所有观测点分到各中心点所在类中。

接着计算K个类中所有观测点的均值,作为第二次迭代的K个中心点。如图所示,划分个中心点所在的类,并计算2个类中的中心点。

;根据这个中心重复以上步骤,直到中心点最小距离收敛、中心点不再改变或达到指定的迭代次数,聚类过程结束。如图所示,经过多次迭代计算,得到最终分类,中心点位置确定。;在OpenCV中提供了K-Means算法的函数供我们进行使用,通过以下一个简单的例子我们进行对OpenCV中的K-Means进行了解。;程序首先创建一个空白的图像,并创建随机点作为样本点,使用kmeans()函数对其进行分类与生成中心点,将其点集进行可视化。;第一个参数,numpy.ndarray类型的data,表示用于聚类的数据,形状为一行,数据点需要为float32类型。

第二个参数,int类型的k,表示聚类时划分的数目。

第三个参数,numpy.ndarray类型的bestLabels,输入或输出的结果,表示每个样本的聚类索引。

第四个参数,tuple类型的criteria,表示计算中心点时迭代过程的终止条件。

第五个参数,int类型attempts,表示指定算法使用不同初始标签执行的次数。

第六个参数,int类型的flags,表示用于指定初始中心点所采用方式。方式如”OpenCVKMeansFlags枚举”中。

;第七个参数,numpy.ndarray类型的centers,输出的结果,表示聚类中心的输出矩阵。

第一个返回的???数,float类型的retval,表示聚类的紧密度,每个点到相应中心点的距离的平方和。

第二个返回的参数,numpy.ndarray类型的labels,表示聚类划分的结果,每一个点所在类型。

第三个返回的参数,numpy.ndarray类型的centers,表示聚类每个类的中心点。

;通过下图我们可以看到点集被分为红色点与蓝色点两类,黄色点为其两类中的中心点。

;我们现在选取一张动物的照片,并根据图像的颜色进行K-Means分割,如下图所示。;程序首先构建图像数据,然后将其转换形状后传入kmeans()函数进行聚类计算。最后,根据不同类别的分类结果,使用不同的颜色进行可视化。;;分水岭算法是根据分水岭的构成来进行图像的分割。任意的灰度图像可以被视为地形图,其中高亮度的区域代表山峰,低亮度的区域代表山谷。每个山谷被赋予不同颜色的水(标签),当水涨起来时,根据周围的山峰,不同的山谷会开始合并。为了避免这种情况,可以在水要合并的地方建立障碍,直到所有的山峰都被淹没。这就是图像分割的原理,也是分水岭算法的核心思想。;首先将输入图像,并转换为灰度图像,从而进行二值化处理,使用形态学的操作消除噪点,通过以上形态学去噪点后的图像,再进行膨胀操作,可以得到大部分都是背景的区域。

图像预处理完成后,使用距离变换获取确定的前景色,区分背景区域与前景区域,并通过差值获取未知区域,从而进行获取种子。通过计算区域二值化图像的标记图像的连接组件,获得Marker标签,确定前景区域后,前景区域即是我们的种子区域,并会从中开始漫水。在Marker中对未知区域设置栅栏,并将背景区域加入到种子区域,根据种子区域的漫水找到最后的栅栏边界,从而实现分水岭变换,最后输出图像。

;如下图,我们将过程画成过程图,使得对该过程顺序的了解更加清晰,便于在后续的程序开发。

;程序首先加载图像,使用cvtColor()函数将图像转换为灰度图,使用threshold()函数对图像进行二值化处理获取二值化图像,,使用morphologyEx()函数消除二值化图像中的噪声,通过dilate()函数膨胀得到背景区域,使用distanceTransform()函数进行距离变换,获取前景区域,并通过sub

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档