monoSLAM

article/2025/8/20 11:22:30

单目相机的优点(和双目相机相比):双目相机测得的深度距离收到基线长度的限制,单目相机就可以解决这个问题。

参考博客:http://blog.csdn.net/heyijia0327/article/details/50758944  (一定要看,解决了所有疑惑,包括尺度问题,5点法,8点法的由来)

视觉里程计、SFM、运动估计

本质矩阵:essential matrix

基础矩阵:Fundamental matrix

参考文献:http://www.cnblogs.com/gemstone/archive/2011/12/20/2294805.html

http://blog.csdn.net/xiao4399/article/details/48037287

http://sparklinglee.blog.163.com/blog/static/23009012920145183315488/

https://wenku.baidu.com/view/5b963c00ba1aa8114431d94a.html

https://en.wikipedia.org/wiki/Essential_matrix


注意:最后恢复的旋转矩阵是可以确定的,但是恢复的平移矩阵则不一定是正确的,但是和真正的平移矩阵相差一个scale factor

同理,恢复的三维点也相差一个scale factor。下面是摘自其他作者的原话。

(1)The scale issue is normal in Mono camera, because for mono camera (or said sfm), the reconstruction matrix can only be back to scale level.


(2)Visual odometry (also called structure from motion) is the problem of recovering the motion of a camera from the visual input alone.
This can be done by using single cameras(perspective or omnidirectional), stereo cameras,or multi-camera systems.
The advantage of using more than one camera is that both the motion and the 3D structure can be computed directly in the absolute scale when the distance between the cameras is known. 
—— 《Absolute Scale in Structure from Motion from a Single Vehicle Mounted Camera by Exploiting Nonholonomic Constraints》


(3)It is well known that the shape and motion geometry in SfM problems such as this are subject to arbitrary scaling and that this scale factor cannot be recovered. 
(The imaging geometry $\beta$ and the rotation are recoverable and not subject to this scaling). 
—— http://www1.cs.columbia.edu/~jebara/htmlpapers/SFM/node26.html


1、相机坐标系、图像坐标系、像素坐标系



相机坐标系:OsXsYsZs

图像坐标系:O1x1y1

像素坐标系:与图像坐标系的方向相同;不同的是:

x方向的单位尺度为像素点的宽度,y方向的单位尺度为像素点的宽度。


2、相机内参矩阵和外参矩阵

内参矩阵:

外参矩阵:包括旋转矩阵和平移矩阵


3、摄像机矩阵


4、本质矩阵


注:这里的Pr、Pl代表在两个相机坐标系下的三维坐标

下面过程将外极线方程中的三维坐标化为成像平面的齐次坐标:


注意:pr、pl代表三维点p在左右两个图像坐标系下的齐次坐标。S代表平移向量T的斜对称矩阵(skew symmetric matrix)

 

5、基础矩阵

本质矩阵指明了在图像坐标系下左右成像平面对应点的关系。

但是我们在使用时使用的是像素坐标系(比如在特征检测和匹配都是用像素坐标系),基础矩阵则指明了在像素坐标系下左右成像平面对应点的关系。


6、本质矩阵和基础矩阵的关系


7、本质矩阵的性质:

(1)本质矩阵仅仅由旋转矩阵和平移矩阵确定,与相机的参数无关。

(2)外极线方程:


(3)极线与本质矩阵和像素点的对应关系:

(4)极点与本质矩阵的关系:

(5)本质矩阵的秩和行列式

rank(E) = 2

det(E) = 0

 

8、基础矩阵性质:

同本质矩阵一样。


9、求解基础矩阵、本质矩阵

本质矩阵5个自由度,可已从两个层面理解:

(1)旋转矩阵3个、平移矩阵2个(因为平移矩阵乘以一个系数不影响外极线方程的成立)

(2)体现在数学公式上可以增加如下4个约束,将E的自由度控制在5个:

(1)det(E)=0

(2)||E|| = 1(即E乘以一个系数,外极线方程依然成立,可以通过||E||=1限制系数)

(3)E的一个奇异值为0

