CGAL的推进前表面重建

         从非结构化点云进行的曲面重建相当于生成一个合理的曲面,该曲面很好地近似于输入点。由于可能生成许多曲面,因此此问题不适合解决。已经提出了一系列广泛的方法来解决这个问题。其中包括变分方法、张量表决、隐式曲面和Delaunay三角剖分。

        对于基于Delaunay的算法,输出曲面通常生成为在输入点的3D Delaunay三角剖分中选择的一些三角形的并集。这样的算法要么是通过生成所选四面体的边界作为输出来基于体积的,要么是通过选择一组三角形来基于表面的。

        在大多数基于曲面的Delaunay算法中,三角形是独立选择的,即平行。

        本章介绍了一种基于曲面的Delaunay曲面重建算法,该算法依次选择三角形,也就是说,它使用先前选择的三角形来选择一个新的三角形来向前推进。在每一个前进步骤中,都会选择最合理的三角形,这样所选择的三角形会生成可定向的流形三角曲面。

        这种贪婪方法的另外两个例子是球旋转算法和Boyer-Petitjean算法。在这两种算法中,三角化曲面都是从种子三角形开始逐渐增长的。球的旋转很快,但重建的质量取决于与采样密度相对应的用户定义的参数。Boyer-Petitjean方法可以处理非均匀采样,但当遇到近共面点时失败,并且它不能对曲面的拓扑结构提供任何保证。

1、定义和算法

        该算法的第一步是构建点集的3D Delaunay三角剖分三角形的半径rt是穿过三角形的顶点并且不包含任何样本点的最小球体的半径。换句话说,半径rt是从三角形的任何顶点到与该三角形对偶的Voronoi边的距离。这个具有三条边界边的三角形是初始三角剖分曲面,它的边界是推进前沿。半径最小的Delaunay三角形是贪婪算法的起点。

        该算法维护了一个候选三角形的优先级队列,即与当前曲面的边界边相交的有效三角形。优先级是合理性。当优先级队列不为空时,该算法从队列中弹出最合理的候选三角形并将其添加到曲面中。当前进前沿出现新的边界边时,新的候选三角形被推入优先级队列。由于该算法创建了一个双流形曲面,一些候选三角形由于拓扑约束而无法被选中,这将在下面解释。

1.1、拓扑约束

        任何被视为下一个潜在候选者的三角形t都与当前重建的前部共享一条边e。令b为与e相对的t的顶点。有四种配置可以将t添加到表面。

        如果b尚未在曲面上,则进行延伸。

        如果b在前面,并且b的两个邻居都在边缘e上,则进行孔填充。

        如果b在前面,并且b的前一个邻居在边缘e上,则进行耳部填充。

        如果b在前面,并且b的前面没有邻居在边缘e上,则进行粘合。

        虽然前三个操作从不引入非流形边或顶点,但如果三角形 t 有一个孪生面,即一个三角形有一条边在前面,与 b 相交,第三个顶点在边 e 上,我们只能执行粘合。

        当上述操作可以应用时,三角形是有效的。 

1.2、候选三角形的合理性

        对于前部边缘上的有效三角形,我们通过其半径进行比较。虽然半径在2D平滑曲线重建的情况下是一个很好的标准,但对于3D曲面重建,我们需要另一个标准,即表面上的三角形之间的二面角,也就是三角形法线之间的角度。有三个界限,即α银色、β和δ。

        边e的候选三角形是具有以下三个条件的三角形中半径最小的一个:对e是有效的;βt<α银色;与e相交的内部角度小于δ。

        可能没有这样的三角形。在算法的实现中,α银色和δ等于5π/6。

        我们用βt表示与边界边e相交的三角形t的法线与表面上与e相交的三角形的法线之间的角度。

        我们将可信度等级p(t)定义为1/rt,如果βt<β,否则为-βt。参数β可由用户指定,默认设置为π/6。

        让我们看一下下面的图。

        α银色部分对应于红色楔形。即使t1是唯一的候选三角形,该算法也永远不会选择它。

        β对应于绿色楔形。如果此区域有候选三角形,则半径最小的三角形最有可能被选中。

        如果没有绿色楔形中的候选三角形,则选择其法线与t'法线之间夹角最小的三角形。在上面的图中,这将选择三角形t4。 

