网格(mesh)生成算法

mesh网格生成算法

  • 1. 简介
  • 2. Points clouds Vs Meshes
  • 3. 为什么要生成mesh网格以及生成mesh网格的难点
  • 4. 常见的mesh网格生成算法

1. 简介

基于 3D视觉的新兴应用场景蓬勃发展,3D点云越来越受到人们的广泛关注。点云有着广泛的应用领域包括机器人技术、3D图形、自动驾驶、虚拟现实(AR/VR/MR)等。为了跟上不断增长的应用需要,研究和开发有效存储、处理的相关算法来处理点云的意义正显著上升。

3D点云数据的表述形式一般分为以下四种:

  1. 点云(Point cloud):由N个D维的点组成,当这个D=3的时候一般代表着(x,y,z)的坐标,当然也可以包括一些法向量、强度等别的特征。与网格、体素等数据形式类似,点云也常用作描述三维模型,其表现非常直观,且具有无序性和不规则性。点云定义为目标表面特性的海量点集合,可简单理解为众多特征点的集合,是在获取物体表面每个采样点的空间坐标后得到的。

  2. 网格(Mesh):由三角面片和正方形面片组成。

  3. 体素(Voxel):由三维栅格将物体用0和1表征。

  4. 多角度(Multi-view)的RGB图像或者RGB-D图像

下图分别展示以上四种表述形式

在这里插入图片描述

3D视觉的建模领域中有多种技术和方法用于创建对象、环境或结构的数字表示。两种常见的方法是使用点云 3D 模型(point cloud 3d models)和 3D 网格模型(3d mesh models)。

以上,我们仅介绍两种常见的方法:使用点云 3D 模型(point cloud 3d models)和 3D 网格模型(3d mesh models)。本文中先介绍下点云 3D 模型和 3D 网格模型之间的区别和应用,再对mesh生成算法进行一个大概的描述。

2. Points clouds Vs Meshes

点云 3D 模型是通过收集大量单独数据点创建的对象或场景的表示。这些数据点通常称为“点”,源自 LiDAR(光检测和测距)或结构光扫描仪等 3D 扫描设备。
点云 3D 模型的主要目的是捕获 3D 空间中点的精确空间位置。这些点可以表示对象或环境的表面、边缘或其他特征。

点云3D模型的特点:

  1. 高精度:点云模型最显着的优势之一是高精度。它们可以准确地表示扫描对象,非常适合测量、建筑和工业设计等应用。

  2. 详细的几何形状:点云模型捕获物体的精细细节,低至毫米级。这使得它们对于需要精确测量和分析的任务很有价值。

  3. 缺乏连通性:点云模型由各个点组成,它们不具有固有的连通性或表面结构。

  4. 数据量大:由于数据点数量庞大,点云模型的数据量可能相当大,这可能需要专门的软件和硬件来处理。

点云 3D 模型一般应用:

  1. 测绘:点云模型对于测绘应用来说非常宝贵,其中准确的测量和空间数据至关重要。
    在这里插入图片描述

  2. 考古学和文化遗产:它们用于高精度地记录考古遗址和历史文物。

  3. 逆向工程:工程师使用点云模型对复杂对象进行逆向工程,提取精确的几何数据。

与点云模型相比,3D 网格模型 是通过连接这些单独的点以形成连续的表面来构建的。此过程通常称为“网格划分”。

3D 网格模型的特点:

  1. 表面表示:3D 网格模型使用顶点、边和面表示对象的表面,同时我们可以在表面上贴精细的纹理。这使得它们适合渲染和可视化,。

  2. 拓扑:网格模型具有明确定义的拓扑,这意味着它们具有清晰的结构,杂乱的错误点减少。这对于动画和游戏等应用程序至关重要。

  3. 减少数据大小:与点云模型相比,网格模型在数据大小方面通常更紧凑。这使得它们更容易处理和存储,且减少了渲染压力。

  4. 精度较低:虽然网格模型提供了对象的良好视觉表示,但在捕获精细细节方面它们可能不如点云模型精确。

应用上比如:

  1. 游戏和动画:网格模型广泛应用于游戏行业和 3D 动画,因为它们能够提供视觉吸引力和交互式表示。

  2. 产品设计:CAD 软件通常使用网格模型来设计产品和创建原型。

  3. 3D 打印:网格模型非常适合 3D 打印,因为它们可以轻松转换为物理对象。

3. 为什么要生成mesh网格以及生成mesh网格的难点

在三维重建中,通过深度传感器比如RGBD相机、雷达的方式,或者通过多张2D图片MVG的方式,都可以采集到大量稠密的点云数据。对于一个很复杂的目标物体,我们的精度要求不高,生成的点云可能就有几百万以至几千万个点,对于数据传输以及显示有比较大的困难,而且显示效果也比较差。

网格生成过程中有很多的难点,这些难点也是衡量网格生成算法的标准:

  1. 精度上:
    A. 生成网格与原始点云的位置的差异性;
    B. 对点云噪声的亢余度、点云分布不同密度的适应效果以及应对点云缺失的效果;
    C. 对尖锐特征的保留效果,以及细节的保留效果
    D. 网格三角面大小以及形状
  2. 硬件上:能够支持模型网格面积的大小
  3. 时间性能:网格生成速度

4. 常见的mesh网格生成算法

总的先说,目前网格生成算法可以分为两大类:连续曲面生成算法 和 非连续曲面生成算法(离散方法)

连续方法:利用点云去拟合某类分布函数,得到表面的函数表示,然后生成网格。
比如:TSDF、Wavelet(多用于医学图像)、Poisson、FSSR、SSD、GDMR、多级流式表面重建、marching cubes(严格说这并不是一个面生成算法,而是一个等值面提取算法)等

