3d重建+神经渲染

3d重建

  • 基于深度相机(结构光、TOF、双目摄像头)的三维重建
  • 基于图像的三维重建:深度学习
  • 基于视觉几何的传统三维重建:这种三维重建方法研究时间比较久远,技术相对成熟。主要通过多视角图像对采集数据的相机位置进行估计,再通过图像提取特征后进行比对拼接完成二维图像到三维模型的转换,就像利用立体几何中的三视图还原立体图一样。

3D形状表示方法(shape representation)

  • 深度图(depth map):2D图片,每个像素都记录了从视点(viewpoint)到遮挡物表面(遮挡物就是阴影生成物体)的距离,被遮挡的部分无法表示,仅能表示物体相对于视点平面的垂直深度
  • 点云(point cloud):某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等。在我看来点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。可通过三维激光扫描获取。
  • 体素(voxel):3D空间中具有一定体积的点,相当于3D空间中的像素。体素本身不含有位置信息,只谈论与其他体素的相对距离
  • 网格(mesh):表示多面体形状的顶点与多边形的集合,它也叫作非结构网格
深度图(depth map)点云(point cloud)体素(voxel)网格(mesh)

3d重建算法

  • Truncated Signed Distance Function (截断符号距离函数):实时3D重建经典算法。TSDF是SDF的改进,将取值限制在[-1,1]之间,同时仅在物体表面的限定的距离范围内进行计算,降低了计算量。原理:用一个大的空间包围盒(volume)去包括进去待3D构建的场景,volume分成多个voxel(小立体方块)
  • SIFT (Scale Invariant Feature Transform)
  • ANN Feature Matching (近似最邻近特征匹配)
  • SfT(Shape from Template):需要预先得到目标物体在刚性状态下的三维模型来作为模板,后面模型去追踪单目视频里目标物体的变化,得到每一帧图像对应的形变三维模型。这种方法具有实时重建的可能
  • Eight Point Algorithm (八点算法):用八个点点对应关系计算核线几何(f-matrix)两个Projective Camera之间的点点对应关系是需要满足核线几何的,就像三点可以确定一个平面一样,8对匹配可以确定两个相机的核线几何

3d重建流程

  1. ->输入无序图像 Unstructured Images
  2. ->图像对齐(Assoc.),筛选图像,构建场景图(也称为连接图)。
  3. ->稀疏重建(Structure from Motion,SFM),生成稀疏的3D点云结构,该步骤的贡献是建立统一的坐标系,确定了重建物体的尺寸,提供可靠的2D-3D多对一的匹配点对。
  4. ->稠密重建(Multiple View Stereo,MVS),生成稠密的3D点云结构,该步骤的贡献生成稠密的点云。
  5. ->表面重建(Mesh,Model Fitting),稠密点云转化为网格(mesh)。
  6. ->纹理重建(Texture Mapping) ,纹理贴图,即对网格进行纹理坐标映射,进行贴纹理。
  7. ->可视化渲染

基于深度学习的3d重建算法:

  • 基于单张RGB图像的三维重建
  • 基于多视图的三维重建
  • 基于点云数据的三维重建

MVSNet(2018):Depth Inference for Unstructured Multi-view Stereo 稠密重建

第一个基于深度学习的MVS重建架构。提出一种端到端的多视图重建深度学习架构,参考基于2张图片的代价体的双目立体匹配深度估计方法,扩展到多张图片中进行深度估计。MVSNet的核心不是直接把3D模型建出来,而是端到端的学习深度图,它的目标是预测图片上每个像素的深度信息。在该架构中,首先提取深层的视觉图像特征,然后通过可微分的单应变换,基于参考视图的相机视锥体构建3D代价体。然后使用3D卷积对初始深度图进行正则化和回归得到初始的深度图,初始的深度图通过参考图像改进得到最后的深度图

LoFTR: Detector-Free Local Feature Matching with Transformers

