三维重建(6)--多视图几何

目录

一、运动恢复问题(SfM)

二、欧式结构恢复问题 

1、概述

2、算法流程

3、本质矩阵分解

4、欧式结构恢复歧义

三、仿射结构恢复问题

1、概述

2、因式分解法

3、仿射结构恢复歧义 

四、透视结构恢复问题 

1、概述

2、透视结构恢复歧义

3、代数方法

4、捆绑调整 

五、P3P问题

六、随机采样一致性(RANSAC)


一、运动恢复问题(SfM)

        运动恢复问题:通过三维场景的多张图像,恢复出该场景的三维结构信息以及每张图片对应的摄像机参数。

        运动恢复问题建模表述:已知n个世界坐标点在m张图像中的对应点的像素坐标x_{ij},计算出m个摄像机的投影矩阵M_i和n个三维点X_j的坐标。

        下图为求解SfM问题进行场景重构与计算摄像机位姿(投影矩阵得到的外参数) 

二、欧式结构恢复问题 

1、概述

        欧式结构恢复问题:摄像机内参数已知,外参数未知情况。

        对于欧式结构恢复问题,已知摄像机内参数,根据投影矩阵的计算公式可知,x_{ij}=M_iX_j=K_i[R_i \hspace{0.25cm} T_i]X_j,其中i表示图像个数,j表示世界坐标下3D点个数,那么求解投影矩阵M只需要求解外参数[R \hspace{0.25cm} T]

2、算法流程

        一般针对二视图问题的欧式结构重建问题,多视图即拆解为若干二视图问题。

        对于二视图问题,外参数未知即表示摄像机1的外参数为[I \hspace{0.25cm} 0],而摄像机2的外参数为[R \hspace{0.25cm} T],即摄像机2与摄像机1的R、T关系为[R \hspace{0.25cm} T]

(1)求解基础矩阵F(归一化八点法)

(2)求解本质矩阵 E=K_2^TFK_1

(3)分解本质矩阵 E \rightarrow R,T

(4)三角化(求解世界坐标系下的3D坐标)

3、本质矩阵分解

        算法流程中的第1,2,4步均已经提到过,所以此处不在介绍,详细过程请参见本专栏其他文章。

        由于本质矩阵表达式为E=T \times R=[T_x]R,这种叉乘关系一般都是通过奇异值分解的方式。另外,由于八点法求解的F的符号和尺度无法确定(本质上是x_2^TFx_1=0计算尺度的问题),所以E的符号和尺度也无法确定。

        首先定义两个矩阵:W=\begin{bmatrix} 0 &-1 &0 \\ 1 &0 &0 \\ 0& 0 &1 \end{bmatrix} \quad Z=\begin{bmatrix} 0 &1 &0 \\ -1 &0 &0 \\ 0& 0 &0 \end{bmatrix}

        有性质成立:在相差一个正负号的情况下,

                                ​​​​​​​        Z=diag(1,1,0)W=diag(1,1,0)W^T 

        此时有[T_x]=kUZU^T成立,其中U是单位正交矩阵,这种结构可以用于后续的奇异值分解。

        将W替换Z,且不考虑符号和尺度变化则:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        [T_x]=UZU^T \\ =Udiag(1,1,0)WU^T \\ =Udiag(1,1,0)W^TU^T

        利用奇异值分解,由于本质矩阵E的秩为2,所以对角矩阵为diag(1,1,0),则可分解为E=Udiag(1,1,0)V^T,通过与上面的式子代换可得V^T=WU^TR,那么旋转矩阵R为下面表达式,两个解是由于不考虑尺度和符号的情况下。

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​ R=UW^TV^T \quad or \quad R=UWV^T

        通过奇异值分解,我们可以得到U,V^T是一个正交矩阵,从前面定义可以知道W是一个正交矩阵,则R为一个正交矩阵,满足旋转矩阵定义,另外需要保证行列式值为正,所以进一步完善R:

                      R=(detUWV^T)UWV^T \quad or \quad R=(detUW^TV^T)UW^TV^T

        由于T \times T=[T_x]T=UZU^TT=0 (叉乘为0),根据奇异值分解,T=\pm u_3(U的第三列)。

        这样本质矩阵分解的四个解就得到了,如何选择正确的那个解呢?只需要对多个点进行三角化,选择两个摄像机z坐标均为正最多的那组R、T,就是正确的解。

