机器学习:simple linear iterative clustering (SLIC) 算法
来源:互联网 发布:linux tmp目录作用 编辑:程序博客网 时间:2024/06/06 17:57
图像分割是图像处理,计算机视觉领域里非常基础,非常重要的一个应用。今天介绍一种高效的分割算法,即 simple linear iterative clustering (SLIC) 算法,顾名思义,这是一种简单的迭代聚类算法,这个算法发表于 2012 年的 PAMI 上。
SLIC 算法有几个关键点,
1: 图像分割块的初始化,每一个图像块都是一个聚类,聚类的中心称为 superpixel,聚类的个数
2:聚类中心的初始化,在划分好的图像块里,随机采样一个点作为聚类的中心,为了避免采样的初始点是噪声或者是在边缘部分,算法做了一点变化,在采样点附近
3: 计算像素点到聚类中心的距离,图像分好块,选择好了每一个图像块的聚类中心,接下来就是计算图像中每一个像素点离聚类中心的距离了,这里与通常的聚类算法不一样,一般的聚类算法会计算像素点离每一个聚类中心的距离,换句话说,每一个聚类中心都要和所有的像素点计算距离,这个明显是费时,而且也是没有必要的,SLIC 算法简化了这一步,只计算每个聚类中心周围
为了可以衡量距离,这个算法考虑了 空间距离 和 颜色距离 两种:
算法最后衡量距离的形式如下所示:
在 CIELAB 颜色空间中,论文中提到 m 的取值范围大概是 [1, 40]
4:重新聚类,计算完距离之后,每一个像素点都会更新自己所属的图像块,将同一个图像块的像素点取平均,得到新的聚类中心,然后再重复前面的步骤,直到两次聚类中心的距离小于某个阈值。算法的流程图如下所示:
给出一段Python 的代码:
# import the necessary packagesfrom skimage.segmentation import slicfrom skimage.segmentation import mark_boundariesfrom skimage.util import img_as_floatfrom skimage import ioimport matplotlib.pyplot as plt# load the image and convert it to a floating point data typeimage = img_as_float(io.imread("image.jpg"))# loop over the number of segmentsfor numSegments in (100, 200, 300): # apply SLIC and extract (approximately) the supplied number # of segments segments = slic(image, n_segments = numSegments, sigma = 5) # show the output of SLIC fig = plt.figure("Superpixels -- %d segments" % (numSegments)) ax = fig.add_subplot(1, 1, 1) ax.imshow(mark_boundaries(image, segments)) plt.axis("off")# show the plotsplt.show()
- 机器学习:simple linear iterative clustering (SLIC) 算法
- SLIC算法(Simple Linear Iterative Clustering)
- 机器学习算法学习四:Canopy Clustering
- SLIC Superpixels 算法学习笔记
- Improved SLIC 算法学习笔记
- Stanford 机器学习-clustering
- 机器学习算法 - k-means Clustering K均值聚类
- linear system iterative
- 机器学习文本分类Improved Iterative Scaling算法以及JAVA实现
- 机器学习算法之五:5分钟上手Linear Regression
- 机器学习算法之线性回归(Linear Regression)
- [DL]机器学习算法之之线性回归(Linear Regression)
- SLIC Superpixels 算法代码学习笔记
- 机器学习与深度学习(六) 聚类(Clustering)____K-均值聚类算法(K-means Clustering) 层次聚类(Hierarchical Clustering)
- NLP 学习笔记 06 (Brown Clustering && Global Linear Models)
- 机器学习基石-Linear Regression
- Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)
- Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)
- linux系统sudoers文件夹权限777以及/etc/profile文件修改后无法进入系统问题
- 异步多线程
- 大数除法
- pthon将excel转成lua
- [Python高效编程]
- 机器学习:simple linear iterative clustering (SLIC) 算法
- java中字符串或数字的对齐方式和输出所占用的宽度的问题
- HDU-2200Eddy's AC难题
- 架构师之路:Python分布式爬虫Scrapy打造搜索引擎
- JS基础学习(九)
- 51Nod
- USBKey的密码学原理
- CSS布局相关及Flex详解
- android mkdir命令,cat命令,adb命令,am命令,ls命令