CGAL的三角曲面网格骨架化

news2025/2/9 11:11:31

1、介绍

马模型的曲线骨架。 

        骨架是用于分割、形状匹配、重建、虚拟导航等的有效形状抽象。顾名思义,曲线骨架是曲线结构的图(1D)。对于3D几何体来说,它不是由表面(2D)组成的中轴。如图所示,形状的曲线骨架捕捉其基本拓扑。在这个包中,我们实现了中描述的平均曲率骨架算法,该算法通过迭代收缩输入的三角曲面网格,从无边界的三角曲面中提取曲线骨架。

2、使用

2.1、输入输出

        输入是一个三角表面网格,FaceListGraph 概念的模型(CGAl::Surface_mesh,CGAL::Polyhedron_3),它没有边界,只有一个连接的组件。骨架以 boost::adjacency_list 类型的图提供。骨架的每个顶点都与一个 3D 位置点和一组输入顶点相关联,这些输入顶点与该骨架顶点相联系。请注意,由于骨架的构造过程,骨架顶点可能没有相应的输入顶点。

        此软件包需要稀疏线性求解器,我们建议使用 Eigen 3.2 或更高版本。

        输入和输出如图所示。

         左图:章鱼的输入三角曲面网格模型;中:使用该包提取的平均曲率流骨架;右:输入曲面的每个顶点都与一个骨架顶点相关联。

2.2、自由函数

        如果FaceListGraph概念的CGAL模型(如CGAL::Surface_mesh或CGAL::Polyhedron_3)用作三角化输入曲面网格,Eigen 3.2或更高版本可用,并且定义了CGAL_EIGEN3_ENABLED,则函数CGAL::extract_mean_curvature_flow_skeleton()可用于使用默认参数从输入曲面网格提取平均曲率流骨架,其在大多数情况下工作良好。

2.3、函数对象的高级用法

        类CGAL::Mean_curvature_flow_skeletonization允许使用低级别函数,如contract_geometry()和collapse_edges()。该类还允许更改算法的参数,例如通过调用set_is_medially_centered()。该类允许用户完全控制算法的每一步以及中间收缩网格(称为细观骨架),如图所示。

        图中马的平均曲率流量收缩的三次迭代。红色点表示曲面局部退化为曲线结构的顶点。 

2.4、通过骨骼化进行分割

        作为概念验证,我们展示了如何使用骨架以及输入顶点与骨架的关联,使用包“三角曲面网格分割”来计算输入三角曲面网格的分割。分割算法包括为输入网格的每个面计算形状-直径函数,然后解决图形切割问题。在这里,我们使用骨架来定义一个新的形状-直径函数。具体来说,对于每个面,我们将直径值计算为其三个入射顶点与其相应骨骼点之间的平均距离。该分割的结果如图所示。

        左图:从三角曲面网格中提取的曲线骨架;右图:分割使用骨架来计算形状直径函数。 

3、性能

        大象模型用于说明平均曲率流骨架化过程的性能。使用了通过循环细分获得的模型的不同分辨率。
        如图所示,曲面采样越多,骨架在模型内就越好。

        大象模型的头部骨架。左图:使用原始网格(2775个顶点);中间:在一个循环细分步骤(11112个顶点)之后;右:在两个循环之后细分步骤(44460个顶点)。 

        extract_mean_curvature_flow_skeleton()的运行时间(以毫秒为单位),使用多面体3<Simple_cartesian<double>>作为输入数据结构。如果使用Surface_mesh<Simple_cartesian<double>::Point_3>,则运行时类似。当“特征”可用时,使用的解算器是默认解算器。

Number of loop subdivision of elephant.offNumber of verticesRuntime in s
02,7750.46
111,1121.26
244,4605.64
3177,85226.26

 4、其他

        Mean_curvature_flow_skeletonization::contract_geometry是CGAL库中的一个函数,用于在骨架化过程中收缩几何体。

        Mean_curvature_flow_skeletonization::collapse_edges是CGAL库中的一个函数,用于在骨架化过程中折叠边。

        Mean_curvature_flow_skeletonization::split_faces是CGAL库中的一个函数,用于在骨架化过程中分割面。

        Mean_curvature_flow_skeletonization::detect_degeneracies是CGAL库中的一个函数,用于在骨架化过程中检测退化情况。

        Mean_curvature_flow_skeletonization::contract是CGAL库中的一个函数,用于在骨架化过程中收缩骨架。

        Mean_curvature_flow_skeletonization::contract_until_convergence是CGAL库中的一个函数,用于在骨架化过程中持续收缩骨架,直到收敛为止。

        Mean_curvature_flow_skeletonization::convert_to_skeleton是CGAL库中的一个函数,用于将骨架化结果转换为骨架。

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

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

相关文章

IDEA的JavaWeb项目的webapp目录的小蓝点没亮怎么办???

我们可以看到没有小蓝点,正常的是有的。 没有小蓝点的原因:你的webapp 这个文件夹的路径不对。 解决方案:(修改webapp的路径) 我们可以看到,错误的路径是显示红色。 这个地方没有就添加一个路径&#xff0…

机器人制作开源方案 | 智能循迹搬运车

作者:范永晨 杨丽鹏 张东生 单位:唐山学院 指导老师:袁娜 都说21世纪为物流的天下,物流行业牵扯到各个领域。目前,劳动人口数量下降、老龄化现象加速、工资上涨,土地成本提升,随着市场不断发展…

