本人最近需要研究三维模型的孔洞修补算法,故上网看了一些大神写的资料,现汇总如下:

重建骨骼比较典型的方法有:用径向基函数从不完整的扫描数据生成连续网格;基于CT等值面数据生成曲面;用傅里叶级数拟合CT图像提取边缘轮廓曲线;基于形状的利用数学形态学算子进行骨架提取的插值算法。

所谓网格曲面孔洞修补问题指的是:寻找一个合理的算法在现有的不完整几何与拓扑信息的情况下,利用网格孔洞周边已有三角网格,创建一个尽可能忠实于原物体或场景的局部网格模型,由此达到对网格曲面孔洞的修补.

常用的孔洞修补算法可以分为体素方法、基于三角剖分的方法、基于隐式曲面拟合的方法,在基于体素的方法中,首先将一个网格模型变换成由离散体积(即体素)表示的模型,然后在体积空间中应用不同的方法修补空洞.采用的方法有有向距离函数差分或体素滤波,以及在此基础上使用多种偏微分方程进行优化的方法,消除重建三维结构中因采样问题产生的孔洞。基于体素方法存在两方面的问题,首先,它针对的是点云数据,不能直接应用于Mesh模型;其次它是一种物理方法,通常只能够修复重建物体表面的小孔洞,并容易带来几何形变。在基于三角剖分的方法中,首先对孔洞直接进行三角剖分得到初始网格,然后对初始网格进行优化.基于隐式曲面拟合的方法是网格孔洞修补算法中最为常见的方法,该方法首先孔洞边界周围的点信息,采用隐式曲面拟合的方法拟合一曲面片光滑的覆盖孔洞,然后通过在曲面上重采样实现网格孔洞修补.常见的曲面拟合有:二次曲面拟合、B-样条曲面拟合、三角Bézier曲面拟合及基于径向基函数的曲面拟合等。

点集的三角剖分指的是:给定一组散乱数据点,如何将各数据点之间以三角形或四面体相互连接,形成三角网格,并使网格质量较优.该问题的解即是散乱点集的一个三角剖分,其实质是以三角网格反映各个数据点与其邻近点之间的拓扑连接关系,从而揭示数据点之间的内在本质联系.

基本概念:

如果两个三角形拥有一个公共边,则这条公共边在两个不同的三角形中是反向的,此时我们称这两个三角形是邻接三角形.

边界边:如果一条边只属于一个三角形,则这条边称为边界边.

边界顶点:边界边上的顶点称为边界顶点.

边界三角形:拥有一个或两个边界顶点的三角形称为边界三角形.

二环点:与边界顶点相邻接的非边界顶点.

顶点邻接三角形:拥有某一顶点的所有三角形称为这个顶点的顶点邻接三角形.

三角形的法向量:指的是三角形所在平面的法向量,它与三角形边的走向满足右手螺旋法则.

顶点密度:顶点v的顶点密度指的是顶点v的顶点邻接三角形边长的平均值。

对于模型的孔洞修补算法主要采用以下几种策略:

1、直接三角剖分:早期的孔洞修补算法主要考虑如何对孔洞区域进行三角化。三角剖分本质上是一个非线性优化问题,为了获得该问题的最优解,可以使用动态规划算法、遗传算法、模拟退火算法等对孔洞区域进行剖分,以获得最优的三角化结果。已有方法:孔洞多边形的顶点构造新的三角片;各向异性孔洞修补算法。

2、新增采样点:已有方法:分段处理思想,根据孔洞的复杂性将孔洞分为若干个简单的子孔洞;三角片自然增长。

3、采样点调整:已有方法:根据曲率来调整新增点的位置;基于移动最小二乘法的补点方法;基于体素扩散方法来调整新增点的位置;基于径向基函数的调整方法;神经网络的方法。

4、点云数据三角化。

Delaunay三角剖分具有三角剖分最小内角为最大的性质,能够进行任意多连通域有限网格的自动生成可最大限度的保证网中三角形满足近似等边性,避免了过于狭长和尖锐的三角形的出现,是公认的最优三角网。其主流算法有三种:分割-归并法,逐点插入法,三角网生长法。

一个理想的孔洞修补算法具有如下性质:

(1)、自动性。用户如果选择了孔洞,交互应该尽可能简单。

(2)、效率性。合理的运行时间,良好的交互速度。