一种新的局部图像特征匹配方法。首先在粗粒度上建立图像特征的检测、描述和匹配,然后在精粒度别上细化亚像素级别的密集匹配,而不是依次执行图像特征检测、描述和匹配。与使用cost volume来搜索对应关系的密集方法相比,本文借鉴Transformer使用了自注意层和互注意层来获得两幅图像的特征描述符。这种方法提供的全局接受域使得能够在纹理较少的区域产生密集匹配

渲染方式

  • 容积图渲染(Volume Rendering):该技术主要应用于医学图像的可视化。它利用三维空间中的体素进行渲染和加权,通过调整灰度和透明度来显示内部结构。
  • 表面渲染(Surface Rendering):该技术利用三维建模工具构建表面模型,并使用光照等效果对表面进行渲染。表面渲染技术可以生成真实的渲染效果,但需要许多处理步骤,比较繁琐
  • 可微分渲染(differentiable rendering)
  • 神经渲染(Neural rendering):基于深度生成模型和图形学领域的光学物理知识

神经辐射场(NeRF)使用多层感知器(MLP)来近似3D场景的辐射场和密度场。该学习的体表示可以使用解析可微分渲染(即体积分)从任何虚拟摄像头渲染。对于训练,假设从多个摄像机视点观测场景。从这些训练视点,渲染估计的3D场景,并最小化渲染图像和观察图像之间的差异,根据这些观察结果训练网络。一旦训练完成,由神经网络近似的3D场景可以从新的视点进行渲染,从而实现可控合成。与使用神经网络学习渲染函数的方法相反,NeRF在该方法中更明确地使用了计算机图形学的知识,由于(物理)归纳偏差,能够更好地概括新视图:场景密度和半径的中间3D结构化表示。因此,NeRF在3D空间中学习物理上有意义的颜色和密度值,物理激发的光线投射和体集成可以持续渲染到新视图中。

开源框架

  • OpenMVG: https://github.com/openMVG/openMVG
  • Colmap: https://github.com/colmap/colmap
  • OpenSfM:https://github.com/mapillary/OpenSfM
  • OpenMVS:https://github.com/cdcseacave/openMVS

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

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

相关文章

一种对不同类型齐格勒-尼科尔斯 P-I-D 控制器调谐算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

常用工具类之AJ-Captcha入门

1.引入MAVEN依赖 若依官方引入的是1.2.7版本。我选择了目前最常用的1.3.0版本。 在项目中给的 ruoyi-framework\pom.xml 添加依赖 <!-- anji滑块验证码 --><dependency><groupId>com.anji-plus</groupId><artifactId>spring-boot-starter-captc…

通过调整图像hue值并结合ImageEnhance库以实现色调增强

前言 PIL库中的ImageEnhance类可用于图像增强&#xff0c;可以调节图像的亮度、对比度、色度和锐度。 通过RGB到HSV的变换加调整可以对图像的色调进行调整。 两种方法结合可以达到更大程度的图像色调增强。 调整hue值 __author__ TracelessLe __website__ https://blog…

vue2中引入天地图及相关配置

前言 项目中需要引入特殊用途的地图&#xff0c;发现天地图比高德地图、百度地图要更符合需求&#xff0c;于是看了看天地图。 正文 vue2项目中如何引入天地图并对相关的配置进行修改使用呢&#xff1f;官方给的4.0版本的使用说明。 引入&#xff1a; 进入到public/index.html中…

Cocos Creator3D:制作可任意拉伸的 UI 图像

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 制作可任意拉伸的 UI 图像 UI 系统核心的设计原则是能够自动适应各种不同的设备屏幕尺寸&#xff0c;因此我们在制作 UI 时需要正确设置每个控件元素的尺寸&#xff08;size&#…

TypeScript ~ TS 掌握自动编译命令 ③

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; TypeScript ~ TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &…

【CV 向】OpenCV 图形绘制指南

文章目录 引言1. 创建画布2. 绘制线段3. 绘制矩形4. 绘制圆5. 绘制椭圆6. 绘制多边形7. 绘制字体结论 引言 Python OpenCV 是一个功能强大的计算机视觉库&#xff0c;除了图像处理和计算机视觉任务外&#xff0c;它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中…

Springboot程序开启远程DEBUG