外卖系统开发:构建高效、安全的外卖平台

在当今数字化时代,外卖系统成为了餐饮行业不可或缺的一部分。本文将介绍如何使用一些主流的技术和代码片段来开发一个简单而功能强大的外卖系统。 1. 技术选择 在开始外卖系统的开发之前,首先需要选择合适的技术栈。以下是一个常见的技术栈&#xff1…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

zookeeper基本使用

目录 环境搭建 单机版搭建 集群版搭建 基本语法使用 可视化客户端 数据结构 节点分类 1. 持久节点 2. 临时节点 3. 有序节点 4. 容器节点 5. TTL节点 节点状态 监听机制 watch监听 永久性watch 应用场景 1. 实现分布式锁 2. 乐观锁更新数据 应用场景总结 选…

【工具使用-A2B】使用A2B配置32通道车载音频系统

一,简介 在工作中需要使用A2B芯片传输32通道的车载音频数据。本文主要介绍,如何配置A2B工程来实现32通道车载音频系统。 二,配置介绍 2.1 A2B链路图配置: 2.2 A2B Master 寄存器配置: 2.3 A2B Slave 寄存器配置:

鸿蒙的基本项目_tabbar,首页,购物车,我的

以上效果,由四个ets文件实现,分别是容器页面。首页,购物车,我的。 页面里的数据,我是用json-server进行模拟的数据。 一、容器页面 使用组件Tabs和Tabcontent结合。 import Home from "./Home"; import …

并发编程——3.细说线程

这篇文章我们来详细的说一下并发编程中的线程及其相关的内容 目录 1.线程的创建 1.1通过继承Thread 1.2通过实现Runnable接口的方式 1.3使用FutureTask方式(实现Callable接口的方式) 1.4三种方式的区别 2.线程的原理 3.线程的常用方法 3.1start…

音频修复增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac软件特点 声音修复:iZotope RX 10可以去除不良噪音、杂音、吱吱声等,使音频变得更加清晰干净。 音频增强:iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

【JavaScript】异步解决方案的发展历程

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

LabVIEW 通信应用程序框架概述

概述 人和机器对可靠、无处不在且价格实惠的无线数据连接的不断需求给无线行业带来了巨大的压力。业界一致认为,下一代无线网络 (5G) 需要在 2020 年之前将容量提高一千倍,而成本不会相应增加。为了应对这一技术挑战,无线研究人员需要跳出框…

一体机定制_工控触控一体机安卓主板方案

工控一体机是一种集成化的硬件方案,采用了联发科MT8768八核芯片和12nm制程工艺。该芯片拥有2.0GHz的主频和IMG PowerVR GE8320图形处理GPU,具备强大的视频处理能力,并且兼容大部分的视频格式和解码能力。工控一体机搭载了Android 9.0操作系统…

【Python3】\u字符与中文字串互转

小水。 encode和decode: str没有decode函数,但对应的有encode函数,该函数作用是转码为bytes对象bytes通过decode函数转换回对应的str对于一些偏激的(可以用过分来形容)的字符串,例如一二三\\u56db\\u4e94\\u516d,是有…

20231225在WIN10下使用SSH连接Ubuntu20.04.6

20231225在WIN10下使用SSH连接Ubuntu20.04.6 2023/12/25 23:03 https://jingyan.baidu.com/article/5552ef479e1856108ffbc9e3.html Win10怎么开启SSH功能 Win10怎么开启SSH功能,下面就一起来看看吧! 工具/原料 华硕天选4 Windows10 方法/步骤 点击左下角的开始菜单,打开Wind…

电脑如何把多张图片压缩?一键批量压缩图片

大家在日常工作和学习中是不是经常使用图片,有些高清的图片体积就会比较大,在传输和储存时就非常的不方便,碰到这样的情况只需要通过图片压缩就可以解决,但是如果是处理的图片比较多,一张张的压缩就会特别麻烦&#xf…

6 UVM Object

uvm_object类是所有uvm层次类的基类,如uvm_report_object、uvm_component、uvm_transaction、uvm_sequence_item、uvm_sequence等。它在定义一组方法(如create, copy, print, clone, compare, record等)方面起着重要作用。 6.1 UVM Utility …

我在 VSCode 插件里接入了 ChatGPT,解决了Bug无法定位的难题

作为一名软件开发者,我时常面临着代码中Bug的定位和解决问题。这个过程往往既费时又充满挑战。然而,最近我在我的VSCode插件中接入了ChatGPT,这个决定彻底改变了我处理Bug的方式。 Bug:开发者的噩梦 在开发过程中,遇…

《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》

基于Feign的声明式远程调用(代码更优雅),用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理 Nacos除了可以做注册中心,同样也可以做配置管理来使用。 利用Nacos实现统一配置管理以及配置的热更新:…

86% 的网络攻击是通过加密渠道进行

自 2022 年以来,HTTPS 威胁增长了 24%,凸显了针对加密通道的网络犯罪策略的复杂性。 制造业连续第二年成为最常受到攻击的行业,教育和政府组织的攻击同比增幅最高。此外,包括恶意 Web 内容和恶意软件负载在内的恶意软件继续主导其…

AcWing算法进阶课-1.17.1费用流

算法进阶课整理 CSDN个人主页:更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图,并给定每条边的容量和费用,边的容量非负。 图中可能存在重边和自环,保证费用不会存在负环。 求从 S S S 到 …