当前位置: 首页 > news >正文

【菜狗学三维重建】TSDF三维重建隐式表达详细解释——20250413

三维重建的任务

        将一系列二维图像提取信息,把全局构造出来成为三维。

一些常见的应用

        1、原型设计

        2、虚拟现实

        3、辅助驾驶

        4、定位与追踪(城市)

三维重建的方法:

        (1)激光雷达可以直接获取深度和三维信息,但是成本很高。

        (2)使用多个视角图像进行三维重建,成本低,比较容易。


三维重建基础:


Neural Recon的任务流程

        传统任务流程:输入序列,深度估计,点云,融合

                每一步都要保证误差较小,否则累计误差。

                每次都是自己每一帧各自来做。

        论文提出:不需要中间过程,只输入视频序列,利用神经网络来进行中间步骤。

                输入不同帧前后有关系。

                不使用高端设备和中间过程,直接用端到端的框架。

整体框架

        1、关键帧选择:每个视频选择间隔几秒选一个帧来进行重建

        2、输入序列:9张图

        3、片段重建:利用9张图把三维重建出来

        4、全局合成:考虑序列顺序,让整体看起来正常

核心是中间的网络,即利用图像信息 估计 TSDF值


1、特征的投影和投射:将图像的特征映射到重建的结果。

        通过不同图像的关系找到之间的特征,对于多张图做卷积,一共九张图像

        对于三维模型的某个点,对应了九张图的特征(例如每个图80维度)通过平均来融合。


2、片段合并:

        直接合并有问题,各个片段都是单独做的,使用RNN类似的思想

        下一个状态始终考虑前一个片段结果。


3、整体架构

        由粗到细:先用大体素 预测场景,再逐步用小体素 不断调整细节。

        每个体素概率低,丢弃,概率高,保留。


TSDF

        已知:1、原始图片;2、对应深度;3、每张图片相机位姿;4、相机内参。

        增量式计算:每多一张图像,对于其信息进行融合,不断更新和组合来生成 整体三维模型。

1、初始化体素

        需要把重建的结果放到一块立方体当中(空间),每一个小块块叫做体素,每个体素插入一个值,这个值就是TSDF和权重。


2、TSDF值的含义

TSDF的计算

对于每一个体素,计算在世界坐标系的位置

        目前深度图对应于每个像素,需要用体素对应像素坐标位置以及深度信息。

        世界坐标系——相机坐标系——像素坐标系

TSDF结果

       下图是一帧的结果,面前是正,面后是负。

TSDF的增量式

        每一步都进行更新,后一帧与前一帧进行组合


代码实战

一些小Tip:

        ①GitHub看一个项目,可以先看他的issues,里面会有各种报错的提问,数据集的提问,可以看到作者对于某个问题的回答。

        ②看readme来配置环境,所需要的一些准备工作。


代码实战:

1、文件夹内容:   

__pycache__

  • 存放 Python 编译后的缓存文件(.pyc),可忽略,不需要手动操作。


assets

  • 作用:一般用于存放项目中使用的静态资源,比如可视化图像、预训练模型、演示数据等。

  • 在重建项目中,可能包括重建结果示例、可视化用的 mesh 文件等。


config

  • 作用配置文件夹,通常存放 .yaml.json 格式的配置文件。

  • 包含模型参数、训练超参数、数据路径、网络结构配置等信息。


data

  • 作用数据加载与处理相关的代码。

  • 通常包括数据读取器(如 ScanNet、TUM RGB-D),以及数据增强、TSDF 生成等功能。


datasets

  • 作用具体数据集接口封装,可能对不同数据源实现不同的数据加载逻辑

  • 常包含对数据格式的适配、文件路径管理、样本生成等。


models

  • 作用模型定义,包括 NeuralRecon 的网络结构。

  • 可能包含:backbone 网络(如 ResNet、UNet)、深度估计模块、TSDF 融合模块、多视图融合逻辑等。


ops

  • 作用操作(operations)模块,通常是一些底层函数或 CUDA 加速模块

  • 包括 TSDF 融合操作、体素化处理、自定义损失函数、梯度处理等。


tools

  • 作用辅助脚本,例如训练、评估、推理、模型转换等。

  • 常见文件如 train.pyeval.pyinference.py,用于调用模型主流程。

后面没有继续做这方面研究,就没有再看……

    ——20250827

小狗照亮每一天

http://www.dtcms.com/a/353783.html

相关文章:

  • pandas常用方法
  • 人工智能和机器学习如何改善机器人技术
  • 【VSCode】VSCode为Java C/S项目添加图形用户界面
  • YOLOv8-SMOT:一种高效鲁棒的实时小目标跟踪框架:基于切片辅助训练与自适应关联
  • 腾讯云 CVM 上的 SpringBoot 应用避免非法访问
  • Redis实战-优惠券秒杀解决方案总结大全
  • 开疆智能Profinet转EtherCAT网关连接TR-Electronic传感器配置案例
  • 部署网页在服务器(公网)上笔记 infinityfree 写一个找工作单html文件的网站
  • 分享 HTML 邮件开发的 15 个踩坑实录
  • Ubuntu 切换 SOCKS5代理 和 HTTP 代理并下载 Hugging Face 模型
  • 树莓派装的Ubuntu Server连接不上WIFI
  • Day14——JavaScript 核心知识全解析:变量、类型与操作符深度探秘
  • DeFi协议Lombard能突破比特币生态原生叙事困境吗?
  • 鸿蒙ArkUI 基础篇-06-组件基础语法-Column/Row/Text
  • 主键索引和普通索引的区别
  • 移动端(微信等)使用 vConsole调试console
  • 吱吱企业通讯软件打破跨部门沟通壁垒,为企业搭建安全的通讯环境
  • 论文Review 3DGS PGSR | TVCG2024 ZJU-3DV | 几何约束的3DGS表面重建
  • 京东大模型安全实践:从全链路防护到合规备案的完整技术方案
  • Apache Flink错误处理实战手册:2年生产环境调试经验总结
  • 私域电商新范式:开源AI智能名片链动2+1模式S2B2C商城小程序赋能传统行业流量转化
  • 从感知机到大模型:神经网络的全景解析与实践指南
  • MQTT broker 安装与基础配置实战指南(二)
  • STM32——中断
  • PLC_博图系列☞基本指令”PT:加载持续时间“
  • 基于Kafka的延迟队列
  • 身份证号校验码算法
  • C++中类继承的意义
  • PMP项目管理知识点-⑮预测型项目概念辨析
  • 【Kafka】项目整合使用案例