计算机视觉之三维重建(6)---多视图几何(上)

文章目录

  • 一、运动恢复结构问题(SfM)
  • 二、欧式结构恢复
    • 2.1 概述
    • 2.2 求解
    • 2.3 欧式结构恢复歧义
  • 三、仿射结构恢复
    • 3.1 概述
    • 3.2 因式分解法
    • 3.3 总结
    • 3.4 仿射结构恢复歧义


一、运动恢复结构问题(SfM)

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

在这里插入图片描述

 2. 运动恢复问题建模表述:已知 n n n 个世界坐标点在 m m m 张图像中的对应点的像素坐标 x i j x_{ij} xij,计算出 m m m 个摄像机的投影矩阵 M i M_i Mi n n n 个三维点 X j X_j Xj 的坐标。下图中 M = K [ R , T ] M=K[R,T] M=K[R,T]

在这里插入图片描述

二、欧式结构恢复

2.1 概述

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

 2. 对于欧式结构恢复问题,已知摄像机内参数,根据投影矩阵的计算公式可知 x i j = M i X j = K i [ R i , T i ] X j x_{ij}=M_iX_j=K_i[R_i,T_i]X_j xij=MiXj=Ki[Ri,Ti]Xj。那么求解投影矩阵 M M M 只需要求解外参数 [ R , T ] [R,T] [R,T]

在这里插入图片描述

2.2 求解

 1. 对于二视图的欧式结构恢复问题,如果把世界坐标系放在第一个坐标系下面,那摄像机 1 1 1 的外参数为 [ I , 0 ] [I,0] [I,0],而摄像机 2 2 2 的外参数 [ R , T ] [R,T] [R,T] 却是未知的。

在这里插入图片描述

 2. 求解步骤:
 (1)求解基础矩阵 F F F(归一化八点法)

 (2)求解本质矩阵 E = K 2 T F K 1 E=K_2^TFK_1 E=K2TFK1

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

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

在这里插入图片描述

 3. 上面步骤中除了分解本质矩阵 E E E 外,其他都在之前文章中提到过。分解本质矩阵 E E E 在编程下的代码不难,但是推导过程极其复杂,博主在这里就不叙述了。

import numpy as np  # 假设你已经有了一个本质矩阵E  
E = np.array([[...], [...], [...]])  # 用你的本质矩阵替换这里的占位符  # 对E进行奇异值分解  
U, S, Vt = np.linalg.svd(E)  # 根据SVD分解的结果恢复旋转矩阵R和平移向量t  
W = np.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]])  
R1 = U @ W @ Vt  
R2 = U @ W.T @ Vt  # 由于t的方向是不确定的,我们通常选择使t的最后一个分量为正的那个解  
t1 = U[:, 2]  
t2 = -U[:, 2]  # 选择合适的R和t组合  
if np.linalg.det(R1) * np.linalg.det(np.eye(3) - R1) < 0:  R, t = R2, t2  
else:  R, t = R1, t1  # 现在你有了旋转矩阵R和平移向量t  
print("Rotation matrix R:")  
print(R)  
print("Translation vector t:")  
print(t)

2.3 欧式结构恢复歧义

 1. 在没有先验信息的情况下,我们求解出来的解跟真实解是存在一个相似变换关系(旋转、平移、缩放)。

 2. 度量重构:恢复的场景与真实场景之间仅存在相似变换的重构。如果欧式结构恢复后能达到这种重构的话,那就可以说的上恢复效果是很不错了。

在这里插入图片描述

在这里插入图片描述

三、仿射结构恢复

3.1 概述

 1. 仿射结构恢复问题:摄像机为仿射相机,内外参数均未知。 一般来说仿射相机代表为弱透视投影摄像机。

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

在这里插入图片描述

 3. 仿射结构恢复问题可以建模为:已知 n n n 个三维点 X j X_j Xj m m m 张图像中的对应点的像素坐标为 x i j x_{ij} xij,且 x i j = A i X j + b i x_{ij}=A_iX_j+b_i xij=AiXj+bi,其中第 i i i 张图片对应的仿射相机的投影矩阵为 M i M_i Mi。求解 n n n 个三维点 X j X_j Xj 的坐标以及 m m m 个仿射相机的投影矩阵中的 A i A_i Ai b i b_i bi ( i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m)。

