什么是SLIC?
SLIC是简单的线性迭代聚类。它将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造举例度量标准,对图像像素进行局部聚类的过程。
什么是超像素?
超像素是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像块。
什么是LAB坐标系?
LAB色彩模型是由亮度(L)和有关色彩的a,b三个要素组成
L表示亮度(Luminosity),值域由0(黑色)到100(白色)
a表示从洋红色至绿色的范围(a为负值表示绿色,正值表示品红)
b表示从黄色至蓝色的范围(b为负值表示蓝色而正值表示黄色)
其优点是颜色表示更为精确,色域更加宽阔
步骤
步骤1
初始化种子点(聚类中心):按照设定的超像素的个数,在图像内均匀分配种子点。
假设图片总共有
N
N
N个像素点,预分割为
K
K
K个相同尺寸的超像素,那么每个超像素的大小为
N
/
K
N/K
N/K,则相邻种子点的距离(步长)近似为
S
=
N
/
K
S=\sqrt{N/K}
S=N/K。
步骤2
在种子点的
n
∗
n
n*n
n∗n的邻域内重新选择种子点(一般取
n
=
3
n=3
n=3)
计算该邻域内所有像素点的梯度值,将种子点移到该邻域内梯度最小的地方。这样做的目的是为了避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。
梯度是邻域内所有像素点与初始种子点的梯度
好处:可以避免将超像素定位在图片边缘,减少用噪声像素接种超像素的机会。
步骤3
在每个种子点周围的邻域内为每个像素点分配类标签,即确定每个像素点属于哪个种子点,也就是属于哪个聚类中心。
和标准的K-means在整张图中搜索不同,SLIC的搜索范围限制为
2
S
∗
2
S
2S * 2S
2S∗2S,可以加速算法收敛。
步骤4
距离度量:对于搜索到的每一个像素点,分别计算它和该种子点的距离。
其中,
d
c
d_c
dc代表颜色距离,
d
s
d_s
ds代表空间距离,
N
s
N_s
Ns是类内最大空间距离,定义为
N
s
=
S
=
N
/
K
N_s=S=\sqrt{N/K}
Ns=S=N/K。
N
c
N_c
Nc是最大颜色距离,它随图片和聚类的不同而不同,所以取一个固定常数
m
m
m(取值范围为[1,40])代替。所以最终的距离度量
D
′
D^{'}
D′定义如下:
步骤5
迭代优化。由于每个像素点都会被多个种子点搜索到,所以每个像素点都会有一个与周围种子点的距离
D
′
D^{'}
D′,取最小值对应的种子点作为该像素的聚类中心。
上述步骤不断迭代至误差收敛。
一次迭代完成之后,需要重新计算
步骤6
增强连通性。新建一张标记表,表内元素均为-1,按照“Z”型走向(从左到右,从上到下)将不连续的超像素、尺寸过小的超像素重新分配给邻近的超像素,遍历过的像素点分配给相应的标签,知道所有点遍历完毕为止。