计算机视觉之三维重建(4)---三维重建基础与极几何

文章目录

  • 一、三维重建基础
    • 1.1 问题引入
    • 1.2 线性解法
    • 1.3 非线性解法
    • 1.4 多视图几何的关键问题
  • 二、极几何与基础矩阵
    • 2.1 极几何
    • 2.2 极几何特例
    • 2.3 本质矩阵
    • 2.4 本质矩阵的性质
    • 2.5 基础矩阵
    • 2.6 基础矩阵的性质
  • 三、基础矩阵估计


一、三维重建基础

1.1 问题引入

 1. 从单张图像恢复场景几何比较困难。比如下面这张图,图片上人和塔几乎高度相同,但是我们不知道人和塔离摄像机的距离,无法还原真实场景。

在这里插入图片描述

 2. 要解决上面这个问题,我们必须有 “双眼系统” 才能解决。因为两条射线可以确定交点。但由于噪声的存在,两条直线通常不相交。我们应该如何通过两个摄像机像平面的点 p p p p ′ p' p 以及两个摄像机内参数 K K K K ′ K' K、三角化的矩阵 R R R T T T,来计算世界坐标系下的 P P P 点的坐标呢?
 有线性解法和非线性解法两种。

在这里插入图片描述

1.2 线性解法

 通过摄像机模型关系我们可以得到关于 p p p p ′ p' p 的式子,如下图左半部分所示。 那么我们可以根据这两个式子,对于同一个点以及两个像平面点之间的对应关系,写出四个齐次方程,但是未知数只有三个,所以是一个超定齐次线性方程组,可以用齐次方程的最小二乘解来进行计算。

在这里插入图片描述

1.3 非线性解法

 非线性解法对于下图来说,由于存在噪声,对于 P P P 点在两个平面的投影 M P MP MP M ′ P ∗ M'P^* MP 与真实的像平面 p p p p ′ p' p 存在一定的误差,所以寻找 m i n [ d ( p , M P ) + d ( p ′ , M ′ P ) ] min[d(p,MP)+d(p',M'P)] min[d(p,MP)+d(p,MP)]的值,仍然是一个齐次非线性方程组的问题,所以用牛顿法和 L − M L-M LM 方法来求解。

在这里插入图片描述

1.4 多视图几何的关键问题

 1. 摄影机几何:从一张或多张图像中求解摄像机的内外参数。

 2. 场景几何:通过二至多幅图片寻找3D场景坐标。

 3. 对应关系:已知一个图像的 p p p 点,如何在另一个图像上找到 p ′ p' p 点。

二、极几何与基础矩阵

2.1 极几何

 1. 极几何:描述同一场景或者物体的两个视点图像间的几何关系。极几何主要解决的就是多视图几何的第三个问题: p p p p ′ p' p 的对应关系。

 2. 对于下图,两个平面就是指两个视点图像,也就是两个摄像机的像平面。 p p p p ′ p' p 是两个像素点。
 (1) 极平面:过点 P P P O 1 O_1 O1 O 2 O_2 O2 的平面,也就是 P P P p p p p ′ p' p 所组成的平面,这两个平面相似。
 (2) 基线: O 1 O_1 O1 O 2 O_2 O2 的连线。
 (3) 极线:极平面与成像平面的交线,即 p e pe pe p ′ e ′ p'e' pe 直线。
 (4) 极点:基线与成像平面的交点,即下图的 e e e e ′ e' e

 3. 性质:
 (1) 极平面相交于基线,应该是基线在极平面上。
 (2) 极线相交于极点。
 (3) 对于不同的世界坐标点 P P P 和点 Q Q Q,在两个像平面的极点 e e e e ′ e' e 不变。
 (4) p p p 的对应点在另一个相机的极线 l ′ l' l 上。(对应点指的是两个相机之间的三角化 R R R T T T 对应关系)
 (5) p ′ p' p 的对应点在另一个相机的极线 l l l 上。

在这里插入图片描述

2.2 极几何特例

 1. 平行视图:平行视图是指两个摄像机之间三角化没有旋转关系,只有 u u u 轴的横向平移关系,基线平行于图像平面,两个极点位于无穷远处,极线平行于图像坐标的 u u u 轴。

在这里插入图片描述

 2. 前向平移:前向平移建立在两个摄像机具有两个方向的平移关系,但仍然保持极点位置相同,注意不是说同一个物体在同一个位置上。

在这里插入图片描述

 通过极几何的约束,可以将搜索范围缩小到对应的极线上,而并没有做到对应点,所以存在一个方向上的误差问题。

