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

2:在种子点的n*n邻域内重新选择聚类中心。计算该邻域内所有像素点的梯度值,将种子点移到该邻域内梯度最小的地方,可以避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。

3:在每个种子点周围的邻域内为每个像素点进行分类,和标准的k-means在整张图中搜索不同,SLIC的期望的超像素尺寸为SS,但是搜索的范围是2S*2S。
4:距离度量。包括颜色距离和空间距离。对于每个搜索到的像素点,分别计算它和该种子点的距离,本质还是采用欧氏距离公式,计算方法如下:

其中,dc代表颜色距离,ds代表空间距离,Ns是类内最大空间距离。最大的颜色距离Nc既随图片不同而不同,也随聚类不同而不同,所以我们取一个固定常数m(1<m<40),一般取10代替。最终的距离度量D’如下:

由于每个像素点都会被多个聚类中心搜索到并计算其距离,最后选取最小的距离值作为该像素点的聚类中心。

5:迭代优化,一般达到迭代次数或者达到误差收敛(即每个像素点聚类中心不再发生变化为止)。
6:增强连通性。经过迭代优化可能出现多连通情况、超像素尺寸过小,单个超像素被切割成多个不连续超像素等,这些情况可以通过进行增强连通性解决。
7:基于SLIC超像素分割完毕,显示分割图像。
运行软件版本:MATLAB2014a(大于此版本即可)
运行方法:点击main.m文件,然后选择自己要超像素分割的照片即可。

MATLAB代码如下:
main.m文件
%选择要进行超像素分割图像的路径
close all;clc;
[filename, pathname, filterindex] = uigetfile(‘C:\Users\Hasee\Desktop\毕业设计\测试图库.jpg’, ‘选择图片’);
file = fullfile(pathname, filename);
%设置读取的照片为全局变量
global I;
%读取要选择的照片
I= imread(file);
figure,imshow(I);
title(‘原始图片’)
%利用SLIC函数处理待分割图像:
%超像素尺寸s=15,errTh为控制迭代结束的联合向量残差上限为10-2即0.01,控制色域与空域权重比例的系数wDs为0.52即0.25
s=15;
errTh=10^-2;
wDs=0.5^2;
Label=SLIC(I,s,errTh,wDs);
%% 显示轮廓
%矩阵初始化为矩阵
marker=zeros(size(Label));
%记录大小为m*n
[m,n]=size(Label);
for i=1:m
for j=1:n
top=Label(max(1,i-1),j);
bottom=Label(min(m,i+1),j);
left=Label(i,max(1,j-1));
right=Label(i,min(n,j+1));
if ~(topbottom && bottomleft && left==right)
marker(i,j)=1;
end
end
end
I2=I;
for i=1:m
for j=1:n
if marker(i,j)==1
I2(i,j,:)=0;
end
end
end
figure,imshow(I2);
title(‘分割结果’)

SLIC.m文件
function Label=SLIC(img,s,errTh,wDs)
% 基于KMeans的超像素分割
% img为输入图像,维度不限,最大值为255
% s x s为超像素尺寸
% errTh为控制迭代结束的联合向量残差上限
m=size(img,1);
n=size(img,2);
%% 计算栅格顶点与中心的坐标
%图像长度与超像素尺寸比值向下取整
h=floor(m/s);
%图像宽度与超像素尺寸比值向下取整
w=floor(n/s);
rowR=floor((m-hs)/2); %多余部分首尾均分
colR=floor((n-w
s)/2);
rowStart=(rowR+1)

