本文介绍一种网格分割线的优化算法,该方法能够找到网格上更精确、更光滑的分割位置,并且分割线能够自由地合并和分裂,下面介绍算法的具体原理和过程。

  曲面上的曲线可以由水平集(level set)形式表示,通常表示为φ(r) = 0,其代表曲面上具有相同函数值的等值曲线,由于函数值为零,一般称为零水平集。当曲线在曲面上移动时,可以用如下水平集方程表示:

上式为函数φ(r)对时间t的偏导,即函数φ(r)随时间t的变化情况,等式右边v表示曲线移动速度,▽φ表示曲面上函数φ(r)的梯度。

  驱动曲线在曲面上移动有多种方式,而测地曲率流(geodesic curvature flow)是其中最常见的形式,如果以测地曲率来驱动曲线移动,那么曲线的水平集方程可以表示为:

此时函数φ(r)就是曲面上各点到曲线的测地距离(曲线的一侧为正,另一侧为负),而移动速度就是曲线的测地曲率

  上述方程表示在测地曲率的作用下曲线长度不断减小,并且本身保持光滑,同时曲面上测地曲率越大的区域曲线移动速度越快。如果在方程中加入曲面的几何特性g(r)权重之后,那么曲线可以移向期望的目标区域,此时对应的水平集方程表达式为:

其中g(r)的范围为[0,1],在目标区域g(r) → 0。

  上述水平集方程有不同的求解方式,文章[Kaplansky et al. 2009]采用显式积分的方式来进行求解:

其中φ(tn)代表tn时刻曲面上函数φ(r)值。

  文章[Zhang et al. 2010]采用半隐式积分的方式来求解水平集方程:

其中φ(tn)代表tn时刻网格曲面上函数φ(r)值;S是一个对角矩阵,其表达式为S = diag(s1, s2, …, sn),式中si是顶点vi周围1环邻域三角片面积的1/3;G也是一个对角矩阵,其表达式为G = diag(|▽φ|1, |▽φ|2, …, |▽φ|n),式中|▽φ|i是顶点vi上函数φ(r)的梯度模长;H的表达式如下:

式中τ1τ2以及αijβij的含义如下图所示:

  对比上面两种求解方式,半隐式积分的求解方式更加稳定,迭代步长能够取相对较大值,但是在每次迭代过程中都需要求解线性方程组,因此计算过程相对更加耗时。

% Pseudocode
. Initialize the level-set function U
for i = :iter
2.1. Calculate the gradient ▽U
2.2. Normalize the gradient ▽U/|▽U|
2.3. Calculate the divergence div(g*▽U/|▽U|)
2.4. Update the level-set equation ΔU = step * |▽U| * div(g*▽U/|▽U|)
2.5. Determine the new curves as its zero level-set
end

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

参考文献:

[1] Kaplansky, L. and Tal, A. (2009), Mesh Segmentation Refinement. Computer Graphics Forum, 28: 1995–2003.

[2] 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.

基于网格的分割线优化算法(Level Set)的更多相关文章

  1. 梯度下降优化算法综述与PyTorch实现源码剖析

    现代的机器学习系统均利用大量的数据,利用梯度下降算法或者相关的变体进行训练.传统上,最早出现的优化算法是SGD,之后又陆续出现了AdaGrad.RMSprop.ADAM等变体,那么这些算法之间又有哪些 ...

  2. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(二)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 前面我们介绍了特征选择(Feature S ...

  3. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(一)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 在机器学习中,离散化(Discretiza ...

  4. MOPSO 多目标例子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

  5. 机器学习超参数优化算法-Hyperband

    参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...

  6. MOPSO 多目标粒子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

  7. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  8. 粒子群优化算法(Particle Swarm Optimization)

    粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法.它没有遗传算法的"交 ...

  9. 优化算法-BFGS

    优化算法-BFGS BGFS是一种准牛顿算法, 所谓的"准"是指牛顿算法会使用Hessian矩阵来进行优化, 但是直接计算Hessian矩阵比较麻烦, 所以很多算法会使用近似的He ...

随机推荐

  1. SQL SERVER 的模糊查询 LIKE

    今天写个动态脚本,需要把数据库里面包含“USER_"的表删除掉,突然想不起来如何搜索通配字符了,赶紧查查MSDN,整理了下模糊查询的知识点,留着以后查阅用. LIKE模糊查询的通配符 通配符 ...

  2. android.view.InflateException: Binary XML file line #34: Error inflating class

    问题一般出在xml的第三方View的全类名,你可能是直接粘贴过来的,没有改成自己项目的全类名.

  3. 【算法】PHP实现冒泡排序和快速排序--防遗忘

    有没有这样的感觉,排序算法虽然简单,但是没看过一次,一会就又忘了,所以有必要 自己使用实际的代码运行实现,才记忆牢固,为此Mark //需求:将数组中元素,从大到小排列$a = array(11, 2 ...

  4. NET IL命令查询器

    最近研究了一下IL代码,闲来无事,开发一个小工具,供大家使用.编程.破解,手头必备工具. 模糊搜索,可以把相关的命令都列出来.选中行,可以提示指令说明. 如果指令不全,可以增加指令及说明. CSDN下 ...

  5. JavaScript中this指针指向的彻底理解

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...

  6. 浅谈HTML5单页面架构(三)—— 回归本真:自定义路由 + requirejs + zepto + underscore

    本文转载自:http://www.cnblogs.com/kenkofox/p/4650310.html 不过,这一篇,我想进一步探讨一下这两个框架的优缺点,另外,再进一步,抛开这两个框架,回到本真, ...

  7. How To Search and Restore files from Site Collection Recycle Bin

    $sitecoll = Get-SPSite "http://wheresmydoc.findit.com" $sitecoll.RecycleBin | ?{$_.Title - ...

  8. 友盟SDK实现分享

    友盟SDK文档已经写得很详细了,这边整理笔记,先过一遍流程: 1⃣️注册友盟账号以获取Appkey,下面以分享到微信为例 2⃣️申请第三方账号是因为要进行分享.授权这样的操作肯定是要通过第三方的审核( ...

  9. Project、Target、Workspace and Scheme

    前言 今天有人问我Target和Project是什么关系?额...学习iOS开发都知道Target和Project的关系.这里我就简单的做了一个总结,而且加入的Scheme和Workspace.如果不 ...

  10. ButterKnife 8.2.1 大圣归来

    零.前言 ButterKnife是一个视图注入的框架,主要帮我们解决无脑的findViewById.设置监听事件等等体力劳动. 一.引入 好消息是ButterKnife终于使用apt生成代码了,首先在 ...