一、远程debug的原理 Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式&#xff0c;并在调试器中连接到程序所在的调试地址&#xff0c;从而实现对程序的远程调试。 具体步骤如下&#xff1a; 在运行Spring Boot程序时&#xff0c;在启动命令…

软考高级系统架构设计师(四) 计算机网络2磁盘阵列

目录 磁盘阵列RAID RAID级别 ​IPV6 网络接入技术 综合布线 磁盘阵列RAID 磁盘阵列&#xff08;Redundant Arrays of Independent Disks&#xff0c;RAID&#xff09;&#xff0c;有"数块独立磁盘构成具有冗余能力的阵列”之意。 磁盘阵列是由很多块独立的磁盘&#…

P35[10-5]硬件IIC配置+读写MPU6050(软)(此处注意与软件iic区别)

接线图如下: 注:硬件读写iic的连接位置固定,可参考引脚定义表(如下) 声明:I2C1重映射时,有一次更换机会,但是此面包板由于OLED的该引脚无法接线,因此只能接在PB10 PB11的I2C2上 软件iic初始化部分:(此处即可替代掉整个软件iic.c初始化的底层) void MPU6050_Init(vo…

MyCat总结

目录 什么是mycat 核心概念 逻辑库 逻辑表 分片节点 数据库主机 用户 mycat原理 目录结构 配置文件 读写分离 搭建读写分离 搭建主从复制&#xff1a; 搭建读写分离&#xff1a; 分片技术 垂直拆分 实现分库&#xff1a; 水平拆分 实现分库&#xff1a; ER表 全局表 分…

IDEA新UI速览,成了VS Code的样子?

IntelliJ IDEA 2023.1 现已发布。此版本包括对新 UI 的改进&#xff0c;根据从用户那里收到的反馈进行了彻底改造。此外还实现了性能增强&#xff0c;从而在打开项目时更快地导入 Maven 和更早地使用 IDE 功能。由于采用了 background commit checks&#xff0c;新版本提供了简…

【学习学习】NLP理解层次模型

NLP&#xff08;Neuro-Linguistic Programming&#xff0c;神经语言程序学&#xff09;&#xff0c;由两位美国人理查得.班德勒&#xff08;Richard Bandler&#xff09;与约翰.葛瑞德&#xff08;John Grinder&#xff09;于1976年创办&#xff0c;并在企业培训中广泛使用。美…

Vue3的计算属性和监听属性

目录 computed 语法介绍 简写版 完整版 watch 介绍 监听ref式数据代码示例 监听reactive式数据 watchEffect函数 computed 语法介绍 与Vue2.x中computed配置功能一致 import {computed} from vuesetup(){...//计算属性——简写let fullName computed(()>{return per…

【C++篇】C++新增的一些基础特性

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

改进YOLOv8 | 优化器篇 | YOLOv8 引入谷歌 Lion 优化器

论文地址:https://arxiv.org/pdf/2302.06675.pdf 代码地址:https://github.com/google/automl/tree/master/lion 我们提出了一种将算法发现作为程序搜索的方法,并将其应用于发现用于深度神经网络训练的优化算法。我们利用高效的搜索技术来探索一个无限且稀疏的程序空间。为了…

2022前端趋势报告(上)

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 一、前言 本文内容来自于《St…

Python在不同领域中的应用

Python 是一种功能强大且易于使用的编程语言&#xff0c;因此在各个领域都有广泛的应用。以下是 Python 在不同领域中的应用&#xff1a; 数据科学&#xff1a;Python 是数据科学家和机器学习专家的首选工具之一。它有成熟的数据分析库和工具包&#xff0c;如 Pandas、NumPy、S…

【前端知识】React 基础巩固(十五)——书籍购物车简单案例

React 基础巩固(十五)——书籍购物车简单案例 案例代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"v…

C国演义 [第六章]

第六章 最长递增子序列题目理解步骤dp含义递推公式初始化遍历顺序 代码 最长连续递增序列题目理解步骤dp含义递推公式初始化遍历顺序 代码 最长递增子序列 力扣链接 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&am…