4、欧式结构恢复歧义

        由于恢复的结构与真实场景之间相差一个相似变换(旋转、平移、缩放)。

三、仿射结构恢复问题

1、概述

        仿射结构恢复问题:摄像机为仿射相机,内外参数均未知。

        一般来说仿射相机代表为弱透视投影摄像机。

弱透视投影摄像机参见:三维重建(1)--摄像机几何-CSDN博客

         下面图中所有坐标使用欧式坐标,对于仿射变换而言z轴的m_3X=1,所以经过等式变换世界坐标的欧式坐标与像平面欧式坐标关系为x^E=AX^E+b,其中A_{2*3},b_{2*1}

        仿射结构恢复问题可以建模为:已知n个三维点X_j在m张图像中的对应点的像素坐标为x_{ij},且x_{ij}=A_iX_j+b_i,其中第i张图片对应的仿射相机的投影矩阵M_i=\begin{bmatrix} A_i &b_i \\ 0 &1 \end{bmatrix},求解n个三维点X_j的坐标以及m个仿射相机的投影矩阵中的A_i,b_i(i=1,2,...,m)

2、因式分解法

(1) 数据中心化

        对于所有像平面点,和世界坐标的三维点分别减去像平面点和三维点的质心,建立新的关系,可知\widehat{x}_{ij}=A_i\widehat{X}_j,其中\widehat{x}_{ij}=x_{ij}-\bar{x}_{ij}\widehat{X}_j=X_j-\bar{X}_j。通过数据中心化消掉了b的影响。

        通过上面的公式 \widehat{x}_{ij}=A_i\widehat{X}_j,我们可以将数据中心化矩阵形式写出,此时我们只需要解出下面M矩阵的值,所以也就是将D_{2m*n}分解为M_{2m*3}S_{3*n}并得到M矩阵的值。

        由于M和S的秩为3,所以D的秩为3,我们对D_{2m*n}矩阵进行奇异值分解,可以得到D_{2m*n}=U_{2m*3} \times W_{3*3} \times V_{3*n},所以我们会得到新的2m*3的矩阵M^*,该矩阵与真实的参数A所构成的矩阵M之间差一个3*3的可逆矩阵H,这就是仿射结构的歧义。

3、仿射结构恢复歧义 

        仿射结构恢复歧义:投影矩阵存在一个可逆3*3矩阵的变换,也就是差了一个仿射变换的矩阵系数。

        对于歧义我们需要引入其他约束来解决歧义。

        另外对于给定m个相机,n个3维点情况下,我们将有2mn个等式,8m+3n-8个未知量。

四、透视结构恢复问题 

1、概述

        透视结构恢复问题:摄像机为透视相机,内外参数均未知。

        问题建模:已知n个三维点X_j在m张图像中的对应点的像素坐标为x_{ij},且x_{ij}=M_iX_j,其中M_i为第i张图片对应的摄像机投影矩阵,求解n个三维点X_j的坐标以及m个摄像机投影矩阵M_i

2、透视结构恢复歧义

        透视结构与仿射结构的区别在于,透视结构计算得到的投影矩阵M_i,与真实投影矩阵差一个4*4的可逆矩阵H,也就是差了一个透视变换关系。

        对于给定m个相机,n个三维点,我们将有2mn个等式,11m+3n-15个未知量。 

3、代数方法

        下面的代数法基于二视图情况。多视图透视结构一般采用增量法。

算法流程:

(1)求解基础矩阵F(归一化八点法)

