精华内容
下载资源
问答
  • SLIC超像素分割

    2016-06-25 09:26:06
    SLIC超像素分割
  • SLIC超像素分割matlab代码

    热门讨论 2015-05-10 10:54:07
    SLIC超像素分割matlab代码
  • slic超像素分割方法源代码

    热门讨论 2015-10-15 08:45:25
    slic超像素分割方法源代码。c++实现,简洁明了
  • SLIC超像素分割方法

    2020-05-21 17:28:59
    为了方便查找,记录SLIC超像素分割方法的介绍 简介 关键代码分析 应用

    为了方便查找,记录SLIC超像素分割方法的介绍
    简介
    关键代码分析
    应用

    展开全文
  • SLIC超像素分割,C++版,利用opencv3.1,编码环境vs2013
  • SLIC超像素分割算法的C++代码,代码来源于该算法创始人Radhakrishna Achanta网站,这里我们给出了对应的OpenCV Mat接口,代码在VS2012和OpenCV2.4.9版本下测试验证可行,其中附上SLIC的相关说明。
  • 针对目前立体匹配中存在的匹配精度和匹配速度很难兼顾的问题,提出了一种基于稳定特征点和SLIC超像素分割算法的快速立体匹配。利用SURF算法高速有效地提取出特征点进行匹配,并且利用三角剖分的方法对稳定特征点作...
  • 图像分割:Python的SLIC超像素分割1. 什么是超像素?2. 为什么超像素在计算机视觉方面有重要的作用?3. 简单线性迭代聚类(SLIC)**segments = slic(image, n_segments = numSegments, sigma = 5)**4. 效果图参考 1....

    1. 什么是超像素?

    在单个或多个通道中,图像表示为像素网格。我们采用这些M x N像素网格,然后对其应用算法,例如面部检测和识别,模板匹配,甚至将深度学习直接应用于原始像素强度。

    像素网格并不是图像的自然表示。事实上,单个像素并不具有语义含义,将像素分组为像素网格只是图像的伪影,这是捕获和创建数字图像过程的一部分。

    当在像素网格上执行像素局部分组时,我们就会得到超像素(Superpixel)。 超像素比简单的像素网格具有更多的感知和语义含义。

    2. 为什么超像素在计算机视觉方面有重要的作用?

    像素网格到超像素的映射 将具有以下理想的特性:

    • 计算效率:超像素使我们能够将图像本身的复杂性从数十万个像素减少到仅数百个超像素。这些超像素中的每一个都将包含某种感知性的,理想情况下是语义性的值。

    • 感知意义:相比检查几乎没有感知意义的像素网格中的单个像素,属于一个超像素组的像素具有某种共性,例如相似的颜色或纹理分布。

    • 过度分割:大多数超像素算法都会过度分割图像。在找到图像中大多数重要边界的同时,产生了一些微不足道的边界。但恰恰证明超像素分割并未损失细节。从像素网格到超像素映射的像素损失很少(或没有)。

    • 超像素上的图形:更具有“代表性有效”。相比在50,000 x 50,000像素的网格上构造一个图形,其中每个像素代表图形中的一个节点,将超像素应用于像素网格空间,用剩下200个(任意)超像素,构建图形实际上更为有效。

    3. 简单线性迭代聚类(SLIC)

    简单线性迭代聚类(Simple Linear Iterative Clusters SLIC),执行SLTC 超像素分割,可以用超像素段覆盖原始图像;

    segments = slic(image, n_segments = numSegments, sigma = 5)

    • 仅有一个必需参数:
    • image:待执行SLTC超像素分割的图像,必须
    • n_segments: 定义我们要生成多少个超像素段的参数,默认100,可选
    • sigma:在分割之前应用的平滑高斯核,默认5,可选

    4. 效果图

    分割100、200、300块的效果图如下:
    在这里插入图片描述
    分割 50块效果图:

    在这里插入图片描述
    分割 100块效果图~~
    在这里插入图片描述

    5. 源码

    #  USAGE
    #  python superpixel.py --image cactus.jpg
    
    import argparse
    
    import matplotlib.pyplot as plt
    from skimage import io
    from skimage.segmentation import mark_boundaries  # 导入mark_boundaries 以绘制实际的超像素分割
    # 导入必要的包
    from skimage.segmentation import slic  # 导入包以使用SLIC superpixel segmentation
    from skimage.util import img_as_float
    
    # 构建命令行参数及解析
    # --image 输入图片的路径
    ap = argparse.ArgumentParser()
    ap.add_argument("-i", "--image", required=True, help="Path to the image")
    args = vars(ap.parse_args())
    
    # 加载图像
    # 将图像从无符号的8位int转换为具有[0,1]范围的浮点数据
    image = img_as_float(io.imread(args["image"]))
    
    # 遍历超像素段的数量 研究3种尺寸不断增加的段,100、200、300
    for numSegments in (30, 50, 100):
        # 执行SLTC 超像素分割,该功能仅获取原始图像并覆盖我们的超像素段。
        # 仅有一个必需参数:
        # image:待执行SLTC超像素分割的图像
        # n_segments: 定义我们要生成多少个超像素段的参数,默认100
        # sigma:在分割之前应用的平滑高斯核
        segments = slic(image, n_segments=numSegments, sigma=5)
    
        # 绘制SLTC 的分割结果
        fig = plt.figure("Superpixels -- %d segments" % (numSegments))
        ax = fig.add_subplot(1, 1, 1)
        ax.imshow(mark_boundaries(image, segments))
        plt.axis("off")
    
    # 展示图像
    plt.show()
    

    参考

    https://www.pyimagesearch.com/2014/07/28/a-slic-superpixel-tutorial-using-python/

    展开全文
  • SLIC超像素分割详解

    千次阅读 2017-04-11 16:43:36
    SLIC超像素分割详解(一) 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素...

    SLIC超像素分割详解(一)

    超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。已经广泛用于图像分割、姿势估计、目标跟踪、目标识别等计算机视觉应用。几种常见的超像素分割方法及其效果对比如下:


       Graph-based           NCut            Turbopixel          Quick-shift        Graph-cut a        Graph-cut b         SLIC

    这里主要介绍的是SLIC(simple linear iterativeclustering),即简单的线性迭代聚类。它是2010年提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度量标准,对图像像素进行局部聚类的过程。SLIC算法能生成紧凑、近似均匀的超像素,在运算速度,物体轮廓保持、超像素形状方面具有较高的综合评价,比较符合人们期望的分割效果。

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

    在介绍SLIC之前,插播一下Lab颜色空间的介绍。Lab色彩模型是由亮度(L)和有关色彩的a, b三个要素组成。L表示亮度(Luminosity),L的值域由0(黑色)到100(白色)。a表示从洋红色至绿色的范围(a为负值指示绿色而正值指示品红),b表示从黄色至蓝色的范围(b为负值指示蓝色而正值指示黄色)。Lab颜色空间的优点:1)不像RGBCMYK色彩空间,Lab 颜色被设计来接近人类生理视觉。它致力于感知均匀性,它的 L 分量密切匹配人类亮度感知。因此可以被用来通过修改 a 和 b 分量的输出色阶来做精确的颜色平衡,或使用 L 分量来调整亮度对比。这些变换在 RGB 或 CMYK 中是困难或不可能的。2)因为 Lab 描述的是颜色的显示方式,而不是设备(如显示器、打印机或数码相机)生成颜色所需的特定色料的数量,所以 Lab 被视为与设备无关的颜色模型。3)色域宽阔。它不仅包含了RGB,CMYK的所有色域,还能表现它们不能表现的色彩。人的肉眼能感知的色彩,都能通过Lab模型表现出来。另外,Lab色彩模型的绝妙之处还在于它弥补了RGB色彩模型色彩分布不均的不足,因为RGB模型在蓝色到绿色之间的过渡色彩过多,而在绿色到红色之间又缺少黄色和其他色彩。如果我们想在数字图形的处理中保留尽量宽阔的色域和丰富的色彩,最好选择Lab。

    下面描述一下SLIC具体实现的步骤:

    1.  初始化种子点(聚类中心):按照设定的超像素个数,在图像内均匀的分配种子点。假设图片总共有 N 个像素点,预分割为 K 个相同尺寸的超像素,那么每个超像素的大小为N/ K ,则相邻种子点的距离(步长)近似为S=sqrt(N/K)。

    2.  在种子点的n*n邻域内重新选择种子点(一般取n=3)。具体方法为:计算该邻域内所有像素点的梯度值,将种子点移到该邻域内梯度最小的地方。这样做的目的是为了避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。

    3.  在每个种子点周围的邻域内为每个像素点分配类标签(即属于哪个聚类中心)。和标准的k-means在整张图中搜索不同,SLIC的搜索范围限制为2S*2S,可以加速算法收敛,如下图。在此注意一点:期望的超像素尺寸为S*S,但是搜索的范围是2S*2S。


    4.  距离度量。包括颜色距离和空间距离。对于每个搜索到的像素点,分别计算它和该种子点的距离。距离计算方法如下:


    其中,dc代表颜色距离,ds代表空间距离,Ns是类内最大空间距离,定义为Ns=S=sqrt(N/K),适用于每个聚类。最大的颜色距离Nc既随图片不同而不同,也随聚类不同而不同,所以我们取一个固定常数m(取值范围[1,40],一般取10)代替。最终的距离度量D'如下:


    由于每个像素点都会被多个种子点搜索到,所以每个像素点都会有一个与周围种子点的距离,取最小值对应的种子点作为该像素点的聚类中心。

    5.  迭代优化。理论上上述步骤不断迭代直到误差收敛(可以理解为每个像素点聚类中心不再发生变化为止),实践发现10次迭代对绝大部分图片都可以得到较理想效果,所以一般迭代次数取10。

    6.  增强连通性。经过上述迭代优化可能出现以下瑕疵:出现多连通情况、超像素尺寸过小,单个超像素被切割成多个不连续超像素等,这些情况可以通过增强连通性解决。主要思路是:新建一张标记表,表内元素均为-1,按照“Z”型走向(从左到右,从上到下顺序)将不连续的超像素、尺寸过小超像素重新分配给邻近的超像素,遍历过的像素点分配给相应的标签,直到所有点遍历完毕为止。

     

    参考文献:

    [1]  Achanta,Radhakrishna, et al. Slic superpixels. No. EPFL REPORT 149300. 2010.

    [2] Achanta,Radhakrishna, et al. "SLIC superpixels compared to state-of-the-artsuperpixel methods." Pattern Analysis and Machine Intelligence, IEEETransactions on 34.11 (2012): 2274-2282.

     -------------------------


    展开全文
  • SLIC超像素分割代码实施

    千次阅读 2018-06-29 14:05:04
    1、网上下载SLIC超像素分割的代码以及GUI超像素分割结果图的代码,或者直接到我网盘通过提取码下载 链接链接:https://pan.baidu.com/s/1I8r6o6Pang44iMTqKUzObQ 提取码:ywtr 2、打开matlab(我用的matlab R2016a)...

     

    1、网上下载SLIC超像素分割的代码以及GUI超像素分割结果图的代码,或者直接到我网盘通过提取码下载
    链接链接:https://pan.baidu.com/s/1I8r6o6Pang44iMTqKUzObQ 
    提取码:ywtr
    2、打开matlab(我用的matlab R2016a),在“命令行窗口”输入 mex -setup换到C++/C编译器下面,如果出错说明没有安装C++/C编译器,需要安装,或者是有其他错误,这部分可以自行百度,网上都有解决办法;
    3、上步成功后,紧接着在“命令行窗口”输入 mex slicmex.c    成功后输入"SLICdemo",然后就可以出现结果图,此时的结果图不是分割好的一块块的超像素图,而是一幅有横纵坐标的黄绿蓝色的图;
    4、如果要实现下图所示的超像素图,就运行SLIC_Windows_GUI文件夹里的.exe程序。
    展开全文
  • SLIC超像素分割详解(一):简介

    千次阅读 2017-10-27 18:39:00
    SLIC超像素分割详解(一) 超像素 /图像分割 /SLIC 19851 SLIC超像素分割详解(一) 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征...
  • SLIC: simple linear ... 这是一个基于聚类算法的超像素分割,由LAB空间以及x、y像素坐标共5维空间来计算。不仅可以分割彩色图,也可以兼容分割灰度图,它还有一个优点就是可以人为的设置需要分割的超像素的数量。
  • 代码网址:http://ivrl.epfl.ch/research/superpixels#SLICO PS:上面的链接失效了,我搞了个代码托管,附链接:... 里面的“SLIC_mex.zip”应该是作者官网上下载的。 下载了SLIC超像素分割的MATL...
  • 完整的 notebook 请看这里:slic-adj​data.kaizhao.net最近有个 idea 想以超像素为单位做一些 graph 的操作,需要输入 SLIC 分割之后的邻接矩阵。这本来应该挺简单的,但是 scipy 系列的文档实在是太分散了,查了好...
  • Qt之VLFeat SLIC超像素分割(Cpp版)

    千次阅读 2015-08-08 20:30:54
    原文来自我的博客:Qt之VLfeat SLIC超像素分割(Cpp版) 近段时间学了点Qt,恰好前段时间用借助VLfeat以及OpenCV捣鼓了SLIC超像素分割,具体可见VLFeat SLIC超像素分割(Cpp版)这篇文章。然后寻思着能不能给这个超...
  • SLIC超像素分割代码

    2018-05-12 14:45:36
    源代码为C代码、需编译成MATLAB可执行文件后使用。经本人使用验证有效。。有问题的可以私信。。该代码确定可以实现相应的功能。。
  • SLIC超像素分割详解(二):关键代码分析 标签: 超像素SLIC图像分割 2015-05-06 14:06 2810人阅读 评论(5) 收藏 举报  分类: 图像分割(3)  版权声明:本文为博主原创文章,未经博...
  • SLIC超像素分割算法

    万次阅读 多人点赞 2017-09-22 18:17:13
    超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组...几种常见的超像素分割方法
  • 介绍SLIC超像素分割算法,给出其与openCV的接口,代码用VS2012和openCV2.4.9测试可运行。
  • SLIC超像素分割详解(一):简介 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将...
  • 之前做SLIC分割的过程中在网上找到的代码都只能得到标注分割线的图但不能得到分割后的超像素块,所以写了一个能够保存分割后的超像素块的python程序。 进行SLIC分割部分: import skimage from skimage....

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 174
精华内容 69
关键字:

slic超像素分割