超像素SLIC算法

超像素算法有很多,SLIC是效果比较好的一种,今天介绍SLIC算法。
SLIC算法与K-means有些类似。

主要步骤
  1. 将图像转换为CIE Lab颜色空间
  2. 初始化k个种子点(聚类中心),在图像上平均撒落k个点,k个点均匀的占满整幅图像。
  3. 对种子点在内的n*n(一般为3*3)区域计算每个像素点梯度值,选择值最小(最平滑)的点作为新的种子点,这一步主要是为了防止种子点落在了轮廓边界上。
  4. 对种子点周围 2S*2S的方形区域内的所有像素点计算距离度量(计算方法在后文),对于K-means算法是计算整张图的所有像素点,而SLIC得计算范围是2S*2S,所以SLIC算法收敛速度很快!
    其中S = sqrt(N/k)N是图像像素个数。
    超像素SLIC算法_第1张图片
  5. 因为图像上的每个像素点都可能被几个种子点计算距离度量,选择其中最小的距离度量对应的种子点作为其聚类中心。
距离度量

前文说了图像是要转换为Lab颜色空间的,现在提取此三个颜色通道lab,计算:

超像素SLIC算法_第2张图片

可以看到,距离度量有两部分, dc表示颜色度量, ds表示距离度量,另外 Ns = S = sqrt(N/k)Nc用常数 m代替, m在算法中可以调整,所以有:
超像素SLIC算法_第3张图片

我们来分析一下这个变量 m

  • m值比较大时,空间度量在距离测量过程中所占比重就比较大,那么生成的超像素比较紧凑。
  • m值比较小时,颜色度量所占的比重就比较大,那么生成的超像素在边缘部分较为紧凑,但形状和大小不规则。

此外,灰度图像和三维图像的计算公式是:


超像素SLIC算法_第4张图片

所以,在SLIC算法中,有两个变量种子个数km,上张图看一下不同的km的分割效果。

超像素SLIC算法_第5张图片

你可能感兴趣的:(超像素SLIC算法)