(4)E的另外两个奇异值相等

基础矩阵的自由度7个:

(1)det(F) = 0

(2)||F|| = 1(即F乘以一个系数,外极线方程依然成立,可以通过||F||=1限制系数)

八点法:

用八点法求解本质矩阵E的过程可以参考:https://en.wikipedia.org/wiki/Eight-point_algorithm  (the basic algorithm 部分)

注意:为什么很多文献说最少用8个点?

这里只考虑E和F的第二个约束,即E和F乘以一个系数,外极线方程依然成立;在求出来之后要做后续处理(近似),使得E和F满足其他的约束条件。

 

10、本质矩阵求旋转矩阵R和平移矩阵t

参考:《从本质矩阵恢复运动的方法简单证明》——郁钱

对本质矩阵E做SVD分解,再根据下面的定理即可得到结果。

这里S表示平移向量T的斜对成矩阵(skew symmetric matrix)。

综合定理1.2和推论1.3,可以得出:由本质矩阵即可恢复出2个旋转矩阵和带有一个尺度因子的平移矩阵(如果加上限制条件||T||=1,那么平移矩阵会产生两个)。


如何从四个R,T的组合中恢找出真正的那个R,T组合?

把所有特征点的深度计算出来,看深度值是不是都大于0,深度都大于0的那组R,T就是正确的。

 

11、求解场景点的三维坐标

参考:http://blog.csdn.net/heyijia0327/article/details/50774104 

参考:http://sparklinglee.blog.163.com/blog/static/23009012920145183315488/

注意:如果求出旋转矩阵R和平移矩阵t,并且知道两个图像坐标系中对应点的坐标(x1,y1)和(x2,y2);那么可以根据下面的公式求出对应像点的三维点的坐标。



12、确定scale的方法

The absolute scale can then be determined from direct measurements(e.g., measuring the size of an element in the scene),motion constraints,or from the integration with other sensors.


http://chatgpt.dhexx.cn/article/6plq8nCs.shtml

相关文章

Linux一键实现ramos打造自己的livecd

软件名:remastersys作者:nerun个人亲测可用,kali和ubuntu下都成功了,直接一键将当前使用的系统打包成iso,启动测试如下:1:iso直接加载启动成功进入ramos2:iso解压文件到根目录&#…

RAMOS系统简介及制作

同步发布在个人博客上:https://www.zhyong.cn ,可通过搜索文章名称找到该文章! RAMOS系统简介 内存操作系统(RAMOS)是全内存运行,启动后不依赖硬盘的Windows系统。它的原理是利用特殊的软件把多余的内存虚拟为内存盘,然…

如何打造内存操作系统RAMOS?

如何打造内存操作系统RAMOS?添加链接描述 把系统放进内存里 自己打造高速RAMOS 所谓内存操作系统就是全内存运行,系统将不再依赖硬盘。如今科技这么发达,电脑内存也越来越大,如果我们可以利用剩余内存来制作虚拟磁盘&#xff0c…

RAMOS(全内存操作系统)初识----仅供测试

内存操作系统(RAMOS)是全内存运行,启动后不依赖硬盘的Windows系统。它的原理是利用特殊的软件把多余的内存虚拟为内存盘,然后将制作好的操作系统镜像释放到这个虚拟内存盘中运行,让Windows操作系统和应用软件完全工作于内存之中,从…

英语拼读规则

前言: 想学英语就要用英语的思维去学。不能用某国某人指定的方法。误人子弟呀!! 一、就英语就要像学汉语一样要学会拼音,拼音会了汉字自然就会读了。 第一步:26个字母的【音标】要记牢。不只会写字母 也要会写字母对应…

英语名词复数s的发音规则

目录 1. 英语名词复数s的发音规则 1. 在清辅音后发/s/,[p], [t], [k], [h]; [f], [x], [s], [𝛉], [ꭍ]; [ts], [tr], [tꭍ]。记忆顺口溜:婆婆有位特殊的客户 ,她叫福西施,t前缀 2. 在浊辅音和元音后发/z/音&#x…