1.3、处理多个组件、边界和锐边

        通过构造,算法的输出是一个有或没有边界的连通定向流形。为了处理多个组件,我们只需在与曲面不相交的面上寻找一个新的种子面。在有噪声数据或异常值的情况下,用户必须过滤掉小的曲面组件。

        不可能同时处理各种边界和不均匀采样,因为空隙可能是表面采样不足的区域,也可能是孔洞。

        由于我们不希望算法依赖于采样的一致性条件,它将填补从表面“平坦”区域切出的孔洞。然而,在许多情况下,通过添加跨越圆盘无法闭合边界组件,因此得到的圆盘无法很好地采样。

        通常,由于操作的横向剪切而闭合边界组件,会在边界边缘产生较大的二面角。此外,如果边界被充分采样,则入射到边界边缘的两个三角形的半径将非常不同。这些启发式事实可用于边界检测。

        更具体地说,对于p(t)<0且rt>radius_ratio_bound×rt′的边e,我们丢弃任何候选三角形t,其中t′是表面上的三角形,与e相交。参数radius_ratio_bound由用户指定,默认设置为5。

        对于上图中给出的例子,我们说如果在绿色楔形中没有三角形t3,则三角形t4将被选择,因为它在其法线和三角形t'的法线之间具有最小的角度。然而,如果它的半径是三角形t'的半径的radius_ratio_bound倍,则三角形t2将被选择,假设它的半径不是radius_ratio_bound倍。

        请注意,这种启发式方法意味着,如果采样相对于曲率过于稀疏,则必须足够均匀,以便我们的算法能够工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gRPC三种流和消息格式

文章目录 消息格式RPC流长度前缀的消息分帧请求消息响应信息 三种流一元RPC服务流RPC客户流RPC双工流RPC 代码仓库 消息格式 RPC流 服务端实现protocol buffer定义的方法&#xff0c;客户端保留一个存根&#xff0c;提供服务端方法的抽象&#xff0c;客户端只需要调用存根中的…

【dig命令查询方法】

dig&#xff08;Domain Information Groper&#xff09;是一个用于查询DNS&#xff08;域名系统&#xff09;的命令行工具&#xff0c;它可以帮助您获取关于域名的各种信息&#xff0c;如IP地址、MX记录、NS记录等。下面是dig的详细使用教程。 基本语法&#xff1a; dig [ser…

文件被删除了怎么恢复?3个宝藏方法,快来get!

“我是一个学生党&#xff0c;期末的一些资料保存在电脑上&#xff0c;但是不知道是不是被我误删了&#xff0c;导致很多文件都找不到了。文件被删除了怎么恢复呢&#xff1f;大家帮我出出主意吧&#xff01;” 对于经常在电脑上保存各种文件的用户来说&#xff0c;文件误删除是…

IPC之五:使用 System V 信号量集解决经典的‘哲学家就餐问题‘

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍信号量集(Semaphore Sets)&#xff0c;尽管信号量集被认为是 IPC 的一种方式&#xff0c;但实际上通常把信号量集用于进程间同步或者资源访问互斥&#xff0c;信号量集和共享内存(Shared …

系列学习前端之第 2 章:一文精通 HTML

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: https://pan.baidu.com/s/1-vY2anBdrsBSwDZfALZ6FQ 提取码: 6666 HTML 全称&#xff1a;HyperText Markup Language&#xff08;超文本标记语言&#xff09; 1、 HTML 标签 1. 标签又称元素&#…

PR剪辑视频素材|真实胶片特效转场PR项目模板文件

Premiere转场模板&#xff0c;8个真实胶片特效转场PR项目模板视频素材。可以编辑和自定义媒体占位符。在视频的开头、中间和结尾使用。包含视频教程。 适用软件&#xff1a;PR2023及更新版本 | 分辨率&#xff1a;38402160 (4K) | 文件大小&#xff1a;16.43MB | 无需插件 来自…

AI并行计算:CUDA和ROCm

1 介绍 1.1 CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;是Nvidia于2006年推出的一套通用并行计算架构&#xff0c;旨在解决在GPU上的并行计算问题。其易用性和便捷性能够方便开发者方便的进行GPU编程&#xff0c;充分利用GPU的并行能力&#xff0…

如何使用ArcGIS Pro制作类似CAD的尺寸注记

经常使用CAD制图的朋友应该比较熟悉CAD内的尺寸标注&#xff0c;这样的标注看起来直观且简洁&#xff0c;那么在ArcGIS Pro内能不能制作这样尺寸注记呢&#xff0c;答案是肯定的&#xff0c;这里为大家介绍一下制作的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所…