(3)、准确性。用修补网格来填补孔洞,应该尽可能得和周围网格相融合,网格密度和形状应该和原孔洞边界相匹配。

(4)、鲁棒性。能够处理任意网格的任意孔洞。这是很难被满足的。

《三维颅骨模型的孔洞修补算法研究》中提出一种算法,主要分为五个步骤:

(1)孔洞检测。对输入的颅骨三角网格模型进行孔洞分析,并对检测出的孔洞进行标记。

孔洞检测室通过自动搜索模型边界点来完成的。

1)模型边界点的提取:判断边界点的过程就是判断该点是否是边界边上的点的过程。

//在一般情况下,空间曲面上点的存储是随机的,所以得到的所有边界点是无序的,对曲面上的点进行边界点判断的时候,可得到与当前边界点的邻接边界点,基于此,即可对所有边界点排序,得到完整的边界曲线。

2)模型边界点的分类和排序

(2)孔洞区域离散点的生成和三角剖分。用户选择需要修补的孔洞,在其中插入离散点,然后对插入的离散点进行三角剖分。

1)孔洞区域离散点插入:对较小的孔洞,直接进行三角剖分;对较大的孔洞,先在孔洞多边形内插入离散点,然后再进行三角化。

2)离散点的三角剖分

(3)网格细分。对三角剖分后的网格进行网格细分。

基本思想:对于每一个三角形,连接各边的中点生成四个新的三角形。

(4)孔洞隐式曲面的建立。利用RBF建立孔洞区域的隐式曲面,调整插入点的位置。

(5)网格平滑。用伞状算子对隐式曲面进行平滑处理。

《面向颅骨损伤修补的缺损重建算法》

以包含缺损结构的三维重建Mesh模型为操作对象,根据交互输入的引导点,通过三角面片的边特征及目标点位置搜索并向外扩展出孔洞上边界环,得到目标问题区域边界,其中内环为孔洞边界,此区域内的所有三角面片为目标问题区域;通过双环采样,投影构建代理面,结合代理面对内环的三角化细化,三角面进行基于代理曲线的 Freeform 变形, 然后在微分域进行保持边缘细节特征的平滑操作, 得到缺失实体孔洞的上缝合面; 通过向颅骨厚度方向扩展, 得到孔洞下边界轮廓, 并搜索出上下边界环之间的三角网格区域; 通过上缝合面的构建方法, 得到缺失实体孔洞的下缝合面; 最后, 连接上下缝合面以及两个边界轮廓环之间的三角网格区域, 获取修复实体。

《A robust hole-filling algorithm for triangular mesh》

主要步骤:

(1)确定三角网格中的孔洞;

(2)对每一个网格模型中的孔洞

1)利用AFM技术生成初始修补网格;

2)基于柏松等式来改善补丁网格:利用谐波等式或者测地线插值来计算法向量;利用局部旋转旋转三角片;解柏松等式得到每一顶点的新坐标;更新坐标得到平滑的补丁网格。

《A piecewise hole-filling algorithm in reverse engineering》

它将一个复杂的孔洞分成几个简单的子洞,子洞连续地进行填补。

结构:

步骤:

(1)对于每一个孔洞确定一个投射曲面或者孔洞向量

(2)投射边界边到曲面上,计算交点

(3)根据交点将孔洞分成几个子孔洞

(4)重复:对每个子孔洞应用平面三角测量算法;将计算的交点参数应用于原始边;细分

通用网格模型的孔洞修补算法BHRA能够较好地处理对不规则区域复杂孔洞的修补,但是不能通用与各种复杂孔洞。

对于大区域复杂孔洞的修补,利用IRS(向内递归求解法)

(1)内部控制辅助点插入

(2)隐式曲面建立

(3)辅助插入点调整到隐式曲面

(4)逐层插入辅助点并重新计算隐式曲面

对于特征区域复杂孔洞的修补,采用TMA(特征模型匹配法)

(1)特征模型匹配

(2)网格融合

