阅读桑迪潘·戴伊的《Python图像处理实战》笔记八

八、 图像分割

1.图像分割的概念

将图像分割成不同的区域或类别,并使这些区域或类别对应于不同的对象或对象的部分

2.霍夫变换—检测图像中的圆和线

目的:通过参数空间中的投票过程来寻找特定形状对象的实例。
使用hough_line()或hough_line_peaks()函数和hough_circle()或hough_circle_pesks()函数分别检测带有直线和圆输入图像中的线和圆。

3.二值化和Otsu分割

Otsu分割法是基于直方图的二值化方法,通过同时最大化类间方差和最小化由该阈值分割的两类像素之间的类间方差来处理像素。

4.基于边缘/区域的图像分割

(1)基于边缘的图像分割
先用Canny边缘检测器获取特征的边缘,然后用binary_fill_holes()填充这些轮廓
(2)分水岭变换分割图像

①找到标记和分割准则
②利用这两个元素运行标记控制的分水岭算法

5.分割算法、聚类算法、生长算法

(1)基于菲尔森茨瓦布高效图的分制算法

菲尔森茨瓦布采用了料基于图的分割方法,它先构造个无向图,以图像像素作为顶点(要分割的集合),并以两个顶点之间的边的权重来度量不相似性(如强度上的差异)。在基于图的方法中,将图像分割成片段的问题转化为在构建的图中找到一个连接的组件。同一组件中两个顶点之间的边的权重应相对较低,不同组件中顶点之间的边的权重应较高。该算法的运行时间几乎与图形边的数量呈线性关系,在实践中也是快速的。该算法保留了低变异性图像区域的细节,忽略了高变异性图像区域的细节,而且具有一个影响分割片段大小的单尺度参数。基于局部对比度,分割片段的实际大小和数量可以有很大的不同。

(2)SLIC算法
只在颜色空间的五维空间和图像位置执行k均值聚类算法。

使用RAG方法合并图像:使用区域邻接图来合并图像的过度分割区域,从而获得更好的分割效果。首先,使用SLIC算法对输入图像进行分割,得到区域标签;其次,构造区域邻接图,并逐步合并颜色相似的过度分割区域。合并两个相邻区域将生成一个新区域,其中包含合并区域中的所有像素。不断合并区域,直到没有高度相似的区域对存在为止。

(3)使用SimpleITK的区域生长算法

区域生长算法是一种分割算法,是指如果一个像素的邻域的强度与当前像素相似,则认为该邻域处于同一分割片段。如何定义相似性在不同的算法中是不同的。初始像素集称为种子点(seed
point)通常是手动选择的。如下代码演示了如何使用SimpleITK库实现ConnectedThreshold(关于区域生长分割算法的变体)。采用头颅MRI扫描(T1)医学图像作为输入图像。在ConnectedThreshold算法中,如果相邻体素(体积像素)的强度在明确指定的上下阙值范围内,则视体素的邻域在同分割片段中。

6.活动轮廓算法、形态学蛇算法和基于OpenCV的GrabCut图像分割算法

(1)活动轮廓算法
用于拟合开或闭合样条曲线与图像中的线或边缘
(2)形态学蛇算法
比活动轮廓算法更快,而且在数值上更稳定。

你可能感兴趣的:(笔记,python,图像处理,算法)