三维网格补洞算法(Poisson Method)(转载)
转载: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)(转载)的更多相关文章
- 三维网格补洞算法(Poisson Method)
下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原 ...
- 三维网格补洞算法(Radial Basis Function)
在逆向工程中,由于设备或模型的原因,我们获取得到的三维模型数据往往并不完整,从而使得生成的网格模型存在孔洞,这对后续的模型分析会造成影响.下面介绍一种基于径向基函数(RBF:Radial Basis ...
- 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)
iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...
- Java排序算法总结(转载)
排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*log ...
- 【机器学习详解】SMO算法剖析(转载)
[机器学习详解]SMO算法剖析 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754 CSDN−勿在浮沙筑高台 本文力 ...
- js javascirpt 数学库、 算法库 (转载)
提示:国外官网,谷歌浏览器右键可以翻译成中文. 1.math.js 官网:https://mathjs.org/index.html 其它简介:https://www.jianshu.com/p/4f ...
- 全网最!详!细!tarjan算法讲解。——转载自没有后路的路
全网最!详!细!tarjan算法讲解. 全网最详细tarjan算法讲解,我不敢说别的.反正其他tarjan算法讲解,我看了半天才看懂.我写的这个,读完一遍,发现原来tarjan这么简单! tarj ...
- 基恩士的浓淡补正算法(Shading Correction Filter)的模拟实现。
知道这个算法应该有很久了,主要当时在意2个事情,一个是这个名字的翻译是在是搞笑,第二是这个算法的效果.不过一直以来都十分好奇这个算法是怎么实现的.因为之前一直无法实际的用基恩士的软件平台用不同的图片去 ...
- HS光流算法详解<转载>
HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...
随机推荐
- Mac设置su root密码
转自:https://blog.csdn.net/maxsky/article/details/44905003 大家都知道在 Linux 下,执行 su 命令后输入密码即可切换到 root 用户执 ...
- 反射实体类拼接SQL语句
实体类基类: using System; using System.Collections.Generic; using System.Linq; using System.Reflection; u ...
- Windows下Django项目搭建流程
1.创建虚拟环境 virtualenv test 2.进入虚拟环境 source ./项目名/Scripts/activate 3.创建项目 django-admin startproject 项目名 ...
- python 计算 对象 占用大小
# 这里主要是计算文件内容(str)的大小即: 统计空间占用情况, 并转换宜读单位 K,M def gen_atta_size(con): # 参数可以是任意数据类型 if con: size_b = ...
- WC 个人项目 ( node.js 实现 )
基于 node.js 的 wordCounter 个人项目 GitHub 项目地址:https://github.com/KofeChen/node.js-WordCounter 实现功能: 能够匹配 ...
- 透过systemctl管理mysqld服务
1. 背景 CentOS 7.x 之前的版本,系统启动时,第一支呼叫的程序是 init ,然后 init 去唤起所有的系统所需要的服务,无论是本地服务还是网络服务.所有的服务启动脚本都放置于 /etc ...
- 学习51cto中美团中的小知识点--组件实现按需求加载
1====>vue.20脚手架的创建 cnpm install --global vue-cli 全局安装脚手架 vue init webpack my-project 创建项目 Use ESL ...
- c# WF 第4节 窗体的事件
本节内容: 1:事件是什么? 2:窗体事件在哪可以找到 3:事件有哪些 1:事件是什么? 2:窗体事件在哪里 第一种: 第二种: 3:事件有哪些
- luoguP2480 [SDOI2010]古代猪文
题意 考虑所求即为:\(G^{\sum\limits_{d|n}C_n^d}\%999911659\). 发现系数很大,先用欧拉定理化简系数:\(G^{\sum\limits_{d|n}C_n^d\% ...
- win10 去除快捷方式小箭头
@echo off color 2 reg delete HKCR\lnkfile /v IsShortcut /f reg delete HKCR\piffile /v IsShortcut /f ...