超像素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是图像像素个数。
  5. 因为图像上的每个像素点都可能被几个种子点计算距离度量,选择其中最小的距离度量对应的种子点作为其聚类中心。
距离度量

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


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

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

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容