(2)基于F估计摄像机矩阵 F \hspace{0.10cm} \rightarrow \hspace{0.1cm}M_1,M_2

(3)三角化

对于第二步的解释:

        对于透视结构的二视图问题,可以推导出基础矩阵F与A和b的关系:F=[b_x]A

        如何计算A和b: 

4、捆绑调整 

        捆绑调整(Bundle Adjustment,BA),捆绑调整使用最小化重投影误差,可以进行多次迭代,使重构点足够拟合真实值,可以应用于欧式结构、仿射结构和透视结构多种情况,是一个恢复结构和运动的非线性方法。

         代数法与分解法的局限性:

(1)因式分解法:假定所有点都是可见的,所以对于存在遮挡,建立对应点关系失败的情况将不得不删除该对应点关系。

(2)代数法:应用于2视图重建,容易出现误差累积。

        最小化重投影误差:min(E(M,X))=\sum_{i=1}^m \sum_{j=1}^nD(x_{ij},M_iX_j)^2

        利用最小化重投影误差,来计算投影矩阵M_i,对于非线性最小化问题,可采用牛顿法和L-M法。 

        捆绑调整的优势:同时处理大量视图,处理丢失的数据

        局限性:大量参数的最小化问题,需要良好的初始条件(即初始M_i) 

        一般来说,捆绑调整作为SfM的最后一步,首先通过分解或代数方法先求出优化问题的初始M_i

五、P3P问题

        PnP问题:指通过世界中N个三维点坐标及其在图像中N个像点坐标,计算出相机或物体位姿的问题。

        P3P问题:对于PnP问题,我们只讨论世界中3个三维点和图像中3个像点的关系,计算欧式结构恢复相机位姿的问题,也就是计算出摄像机的外参数R、T。

        相比于之前求F+三角化得到摄像机外参数的方法,该方法误差更小。

        步骤1的计算方法:由于a=K[I \hspace{0.2cm} 0]P_a,则K^{-1}a=[I \hspace{0.2cm} 0]P_a,所极点到像点a的方向向量为:\overrightarrow{oa}=\frac{K^{-1}a}{||K^{-1}a||},同理可以计算出\overrightarrow{ob},\overrightarrow{oc}

        P3P问题解法: 

六、随机采样一致性(RANSAC)

         随机采样(Random sample consensus,RANSAC):一种适用于数据受到异常值污染的模型拟合方法,通过选择随机均匀采样一定的点,估计模型参数,并输出模型分数最高的模型。

        算法流程:

(1)随机均匀采样获取模型求解所需的最小子集

(2)适用该子集估计模型参数

(3)计算剩余样本与当前模型的一致性,统计满足当前模型的内点(在正确拟合模型上的点为内点,负样本点为外点)个数,作为当前模型分数

(4)按照设定次数重复(1)-(3)步,最终输出分数最高的模型

Reference:https://www.bilibili.com/video/BV1aU4y1T74j/?spm_id_from=333.999.0.0&vd_source=2152dec20715e478285cc87cc31201ed 

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

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

相关文章

【数据结构与算法】之字符串系列-20240125

字符串系列 一、520. 检测大写字母二、面试题 01.01. 判定字符是否唯一三、面试题 01.02. 判定是否互为字符重排四、面试题 01.03. URL化五、面试题 01.04. 回文排列六、面试题 01.09. 字符串轮转 一、520. 检测大写字母 简单 我们定义,在以下情况时,单…

分布式应用程序设计项目管理

1. 项目的定义 项目是一种特定的、新颖的行动,目的是以有条不紊、逐步的方式构建一个尚未存在确切对应物的未来现实。它是对精心制定的需求的回应,旨在满足业主的需要。项目包括一个可能是物理或智力的目标,并且需要使用给定的资源来执行一系…

【SD】sadtalk

下载地址: 123:https://www.123pan.com/s/VzULVv-0OXX.html 提取码:3KhD 百度: https://pan.baidu.com/share/init?surlRB9oTmlbIV0pg1Th-Tdd4Q 提取码: uk87 效果不是很好,适合小图片。推荐:heygen 参考设置&…