英语口语中的音变现象及读音规则

英语口语中的音变现象是指再说英语的过程中出于“省力” 的原因,在读英语的时候唇舌处于放松的状态,可以让我们更轻松地说英语。音变现象包括:连读,弱读,缩读,浊化,异化。这五大音变现象最具有代…

英语语法---读音规则

一、48个音标(音素)简表(18大语音语变现象) 单元音又分为前元音、中元音和后元音,其区分点在于发音时舌身是在口腔的前部、中部还是后部 音素发音链接:https://en-yinbiao.xiao84.com/ 18大语音语变现象&…

链表之头指针、头结点、首元结点、空链表

链表之头指针、头结点、首元结点、空链表 文章目录 链表之头指针、头结点、首元结点、空链表前言疑问整理头指针,头结点,首元结点定义首元结点定义头指针定义头结点定义 疑问回答 前言 最近在用力扣刷链表的题,总是写不出来,对这…

求二叉树指定结点到根结点的路径c++ 非常详细。

看了很多 没有看见完整的代码 我喜欢喂饭喂到嘴边。 部分代码参考16 二叉树:以x为根的子树的深度_DHU杨骅麟(紫外线过敏)的博客-CSDN博客 面试经典(16)--二叉树根节点到指定节点的路径_nginux的博客-CSDN博客_二叉树根节点到目标节点路径 运…

二叉树的结点数

二叉树的结点数(*) (10分) 已知二叉树的结点结构定义如下: typedef struct _NODE_ {char data;struct _NODE_ *lch, *rch; } NODE; 说明:data 为数据域,均为英文大写字母。lch 和 rch 分别为指示左、右孩子的指针。 请编写函数,求二叉树的结点个数。 函数原型 // 结点…

求一个结点x在在二叉树中的双亲结点算法

1、算法思想 使用先序递归遍历思想完成算法设计。首先判断节点的左右孩子是否存在,若存在,并且左右孩子中有一个符合查找要求,则返回元素!否则,继续递归查找,直到成功或者找不到符合要求的结点&#xff01…

计算二叉树中结点的个数

思想: 递归实现 图示为举例二叉树进行思路解释 二叉树中结点的个数:只要能计算出A左子树的个数A右子树的个数1 左子树个数:以B为结点的左子树个数右子树个数1 右子树个数:以C为结点的左子树个数右子树个数1 . . . .&#xff0…

(图解)单链表删除结点值为x的结点算法

目录 一、非递归的算法 第一种算法思路如下: 第二种算法思路如下: 二、递归的算法 一、非递归的算法 第一种算法思路如下: 先判断链表L是否为空,空链表退出程序;用p利用while循环从头到尾扫描单链表,p…

单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置

** C语言新手小白的学习笔记-------------目前持续更新中 ** 本人90后电气工程及其自动化大学生,大二开始接触C语言,写过前端,Python,但是都不精通,通过许多认识后明白了自身的许多不足,因此,…

武汉轰趴团建年会的疯狂玩法活动不一样的经历

又是一年的历程与工作,今年来一点新花样,来吧,让我们一起快乐冲向前,空气中满是不一样的欢声笑语,让我们一起感受不一样的年会趴,让我们一起去快乐的游玩吧。武汉轰趴团建年会的疯狂玩法活动不一样的经历 感…

天猫双11全球狂欢节的诞生,源于对快乐的分享

时光荏苒,天猫双11全球狂欢节,如今已经迈入了第十个年头。 相信有不少读者小伙伴都知道,双11最早其实源于中国的“光棍节”。那么这样一个原本应该是单身狗们黯然神伤的日子,究竟是如何演变成一场让无数消费者和商家都激情澎湃的购…

生成模型太强大?篡改与伪造检测越来越需要了!这篇最新综述不容错过

关注公众号,发现CV技术之美 最近一段时间,以扩散模型为代表的生成模型越来越能逼真地生成图像和视频,一方面是一群人的狂欢,这是AI的进步,另一方面却是另一群人的担忧,这是AI的危险。 AI技术可以造福人类&a…