1.SLIC算法
SLIC是一种对图像进行无监督聚类得到超像素的一种方法,通过对K-means聚类算法改进得到,有效的降低了计算复杂度。相比于K-mean算法,SLIC算法将每个聚类中心的搜索范围从全图缩小到了2S×2S。

2.SLIC算法流程
1.SLIC算法是在CIELAB空间对图像进行像素聚类的,所以初始化K个聚中心为:C={Ck∣Ck=[lk,ak,bk,xk,yk]},并且假设图像像素为N,所以初始化聚类中心的间隔大致为S=N/K。并且在3×3的邻域寻找梯度最小点,避免聚类中心位于噪点。(/∗Initialzation∗/)
2.对于所有的聚类中心Ck,计算聚类中心2S×2S邻域中像素点i的距离d(i)=D,并记录下相应的聚类中心编号l(i)=k。由于范围为2S×2S的邻域,所以将会有重叠的像素点,所以在计算重叠区域的像素点时,将会在循环中迭代并保存最近的聚类中心距离和编号。(/∗Assignment∗/)
3.利用相同聚类中心编号的像素点取距离平均最小来更新新的聚类中心。得到新的聚类中心后与原来的聚类中心计算L2范数得到残差损失E,当残差损失E小于设定阈值时停止迭代。到此得到所需的K个聚类中心,根据i记录的编号得到分割的聚类结果(超像素)

3. 距离度量
SLIC算法在CIELAB颜色空间和欧式空间共同计算像素点之间的距离,所以每个像素点可以表示为[l,a,b,x,y]。定义像素之间的距离为:
dc=(lj−li)2+(aj−ai)2+(bj−bi)2(1)
ds=(xj−xi)2+(yj−yi)2(2)
D′=(Ncdc)2+(Nsds)2(3)
由于给定簇内的最大空间距离的期望应与采样间隔相对应,所以Ns=S=N/K;因为颜色距离可以在不同的簇中或者不同的图像中显著变化;所以为了简化将其作为一个常数m,并将其扩大m被;则距离度量D为:
D=dc2+(Sds)2m2(4)
则常数m可以作为一个影响因子来调节颜色空间和欧式空间的影响权重。当常数m较大时,欧式空间距离影响更大,分割的区域更接近矩形;当常数m较小时,颜色空间影响更大,更符合图像的边界,但是区域不规则。