极化SAR数据超像素分割和密度峰值聚类
近日关于极化SAR数据超像素分割和密度峰值聚类CFSFDP的学习的记录与总结
- 一、超像素分割
- kmeans分类:
- 超像素分类:
- 二、基于密度峰值的快速聚类算法(CFSFDP)
- 一、确定类中心
- 个人理解
- 结果:
- 二、将剩余数据分类
- 三、总结
一、超像素分割
在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。超像素由一系列位置相邻且颜色、亮度、纹理等特征相似的像素点组成的小区域。这些小区域大多保留了进一步进行图像分割的有效信息,且一般不会破坏图像中物体的边界信息。
图像分割的结果是图像上子区域的集合(这些子区域的全体覆盖了整个图像),或是从图像中提取的轮廓线的集合(例如边缘检测)。一个子区域中的每个像素在某种特性的度量下或是由计算得出的特性都是相似的,例如颜色、亮度、纹理。邻接区域在某种特性的度量下有很大的不同。
于我而言,主要学习simple linear iterative clustering (SLIC),简单的迭代聚类算法。这个算法和kmeans算法十分相似。对于给定样本,执行步骤如下:
kmeans分类:
1、给定聚类簇数k,初始化聚类中心。
2、计算样本和各聚类中心距离对样本进行分类。并记录分类完成后的各个类簇的数据的均值。
3、比较各个聚类新的均值和重新分类之前的均值,并将聚类的均值更新,重复迭代。直到新旧聚类均值差值小于某个阈值停止迭代。
超像素分类:
1、给定超像素尺寸pixelsize,初始化超像素中心,初始化超像素中心,将m×n个超像素中心大致均匀设置在原图上。例如对于M×N的影像数据,超像素总个数为:m×n;m为超像素中心行数:m=floor(M÷pixelsize);n为超像素中心列数:n=floor(N÷pixelsize);(示意草图():紫色点为超像素中心,当然实际上肯定要密集的多)(目前我认为一定要向下取整,向上取整的话会是计算变得复杂,容易出错)
2、移动超像素中心到邻域3×3梯度最小的位置,可以有效避免超像素中心出于噪声点或者边界位置。
3、遍历每个超像素中心,在超像素中心邻域2pixelsize×2pixelsize的范围内进行扫描,判断邻域内各个数据点相对超像素中心的距离,全部扫描完毕后,对于每一个数据点,将其相对周围超像素中心的距离进行比较,然后将数据点归到最近的超像素中心。
4、计算划归到各个超像素中心的数据点的均值,比较前后均值之差,小于某个阈值就停止迭代。
在我看来,超像素分割的意义在于归化相似的数据,减小数据量,提高程序的效率,使得某些算法得以实现。就比如:
二、基于密度峰值的快速聚类算法(CFSFDP)
CFSFDP算法进行聚类时一般分为以下步骤。
一、确定类中心
CFSFDP算法进行聚类时首先需要确定类的中心点,其假设簇的聚类中心的局部密度高于其周围数据点的局部密度,并且聚类中心与那些局部密度更高的数据点之间的距离较大。对于一个给定的数据集,CFSFDP算法需要为每个数据点计算两个量化值:数据点的局部密度ρi
和它与局部密度比其高的数据点之间的距离δi
。数据点xi
的局部密度ρi
有两种计算方式:基于截断核的计算方式和基于高斯核的计算方式。使用截断核计算局部密度pl的公式为:
ρi
=:∑χ(δij
-dc
)
其中,χ(x)={1,x<=00,x>0χ(x)=\left\{ \begin{array}{c} 1,x<=0 \\ 0 , x>0\end{array}\right. χ(x)={1,x<=00,x>0,δij
为数据点之间的距离,dc
为截断距离即距离阈值。使用该计算方式得到的数据点的局部密度ρi
通常等于该数据点周围与之距离小于dc
的数据点的个数。因此,可以得出这样的结论:与数据点xi
的距离小于dc
的点越多,得到的局部密度ρi
就越大。使用高斯核计算局部密度ρi
的公式为:
ρi
=:∑e-(δij
/dc
)2
其中,δij
为数据点之间的距离,j为i的值域,dc
为截断距离即距离阈值。使用该计算方式得到的局部密度ρi
仍然满足与数据点xi
的距离小于dc
的点越多,局部密度ρi
就越大的结论。使用截断核计算局部密度和使用高斯核计算局部密度这两种计算方式的区别在于使用截断核计算得到的结果为离散值,而使用高斯核计算得到的结果为连续值。因此,相对而言,使用高斯核计算得到的数据点具有相同的局部密度的概率比使用截断核计算得到的数据点具有相同的局部密度的概率要小,使用高斯核计算局部密度ρi
更方便比较数据点局部密度之间的大小关系。(在数据计算起来很复杂时可以考虑第一种方法更为简单)。数据点之间的距离δi
。是通过计算数据点zi与比该数据点局部密度高的其他数据点的距离得到的,数据点之间的距离院可以根据公式
δi={min(δij),存在ρj>ρimax(δij),任意ρj<=ρiδi=\left\{ \begin{array}{c} min(δij),存在ρj>ρi\\ max(δij) , 任意ρj<=ρi\end{array}\right. δi={min(δij),存在ρj>ρimax(δij),任意ρj<=ρi
计算得到。一般而言,数据点之间的距离δi
为数据点i与比该数据点局部密度ρi
更高的其他数据点的所有距离中的最小值,但对于局部密度ρi
最高的点,数据点之间的距离δi
为其他数据点与之距离的最大值。
个人理解
在影像自动聚类过程中,我们希望达到的目标是图像自动分割成不同的类。判断最后分类结果的好坏程度的两个标准:(1)对于划分到同一个类的数据,我们希望这个类内有足够多的数据和他相似度够好(2)对于分到不同类的数据,我们希望不同类之间数据的区分度够大。
两个指标作为选取类中心的标准:局部密度ρi
和表征距离δi
,局部密度用来衡量类内是否有足够多的数据点和他相似,表征距离δi
用来衡量两个类之间是否有足够的区分度。作为类中心,他的局部密度一定足够大,表征距离一定也足够大。
取聚类中心的方法可以人工选取,我采用的方法很简单,输入想要分类的个数k,从局部密度最大的里面排序选取10k个数据点,再从这10k个数据点里取k个表征距离最大的数据点作为聚类中心。以此来作为聚类中心
结果:
使用matlab进行gui设计,实现交互等操作。
测试截图:
分类个数和超像素大小会影响最终的分类结果
二、将剩余数据分类
将剩余的数据分到局部密度比其高且距离最近的聚类里。只需一次,无需迭代。
三、总结
CFSFDP聚类算法在执行过程中最耗时的莫过于将各点相对于全部数据的距离计算出来来求局部密度的步骤,而超像素分类恰好解决了这一问题,在保证合理的情况下,适当增加超像素的尺寸可以有效减少CFSFDP的运算时间,就在计算各数据点相对各点距离一处就可缩短时间为1/pixelsize4也就是说,当pixelsize取三可以缩减时间为大概1/81收益相当可观
极化SAR数据超像素分割和密度峰值聚类相关推荐
- 图像分割:Python的SLIC超像素分割
图像分割:Python的SLIC超像素分割 1. 什么是超像素? 2. 为什么超像素在计算机视觉方面有重要的作用? 3. 简单线性迭代聚类(SLIC) 4. 效果图 5. 源码 参考 1. 什么是超像 ...
- 超像素分割与超像素合并/区域合并/多尺度分割
最近两年,超像素分割方法非常火爆,计算机视觉.模式识别许多方向都兴起了超像素研究的热潮,提出的方法也比较多.其实这不是个什么新鲜的东西,以前的许多分割算法所获得的结果都可以称为超像素,如Watersh ...
- 论文解读:《自适应非局部随机游动用于图像超像素分割》
论文解读:<Adaptive Nonlocal Random Walks for Image Superpixel Segmentation> 1.文章概述 2.背景 2.1 现有的超像素 ...
- VLFeat SLIC超像素分割(Cpp版)
这段时间对VLFeat的C接口非常的感兴趣,以前用的都是其Matlab接口,虽然很方便,而且提供的Matlab接口要比C接口功能更强大,但Matlab终归只能用来做一下快速的方法验证,所以想比较完整的 ...
- julia 调用python库_Julia调用Python实现超像素分割SLIC算法
最近想要在julia中实现 Simple Linear Iterative Clustering (SLIC) 算法对图像进行超像素分割,关于SLIC超像素分割算法,请参考SLIC Superpixe ...
- SLIC超像素分割方法
为了方便查找,记录SLIC超像素分割方法的介绍 简介 关键代码分析 应用
- 超像素分割(Superpixel Segmentation)发展
转自:http://blog.csdn.net/anshan1984/article/details/8918167 最近实验需要用到超像素的一些算法,之前也有看过一下分水岭这个老算法,想着找找近年来 ...
- SLIC 超像素分割详解(三):应用
看过上面的介绍后,我们应该思考一下:分割好的超像素有什么用?怎么用?用到哪里? 首先,超像素可以用来做跟踪,可以参考卢湖川课题组发表在IEEE TIP上的<Robust superpixeltr ...
- SLIC超像素分割的算法介绍和源码分析
前述 最近在看显著性检测,发现很多算法的基础是超像素分割,而正在看的Saliency Optimization from Robust Background Detection算法的预处理是SLIC算 ...
- MATLAB显示slic,quickshift超像素分割结果图
首先介绍vlfeat库函数:vl_slic,vl_quickshift,vl_quckseg vl_slic SLIC superpixels segments = vl_slic(im,regio ...
最新文章
- ROS-3 : Catkin工作空间和ROS功能包
- 8款效果精美的 jQuery 加载动画和进度条插件
- 模拟jQuery ajax服务器端与客户端通信
- 常用开源Jabber服务器介绍
- 【HDU - 4348】To the moon(主席树,区间更新)
- java基础—Calendar类方法演示
- Strut2页面传参跳转 --Struts2
- 【论文写作】SSM校园招聘系统如何写摘要部分
- 热量的传递 —— 热辐射
- IO、NIO和Netty
- 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解
- Java 百万数据秒级导出到Excel中
- 【vue系列-05】vue的生命周期(详解)
- 启信宝牵手国家队,征信服务进化再加速
- 博客园——打造不一样的个人博客
- Springboot毕业设计毕设作品,大学排课系统设计与实现
- Mysql导出逗号分隔的csv文件
- 计算机专业毕业论文java毕业设计开题报告基于SpringBoot的阳光线上交友系统
- 计算机嵌入式课程置换论文,嵌入式课程学习论文
- 【毕业设计_课程设计】基于Android Studio平台的测量程序设计与实现