热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

视觉定位原理:对极几何与基本矩阵

对极几何与基本矩阵标签(空格分隔):slam对极几何本质上两幅图之间的对极几何是图像平面与以基线为轴的平面束的交的几何,这种几何被广泛同于双目成像原理中如图所示,摄像机由相

对极几何与基本矩阵

标签(空格分隔): slam


对极几何


本质上两幅图之间的对极几何是图像平面与以基线为轴的平面束的交的几何,这种几何被广泛同于双目成像原理中
如图所示,摄像机由相机中心C,C’以及各自的成像平面表示,对于任意一个空间中的点X,在两个像平面上的点分别为x,x’,第一幅图像上的点x反向投影成空间三维的一条射线,它由摄像机中心和x确定,这条射线向第二个图像平面上投影得到一条直线l’,显然x的投影x’必然在l’上

如图所示,我们把相机中心的连线叫做基线(baseline),基线与两幅图像平面交于对极点e和e’,任何一条包含基线的平面pi是一张对极平面,分别与图像平面相交于l和l’,实际上,当三维位置X变化时,对应的实际上是该对极平面绕基线”旋转”,这个旋转得到的平面簇叫做对极平面束,由所有对极平面和成像平面相交得到的对极限相交于对极点

汇交相机

汇聚摄像机的对极几何是比较一般的情形,如b,c图所示,视图之间的运动是一个平移加上旋转

平行于图像平面的运动


平行于图像的平移运动是运动的特殊情况,基线与图像平面相交于无穷远,因此对极点是无限远点,对极线是平行线


基本矩阵F

基本矩阵是对极几何的代数表示,我们已经知道对于一幅视图上的点x,在另一视图上有一条对应的极线l’,该点的对应点x’必然在l’上,因此存在映射: x-> l’,基本矩阵F实际上就是表示这样的一种点到直线的射影映射

如图所示,考虑空间中不通过任何两个摄像机中心的平面pi,过第一个相机中心C和x的射线与该平面pi交于X,这个点再投影到第二幅图像上的点x’,这个过程通过平面pi的平移。由于X在对应与x的射线上,所以投影点x’必然在对应于这条射线的图像即极限l’上,点x和x’都是在一张平面上的3D点X的像,在第一幅图像上的所有点xi和对应点x’i的射影实际上是等价的,因为他们都射影等价于共面点集Xi,所以存在一个2D映射H,把每一个xi映射到x’i
给定点x’,通过x’和对极点e’的对极线I’,可以记为I’=e’ * x’ = [e’]x’,又因为x’=Hx,所以必然有

I’ = [e’]Hx = Fx

以下部分是多视角几何的原文:

我在这里解释一下,由于射影变换是一个不满秩的映射,由此,对于一个射影映射的逆映射,会映射成一条直线X(lambda)

由于这条射线是由点x和相机中心表示的,自然X(lambda)如文献中公式所示
由于这个射线向另一张图片上的投影问P’所以自然而然将另一幅图的对极点和X在另一幅图的投影表示为

由于l’ = e’叉乘x’所以最后得到公式9.1,即

最后,由于l’ = Fx,x’又在直线l’上,所以x’l’ = x’Fx = 0


本质矩阵

通过以上部分,你会发现,基本矩阵F,只和图像有关和空间位置实际上没啥关系,实际上你会发现,只要算出一个F,他可以由多种投影矩阵得到,由公式4.9,假如两个相机都超同一方向旋转R,那么F还是不会有任何变化,因此我们需要对相机投影矩阵进行一种规定
由此,引入归一化坐标,考虑分解P = K[P|t]的摄像机矩阵,领x=PX为图像上点,假如给定标定矩阵K,用它的逆作用于x,得到新的x”,那么必然有x”=[R|t]X,其中x”叫做图像上点的归一化坐标下的表示由此[R|t]记为归一化相机矩阵

考虑一对归一化相机矩阵P=[I|0]以及P’=[R|t],在这对归一化矩阵下得到的基本矩阵称为本质矩阵

实际上由于[t]是三维的叉积矩阵,所以自然是一个反对称矩阵,所以很容易可以得到E = SR,其中S是反对称矩阵
根据极分解定理,S=kUZU^T,Z = [0,1,0;-1,0,0;0,0,0]
但由SVD分解可以得到E = Udiag(1,1,0)V^T
由于Udiag(1,1,0)V^T=(UZU^T)(UXV^T)=U(ZX)V^T,其中X为某种旋转
实际上得到ZX=diag(1,1,0),其中X是旋转矩阵,若假设W=[0,-1,0;1,0,0;0,0,1]那么可以得到X=W或者X=W^T
最终可以得到书上的结论9.18和9.19



S = [t]表达的意思是叉积,自己叉自己等于0


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 苹果新专利或将引领无边框手机时代
    苹果公司最近公布了一项新的专利技术,该技术能够在设备屏幕中嵌入光线传感器,这标志着苹果在实现无边框手机设计上迈出了重要一步。这一创新将极大提升手机的屏占比,并可能为未来的iPhone带来革命性的变化。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • RT,个人博客图片管理(方便管理,大家 ... [详细]
author-avatar
呵呵哒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有