OpenGL ES 帧缓冲对象介绍和使用示例

一、介绍 1. 帧缓冲对象 默认情况下&#xff0c;OpenGL渲染的目标是屏幕&#xff0c;但如果你不想直接渲染到屏幕上&#xff0c;还需要对渲染结果做某些后期处理、渲染到纹理、阴影映射等操作&#xff0c;便可以使用帧缓冲对象&#xff0c;实现离屏渲染。 帧缓冲对象&#x…

JSON字符串转泛型对象

JSON字符串转泛型对象 以下问题只仅限于博主自身遇到&#xff0c;不代表绝对出现问题 相关类展示&#xff1a; 参数基类 public class BaseParams { }基类 public abstract class AbstractPush<Params extends BaseParams> {protected abstract void execute(Params…

怎么选护眼灯?考公必备护眼灯推荐

随着现在的近视问题受到越来越广泛的关注&#xff0c;各种护眼产品的需求量也一直在快速增加&#xff0c;其中最受广大家长、学生党欢迎的还是护眼台灯。因为专业的护眼台灯不仅可以补充我们夜晚工作、学习时不足的光亮&#xff0c;避免眼睛长时间处于昏暗的环境导致疲劳。 而…

018 OpenCV 人脸检测

目录 一、环境 二、分类器原理 2.1、概述 2.2、工作原理 三、人脸检测代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、分类器原理 CascadeClassifier是OpenCV&#xff08;开源计算机视觉库&#xff09;中的一个强大的类…

day01十五模拟第二期

2 2——608#include <stdio.h> #include <math.h>int main(int argc, const char * argv[]) {int res1;for(int i1;i<2023;i){res(res*2)%1000;}printf("%d",res );return 0; }3 4-----4169 #include <stdio.h> #include<string.h> #inc…

C语言——指针(五)

&#x1f4dd;前言&#xff1a; 上篇文章C语言——指针&#xff08;四&#xff09;更加深入的介绍了不同类型指针的特点&#xff0c;这篇文章主要想记录一下函数与指针的结合运用以及const和assert关于指针的用法&#xff1a; 1&#xff0c;函数与指针 2&#xff0c;const 3&am…

3.PyTorch——常用神经网络层

import numpy as np import pandas as pd import torch as t from PIL import Image from torchvision.transforms import ToTensor, ToPILImaget.__version__2.1.13.1 图像相关层 图像相关层主要包括卷积层&#xff08;Conv&#xff09;、池化层&#xff08;Pool&#xff09;…

node.js和浏览器之间的区别

node.js是什么 Node.js是一种基于Chrome V8引擎的JavaScript运行环境&#xff0c;可以在服务器端运行JavaScript代码 Node.js 在浏览器之外运行 V8 JavaScript 引擎。 这使得 Node.js 非常高效。 浏览器如何运行js代码 nodejs运行环境 在浏览器中&#xff0c;大部分时间你所…

Linux系统调试课:USB 常用调试方法

文章目录 一、USB调试工具有哪些二、USB相关节点2.1、USB枚举成功标志2.2、USB speed查询2.3、USB 查询PID、VID沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要 介绍 USB 常用调试方法。 一、USB调试工具有哪些

Sanic:一个极速Python Web框架

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Sanic&#xff1a;一个极速Python Web框架&#xff0c;全文3500字&#xff0c;阅读大约12分钟。 随着 Web 应用的日益复杂&#xff0c;选择一个高性能的 Web 框架变得尤为…

扫描器的使用

漏扫器 注意事项 扫描器会给客户的业务造成影响。比如&#xff0c;如果存在sql注入漏洞&#xff08;重大的漏洞&#xff09;的话&#xff0c;会给客户的数据库插入脏数据&#xff0c;后果很严重 主机漏扫 针对IP地址和网段的漏洞扫描&#xff0c;例如&#xff1a;22端口弱口…

LCM-LoRA:a universal stable-diffusion acceleration module

Consistency is All You Need - wrong.wang什么都不用做生成却快了十倍其实也并非完全不可能https://wrong.wang/blog/20231111-consistency-is-all-you-need/ 1.Stable diffusion实在预训练VAE空间训练diffusion model的结果。 2.consistency decoder是用consistency model技…