热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

SLIC算法

基础知识在介绍SLIC之前,先来介绍以下Lab颜色空间的介绍。Lab色彩模型是由亮度(L)要素和与有关色彩的a,b要素组成,L的值由0(黑色)到10
基础知识

在介绍SLIC之前,先来介绍以下Lab颜色空间的介绍。

Lab色彩模型是由亮度(L)要素和与有关色彩的a,b要素组成,L的值由0(黑色)到100(白色),a表示从洋红色至绿色的范围(a为负值表示绿色而正值表示品红),b表示从黄色至蓝色的范围(b为负值表示蓝色而正值表示黄色)。

Lab颜色空间的优点:
1)不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类生理视觉。它致力于感知均匀性,它的L分量密切匹配人类亮度感知。因此可以被用来通过修改a和b分量的输出色阶来做精确的颜色平衡,或使用L分量来调整亮度对比。这些变换在RGB或CMYK种是困难的或不可能的。
2)色域宽广。它不仅包含了RGB、CMYK的所有色域,还能表现他们不能表现得色彩。人的肉眼能感知的色彩,都能通过Lab模型表现出来。另外,Lab色彩模型的绝妙之处还在于它弥补了RGB色彩模型色彩分布不均的不足,因为RGB模型在蓝色到绿色之间的过渡色彩过多,而在绿色到红色之间又缺少黄色和其他色彩。
3)Lab空间内的很多“颜色”超出了人类视觉的视域,因此纯粹是假想的;这些“颜色”不能在物理世界中再生。通过颜色管理软件,比如内置于图象编辑应用程序中的那些软件,可以选择最接近的色域内近似,在处理中变换亮度、彩度甚至色相。Dan Margulis称,在图象操作的多个步骤之间使用假想色是很有用的。

算法思想

SLIC算法时simple linear iterative cluster的简称,主要是将图像从RGB颜色空间转换到CIE-Lab颜色空间,对应每个像素的(L,a,b)颜色值和(x,y)坐标组成一个5维向量V[I,a,b,x,y],两个像素的相似性即可由他们的向量距离来度量,距离越大,相似性越小。

该算法与K-means聚类算法思路类似,首先生成K个种子点,然后在每个种子点的周围空间里搜索距离该种子点最近的若干像素,将他们归为与该种子点一类,直到所有像素点都归类完毕。然后计算这K个超像素里所有像素点的平均向量值,重新得到K个聚类中心,然后再以这K个中心去搜索其周围与其最为相似的若干像素,所有像素都归类完重新得到K个超像素,更新聚类中心,在此迭代,如此反复直到收敛。

具体算法步骤

在这里插入图片描述
1.初始化聚类中心:按照预先设定的超像素个数,在图像内均匀的分配聚类中心。如果图像有N个像素点,预分割为K个相同尺寸的超像素,那么每个超像素的大小为N/K,则相邻聚类中心的距离(步长)近似为 S = sqrt(N/K);
2.在聚类中心的n×n邻域内重新选择聚类中心(一般n取3)。具体方法为:计算该邻域内所有像素点的梯度值,将聚类中心移动到该邻域内梯度最小的地方。这样做的目的是为了避免中心点落在梯度较大1的轮廓边界上,以免影响后续聚类效果;
3.在每个聚类中心周围的邻域内为每个像素点分配类标签(即属于哪个聚类中心)。(期望的超像素尺寸为S×S,但其搜索范围为2S×2S);
4.计算搜索点到聚类中心的距离度量(包括颜色距离和空间距离);
在这里插入图片描述
其中,dccc代表颜色距离,dsss代表空间距离,Nsss是类内最大空间距离,定义Nsss=sqrt(N/K),适用于每个聚类,最大颜色距离Nccc随图片不同而不同,也随聚类不同而不同,所以一般取一个固定常数(取值范围[1-40],一般取10)代替。最终的距离测度D‘如下:
在这里插入图片描述
由于每个像素点都会被多个种子点搜索到,所以每个像素点都会有一个与周围种子点的距离,取最小值对应的种子点作为该像素点的聚类中心。
5.直到每个像素点聚类中心不再发生变化停止迭代(实践发现10次迭代绝大部分图片都可以得到较理想效果);
6.增强连通性:经过上述迭代优化可能会出现出现多连通、超像素尺寸过小,单个超像素被切割为多个不连续超像素等等问题,而这些情况可以通过增强连通性来解决。主要思路在于:新建一张标记表,表内元素均为-1,按照“Z”型走向(从左到右、从上到下顺序)将不连续的超像素、尺寸过小超像素重新分配给临近的超像素,遍历果的像素点分配给相应的标签,直到所有点遍历完毕为止。

SLIC主要优点

1)生成的超像素如同细胞一般紧凑整齐,邻域特征比较容易表达。这样基于像素的方法可以比较容易的改造为基于超像素的方法。
2)不仅可以分割彩色图,也可以兼容分割灰度图。
3)需要设置的参数非常少,默认情况下只需要设置一个预分割的超像素的数量。
4)相比其他的超像素分割方法,SLIC在运行速度、生成超像素的紧凑度、轮廓保持方面都比较理想。

以下是论文中的效果图
在这里插入图片描述

自己实现的效果图:
在这里插入图片描述


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
author-avatar
书友395154
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有