在这里插入图片描述

3.2 因式分解法

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

 2. 如果3D点的质心=世界坐标系的中心,那么减去的均值为 0 0 0,所以 x ^ i j = A i X j \widehat{x}_{ij}=A_i{X}_j x ij=AiXj

在这里插入图片描述

 3. 矩阵形式如下所示。接下来我们要将 D 2 m ∗ n D_{2m*n} D2mn 分解为 M 2 m ∗ 3 M_{2m*3} M2m3 S 3 ∗ n S_{3*n} S3n,即因式分解。

在这里插入图片描述

在这里插入图片描述

 4. 由于 M M M S S S 的秩为 3 3 3,所以 D D D 的秩为 3 3 3,我们对 D 2 m ∗ n D_{2m*n} D2mn 矩阵进行奇异值分解。可以得到 D 2 m ∗ n = U 2 m ∗ 3 × W 3 ∗ 3 × V 3 ∗ n D_{2m*n}=U_{2m*3} \times W_{3*3} \times V_{3*n} D2mn=U2m3×W33×V3n

在这里插入图片描述

在这里插入图片描述

3.3 总结

在这里插入图片描述

3.4 仿射结构恢复歧义

 1. 仿射结构恢复歧义:投影矩阵存在一个可逆 3 ∗ 3 3*3 33 矩阵的变换,也就是差了一个仿射变换的矩阵系数。对于歧义我们需要引入其他约束来解决歧义。

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

enqueue:oracle锁机制

实现锁的方式就是排队咯&#xff0c;那么排队就是有enqueue这么个结构来管理 管理锁的结构叫队列&#xff0c;即enqueue 所有和enqueue相关的函数都叫KSQ-- kernal service enqueue lock是从应用层面看到的锁&#xff0c;enqueue是oracle内部管理锁的一个结构。 可以用v$lock_…

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型&#xff0c;在人工智能领域&#xff0c;传感器采集外部数据&#xff0c;经过处理器对数 据运算和处理&#xff0c;从而实现相应的功能。比如自动驾驶技术中&#xff0c;超声波传感器应用广泛&#xff0c; 超声波是一种频率在 20khz 以上的声波&…

OpenHarmony实战:小型系统移植概述

驱动主要包含两部分&#xff0c;平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等&#xff1b;器件驱动则主要包含通常在SOC外的器件&#xff0c;如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序&#xff0c;HDF驱动框…

【WebKit架构讲解】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包&#xff0c;推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库&#xff0c;用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

解决el-table设置固定高度后,展示不同列时表格高度变小bug

解决el-table设置固定高度后&#xff0c;展示不同列时表格高度变小bug 1、需求分析2、解决方案 1、需求分析 在el-table使用过程中&#xff0c;选择多个参数展示更多列时会出现高度变小问题究其原因可知是el-table列动态发生变化后&#xff0c;el-table__body-wrapper的高度变…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写&#xff0c;由国家认证认可监督管理委员会批准设立并授权的国家认可机构&#xff0c;统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业&#xff0c;CNAS认可具有重要意义。它标志着一个软件测试公…

2024阿里云老用户服务器优惠价格99元和199元

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

基于Unet的BraTS 3d 脑肿瘤医学图像分割,从nii.gz文件中切分出2D图片数据

1、前言 3D图像分割一直是医疗领域的难题&#xff0c;在这方面nnunet已经成为了标杆&#xff0c;不过nnunet教程较少&#xff0c;本人之前跑了好久&#xff0c;一直目录报错、格式报错&#xff0c;反正哪里都是报错等等。并且&#xff0c;nnunet对于硬件的要求很高&#xff0c…

mac、windows 电脑安装使用多个版本的node

我们为啥要安装多个不同版本的node&#xff1f; 开发旧项目时&#xff0c;使用低版本Nodejs。开发新项目时&#xff0c;需使用高版本Node.js。可使用n同时安装多个版本Node.js&#xff0c;并切换到指定版本Node.js。 mac电脑安装 一、全局安装 npm install -g n 二、mac电脑…