点云孔洞定位_孔洞修补研究总结相关推荐

  1. 点云孔洞定位_散乱点云的孔洞识别和边界提取算法研究

    散乱点云的孔洞识别和边界提取算法研究 王春香,孟 宏,张 勇 [摘 要] 针对逆向工程中已有孔洞识别算法执行效率低.孔洞边界点提取不完 整等问题,提出一种新的基于 KD 树和 K 邻域搜索的点云孔洞识 ...

  2. 点云孔洞定位_点云处理——孔洞修补

    之前在做基于点云的孔洞修补研究,参考了一些学位论文后选择了一种基于自己能力能够复现的简单算法,虽然最终效果一般,不过在这个过程中收获了很多,特此记录. 基于点云的孔洞修补与基于三角网格的孔洞修补相比, ...

  3. 点云孔洞定位_一种对具有孔洞的三维点云的检测与识别方法与流程

    本发明属于待测点云处理技术领域,涉及三维点云检测与识别方法,尤其是一种对具有孔洞的三维点云的检测与识别方法. 背景技术: 点云技术在逆向工程中有很普遍的应用.构建大量的几何模型之后,需要对点云模型进行 ...

  4. 点云孔洞定位_基于TSDF模型的点云孔洞修复方法

    摘要 深度摄像头的点云集合一般存在黑色孔洞闪烁的现象,在识别机械臂静态目标抓取时,点云集合数据的关键位置的体素不规则出现,就会对目标中心点的识别造成无法修正的偏差.因此,引入多个点云集合累积的思想,提 ...

  5. 几种点云(网格)孔洞填充方法(1)

    几种点云(网格)孔洞填充方法一 前言 数据效果对比 原始网格数据,存在孔洞 方法1.基于RBF的孔洞填充的修补效果 方法2.参考论文: 方法3 方法4 原始网格数据,存在孔洞 方法1.基于RBF的孔洞 ...

  6. antd tree搜索并定位_自动驾驶定位思考

    最近在做高精地图方面的工作,有一些疑问,这里把一些想法记录下来,希望能够抛砖引玉,对大家有所帮助. 高精地图的作用:一方面为我们提供地理位置信息,另一方面也为我们提供道路的辅助信息(红绿灯,路口,道路 ...

  7. 云原生数据库_数据标签竞赛云原生地理空间冲刺

    云原生数据库 STAC specification is getting closer to the ver 1.0 milestone, and as such the first virtual ...

  8. 点云平面提取_基于LiDAR点云数据滤波方法

    基于LiDAR点云数据滤波方法 机载激光雷达所获取的数据被称为"点云(points cloud)"它在三维空间中呈现出随机分布的形状.在点云中,有些点属于真实的地形表面的点,有些点 ...

  9. 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究

    1.内容简介 略257 2.内容说明 1.RSSI定位方法 基于接收信号强度RSS(Receive Signal Strength)[57]方法通过三个及以上己知位置的锚节点来测量移动节点发射的信号场 ...

最新文章

  1. 支持html5浏览器速查
  2. MTK android flash配置
  3. 【渝粤教育】电大中专电商运营实操 (25)作业 题库
  4. 230. Kth Smallest Element in a BST
  5. Rancher2.x流水线自动化部署
  6. opensource项目_Opensource.com 3月预览
  7. 8.FreeRTOS学习笔记-软件定时器
  8. sql内部连接_SQL内部联接的分步演练
  9. Unique Binary Search Trees,Unique Binary Search Trees2 生成二叉排序树
  10. c++ascii表_几道和散列(哈希)表有关的面试题
  11. md5校验工具hash
  12. 陕西年内建成1万个5G基站,实现全省所有地级市覆盖5G网络
  13. 关于严蔚敏教授的数据结构一书中return ok ,OK为1不为0的问题
  14. GNN教程:采样模型GraphSage理解(工业上图模型的雏形)
  15. java生成不重复8位数字_如何生成8位随机不重复的数字编号
  16. 【VUE】vue3.0后台常用模板
  17. 麦克马斯特大学计算机的强项,麦克马斯特大学什么专业最好?
  18. LLJ-300HS;LLJ-F(S)系列漏电继电器
  19. ACW95 费解的开关
  20. 机器人操作的“圣杯问题” -- Bin Picking

热门文章

  1. 在mt6735中添加新的开机logo与开\关机动画
  2. Cisco思科交换机 入门 - 查看DHCP 地址池
  3. commons-collections反序列化漏洞分析——远程代码执行
  4. (转)SQL Server数据库复制错误的原因及解决方法
  5. python gevent pool_python 协程编程之gevent
  6. 不花钱,降低数据中心PUE的八个办法
  7. Python轻松实现对英文文章单词总数统计
  8. 探索Wiring Pi
  9. 博弈论简单介绍及代码
  10. 华为--OSPF抓包实验分析邻接关系的七个状态,单区域ospf配置