H12-821_111

111.如图所示,R2传递10.0.1.0/24的路由给R3时,该路由的Next_Hop地址是以下哪一个? A.10.0.23.3 B.10.0.23.2 C.10.0.12.1 D.10.0.12.2 答案:C 注释: 这道题想给大家强调的是R1发送路由给R2时,下一跳地址是…

redis整合

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 1、Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可以…

C#从网址上读取json数据

需求:从客户给的网址中读取json格式的数据。 找了好多资料,都不太好使,看到了一篇很有帮助的文章。以下大部分内容和这篇找到的文章近似。太不容易了,同时也感谢这篇文章的作者心所欲。 https://www.cnblogs.com/zoujinhua/p/10…

先进车辆驾驶舱系统的强大网络安全协议

近年来,车辆驾驶舱系统发展迅速,融入了导航、娱乐和车辆性能监控系统等先进技术。随着驾驶舱变得更加互联和依赖软件,它们也变得更容易受到网络安全威胁。实施强大的网络安全协议对于保护驾驶员和乘客以及保持车辆运行的完整性至关重要。 本…

springboot124中药实验管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的中药实验管理系统设计与实现 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章…

书生·浦语大模型--第五节课笔记作业--LMDeploy 大模型量化部署实践

文章目录 大模型部署背景LMDeploy简介动手实践创建环境服务部署在线转换离线转换TurboMind推理API服务Gradio 作为前端 Demo演示TurboMind 服务作为后端TurboMind 推理作为后端 作业 大模型部署背景 部署:将训练好的模型在特定软硬件环境中启动的过程 挑战&#x…

某马头条——day10

热文章数据查询 分布式任务调度xxl-job 概述 环境搭建 docker化部署 docker run -p 3306:3306 --name mysql57 \ -v /opt/mysql/conf:/etc/mysql \ -v /opt/mysql/logs:/var/log/mysql \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot\ -d mysql:5.7 dock…

255:vue+openlayers 加载tomtom地图(多种形式)

第255个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…

docker 安装python3.8环境镜像并导入局域网

一、安装docker yum -y install docker docker version #显示 Docker 版本信息 可以看到已经下载下来了 拉取镜像python3镜像 二、安装docker 中python3环境 运行本地镜像,并进入镜像环境 docker run -itd python-38 /bin/bash docker run -itd pyth…

MySQL(基础篇)——SQL

一.SQL分类 二.DDL(数据定义语言) 1.DDL——数据库操作 ① 查询 查询所有数据库 SHOW DATABASES 查询当前所处数据库 SELECT DATABASE() ② 创建 CREATE DATABASE [IF NOT EXISTS] 数据库名(通常以db结尾) [DEFAULT CHARSET 字符集] [COLLATE 排序规则] ③ …

免费的 UI 设计资源网站 Top 8

今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站,尤其是一些材料站。它们是免费下载的,材料的风格目前很流行,适合不同的项目。非常适合平面设计WEB/UI设计师收藏,接下…

HTTP协议简介

什么是HTTP 超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议常…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量,使用工具时,发现有些代码无法统计。 原因时UTF-8中有某些特殊字符,工具不能识别。 但是,如果把代码转换为SJIS格式,就能正常统计了。 因此&…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展,新能源充电桩作为电动汽车的重要基础设施,其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数,如温度、湿度等,为管理人员提供及时、准确的数据,以便做出相应的调…

云手机与实体手机的对比

在数字化时代,云手机作为一种虚拟手机在云端服务器上运行,与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别,以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量,占据一定…

[极客大挑战 2019]LoveSQL1

万能密码测试,发现注入点 注意这里#要使用url编码才能正常注入 测试列数,得三列 查看table,一个是geekuser另一个是l0ve1ysq1 查看column,有id,username,password,全部打印出来,…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷(原因,如何解决) 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 (原因,如何解决) 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…
最新文章