Elasticsearch 压测实践总结

背景 搜索、ES运维场景离不开压力测试。 1.宿主机层面变更&#xff1a;参数调优 & 配置调整 & 硬件升级2.集群层面变更&#xff1a;参数调优3.索引层面变更&#xff1a;mapping调整 当然还有使用层面变更&#xff0c;使用API调优&#xff08;不属于该文章的讨论范围…

四川古力未来科技抖音小店:安全便捷,购物新体验

在数字化浪潮席卷全球的今天&#xff0c;电商平台的安全性与便捷性成为了消费者最为关心的问题。四川古力未来科技有限公司&#xff0c;凭借其强大的技术实力和深厚的行业经验&#xff0c;为广大消费者带来了一个安全可靠的购物新选择——古力未来科技抖音小店。 古力未来科技抖…

Twitter Api查询用户粉丝列表

如果大家为了获取实现方式代码的话可能要让大家失望了&#xff0c;这边文章主要是为了节省大家开发时间&#xff0c;少点坑。https://api.twitter.com/2/users/:id/followers &#xff0c;这个接口很熟悉吧&#xff0c;他是推特提供的获取用户关注者&#xff08;粉丝&#xff0…

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长&#xff0c;展览馆作为展示文化、艺术和科技成果的重要场所&#xff0c;其安全监控系统的智能化升级已成为当务之急。为此&#xff0c;旭帆科技&#xff08;TSINGSEE青犀&#xff09;基于视频智能分析技术推出了展览…

再拓信创生态圈|宁盾身份域管与深信服桌面云完成兼容互认证

近日&#xff0c;宁盾国产化身份域管&#xff08;即身份目录服务软件&#xff09;与深信服桌面云系统aDesk完成产品兼容性互认证。经过共同严格测试&#xff0c;宁盾国产化身份域管能够与深信服桌面云系统兼容对接运行&#xff0c;双方相互兼容&#xff0c;共同为企事业单位提供…

H5面临的网络安全威胁和防范措施

H5&#xff0c;是基于HTML5技术的网页文件。HTML&#xff0c;全称Hyper Text Markup Language&#xff0c;即超文本标记语言&#xff0c;由Web的发明者Tim Berners-Lee与同事Daniel W. Connolly共同创立。作为SGML的一种应用&#xff0c;HTML编写的超文本文档能够独立于各种操作…

tomcat-连接器架构设计

一、NioEndpoint组件 Tomcat的NioEndPoint组件实现了I/O多路复用模型&#xff0c;接下来我会介绍NioEndpoint的实现原理。 1.总体工作流程 我们知道&#xff0c;对于Java的多路复用器的使用&#xff0c;无非是两步&#xff1a; 1.创建一个Seletor&#xff0c;在它身上注册各…

Cloud flare反向代理流量实验

前言 本实验将会为大家解析cloud flare的反向解析代理服务如何搭建&#xff0c;works如何创建等等。本文中教学创建的实例已在文章编写结束后释放&#xff0c;该项技术不可用于违法用途&#xff01;违者自行承担后果&#xff01;&#xff01; 原理拓扑图 一、知识链条 1、Clou…

【深度学习|Pytorch】torchvision.datasets.ImageFolder详解

ImageFolder详解 1、数据准备2、ImageFolder类的定义transforms.ToTensor()解析 3、ImageFolder返回对象 1、数据准备 创建一个文件夹&#xff0c;比如叫dataset&#xff0c;将cat和dog文件夹都放在dataset文件夹路径下&#xff1a; 2、ImageFolder类的定义 class ImageFol…

目标跟踪——行人车辆数据集

一、重要性及意义 首先&#xff0c;目标跟踪对于个人和组织的目标实现至关重要。无论是个人职业发展、企业业务增长还是政府的社会发展&#xff0c;目标跟踪都能够帮助我们明确目标&#xff0c;并将其分解为可行的步骤和时间表。这有助于我们保持动力和专注&#xff0c;提高效…