基于均值漂移的三维网格分割算法(Mean Shift)

  mean shift算法是一种强大的无参数离散数据点的聚类方法,其在图像平滑、图像分割以及目标跟踪等方面都有着普遍的应用。[Yamauchi et al. 2005]基于mean shift算法提出了一种网格分割方法,具体来讲,给定一个三角网格,其面片重心和面片法向能够组成6维特征空间中的一系列离散点集,而后使用mean shift算法对其进行聚类,聚类后每一个面片的法向能够修正为各自聚类中心的法向信息,最后基于面片修正法向进行网格分割。下面具体介绍该算法的过程。算法

  给定一个由面片{Ti}所组成的三角网格M,其面片重心{ci}和面片法向{ni}组成R6空间中的离散点集χ = {(pi, qi) = (ci, ni)}。利用mean shift算法对其进行聚类以后,对每一个聚类中心yi[c] = {(p, q)的法向部分归一化以后能够做为该类中三角面片的新法向。ide

  修正后的面片法向有两个应用,一个是网格光顺,另外一个是网格分割。对于网格分割应用,须要指定网格分割的区域数目。在初始化阶段,先随机选定各个区域的种子面片,而后迭代如下两个步骤直到收敛稳定。函数

1:区域增加spa

  相邻三角面片TiTj之间的距离定义为:.net

distance(Ti, Tj) = || NmiNmj ||3d

其中Nm为利用mean shift算法获得的面片修正法向。blog

  这样利用多源Dijkstra最短路算法能够为每一个三角面片指定一个所属区域。ci

2:计算种子面片get

  区域增加完成后,须要从新计算每一个区域的种子面片,新的种子面片为每一个区域最中心的三角面片。所以该阶段相邻三角面片TiTj之间的距离定义为:it

distance(Ti, Tj) = || cicj ||

其中ci为三角面片Ti的重心。

  这样每一个区域能够找到一个距离边界最远的三角面片,即为新的种子面片。

图:(上左)原始网格 (上中)原始网格法向 (上右)mean shift聚类

(下左)网格修正法向 (下中)网格分割效果 (下右)网格光顺效果

 

 

参考文献:

[1] Hitoshi Yamauchi, Seungyong Lee, Yunjin Lee, Yutaka Ohtake, Alexander Belyaev, and Hans-Peter Seidel. 2005. Feature Sensitive Mesh Segmentation with Mean Shift. In Proceedings of the International Conference on Shape Modeling and Applications 2005 (SMI '05). IEEE Computer Society, Washington, DC, USA, 238--245.

 

附录

Mean-shift算法

  利用某个几率密度函数f(x)采样获得一系列数据样本χ = (x1, x2, … , xn)∈Rd。假设咱们须要估计这些样本的几率密度函数f(·),那么由核密度估计(kernel density estimation)方法能够近似获得其几率密度函数为:

其中K(x)称为核函数(kernel function),h为带宽(bandwidth)。核函数知足以下条件:

K(x) ≥ 0 而且

  通常核函数是知足径向对称(radially symmetric),便可以表示为:

其中k(x)称为分布函数(profile function),c为归一化参数。

  因而几率密度函数能够转化成以下形式:

  通常使用较多的核函数是Gaussian核函数和Epanechnikov核函数,其具体形式以下:

Gaussian核函数:

Epanechnikov核函数:

其中cdd维单位球的体积。

  假设将数据样本χ聚类成一系列簇,咱们能够将聚类中心设定为几率密度函数的局部极值点,而寻找局部极值点的一个最简单方法就是梯度上升法。

  对几率密度函数求导后获得:

其中g(x) = -k’(x),m(x)的形式以下:

  上式中的m(x)就是所谓的mean shift向量,它的物理含义就是几率密度函数的梯度,也就是当前点的移动方向和大小。

  利用mean shift算法进行聚类的过程分以下两步:

  1. 对于每个数据样本xi∈χ,初始化xiyi[0]

  2. 利用梯度上升方法计算yi[j]直到收敛,yi[j+1] = yi[j] + m(yi[j]),j = 0, 1, 2, …。

  对于以下二维数据样本,利用核密度估计方法能够获得不一样带宽下的几率密度函数分布,而且利用mean shift算法能够获得不一样的聚类结果。

图:原始二维数据样本

图:bandwidth = 2和bandwidth = 0.8所对应的几率密度函数分布图

图:bandwidth = 2和bandwidth = 0.8所对应的mean shift聚类效果

  上述mean shift算法有个简单的扩展,对于数据样本χ = {xi= (pi, qi): pi∈P, qi∈Q},每一个样本由两部份内容组成,那么使用多元核密度估计(multivariate kernel density estimation)方法能够获得其几率密度函数为:

  此时mean shift向量为:

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen

 

 

参考:

http://blog.csdn.net/ttransposition/article/details/38514127

相关文章
相关标签/搜索