离散方法利用某些空间划分方法,直接从点云数据生成网格。
比如:PowerCrust、Greedy Projection、滚球法、alpha-shapes

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多模态 ——LLaVA 集成先进图像理解与自然语言交互GPT-4的大模型

概述 提出了一种大型模型 LLaVA,它使用 GPT-4 生成多模态语言图像指令跟随数据,并利用该数据将视觉和语言理解融为一体。初步实验表明,LLaVA 展示了出色的多模态聊天能力,在合成多模态指令上的表现优于 GPT-4。 在科学质量保证中…

Java中volatile关键字

保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的,volatile关键字会强制将修改的值立即写入主存。 1.volatile的可见性 一个典型的例子:永不停止的循环。 public class Forever…

全网最好的JVM总结:有生命周期的JVM

1.编译 1.1 java中编译器有哪些? 前端编译器 javac后台即时编译器 JIT编译器静态提前编译器 (一步到位,直接把java编译成二进制) 2.2 编译过程是怎么样? 解析与填充符号表,生成语法树 (编译…

设计模式学习笔记 - 设计模式与范式 -行为型:17.中介模式:什么时候用中介模式?什么时候用观察者模式?

概述 本章学习 23 种经典设计模式中的最后一个设计模式,中介模式。和之前讲过的命令模式、解释器模式类似,中介模式也不怎么常用,应用场景比较特殊、有限,但是,跟它俩不同的是,中介模式理解起来并不难&…

Linux部署自动化运维平台Spug

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

【深度学习】多层感知机与卷积神经网络解析

引言: 在人工智能的宏伟画卷中,深度学习如同一笔瑰丽而深邃的色彩,为这幅画增添了无限的生命力和潜能。作为支撑这一领域核心技术的基石,多层感知机(MLP)和卷积神经网络(CNN)在模仿人…

文心一言 VS 讯飞星火 VS chatgpt (236)-- 算法导论17.3 2题

二、使用势能法重做练习17.1-3。练习17.1-3的内容是:假定我们对一个数据结构执行一个由 n 个操作组成的操作序列,当 i 严格为 2 的幂时第 i 个操作的代价为 i ,否则代价为1。使用聚合分析确定每个操作的摊还代价。如果要写代码,请…

【漏洞复现】泛微E-Mobile 6.0 client.do存在命令执行漏洞

0x01 阅读须知 “如棠安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供…

关于Salesforce DevOps的理解

“DevOps”是一组结合了软件开发 (Dev) 和运营 (Ops) 的实践,可帮助团队更快、更可靠地构建、测试和发布软件。 DevOps 的核心理念包括持续集成(Continuous Integration)、持续交付(…

Docker+Nginx部署vue项目

这篇文章给大家分享一下如何使用DockerNginx部署前端vue项目。 第一步:创建vue项目 执行这个命令,创建一个vue项目 npm create vue3将vue项目打包 npm run build此时会看到vue工程中生成了一个dist文件,我们将他上传到服务器中。 第二步…

步骤大全:网站建设3个基本流程详解

一.领取一个免费域名和SSL证书,和CDN 1.打开网站链接:https://www.rainyun.com/z22_ 2.在网站主页上,您会看到一个"登陆/注册"的选项。 3.点击"登陆/注册",然后选择"微信登录"选项。 4.使用您的…

VMware Workstation部署最新版OpenWrt 23.05.3

正文共:1456 字 51 图,预估阅读时间:2 分钟 我们之前介绍了如何在VMware Workstation上安装OpenWrt(软路由是啥?OpenWrt又是啥?长啥样?在VMware装一个瞅瞅),也介绍了如何…

LRUCache原理及源码实现

目录 LRUCache简介: LRUCache的实现: LinkedHashMap方法实现: 自己实现链表: 前言: 有需要本文章源码的友友请前往:LRUCache源码 LRUCache简介: LRU是Least Recently Used的缩写&#xf…

扣子Coze插件教程:如何使用Coze IDE创建插件

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

通过一篇文章让你了解Linux的重要性

Linux 前言一、什么是Linux后台vs前台为何大多数公司选择使用Linux作为后台服务器 二、Linux的背景介绍UNIX发展的历史Linux发展历史开源官网发行版本DebianUbuntu红帽企业级LinuxCentOSFedoraKali Linux 三、国内企业后台和用户使用Linux现状IT服务器Linux系统应用领域嵌入式L…

每日OJ题_01背包④_力扣1049. 最后一块石头的重量 II

目录 力扣1049. 最后一块石头的重量 II 问题解析 解析代码 滚动数组优化代码 力扣1049. 最后一块石头的重量 II 1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意…

挑战全网,看谁能用栈和队列解决更多问题

1.栈 2.队列 3.栈和队列面试题 正文开始: 1. 栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后…

项目之旅(前两周)

文章目录 学习总结input1.text 文本框2.password 密码框3.button 按钮4.file 文件还可定义上传类型 5.日期6.radio 单选框7. checkbox 复选框 项目总结生活总结 学习总结 input 本次写项目时才发现,input有很多种用法,这里列举几种 1.text 文本框 不…

嵌入式音视频进阶学习(建议收藏!)

前言: 大家好,今天花点时间,整理一下最近看的一些音视频英文文档资料和相关的一些音视频书籍,下面分享的资料,仅是个人的一个学习,仅供参考! rtp学习: 在这里给大家汇总的资料&#…

如何在Linux部署MeterSphere并实现公网访问进行远程测试工作

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…