基于Matlab的SLIC超像素分割算法分析相关推荐

  1. VLFeat SLIC超像素分割(Cpp版)

    这段时间对VLFeat的C接口非常的感兴趣,以前用的都是其Matlab接口,虽然很方便,而且提供的Matlab接口要比C接口功能更强大,但Matlab终归只能用来做一下快速的方法验证,所以想比较完整的 ...

  2. SLIC超像素分割详解

    SLIC超像素分割详解(一) 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理.颜色.亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块.它利用像素之间 ...

  3. 图像分割:Python的SLIC超像素分割

    图像分割:Python的SLIC超像素分割 1. 什么是超像素? 2. 为什么超像素在计算机视觉方面有重要的作用? 3. 简单线性迭代聚类(SLIC) 4. 效果图 5. 源码 参考 1. 什么是超像 ...

  4. SLIC超像素分割方法

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

  5. SLIC 超像素分割详解(三):应用

    看过上面的介绍后,我们应该思考一下:分割好的超像素有什么用?怎么用?用到哪里? 首先,超像素可以用来做跟踪,可以参考卢湖川课题组发表在IEEE TIP上的<Robust superpixeltr ...

  6. SLIC超像素分割的算法介绍和源码分析

    前述 最近在看显著性检测,发现很多算法的基础是超像素分割,而正在看的Saliency Optimization from Robust Background Detection算法的预处理是SLIC算 ...

  7. 【转】 SLIC超像素分割详解(一):简介

    http://blog.csdn.net/electech6/article/details/45509779 转载于:https://www.cnblogs.com/nfydream/p/57749 ...

  8. julia 调用python库_Julia调用Python实现超像素分割SLIC算法

    最近想要在julia中实现 Simple Linear Iterative Clustering (SLIC) 算法对图像进行超像素分割,关于SLIC超像素分割算法,请参考SLIC Superpixe ...

  9. 超像素分割算法————综述

    参考:超像素-学习笔记 什么是超像素?评价标准?SLIC.SEED.ETPS算法 比较的指标:图像边界的粘附性.算法速度.存储效率.分割性能 超像素算法:将像素组合成感知有意义的原子区域( atomi ...

  10. MATLAB显示slic,quickshift超像素分割结果图

    首先介绍vlfeat库函数:vl_slic,vl_quickshift,vl_quckseg vl_slic  SLIC superpixels segments = vl_slic(im,regio ...

最新文章

  1. java 不退出_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本...
  2. Android获取手机短信
  3. 【黑科技】在alv中设置字体样式
  4. python遍历字典的四种方法
  5. price initialization when clicking new button in WebUI
  6. java bitset_Java BitSet toString()方法与示例
  7. 三种方法构建简单的WEB服务器!
  8. 【Flink】Buffer pool is destroyed
  9. 为什么有的人洗脚时要在水里滴几滴醋?
  10. [高光谱] Hyperspectral-Classification Pytorch 的高光谱场景的通用类 HyperX
  11. 能不能在FOR循环中执行SQL?
  12. Linux之-atime、ctime、mtime
  13. 1.编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
  14. 寻找亚马逊测评师邮箱_亚马逊测评怎么做,做亚马逊测评买家号怎么做?
  15. 学习笔记:OMP算法(Spatially Sparse Precoding in Millimeter wave MIMO Systems)
  16. 2019数据安装勾选_Origin2019下载和安装教程
  17. Excel如何在表格内打勾
  18. ROOT工具为漏洞利用大开“方便之门”
  19. OSPF配置及MD5验证
  20. Search()函数使用方法

热门文章

  1. bodymovin输出Json动画为黑白的解决方案
  2. 7月29日绝地求生服务器维护,绝地求生7月29日更新到几点_绝地求生2020年7月29日更新维护时间安排一览_三六五吃鸡...
  3. 3°、6°带高斯-克吕格投影
  4. endnote x7不在word中显示
  5. oracle数据库基础笔试题,Oracle数据库入门笔试试题及参考答案
  6. 一道金蝶校园招聘试题数据库笔试题
  7. 软件测试中什么是正交分析法,软件测试用例设计方法之正交分析法
  8. un-app uni.navigateTo页面跳转做封装传参
  9. 游戏服务器开发技术栈
  10. ABB机械臂手眼标定