在这里插入图片描述

2.3 本质矩阵

 1. 本质矩阵:对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述。
:这里强调规范化摄像机。规范化摄像机有如下性质。

在这里插入图片描述

 2. 规范化作用:我们假设有两个像平面 I I I I ′ I' I O 1 O_1 O1 O 2 O_2 O2 分别为像平面的原点,图像 I I I 上点 p p p 的像素坐标为 ( u , v ) (u,v) (u,v),图像 I ′ I' I 上点 p ′ p' p 的像素坐标为 ( u ′ , v ′ ) (u',v') (u,v)。此时对于世界坐标系的欧式坐标和两个图像点上的齐次坐标必然一致。

在这里插入图片描述

 3. 本质矩阵的关系表达式: E = T × R E=T×R E=T×R,其中摄像机 1 1 1 经过平移 T T T 变换,旋转 R R R 变换得到摄像机 2 2 2。对于世界坐标的点 P P P 投影到摄影机 1 1 1 的像平面 p p p 点,投影到摄像机 2 2 2 的像平面 p ′ p' p 点有下面关系成立: p ′ T [ T × R ] p = 0 p'^T[T×R]p=0 pT[T×R]p=0,即 p ′ T E p = 0 {p'}^TEp=0 pTEp=0,如何证明?
 我们知道任意一个 I I I 上的点 p p p 经过 R R R T T T 变换得到 I ′ I' I 上的点 p ′ p' p,由于旋转矩阵 R R R 是一个正交矩阵,其转置等于其逆,有 R T R = I R^TR=I RTR=I,所以可以推出 p ′ p' p O 1 O_1 O1 上的坐标。
 过程: p ′ = R p + T p'=Rp+T p=Rp+T,所以 p = R T p ′ − R T T p=R^Tp'-R^TT p=RTpRTT
p p p p ′ p' p 都是规范化摄像机坐标系下的像素坐标。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4 本质矩阵的性质

 1. p p p 对应的极线是 l ′ l' l,对应关系 l ′ = E p l'=Ep l=Ep

 2. p ′ p' p 对应的极线是 l l l,对应关系 l = E T p ′ l=E^Tp' l=ETp

 3. E e = 0 Ee=0 Ee=0 e ′ T E = 0 e'^TE=0 eTE=0

 4. E E E 是奇异的, r a n k rank rank 2 2 2

 5. E E E 5 5 5 个自由度 (三个平移三个旋转,由于行列式为 0 0 0,去掉一个自由度)。

在这里插入图片描述

2.5 基础矩阵

 基础矩阵:对一般的透视摄像机拍摄的两个视点的图像间的极几何关系进行代数描述。

在这里插入图片描述

在这里插入图片描述

2.6 基础矩阵的性质

 1. 基本上性质与本质矩阵相似,只不过由于多了两个参数 K K K K ′ K' K 所以为 7 7 7 个自由度。

在这里插入图片描述

 2. 基础矩阵作用:基础矩阵中包含了摄像机内参数信息,所以给了基础矩阵,我们无需知道两个摄像机的内外参数就可以建立相同场景在不同视图的对应关系。

三、基础矩阵估计

 1. 首先由于 p ′ T F p = 0 {p'}^TFp=0 pTFp=0 我们可以转化成 W F ′ = 0 WF'=0 WF=0 的齐次形式,此时我们定义新的列向量参数为 F ′ F' F,由于参数列向量 F ′ F' F 一共有 8 8 8 个有效值,所以我们只需要找 8 8 8 组点就可以解这个齐次线性方程组。解齐次线性方程组,仍然可以用齐次线性方程组的最小二乘解,通过找大于 8 8 8 个点,通过求解一个 S V D SVD SVD 问题即可。

在这里插入图片描述

在这里插入图片描述

 2. 但此时有一个问题:当前的 F ′ F' F 与基础矩阵 F F F 并不一致,这一方面可以通过reshape来修改,但由于多组点不一定均为正确点以及噪声点的出现,可能导致 F ′ F' F 矩阵的秩为 3 3 3,而一般基础矩阵 F F F 的秩为 2 2 2,所以我们要进行秩 2 2 2 校正。

在这里插入图片描述

在这里插入图片描述

 3. 由于计算八点法求齐次线性方程组的最小二乘解过程中,参数之间数值差异过大,导致精度较低,误差较大,所以对八个点进行归一化处理。
 对每幅图像施加变换 T T T(平移与缩放),让其满足原点为图像上八个点的重心,各个点到坐标原点的均方根距离均为根号2。所以主要是计算两台摄像机的两幅图像中的 T T T T ′ T' T

在这里插入图片描述

 4. 归一化八点法过程如下所示:

在这里插入图片描述

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

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

相关文章

[TS面试]keyof和typeof关键字作用?

keyof和typeof关键字作用? keyof 索引类型查询操作符, 获取索引类型属性名, 构成联合类型 typeof 获取一个变量或者对象的类型 let str:string ‘hello’ // typeof str >:string keyof typeof 获取 联合类型的key enum A{A, B, C }type unionType keyof typeof A; /…

【嵌入式——C语言】VScode编写C程序、交叉编译

【嵌入式——C语言】VScode编写C程序、交叉编译 第一步第二步第三步第四步第五步第六步第七步第八步 第一步 下载Visual Studio Code下载地址 然后直接安装就可以了。 第二步 前提是你的电脑上安装了WSL。。。 打开vscode的扩展,输入WSL进行安装 安装完之后在窗…

【SAP2000】在框架结构中应用分布式面板荷载Applying Distributed Panel Loads to Frame Structures

在框架结构中应用分布式面板荷载 Applying Distributed Panel Loads to Frame Structures 使用"Uniform to Frame"选项,可以简单地将荷载用于更多样化的情况。 With the “Uniform to Frame” option, loads can be easily used for a greater diversity of situat…

机器人寻路算法双向A*(Bidirectional A*)算法的实现C++、Python、Matlab语言

机器人寻路算法双向A*(Bidirectional A*)算法的实现C、Python、Matlab语言 最近好久没更新,在搞华为的软件挑战赛(软挑),好卷只能说。去年还能混进32强,今年就比较迷糊了,这东西对我…

【安全用电管理系统的应用如何保证用电安全】Acrel-6000安科瑞智慧安全用电解决方案

政策背景 国家部委 ※2017年5月3日国务院安委会召开电气火灾综合治理工作视频会议,决定在全国范围内组织开展为期3年的电气火灾综合治理工作。 公安部领导 ※公安部副部长李伟强调:向科技要战斗力,加快推进“智慧消防”建设不断提升火灾防控…

夜莺浏览日志、filebeat采集日志(四)

文章目录 一、elasticsearch二、filebeat三、日志分析 一、elasticsearch docker启动 docker run -d -p 9200:9200 -p 9300:9300 --restartalways -e ES_JAVA_OPTS"-Xms512m -Xmx512m" \ -e discovery.typesingle-node -e xpack.security.enabledtrue -e ELASTIC_P…

01 | 深入理解 Swoole 的底层加载原理

首发原文链接:深入理解 Swoole 的底层加载原理 PHP 扩展加载 我们从 php-src/sapi/cli/php_cli.c:1159 文件的入口函数 int main(int argc, char *argv[]) 开始分析。 大家可以先看下面这张图,描述了整个关键函数的加载、调用流程。从模块的初始化&…

C++初学者:像C#一样优雅写程序

C语言的强大,在于自由自在,你可以随便怎么写程序,不讲格式,可以很整齐,也可以鬼画符,只要能运行就可以了,程序员可以自由发挥。 如图: 国际C语言大赛中的代码 图2 C的语言更强大&…

Django auth模块

【一】命令行创建用户 【1】语法 python manage.py createsuper【2】示例 用户名 默认是是电脑名称 邮箱 可以填也可以不填 密码 terminal中:输入密码不显示出来manage.py中:明文输入输入密码太简单会提示 Username (leave blank to use administra…

【爬虫基础】第6讲 opener的使用

在爬虫中,opener是一个用来发送HTTP请求的对象。它可以用来模拟浏览器发送请求,包括设置请求头、处理Cookie等操作。使用opener可以实现一些高级功能,如模拟登录、处理验证码等。 方法1: from urllib.request import Request,bu…

自动驾驶传感器:惯性导航IMU原理

自动驾驶传感器:惯性导航IMU原理 附赠自动驾驶学习资料和量产经验:链接 组合导航里包含了GNSS卫星导航模块与IMU惯性导航模块,前一篇文章写了GNSS模块,本章写IMU惯导,也是本系列最后一篇文章。 1. 惯性测量单元&…

python学习13:python中的字符串格式化

python中的字符串格式化另外一种方式 我们前面是使用的%d,%f,%s占位符来实现字符串的格式化的;这次我们通过f"{}"来快速实现格式化,代码示例如下: