Advertisement

mean shift 图像分割(二)

阅读量:

Reference:

[1]位移均值:一种可靠的方法用于分析特征空间, PAMI, 2002

[2] mean shift,非常好的ppt百度文库链接

[3] Pattern Recognition and Machine Learning, Bishop, 2006, Sec 2.5

[4]Computer Vision Algorithms and Applications, Richard Szeliski's work on page Sec 5.3, published in 2010

**[5]****Kernel smoothing,**MP Wand, MC Jones ,1994, Chapter 4

均值漂移图像分割技术是一篇综述性文章的第一部分,在第一部分中主要阐述了均值漂移算法的基本概念与核心思想。

Mean shift 图像分割 (二): 3 理论基础, 4 拓展应用

位移均值图像分割(三): 5 非参数密度估计方法

图像分割—均值平移算法(OpenCV源代码解读)

3 算法原理

3.1 密度估计

关于密度估计,这里直接使用结论,具体原理,参见第5部分:非参数密度估计。

某一点的密度估计值:

为核函数,一般我们会使用径向对称(radially symmetric)核函数。即:

其中

为标准化常数,使得

称为

的profile,原文介绍了两种

,对应两种核,这里再补充一种。

(1)Epanechnikov Kernel

它的profile如下:

可视化效果

(2)Normal Kernel

它的profile如下:

可视化效果

(3)Uniform Kernel

它的profile如下:

可视化效果

** 3.2密度梯度估计**

** 3.2.1 梯度方向**

处的密度估计:

则密度梯度估计:

,即这一部分又可以看成是一个核密度估计。

物理意义:梯度方向上的各个数据点的方向向量经过加权求平均后得到的结果 ,即上式等价于将各数据点的方向向量按照一定权重进行综合计算

蓝色圈圈—>到黄色圈圈

例如,我们使用的是Normal Kernel,则

想象一下几十匹马同时拉一辆车的恢宏场面,每匹马

都往自己的方向

拉,不过,距离越

近的马,其力量

越大,初中物理告诉我们,结果是合力的方向,如上图的黄色箭头。

** 注意**:Epanechnikov Kernel求导后实质上就是Uniform Kernel。

** 3.2.2 漫漫爬坡路**

然而知道了移动的方向却难以确定步长的大小。为了实现自适应步长的设定,在此进行形式上的转换。

看起来有点复杂,实际上只是简单的替换。其中

类比

,

类比

中间项的物理意义:

处的核

的密度估计,

求导所得,如果

用Normal Kernel,则

的形式和

相同。

中间项只是一个数,而最后一项

被称为mean shift向量的是一个方向矢量。它也就是我们的梯度方向。

对于某一点

往梯度方向移动到

,则新坐标:

物理意义:很直观,以

为权值计算重心。

时,我们就到达了模点,由于

,所以只能是

想要一步登天

爬过的脚印依次

,则脚印公式:

** 3.3.3 自适应步长**

可以看出步长

成反比,还是以Normal Kernel为例,越靠近模点,步长越小,反之越大。

原文证明了,只要

是凸函数,

单调递减(

可以不是哦),那么就能保证它总能收敛到模点,并且

这个函数是单调递增的(没有看出问题)。只要我们持续前行,在这真是一个令人向往的世界啊?期待着能与您相遇。

** 3.3 图像分割领域的具体化**

核心上来说, mean shift通过将任何问题转化为密度估计问题来处理. 但具体问题还需具体情况具体分析. 在图像中, 它包含两种类型的信息: 位置信息和色调. 其中位置信息部分对应spatial空间部分.

后者为range空间,对于单通道图片即灰度值,对于彩色图片即

或者效果更好的

因为两者本质上存在显著差异,在空间上呈现出独特的分布特征,并对结果产生本质影响。因此不能将其等同看待。其中spatial维度设定为2维,并且范围空间被设定为其对应的数值参数设置为适当值以满足特定应用需求。

维。

一元核:

图像分割中使用的多元核:

滤波的结果

物理意义:

分别用于计算坐标空间核与颜色空间核的带宽(bandwidth)/尺度。表述不清的情况下,请您多包涵;观察一下结果如何。

** 3.4回首OpenCV实现**

第二步,重心计算公式

我们是对以

为中心

为边长的区域求重心 ,其实本应该是:

用的是Uniform Kernel,也就是说

用的是Epanechnikov Kernel

此时,距离筛选是由核函数实现的,因此我们是对**图像中所有的数据点

** 计算重心,而不是落在

为中心,

为边长的区域内的点求重心。

OpenCV的实现中,

并不是圆形的,为了循环时程序实现的方便,就用方形近似,但

是严格的球体。

不过方形的也可以写成核函数形式:

此外,在选择核函数时,默认情况下采用均匀核的原因是其计算效率较高。然而,在某些特定场景下(如数据分布较为复杂的情况),高斯核(Gaussian kernel)虽然能够提供更好的拟合效果(如光滑度更高),但其计算复杂度也相应增加。基于此,在实际应用中通常优先选择均匀核作为一种折中的解决方案。如前所述,在大多数情况下(即数据分布较为规则或者样本量适中),这两种核都能达到较好的效果)。

** 4延伸**

不写了,已经写得太多了……这次就只挖个坑,日后再跳

Camshift

支持自动调节窗口尺寸,并可应对不同目标尺寸的变化需求,在人脸识别场景中可观察到人与摄像头之间的距离发生动态变化的情况

** 带宽选择**

图像分割的带宽通常由用户自行调节并观察其效果。是否能够得到最优带宽值?不过,我倒是希望了解自适应带宽的情况.参考原文中的具体设置和分析结果.

** Mode prune**

在某些情况下(如上图所示),算法可能会将位于红色线条上的节点错误地导向鞍点位置。针对这一问题提出了解决方案:略微调整模点的位置(即修改其坐标值),然后从调整后的位置继续进行计算。如果能够回到原处,则予以保留;若无法恢复,则舍弃该路径。

** 与双边滤波的关联**

可以看做死板的mean shift 参见[4]的5.2.1

** 与分水岭分割**

逆过程,从山峰开始找山谷,参见[4]的Sec5.2.1

** 补充阅读**

图像分割优化:该算法通过随机选取一定比例的像素点作为初始引导单元,在图像空间中进行空间关系搜索来定位模点位置,在搜索过程中会建立多条通向模点位置的道路连接。这些道路连接为剩余像素提供了多种路径选择。剩余像素则根据最近引导单元的位置信息选择最优路径到达目标区域。此外还有一种基于层次划分的技术策略,在OpenCV中的具体实现参考了该技术框架的设计方案。

A topographic segmentation framework for hierarchical partitioning based on the mean-shift algorithm. CVPR 2007

** 目标跟踪**:Kernel-Based Object Tracking, PAMI 03

全部评论 (0)

还没有任何评论哟~