《计算机视觉中的多视图几何》笔记(10)

news2025/2/25 21:28:54

10 3D Reconstruction of Cameras and Structure

本章主要描述了如何利用2张图片来恢复相机的参数以及物体在三维空间中的形状。

文章目录

  • 10 3D Reconstruction of Cameras and Structure
    • 10.1 Outline of reconstruction method
    • 10.2 Reconstruction ambiguity
    • 10.3 The projective reconstruction theorem
    • 10.4 Stratified reconstruction
    • 10.5 Direct reconstruction – using ground truth

本章其实要解决两个问题。如何以及在多大程度上可以从两个视图中恢复场景和摄像机的空间布局。

  1. 三维空间的点 X i X_i Xi,是未知量。已知量是: x i x_i xi位于第一幅图像而 x i ′ x'_{i} xi位于第二幅图像。而且已知 x i x_i xi x i ′ x'_i xi是相互对应的: x i ↔ x i ′ x_i \leftrightarrow x'_i xixi,它们都是3D点 X i X_i Xi分别在第一、第二幅图像上的投影点,用公式表示为: x i = P X i x_i = PX_i xi=PXi, x i ′ = P ′ X i x'_i = P'X_i xi=PXi。如果点太少,这项任务是不可能完成的。然而,如果存在足够多的点对应关系以允许唯一地计算基本矩阵 F F F,则可以将场景重建。
  2. 三维重建就是要找到 P , P ′ P, P^{'} P,P,重建是有歧义的,歧义具体是指什么,如何消除这种歧义。如果提供有关摄像机或场景的附加信息,可以减少重建中的模糊性。 我们描述了一种两阶段的方法,其中歧义首先减少为仿射,然后减少为度量; 每个阶段都需要相应类别的信息。

10.1 Outline of reconstruction method

从2张图片来进行重建,步骤如下:

  1. 根据 x i ↔ x i ′ x_i \leftrightarrow x'_i xixi计算基本矩阵 F F F,其具体过程在11章叙述
  2. 根据 F F F求出摄像机外参 R , T R,T R,T,具体过程参见结论9.14
  3. 根据 R , T R,T R,T x i ↔ x i ′ x_i \leftrightarrow x'_i xixi求解 X i X_i Xi,这个过程叫三角化,具体步骤在12章

该方法可以有多种变体。 例如,如果相机被校准,那么我们将计算基本矩阵而不是基本矩阵。 此外,可以使用有关相机运动、场景约束或部分相机校准的信息来获得重建的细化。

要点:三角化唯一不能确定的点就是基线上的点,因为从两个光心出发的射线互相重合了。在这种情况下,反投影光线共线(均等于基线)并沿其整个长度相交。
在这里插入图片描述

10.2 Reconstruction ambiguity

如果我们仅仅知道若干图像,不可能恢复出三维空间点的绝对位置。
原因如下:
我们定义相似变换 H S H_{S} HS

[ R t 0 T λ ] \left[ \begin{matrix} R & t \\ 0^T & \lambda \\ \end{matrix} \right] [R0Ttλ]

我们有
P X i = ( P H s − 1 ) ( H s X i ) PX_i = (PH^{-1}_s) (H_sX_i) PXi=(PHs1)(HsXi)

如果把 P P P分解为 P = K [ R P ∣ t P ] P=K[R_{P}|t_{P}] P=K[RPtP],那么
P H S − 1 = K [ R P R − 1 ∣ t ′ ] PH^{-1}_{S}=K[R_{P}R^{-1}|t'] PHS1=K[RPR1t]

该结果表明乘 H S − 1 H_{S}^{-1} HS1不会改变 P P P的校准矩阵。因此,即使对于校准过的相机,重建也存在模糊性。对于校准相机来说,这是重建的唯一模糊之处。 因此,对于校准相机,可以通过相似变换进行重建。

因为 λ \lambda λ是任意的,所以有很多的 H s H_s Hs可以满足前式。几何解释如P265图10.2。
在这里插入图片描述
如果摄像机的内参也不知道,那么 H H H矩阵就是投影变换,投影变换只能保持直线还是直线,但是直线之间的角度就无法保持了。

以下介绍几种不同的重建类型。

10.3 The projective reconstruction theorem

Projective reconstruction的特点是相机没有标定。

结论 10.1:如果两幅图像中若干对应点已知,具体表示为 x i ↔ x i ′ x_i \leftrightarrow x^{'}_i xixi,那么我们可以求出基本矩阵 F F F,只需要 F F F就可以重建出三维空间中的点。而且任意更换相机投影矩阵,对重建没有影响,因为不同重建之间是等价的(比如第一次重建用的是 P 1 , P 1 ′ P_1,P'_1 P1,P1,第二次重建用的是 P 2 , P 2 ′ P_2,P'_2 P2,P2,但是点不能换,不管第一次重建还是第二次重建,都是用 x i ↔ x i ′ x_i \leftrightarrow x^{'}_i xixi,具体见书P266。

10.4 Stratified reconstruction

Stratified reconstruction指的是先有一个projective reconstruction,然后再把它优化到affine reconstruction最终metric reconstruction,如果可以的话。当然,需要注意的是想要得到affine或者metric reconstruction都需要额外知道一些关于重建场景本身的信息,或者相机要被标定过。

10.4.1 The step to affine reconstruction

我们现有一个project reconstruction的结果,记为 ( P , P ′ , { X i } ) (P,P^{'},\{X_i\}) (P,P,{Xi})。 现在我们需要找出一个平面 π \pi π,使其成为无穷远平面 ( 0 , 0 , 0 , 1 ) (0,0,0,1) (0,0,0,1)在图像上的投影。则必然存在一个 H H H,满足 H − 1 π = ( 0 , 0 , 0 , 1 ) H^{-1}\pi = (0,0,0,1) H1π=(0,0,0,1) H H H可以写成如下形式:

[ I ∣ 0 π T ] \left[ \begin{matrix} I | 0 \\ \pi^T \\ \end{matrix} \right] [I∣0πT]

找到了 H H H以后,把 H H H作用在所有重建得到的点上就完成了affine reconstruction。affine的意思就是说把我们得到的某平面投影到无穷远处。

那么如何找出 ( 0 , 0 , 0 , 1 ) (0,0,0,1) (0,0,0,1)到底映射到已知图像上的什么地方?以下给出几个例子。

Translational motion

简单来说就是摄像机从不同位置拍两幅图,但是摄像机本身只能有平移,不能有旋转。那么这两幅图中有一些点是没有移动的,比如月亮,比如一条延伸到无穷远处的公路。这样的话,月亮这一点的三维坐标写成 X i X_i Xi, 在两幅图像中的坐标写成 x i , x i ′ x_i,x^{'}_i xi,xi。这样三个点就确定了一个平面。该平面就是 ( 0 , 0 , 0 , 1 ) (0,0,0,1) (0,0,0,1)投影到拍摄图像上的结果。这两图拍摄图像对应的基本矩阵 F F F是一个斜对称(skew-symmetric)矩阵。

Scene constraints

场景约束主要目的就是为了找三个在无穷远平面上的点。比方说两个平行线为一组,可以确定无穷远平面上的一个点,这样找三组就可以了。具体步骤参见12章,13章。
另外一个需要注意的是,在一副图像中找出无穷远点以后,可以利用基本矩阵找出第二幅图像中的对应点,不用重新算一遍。

第二种方法是用相交直线之间的比例关系,具体过程参见书P47。

The infinite homography

当我们找出了无穷远平面 ( 0 , 0 , 0 , 1 ) (0,0,0,1) (0,0,0,1)在图像中的投影,我们实质上确定了一个映射 H ∞ H_{\infty} H H ∞ H_{\infty} H把图像 P P P中的点映射到 P ′ P' P。具体可以表示为 x ′ = H ∞ x i x' = H_{\infty}x_i x=Hxi

怎样求出这个 H ∞ H_{\infty} H? 假设我们现在有一个affine reconstruction,两个摄像机的外参表示为 P = [ M ∣ m ] P=[M|m] P=[Mm], P ′ = [ M ′ ∣ m ′ ] P'=[M'|m'] P=[Mm], H ∞ = M ′ M − 1 H_{\infty} = M'M^{-1} H=MM1

H ∞ H_{\infty} H还可以通过基本矩阵 F F F和三对无穷远点来计算,参见13章

One of the cameras is affine

在这种情况下如何求出affine reconstruction。我们有以下结论:

结论 10.4 ( P , P ′ , { X i } ) (P,P',\{X_i\}) (P,P,{Xi}) 是一个projective reconstruction。 P = [ I ∣ 0 ] P=[I|0] P=[I∣0]。所以 P P P是一个affine摄像机,那么affine reconstruction可以这样获得:交换 P , P ′ P,P' P,P的最后两列,交换 { X i } \{X_i\} {Xi}的最后两个坐标。

10.4.2 The step to metric reconstruction

metric reconstruction的要点是找到absolute conic。
比较实际的做法是在图像中找到absolute conic,该conic反投影回无穷远处的平面,就变成了cone,那么这个cone就定义了无穷远处的absolute conic。

结论 10.5 假设图像中的absolute conic已知,记为 ω \omega ω,affine reconstruction的相机外参已知,记为 P = [ M ∣ m ] P=[M|m] P=[Mm],那么affine reconstruction就可以利用一个矩阵 H H H变成metric reconstruction。 H H H如下所示:

[ A − 1 0 0 1 ] \left[ \begin{matrix} A^{-1} & 0 \\ 0 & 1 \\ \end{matrix} \right] [A1001]

其中 A A A 满足 A A − 1 = ( M T ω M ) − 1 AA^{-1} = (M^{T}\omega M)^{-1} AA1=(MTωM)1

我们可以把上式右边用Cholesky factorization处理,就可以得到 A A A

那么接下来的问题就是如何找到图像中的absolute conic?我们用 ω \omega ω来表示该conic。我们可以对该conic施加一些约束,然后再求解它。有这么几个约束:

  1. 被重建场景中的正交性
    消失点 v 1 , v 2 v_1,v_2 v1,v2分别来自两个正交的直线,那么他们满足 v 1 T ω v 2 = 0 v_1^{T} \omega v_2 = 0 v1Tωv2=0确定一个conic需要五个参数,那么找三对 v 1 , v 2 v_1,v_2 v1,v2就可以解出这个方程。或者 v 1 , v 2 v_1,v_2 v1,v2分别来自一条直线和一个平面(直线与平面正交)。 则他们满足 l = ω v l=\omega v l=ωv

  2. 相机内参
    因为 ω = K − T K − 1 \omega = K^{-T}K^{-1} ω=KTK1

  3. 根据上一条约束,我们知道 ω \omega ω只和相机内参有关系,跟外参没关系。那么我们可以用同一个相机在两个不同位置拍摄。这个过程可以表示为 ω ′ = H ∞ − T ω H ∞ − 1 \omega^{'} = H^{-T}_{\infty} \omega H^{-1}_{\infty} ω=HTωH1。 找出足够多的 H ∞ H_{\infty} H 也可以解出这个方程。

10.4.3 Direct metric reconstruction using ω \omega ω

我们有一个projective reconstruction,我们还知道 ω \omega ω,把 ω \omega ω在无穷远平面上的位置记为 Ω ∞ \Omega_{\infty} Ω,然后 ω \omega ω所在的平面记为 π ∞ \pi_{\infty} π。那么从 ω \omega ω Ω ∞ \Omega_{\infty} Ω的矩阵就可以求解出来,参见书P342练习题(x),知道这个矩阵,把它作用在projective的重建结果上,就得到了metric重建的结果。

10.5 Direct reconstruction – using ground truth

假设我们知道一些三维点的gt,记为 X E i X_{Ei} XEi,重建出来的点记为 X i X_i Xi,那么他们满足 X E i = H X i X_{Ei} = HX_i XEi=HXi,因为前文说过重建时有歧义的。我们把 X i X_i Xi替换为图像中的点 x i x_i xi那么就有 x i = P H − 1 X E i x_i = PH^{-1}X_{Ei} xi=PH1XEi。找出足够多的点,解这个方程就可以了。当我们知道了 H H H,就可以 H H H乘到相机矩阵 P , P ′ P,P^{'} P,P上,这样projective重建就变成了真实的三维坐标。

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

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

相关文章

【 Ubuntu】systemd服务创建、启用、状态查询、自启等

要在 Ubuntu 启动后执行一个守护脚本,您可以使用 Shell 脚本编写一个 systemd 服务单元。systemd 是 Ubuntu 中常用的服务管理工具,可以在系统启动时自动启动和管理服务。 下面是一个示例的守护脚本和 systemd 服务单元的步骤: 创建守护脚本…

机器学习第十课--提升树

一.Bagging与Boosting的区别 在上一章里我们学习了一个集成模型叫作随机森林,而且也了解到随机森林属于Bagging的成员。本节我们重点来学习一下另外一种集成模型叫作Boosting。首先回顾一下什么叫Bagging? 比如在随机森林里,针对于样本数据,…

实在智能入选中国信通院最新《高质量数字化转型产品及服务全景图》,领跑AI大模型核心领域

随着中国数字经济进入快速发展期,中国信通院于2021年正式发起“铸基计划-高质量数字化转型行动”,围绕企业数字化转型供需两侧引导行业数字化建设。近期,中国信通院发布了最新的2023《高质量数字化转型产品及服务全景图(8月份新增…

苹果电脑如何卸载录屏软件音频驱动?

当你不想用录屏软件,且卸载后音频驱动还在,那想把音频驱动卸载的话应该如何操作? 或者是您使用录屏软件录制的视频没声音,应该如何操作,是音频插件的问题吗?需要将音频驱动卸载再重新安装吗? 接下来&…

文心一言 VS 讯飞星火 VS chatgpt (99)-- 算法导论9.3 5题

五、用go语言,假设你已经有了一个最坏情况下是线性时间的用于求解中位数的“黑箱”子程序。设计一个能在线性时间内解决任意顺序统计量的选择问题算法。 文心一言: 为了在线性时间内解决任意顺序统计量的选择问题,我们可以使用一个基于快速…

【51单片机】7-LED点阵

1.LED点阵简介 1.什么是LED点阵 1.外观 2.作用 3.内部构造原理图 点阵的优势:就是88个IO口独立控制8*8个LED灯亮灭 2.如何驱动LED点阵--74HC595 2.1 单片机端口直接驱动 要驱动8*8的点阵需要2个IO端口,(16个IO口),…

【Verilog 教程】5.3Verilog带参数实例化

关键词: defparam,参数,例化,ram 当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模…

【RT】什么是对抗攻击 | 视觉跟踪

现在有机会接触一下针对深度学习神经网络的对抗攻击,并做整理如下🤔 对于CV攻防,其实去年12月组会听完就浏览过相关文章👉面向目标检测的对抗样本综述后门防御, NIPS2022 adversarial attack for tracking CVPR2021 | IoU Attack导…

JS的事件循环(Event Loop)

JS的事件循环 本文是我自己对事件循环的理解和总结,不会有太多的理论知识,已经有太多文章写过了,自己搜索下就能找到很多; 同时,文章中的观点仅是本人自己理解,比较白话,不用太较真啊&#xff0…

数字孪生在灌区信息中的应用

灌区信息是智慧水利的组成部分,对灌区现代化改造的支撑作用和地位尤为重要,对促进水利可持续发展有重要意义。灌区信息化系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进…

C++ VTK三维图像体积计算Qt

程序示例精选 C VTK三维图像体积计算Qt 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《C VTK三维图像体积计算Qt》编写代码,代码整洁,规则,易读。 学习与…

基于SSM的乡镇篮球队管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M

title: Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M / The Past and Present of Line Break Symbols in Windows, macOS, Linux: How to Deal with ^M at the End of Text Files categories: 极客实用技巧 / Geek Prac…

Java面试被问了几个简单的问题,却回答的不是很好

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言 前几天参加了…

定时器之输出捕获

简介 • IC ( Input Capture )输入捕获 • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前 CNT 的值将被锁存到 CCR 中,可用于测量 PWM 波形的频率、占空比、脉冲间隔、电平持续时间等参数 • 每个高级定时器和…

防泄密软件推荐(数据防泄漏软件好用榜前五名)

在当今的数字化时代,数据已经成为企业最宝贵的资产之一。企业需要依赖数据来驱动业务决策、提高运营效率和创新产品。然而,随着数据量的不断增长,数据安全问题也日益凸显。企业需要采取有效的措施来保护敏感数据,防止信息泄露给竞…

5次多项式轨迹规划(博途SCL源代码)

运动控制轨迹规划时,加速度不连续将会使电机抖动,产生机械冲击。凸轮表轨迹规划很多都是基于5次多项式轨迹规划。3次多项式轨迹规划请查看下面文章链接: 3次多项式轨迹规划(PLC SCL代码)_RXXW_Dor的博客-CSDN博客机器人、运动控制等常用的轨迹规划有三次多项式、五次多项式…

第二章 进程与线程 十四、进程互斥的硬件实现方法(中断屏蔽法、TestAndSet指令、Swap指令)

目录 一、中断屏蔽法 3、优点: 4、缺点: 二、TestAndSet指令 3、代码解释 4、优点 5、缺点 三、Swap指令 1、定义 2、代码解释 3、优点 4、缺点 四、总结 一、中断屏蔽法 1、关中断后即不允许当前进程被中断,也必然不会发生进程切换。 2、…

【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best

paper: Real-Time Camera Tracking: When is High Frame-Rate Best? 0. 摘要: 更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器…

不添加端口号访问非80网站

自己用树莓派搭了个网站,由于某些原因,不能使用80端口,但又想访问网站时候不要添加端口号。这时候可以更换下DNS服务器,如使用cloudflare,替换成以下两个 参考文章 https://www.cnblogs.com/beidaxmf/p/16744589.html…