论文:SLIC Superpixels Compared to State-of-the-art Superpixel Methods(PAMI 2012)
SLIC全称:simple linear iterative cluster
基本思想
将图像由RGB转换到Lab颜色空间(为什么用Lab而不是RGB,作者给出的原因是CIELAB color space is widely considered as perceptually uniform for small color space,Lab更符合人类对颜色的视觉感知,颜色分布更均匀),然后对每个像素,将其(L,a,b)颜色值和(x,y)坐标组成一个5维的向量V[L,a,b,x,y]。两个像素的相似性则可由它们对应的5维向量的距离来度量,即距离越大,相似性越小。
补充RGB与LAB的区别:
RGB为红绿蓝三通道,一起组成颜色,其任一通道的值(0-255)表示该通道对应颜色的明暗度;
LAB:L为亮度(Luminosity),a和b为两个色彩通道,对L的修改不会改变图像的色相。
算法过程:
(1)首先在图像上生成K个种子点(聚类中心)(不像K-means初始聚类中心是随机分配的,SLIC里是均匀分布的)。
这K个种子点在图像上是均匀分布的。假设原图有N个像素,则分割后每块超像素大致有N/K个像素,每块超像素的边长大致为S=[N/K]^0.5,可看出两个聚类中心的距离为S,如下图所示:
此外,为了避免所选的种子点是边缘或者噪声点,算法做了改进:
对每个种子点,计算其3*3的窗口中像素的梯度,然后将聚类中心移动到梯度最小的那个像素上。梯度定义为:
G(x,y)=[V(x+1,y)-V(x-1,y)]^2+[V(x,y+1)-V(x,y-1)]^2
(2)为每个像素分配种子标签
对每个像素,在其2S*2S周围内搜索与其最近的种子点,并分配他们属于某一种子类,直到所有像素点都归类完毕,得到K个超像素
距离度量公式:
其中dc代表颜色距离,ds代表空间距离,Ns代表类内最大空间距离,Ns=S=sqrt(N/K)(对每个聚类都是一样的),Nc代表最大的颜色距离(其既随图片不同而不同,也随聚类不同而不同),一般取为一个固定常数:[1,40](一般取10)。最终的距离度量D'如下:
(3)重新计算聚类中心
计算这K个超像素里所有像素点的平均向量值,重新得到K个聚类中心,然后再以这K个中心去搜索其周围与其最为相似的若干像素,所有像素都归类完后重新得到K个超像素,更新聚类中心,再次迭代,如此反复直到收敛。
(4)增强区域连通性
最后经过迭代优化得到的superpixel图可能出现以下情况:超像素过小、孤立点。可通过增强连通性解决。具体是如何实现的,参见代码:
https://ivrl.epfl.ch/research-2/research-current/research-superpixels/
算法流程
推一个该算法优化(浮点数计算内存优化)的博客:
https://www.cnblogs.com/Imageshop/p/6193433.html