三维网格分割算法(Random Walks)
首先以一维随机游走(1D Random Walks)为例来介绍下随机游走(Random Walks)算法,如下图所示,从某点出发,随机向左右移动,向左和向右的概率相同,都为1/2,并且到达0点或N点则不能移动,那么如何求该点到达目的地N点的概率。

该问题可以描述为如下数学形式:
P(0) = 0
P(N) = 1
P(x) = 1/2*P(x - 1) + 1/2*P(x + 1) for x = 1, 2, 3, … , N-1
如果用矩阵形式描述,即:

那么通过求解该线性方程组就可以得到各个点到达目的地N点的概率,以上就是一维随机游走算法原理。
[Grady et al. 2006]提出了利用随机游走思想来分割二维图像,文章将图像考虑成一张图(Graph),每个像素对应图中一个节点,根据亮度差值定义节点间的权重(相当于一维随机游走中向左和向右的概率),然后用户指定前景(foreground)和背景(background)标签(相当于一维随机游走中N点和0点),通过求解线性方程组就可以得到各个像素点属于前景或背景的概率,如果将阈值概率设置为0.5,那么就可以分割得到期望的图像区域。
[Lai et al. 2008]将这种思想扩展到三维网格分割,文章将网格中每个三角片对应图中一个节点,利用相邻三角片之间的二面角来定义节点之间的权重,具体如下:
对于三角片fi,定义一个fi与相邻三角片fi,k(k = 1, 2, 3)之间几何差异的函数d(fi, fi,k):
d(fi, fi,k) = η·[1 – cos(dihedral(fi, fi,k))] = η/2·||Ni – Ni,k||2
其中:dihedral(fi, fi,k)代表相邻三角片fi与fi,k之间的二面角,Ni为三角片fi的法向,对于凹边η设置为1.0,对于凸边η设置为0.2。
将d归一化:

节点之间的权重pi,k可以根据函数d(fi, fi,k)给定:

同样通过求解线性方程组可以得到网格分割效果。
[Zhang et al. 2010]对[Lai et al. 2008]的网格分割算法做了部分改进,文章将网格中每个顶点对应图中一个节点,由于一个网格的三角片数量通常是顶点数量的2倍左右,这样求解的方程变量数就会减少一半左右,计算速度就会得到提高。
效果:

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen。
参考文献:
[1] Grady, L., "Random Walks for Image Segmentation," in Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.28, no.11, pp.1768-1783, Nov. 2006
[2] Yu-Kun Lai, Shi-Min Hu, Ralph R. Martin, and Paul L. Rosin. 2008. Fast mesh segmentation using random walks. In Proceedings of the 2008 ACM symposium on Solid and physical modeling (SPM '08). ACM, New York, NY, USA, 183-191.
[3] Zhang, J., Wu, C., Cai, J., Zheng, J. and Tai, X.-c. (2010), Mesh Snapping: Robust Interactive Mesh Cutting Using Fast Geodesic Curvature Flow. Computer Graphics Forum, 29: 517–526.
三维网格分割算法(Random Walks)的更多相关文章
- 基于随机游走的三维网格分割算法(Random Walks)
首先以一维随机游走(1D Random Walks)为例来介绍下随机游走(Random Walks)算法,如下图所示,从某点出发,随机向左右移动,向左和向右的概率相同,都为1/2,并且到达0点或N点则 ...
- 基于谱聚类的三维网格分割算法(Spectral Clustering)
谱聚类(Spectral Clustering)是一种广泛使用的数据聚类算法,[Liu et al. 2004]基于谱聚类算法首次提出了一种三维网格分割方法.该方法首先构建一个相似矩阵用于记录网格上相 ...
- 基于模糊聚类和最小割的层次化三维网格分割算法(Hierarchical Mesh Decomposition)
网格分割算法是三维几何处理算法中的重要算法,具有许多实际应用.[Katz et al. 2003]提出了一种新型的层次化网格分割算法,该算法能够将几何模型沿着凹形区域分割成不同的几何部分,并且可以避免 ...
- 基于均值漂移的三维网格分割算法(Mean Shift)
mean shift算法是一种强大的无参数离散数据点的聚类方法,其在图像平滑.图像分割以及目标跟踪等方面都有着广泛的应用.[Yamauchi et al. 2005]基于mean shift算法提出了 ...
- 从Random Walk谈到Bacterial foraging optimization algorithm(BFOA),再谈到Ramdom Walk Graph Segmentation图分割算法
1. 从细菌的趋化性谈起 0x1:物质化学浓度梯度 类似于概率分布中概率密度的概念.在溶液中存在不同的浓度区域. 如放一颗糖在水盆里,糖慢慢溶于水,糖附近的水含糖量比远离糖的水含糖量要高,也就是糖附近 ...
- [迷宫中的算法实践]迷宫生成算法——递归分割算法
Recursive division method Mazes can be created with recursive division, an algorithm which wo ...
- Matlab的标记分水岭分割算法
1 综述 Separating touching objects in an image is one of the more difficult image processing operation ...
- 三维网格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...
随机推荐
- mysql行转列、列转行示例
最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用. ...
- requirejs:让人迷惑的路径解析
接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模块依赖声明都是很重要的一步.而其中涉及到的模块路径解析,对于新手来说,有的时候会让人觉得 ...
- 关于SharPoint2013一点细节的深究
在进行SharePoint2013的开发过程中我发现在开启了某些功能,或者说是创建了个人站点之后有很多地方变了比如下面这个地方: 当然相应的URL地址也发生改变.也许很明确的我就打开了Welc ...
- 转:jQuery.data
原文地址:http://www.it165.net/pro/html/201404/11922.html 内存泄露 首先看看什么是内存泄露,这里直接拿来Aaron中的这部分来说明什么是内存泄露,内存泄 ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- OC点语法和变量作用域
OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...
- Android常用抓包工具之TcpDump
➠更多技术干货请戳:听云博客 做为一个测试人员,工作中经常会用到数据抓包工具来进行数据分析和验证,下面就简单介绍一下工作中常用的抓包工具. TcpDump抓包 Tcpdump是一个用于截取网络分组,并 ...
- 访客至上的Web、移动可用性设计--指导原则
文章出自:听云博客 关于可用性设计,之前写过一个“纸上谈兵”版本的,那篇帖子主要是根据A/B test的方式来进行的. 但是最近找了本Steve krug写的Don't make me think,我 ...
- eclispe常用快捷键
一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. 几个最重要的快捷键 Alt + / 代码助手 C ...
- vs2012中使用Icenium开发应用
Developing a Cross Platform Mobile App in Visual Studio using JavaScript & HTML5 http://www.dotn ...