原理
SILC(simple linear iterative clustering)是一种图像分割算法。默认情况下,该算法的唯一参数是k,约等于超像素尺寸的期望数量。对于CIELAB彩色空间的图像,在相隔S像素上采样得到初始聚类中心。为了产生大致相同尺寸的超像素,格点的距离是$S=\sqrt{N/k}$。中心需要被移到3x3领域内的最低梯度处,这样做是为了避免超像素中心在边缘和噪声点上。
接下来为每一个像素$i$设置最近的聚类中心,该聚类中心的搜索区域要覆盖该像素的位置。这是本算法加速的关键,因为通过限制搜索区域的大小减小了距离计算的数量,并且相对于传统的k-means聚类算法有显著的速度优势,因为后者的每个像素都必须和所有的聚类中心进行比较。一个超像素的预期空间范围是约为SxS的区域,这里对于相似像素的搜索是在超像素中心的2Sx2S区域完成。
一旦每个像素被关联到最近的聚类中心后,就通过求聚类中心所有像素的均值来执行聚类中心的更新。使用$L_{2}$范数计算前一个聚类中心和当前聚类中心的残差。assignment和update步骤被重复迭代直到误差收敛,但是我们发现对于大多数图像10次迭代就够了。
算法步骤
1)通过在常规网格步长S处采样像素来初始化聚类中心
2)在3x3的领域内移动聚类中心到最低的梯度位置
3)为每一个像素$i$设置标签$l(i)$
4)为每一个像素设置距离$d(i)=\infty$
5)对于每一个聚类中心遍历2Sx2S区域内的每一个像素点,计算距离决定是否更新像素的标签和距离
6)更新聚类中心
7)重复步骤5)6)直到收敛