且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SLIC Superpixels 算法学习笔记

更新时间:2022-05-17 17:20:10

算法流程梳理如下:

原文下载:http://www.kev-smith.com/papers/SLIC_Superpixels.pdf

1、初始化:

  1. 通过对图像像素进行抽样,初始化k个聚类中心C_k ,步长为初始化聚类大小S,即将图像分为k个网格,取每个网格中心为初始聚类中心;
  2. 初始化每个像素点的标签lable为-1,每个像素点与聚类中心的距离distance为无穷大。

2、对初始化的聚类中心进行移动:

在该聚类中心相邻的8个像素点中,找到最小梯度方向,并将该点设为新的聚类中心,直至聚类中心不再变化。

3、Assignment Step

对每个聚类中心点C_k ,考虑以该点为中心的2S*2S的邻域范围中的所有像素点,计算每个点与C_k的距离D
SLIC Superpixels 算法学习笔记
(其中,m为设置的色彩与空间成分的比重参数)
如果D'<'distance(i),则赋值distance(i)= D,赋值该点标签lable为k值。

4、更新聚类中心

对k个聚类中心点进行更新,找到所有标签lable值为k的点,求其平均值,得到新的聚类中心。

5、计算剩余误差

计算剩余误差E,通过迭代3、4两步,直至E满足条件为止。

6、后处理步骤

用连通性将独立点归至超像素。

理解

在计算某点属于哪一超像素时,第一次考虑时,在C1的域中,会得到它属于超像素C1,但是当在C2的域中考虑时,会得到该点更可能归属于C2,那么该点就应该属于超像素C2。这样,计算完之后,大多数点都归属于最可能的超像素中。