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

文章目录


一、透视结构恢复问题

1.1 概述

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

2. 问题:已知 n n n 个三维点 X j X_j Xj 在 m m m 张图像中的对应点的像素坐标为 x i j x_{ij} xij,且 x i j = M i X j x_{ij}=M_iX_j xij=MiXj,其中 M i M_i Mi 为第 i i i 张图片对应的摄像机投影矩阵,求解 n n n 个三维点 X j X_j Xj 的坐标以及 m m m 个摄像机投影矩阵 M i M_i Mi。

1.2 透视结构恢复歧义

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

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

1.3 代数方法

1. 求解步骤:(1) 求解基础矩阵 F F F (归一化八点法)。 (2) 基于 F F F 估计摄像机矩阵 F → M 1 , M 2 F \rightarrow M_1,M_2 F→M1,M2。 (3) 三角化。

关键是第二步的求解。

2. (1)令 M 1 ∗ = [ I ∣ 0 ] M_1^*=[I|0] M1∗=[I∣0], M 2 ∗ = [ A ∣ b ] M_2^*=[A|b] M2∗=[A∣b]。推导出基础矩阵 F F F 与 A A A 和 b b b 的关系: F = [ b x ] A F=[b_x]A F=[bx]A。注:同方向的向量叉乘为 0 0 0。

(2)如何计算 A A A 和 b b b:

1.4 捆绑调整

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

2. 代数法与分解法的局限性:(1) 因式分解法:假定所有点都是可见的,所以对于存在遮挡,建立对应点关系失败的情况将不得不删除该对应点关系。 (2) 代数法:应用于 2 2 2 视图重建,多视图容易出现误差累积。

3. 最小化重投影误差: m i n ( E ( M , X ) ) = ∑ i = 1 m ∑ j = 1 n D ( x i j , M i X j ) 2 min(E(M,X))=\sum_{i=1}^m \sum_{j=1}^nD(x_{ij},M_iX_j)^2 min(E(M,X))=∑i=1m∑j=1nD(xij,MiXj)2

4. 捆绑调整的优势:同时处理大量视图,处理丢失的数据。局限性:大量参数的最小化问题,需要良好的初始条件(即初始 M i M_i Mi)。一般来说,捆绑调整作为运动恢复问题的最后一步,首先通过分解或代数方法先求出优化问题的初始 M i M_i Mi。

二、P3P问题

1. (1) PnP 问题:指通过世界中 N N N 个三维点坐标及其在图像中 N N N 个像点坐标,计算出相机或物体位姿的问题。 (2) P3P 问题:我们只讨论世界中 3 3 3 个三维点和图像中 3 3 3 个像点的关系,计算欧式结构恢复相机位姿的问题,也就是计算出摄像机的外参数 R R R、 T T T。 (3) 相比于之前求 F F F 和三角化得到摄像机外参数的方法,该方法误差更小。

2. P3P 问题解法如下所示。其中步骤 1 1 1 的计算方法:由于 a = K [ I 0 ] P a a=K[I \hspace{0.2cm} 0]P_a a=K[I0]Pa,则 K − 1 a = [ I 0 ] P a K^{-1}a=[I \hspace{0.2cm} 0]P_a K−1a=[I0]Pa,所极点到像点 a a a 的方向向量为: o a → = K − 1 a ∣ ∣ K − 1 a ∣ ∣ \overrightarrow{oa}=\frac{K^{-1}a}{||K^{-1}a||} oa =∣∣K−1a∣∣K−1a,同理可以计算出 o b → \overrightarrow{ob} ob 和 o c → \overrightarrow{oc} oc 。

三、随机采样一致性

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

2. 算法流程:

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

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

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

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

相关推荐
小馒头学python4 分钟前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯14 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
正义的彬彬侠16 分钟前
《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
人工智能·决策树·机器学习·集成学习·boosting·xgboost
Debroon26 分钟前
RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法
人工智能
羊小猪~~33 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
AI小杨34 分钟前
【车道线检测】一、传统车道线检测:基于霍夫变换的车道线检测史诗级详细教程
人工智能·opencv·计算机视觉·霍夫变换·车道线检测
晨曦_子画38 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
道可云40 分钟前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
人工智能培训咨询叶梓1 小时前
探索开放资源上指令微调语言模型的现状
人工智能·语言模型·自然语言处理·性能优化·调优·大模型微调·指令微调
zzZ_CMing1 小时前
大语言模型训练的全过程:预训练、微调、RLHF
人工智能·自然语言处理·aigc