计算机视觉之三维重建(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.mzph.cn/news/773279.shtml

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

相关文章

ROS机器人入门第四课:话题通信

文章目录 ROS机器人入门第四课:话题通信一、话题通信概述(一)概念(二)作用 二、话题通信基本操作需求:分析:流程:(一)发布方解释一些关键的ROS函数和概念: (二&#xff0…

久菜盒子|医学大数据|R|常用安装包及介绍

复习下: library(tibble) library(readxl) library(survival) library(survminer) library(rms) library(forestplot) library(magrittr) library(corrplot) library(car) require(stringdist) library(timeROC) library(tidyverse) library(dplyr) library(tidyr)…

RESTful API 名词解释:查询参数、请求体参数、响应参数、内容类型(Content-Type)、表单

查询参数 RESTful API 设计中的查询参数 在 RESTful API 设计中,查询参数是什么意思? 在RESTful API设计中,查询参数是指当客户端发起GET请求以获取资源时附加在URL末尾的一部分,用来进一步筛选或定制返回资源的内容。查询参数通…

QT+Opencv+yolov5实现监测

功能说明:使用QTOpencvyolov5实现监测 仓库链接:https://gitee.com/wangyoujie11/qt_yolov5.git git本仓库到本地 一、环境配置 1.opencv配置 将OpenCV-MinGW-Build-OpenCV-4.5.2-x64文件夹放在自己的一个目录下,如我的路径: …

Android密钥库(AndroidKeyStore)使用

一、KeyStore描述 在 Android 开发中,KeyStore 是一个用于存储密钥和证书的安全容器。它提供了一种安全的方式来存储敏感信息,如密钥对、数字证书等,以防止它们被未授权的应用或攻击者访问。 KeyStore 通常用于加密数据、数字签名、TLS/SSL…

Spark SQL— Catalyst 优化器

Spark SQL— Catalyst 优化器 1. 目的 本文的目标是描述Spark SQL 优化框架以及它如何允许开发人员用很少的代码行表达复杂的查询转换。我们还将描述Spark SQL如何通过大幅提高其查询优化能力来提高查询的执行时间。在本教程中,我们还将介绍什么是优化、为什么使用…

蓝桥杯练习系统(算法训练)ALGO-967 共线

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给定2维平面上n个整点的坐标,一条直线最多能过几个点? 输入格式 第一行一个整数n表示点的个数   …

【Django】枚举类型数据

模型 在模型里主要增加两项内容: 枚举表字段增加choices class Snort(CoreModel):PAGE_TYPE_CHOICES [(1, 失陷主机检测), # 1是保存到数据库里的数据,失陷主机检测是显示在前端的(2, 远程漏洞攻击检测),(3, 可疑流量行为),(4, WEB检测),]page_type…

STM32 使用gcc编译介绍

文章目录 前言1. keil5下的默认编译工具链用的是哪个2. Arm编译工具链和GCC编译工具链有什么区别吗?3. Gcc交叉编译工具链的命名规范4. 怎么下载gcc-arm编译工具链参考资料 前言 我们在STM32上进行开发时,一般都是基于Keil5进行编译下载,Kei…

React中的受控组件与非受控组件

受控组件与非受控组件 受控组件 组件(input, select)的状态与state的值绑定&#xff0c;组件的状态全程响应外部数据 class TestComponent extends React.Component {constructor (props) {super(props);this.state { username: lindaidai };}render () {return <input …

区块链安全之DDoS防护的重要性及其实施策略

随着区块链技术的不断发展和广泛应用&#xff0c;其安全问题也日益凸显。其中&#xff0c;分布式拒绝服务(DDoS)攻击是对区块链网络稳定性和效率构成潜在威胁的重要因素之一。本文旨在深入探讨区块链为何需要采取DDoS高防措施&#xff0c;并提出相应的防护策略。 一、区块链面…

博客系统——3、数据库表设计 - 博客标签表

任务描述 本关任务&#xff1a;在博客数据库中建立博客标签表。 相关知识 多对多关系的建立 每一个博客都可以设置很多个标签&#xff0c;比如一篇讲JavaWeb知识的博客&#xff0c;就可能会涉及到多个标签如&#xff1a;前端、后端、Java、SpringMVC等标签&#xff0c;而一…

碳课堂|什么是碳资产?企业如何进行碳资产管理?

碳资产是绿色资产的重要类别&#xff0c;在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下&#xff0c;碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产&#xff1f; 碳资产是以碳减排为基础的资产&#xff0c;是企业为了积极应对气候变化&…

Kubernetes示例yaml:1. service-deployment.yaml

service-deployment.yaml 示例 apiVersion: apps/v1 kind: Deployment metadata:name: example-plusnamespace: aaaalabels:app: example-prdapp_unit: AAAA-EXAMPLE spec:replicas: 2selector:matchLabels:app: example-prdtemplate:metadata:labels:app: example-prdapp_uni…

js相关的dom方法

查找元素 //获取元素id为box的元素 document.getElementById(box) //获取元素类名为box的元素 document.getElementsByClassName(box) //获取标签名为div的元素 document.getElementsByTagName(div)改变元素 //设置id为box的元素内容 document.getElementById("box"…

常见位运算的总结

目录 一、基础位运算 二、给一个数n&#xff0c;确定它的二进制中的第x位是0还是1 三、将一个数n的二进制表示的第x位修改成1 四、将一个数n的二进制位表示的第x位修改成0 五、位图思想 六、提取一个数(n)二进制表示中最右侧的1(lowbit) 七、干掉一个数n的最右侧的1 八、…

1.5T数据惨遭Lockbit3.0窃取,亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件93起&#xff0c;近三周攻击数量呈现持平状态。 本周Lockbit3.0是影响最严重的勒索家族&#xff0c;Blacksuit和Ransomhub恶意家族紧随其后&#xff0c;从整体上看Lockbit3.0依旧是影响最严重的勒索家族&#xff0c;需要注意防范。 …

神经网络代码实现(用手写数字识别数据集实验)

目录 一、前言 二、神经网络架构 三、算法实现 1、导入包 2、实现类 3、训练函数 4、权重参数矩阵初始化 5、参数矩阵变换向量 6、向量变换权重参数矩阵 7、进行梯度下降 7.1、损失函数 7.1.1、前向传播 7.2、反向传播 8、预测函数 四、完整代码 五、手写数字识别 一、前言 …

LVS负载均衡(load balance)

一 LVS LVS&#xff1a;Linux Virtaul Server&#xff0c;该软件的功能是实现 LB&#xff08;load balance&#xff09; 二LVS 的三种工作模式 1.NAT 模式&#xff08;NAT&#xff09; LVS 服务器同时充当一台 NAT 网关&#xff0c;拥有公有 IP &#xff0c;同时负责将针对此…

数据结构——队列(C语言版)

前言&#xff1a; 在学习完数据结构顺序表和链表之后&#xff0c;其实我们就可以做很多事情了&#xff0c;后面的栈和队列&#xff0c;其实就是对前面的顺序表和链表的灵活运用&#xff0c;今天我们就来学习一下队列的原理和应用。 准备工作&#xff1a;本人习惯将文件放在test…