基于深度学习的MVS学习笔记(05.04-05.05)

1. MVS方法与分类

1.1 问题界定:多目和单目双目

  • 单目深度估计:拟合一个函数将图像【RGB输入】映射到深度图【浮点输出】
  • 双目深度估计:双目回归视差,可以进一步求像素距离相机光心的深度
  • 多视点三维重建
    • 单目只能找到“相对的”相对关系
    • 双目理论上可以获取深度,但不同视角下深度可能不一致
    • 多目可以综合考虑,交叉验证

在特征提取上可以参考单目方法,在特征匹配和聚合上可以参考双目方法

1.2 MVS重建方法分类

方法缺点
直接点云重建 point cloud based一般采用点云传播的方式逐步让模型变得稠密难以并行化,重建时间长
基于体素的方法 volumetric based将3D空间划分为体素,在全局坐标系下判断每个体素的占用,能很好的通过正则化并行化。一般采用divide-and-conquer或八叉树等进行高分辨率重建由于内存消耗,一般只能处理小分辨率的场景
基于深度图融合 depth map fusion based将MVS问题解耦为逐视点的深度估计+最终融合所有视点图得到3D模型对于大基线角度和遮挡区域由于几何一致性会导致较差的质量

大基线角度:拍摄角度变换太大导致两张图差别很大

2. MVS流程

2.1 前序步骤:SfM

SfM 从运动中恢复结构【从图片中恢复/得到稀疏的点云+相机的参数】

2.2 核心问题建模:平面扫描算法

Plane Sweeping平面扫描【得到深度图】

  • 将空间划分成不同的深度假设平面,选择最好的深度假设平面 -> 恢复丢失的深度

  • 在物体表面的点,不同相机看到的应该是一样的(在物体上) -> 某种特征&某种度量

  • 由于SfM求得了相机参数,因此可以相互投影(Homograpy) -> 深度统一

2.3 后续步骤:深度图滤波与融合

已经估计出深度图,进行滤波和融合

像素点P,像素点P对应的深度D§,将参考视角下的P投影到源视角得到P’ -D(P‘),投影到很多源视角下

  • P和P‘距离比较进【像素点】
  • D§和D(P‘)距离比较近【深度图】
  • 至少在N个视点上满足,则认可这个点

这就是几何一致性滤波

另外常见的光度一致性滤波

得到过滤后的深度图就可以进行融合,目前关于融合方面的工作比较成熟

3. 基于深度学习的MVS方法

3.1 数据集介绍

DTU:用于训练和测试

针对MVS专门拍摄处理的高精度室内物体数据集,利用可调节照明的ABB机械臂进行多视点拍摄

  • 由124个不同场景组成
  • 每个物体共拍摄49个不同的视角
  • 每个视角共有7种不同的亮度
  • 每张图像分辨率为1600x1200

Tanks and Temples:用于泛化测试

大型室外场景数据集

  • 光照变化大
  • GT使用工业激光扫描仪获得
  • 场景存在大规模光照变化
  • 不能进行训练

BlendedMVS:用于finetune

  • 由113个场景组成
  • 覆盖小尺度和大尺度场景
  • 高精度合成数据

ETH3D:用于大规模重建

  • 包含25个高分辨率场景和10个低分辨率场景
  • 视点数量和分辨率非常庞大
  • 存在很多大面积弱纹理和遮挡区域
  • 一般作为传统方法的benchmark

3.2 评估指标介绍

准确率

召回率/完整性

3.3 MVSNet系列论文列表

代码仓库

https://github.com/waisvid/Awesome-MVS

基于深度学习:https://github.com/XYZ-qiyh/Awesome-Learning-MVS

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

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

相关文章

PHP源码_众筹商城

众筹商城源码 众筹商品平台 商城加共识元富之路 网上商城众筹 前端是编译后的,后端PHP,带商城 运行截图 源码贡献 https://githubs.xyz/boot?app39 部分数据库表 CREATE TABLE ti_shopro_store (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,nam…

英语复习之英语形近词总结(二)

接着总结形近词 单词释义例句 impress 英 /ɪmˈpres/ 美 /ɪmˈpres/ vt.盖印;强征;传送;给予某人深刻印象 vi.给人印象。印象,印记;特征,痕迹 1.It didnt impress me as a good place to live. 那地方…

基于openEuler22.03 LTS环境的docker容器基础

一、说明 本文配置环境为VMware虚拟机或华为云服务器(4核CPU,8 GB内存,40GB磁盘),OS为openEuler 22.03 LTS ,Linux服务器要求能联网。 二、安装docker 2.1 安装docker软件包 [rootnode01 ~]# dnf -y in…

电机控制系列模块解析(15)—— 母线小电容

一、薄膜电容 在家电产品和工业变频器中,使用容值更小但耐压更高的薄膜电容来代替传统的电解电容作为逆变器母线电容,这种技术趋势已经得到了广泛应用和产品化。以下是关于这一替换技术的一些关键考量和优势: 长期稳定性与可靠性&#xff1a…

3-qt综合实例-贪吃蛇的游戏程序

引言: 如题,本次实践课程主要讲解贪吃蛇游戏程序。 qt贪吃蛇项目内容: 一、功能需求 二、界面设计 各组件使用: 对象名 类 说明 Widget QWidge 主窗体 btnRank QPushButton 排行榜-按钮 groupBox QGroupBox 难…

牛客NC383 主持人调度(一)【简单 排序 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/e160b104354649b69600803184094adb 思路 直接看代码,不难Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返…

CMakeLists.txt语法规则:控制编译的变量

一. 简介 前面一篇文章学习了 CMakeLists.txt语法中的 部分常量变量,具体学习提供信息的变量。 本文继续学习 CMakeLists.txt语法中:控制编译的变量。 二. CMakeLists.txt语法规则:控制编译的变量 这些变量可以控制编译过程,…

[C语言]指针进阶详解

指针是C语言的精髓所以内容可能会比较多,需要我们认真学习 目录 1、字符指针 2、指针数组 3、数组指针 3.1数组指针的定义 3.2&数组名vs数组名 3.3数组指针的使用 4、数组传参和指针传参 4.1一维数组传参 4.2二维数组传参 4.3一级指针传参 4.4二级指…

【Docker学习】docker run的端口映射-p和-P选项

docker run的端口映射选项分为-p(小写,全称--publish),-P(大写,全称--publish-all),之前认为只有改变容器发布给宿主机的默认端口号才会进行-p的设置,而不改变默认端口号…

现代信号处理8_递归的最小二乘(CSDN_20240505)

递归的最小二乘大约出现在50年前。递归,就是在已经算出的结果的基础下,当新的数据到来时,不需要再对数据进行一次完整的运算,而是在已有结果的基础上做一些简单的调整,就能得到新的结果。使用递归的好处: …

面试中算法(使用栈实现队列)

使用栈来模拟一个队列,要求实现队列的两个基本操作:入队、出队。 栈的特点:先入后出,出入元素都是在同一端(栈顶)。 队列的特点:先入先出,出入元素是在两端(队头和队尾)。 分析&…

ICode国际青少年编程竞赛- Python-1级训练场-for循环与变量

ICode国际青少年编程竞赛- Python-1级训练场-for循环与变量 1、 a 1 for i in range(4):Spaceship.step(a)Dev.step(2)Dev.step(-2)a a 12、 a 1 for i in range(4):Spaceship.step(a)Dev.step(3)Dev.step(-3)a a 13、 a 1 for i in range(4):Dev.turnLeft()Dev.step(…

【机器学习】Ctrl-Adapter:视频生成领域的革新者

Ctrl-Adapter:视频生成领域的革新者 一、ControlNets的挑战与Ctrl-Adapter的应运而生二、Ctrl-Adapter的技术原理与实现三、Ctrl-Adapter的应用实例与性能表现四、Ctrl-Adapter的意义与未来展望 随着人工智能技术的飞速发展,图像与视频生成领域正经历着前…

【电源专题】拿人体的循环系统与板级电源做个比较

一般人可能会觉得电源大概是电子设备里面比较容易搞定的门类。因为,只要线路没有接错,指示灯(如果有)能亮,电源都能工作。从这个方面说,好像是很容易。但是通过多年的经验和经历的坑,发现电源其实是一个很麻烦的东西,稍微有一点不完美就会有大问题出现。 如果将人体也当…

基于Springboot的水产养殖系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的水产养殖系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

ue引擎游戏开发笔记(30)——对角色移动进行优化:实现人物转向

1.需求分析: 当前我们只实现了通过控制器可使角色进行前后左右的移动,但角色移动时与动画不匹配,并不会进行转向,实现角色随移动转向。 2.操作实现: 1思路:利用反转换函数inverse transform direction获取…

GitHub Desktop安装与使用教程

GitHub Desktop 是GitHub公司推出的一款桌面应用程序,旨在帮助开发人员更轻松使用GitHub。它提供了一个直观的用户界面,允许用户通过图形化界面来执行常见的 Git 操作,如克隆仓库、创建分支、提交更改、合并代码等。 GitHub Desktop 的设计使…

mac自定义快捷键打开系统应用

最终效果是达成altg直接打开浏览器,解放双手、再也不需要移动鼠标双击打开应用啦!!!~ 1.commandspace输入自动操作 2.选择快速操作 3.选择使用工具、运行appleScrpit 4.输入打开浏览器代码 tell application "G…

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert:断言,一般用来比较是否相等,比如 Assert.assertEquals 在JUnit测试框架中,BeforeClass,Before,After和AfterClass是四个常用的注解,它们的作用如下: …

FFmpeg学习记录(四)——SDL音视频渲染实战

1.SDL使用的基本步骤 SDL Init/sDL _Quit()SDL_CreateWindow()/SDL_DestoryWindow()SDL CreateRender() SDL_Windows *windows NULL;SDL_Init(SDL_INIT_VIDEO);window SDL_CreateWindow("SDL2 Windows",200,200, 640,480,SDL_WINDOW_SHOWN);if(!window) {printf(&…
最新文章