转载:https://www.cnblogs.com/shushen/p/5864042.html

  下面介绍一种基于Poisson方程的三角网格补洞方法。该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原始网格融合。算法的主要步骤如下:

  1-检测孔洞边界并初始化补洞网格

  2-调整补洞网格

    2.1-计算补洞网格中顶点的期望法向

    2.2-基于期望法向旋转补洞网格中的三角面片

    2.3-基于Poisson方程调整补洞网格顶点位置

  下面分别介绍算法中每一步的具体过程:

1:检测孔洞边界并初始化补洞网格

  检测孔洞边界和初始化补洞网格方法与以前介绍的方法相同。由于初始化补洞网格无法与原始孔洞周围的网格有效融合,因此需要调整补洞网格的顶点位置使得补洞网格与原始网格之间光滑过渡。

2.1计算补洞网格中顶点的期望法向

  由于已知原始网格孔洞边界的法向,将其作为补洞网格边界的法向,构建Laplace方程求解补洞网格内部顶点的法向分布。

  • Laplace算子:

  假设f表示在每个顶点上的标量,那么网格域上在顶点xi处的Laplace算子定义如下(不考虑面积影响):

其中N1(xi)表示顶点xi的1环邻域点,αij和βij为边eij对应的2个对角。

2.2:基于期望法向旋转补洞网格中的三角面片

  计算得到补洞网格中顶点的期望法向之后,可以进一步求得三角面片的期望法向,三角面片的期望法向是其三个顶点期望法向的平均值,然后补洞网格中所有的三角面片根据期望法向进行旋转。旋转参数计算方法如下:假设ni、ni’和ci为三角面片fi的原始法向、期望法向和重心位置,ni与ni’的叉乘方向a为三角面片fi的旋转轴方向,ni与ni’之间的夹角φ为三角面片fi的旋转角度,那么三角面片fi将以ci为旋转中心,绕旋转轴a旋转角度φ到新的位置。

2.3:基于Poisson方程调整补洞网格顶点位置

  旋转补洞网格的三角面片会撕裂补洞网格,因此我们利用Poisson方程将其重构成连续的网格曲面。在建立Poisson方程时我们需要先计算撕裂网格的梯度场,将其作为Poisson方程的引导场,从而进行网格顶点位置的调整。

其中f为待求的调整后网格顶点位置,w为撕裂网格的梯度场。

  • 梯度算子:

  假设f表示在每个顶点上的标量,那么网格域上标量场f在任意三角面片T内的梯度算子定义如下:

其中基函数梯度▽Φi的表达式是,⊥表示将向量逆时针旋转90度,AT表示三角片T的面积。

  • 散度算子:

  假设w表示在每个三角片上的向量,那么网格域上向量场w在顶点xi处的散度算子定义如下:

其中T1(xi)表示顶点xi的1环邻域三角片,AT表示三角片T的面积。

效果:

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

相关:

三维网格形变算法(Gradient-Based Deformation):http://www.cnblogs.com/shushen/p/4932089.html

三维网格补洞算法(Radial Basis Function):http://www.cnblogs.com/shushen/p/5759679.html

参考文献:

[1] Wei Zhao, Shuming Gao, and Hongwei Lin. 2007. A robust hole-filling algorithm for triangular mesh. Vis. Comput. 23, 12 (November 2007), 987-997.

三维网格补洞算法(Poisson Method)(转载)的更多相关文章

  1. 三维网格补洞算法(Poisson Method)

    下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原 ...

  2. 三维网格补洞算法(Radial Basis Function)

    在逆向工程中,由于设备或模型的原因,我们获取得到的三维模型数据往往并不完整,从而使得生成的网格模型存在孔洞,这对后续的模型分析会造成影响.下面介绍一种基于径向基函数(RBF:Radial Basis ...

  3. 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)

    iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...

  4. Java排序算法总结(转载)

    排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*log ...

  5. 【机器学习详解】SMO算法剖析(转载)

    [机器学习详解]SMO算法剖析 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754 CSDN−勿在浮沙筑高台 本文力 ...

  6. js javascirpt 数学库、 算法库 (转载)

    提示:国外官网,谷歌浏览器右键可以翻译成中文. 1.math.js 官网:https://mathjs.org/index.html 其它简介:https://www.jianshu.com/p/4f ...

  7. 全网最!详!细!tarjan算法讲解。——转载自没有后路的路

    全网最!详!细!tarjan算法讲解.   全网最详细tarjan算法讲解,我不敢说别的.反正其他tarjan算法讲解,我看了半天才看懂.我写的这个,读完一遍,发现原来tarjan这么简单! tarj ...

  8. 基恩士的浓淡补正算法(Shading Correction Filter)的模拟实现。

    知道这个算法应该有很久了,主要当时在意2个事情,一个是这个名字的翻译是在是搞笑,第二是这个算法的效果.不过一直以来都十分好奇这个算法是怎么实现的.因为之前一直无法实际的用基恩士的软件平台用不同的图片去 ...

  9. HS光流算法详解<转载>

    HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...

随机推荐

  1. 为什么要做外链建设?seo优化与发布外链速度有哪些联系?

    对于SEO员工来说,我们每天都在处理网页.从内容创建的角度来看,我们每天创建大量的URL并进入索引状态.与网站的受欢迎程度相比,网站每天也会生成大量的外部链接. 实际上,相对于链接而言,它满足了搜索引 ...

  2. 总结了Python中的22个基本语法

    "人生苦短,我用Python".Python编程语言是最容易学习.并且功能强大的语言.只需会微信聊天.懂一点英文单词即可学会Python编程语言.但是很多人声称自己精通Python ...

  3. JDK1.8新特性——Collector接口和Collectors工具类

    JDK1.8新特性——Collector接口和Collectors工具类 摘要:本文主要学习了在Java1.8中新增的Collector接口和Collectors工具类,以及使用它们在处理集合时的改进 ...

  4. java基础第十七篇之网络编程和装饰者模式

    1:网络概述 1.1 网络的发展Net 1964年,美国人---> 阿帕网--->以太网Internet 1.2 网络的通信协议 windows电脑,android手机,Mac平板---& ...

  5. CAD绘图大师都在用的46组快捷键,高效绘图必备

    学习CAD 是一个需要慢慢积累的过程,千万不要遇到一点小困难就退缩,有困难我们就一起克服它!今天小编也是来帮助大家克服困难的!很多小伙伴学习CAD已经有一段时间了,但是发现自己的绘图效率还是不高,没关 ...

  6. WebService发布服务例子

    import javax.jws.WebMethod; import javax.jws.WebService; @WebService public interface WebServiceI { ...

  7. [b0029] python 归纳 (十四)_队列Queue实现生产者消费者

    # -*- coding: UTF-8 -*- """ 多线程的生产者,消费者 使用队列Queue """ import Queue imp ...

  8. Hive优化面试题

    对待像我这种2年开发经验的同学 一般都会被问到. 在面试中,我们只要简短的介绍就好了. 首先低调一波,我可能懂的比你少,我就简单说说 1.在排序中,我们使用的是sortBy,它是基于索引,效率高于or ...

  9. Python—函数的参数传递

    形参和实参 形参即形式参数,函数完成其工作时所需的信息.形参不占用内存空间,只有在被调用时才会占用内存空间,调用完了即被释放. 实参即实际参数,调用函数时传给函数的信息. # -*- coding: ...

  10. python 指定字符串位置查找

    指定字符串位置查找 #指定字符查找 s = 'F:/my_pycharm/pycharm_project/CSV表格/10.csv' print(s.find('/')) # 2, 第一个/在2位置 ...