计算机视觉之三维重建-SFM系统

article/2025/10/15 21:23:39

SFM系统

  • 1.PnP问题
  • 2. RANSAC拟合
  • 3.本质矩阵与单应矩阵
  • 4.sift特征提取
  • *2视图欧式结构恢复求解流程
  • *openMVG系统
    • Tracks
    • 联通图
    • 计算流程

北邮三维重建课笔记

1.PnP问题

在这里插入图片描述
PnP问题:就是利用其中两个相机算出三维点坐标,再利用三维点坐标和第三个相机的像平面坐标求出第三个相机的外参数。(这样计算的速度快一点。)
在这里插入图片描述
在这里插入图片描述
P3P求摄像机位姿。

2. RANSAC拟合

在这里插入图片描述

思路:1.随机抽取两个点算出直线方程
2.算出其余点到这个直线的距离
3.设置阈值,计算点到直线距离小于阈值的点个数
4.进行下一次迭代,回到1,最后看哪条直线周围的点最多(这里要考虑一个需要迭代多少次的问题。)
最后周围点最多的那条直线就是我们需要的直线。
在这里插入图片描述
在这里插入图片描述
迭代次数选择。(主要是求F矩阵用的)

3.本质矩阵与单应矩阵

在这里插入图片描述

4.sift特征提取

在这里插入图片描述

*2视图欧式结构恢复求解流程

在这里插入图片描述
1.使用sift特征提取,提取图像所有匹配点
2.随机均匀采样8对点求基础矩阵F,然后使用RANSAC判断其最好的F
3.求本质矩阵E,再分解出R,T再求出M2
4.最后算出三维点坐标

*openMVG系统

在这里插入图片描述
与SLAM系统一样,都是以第一个摄像机坐标系为世界坐标系,其余相机都是相对它的旋转、平移。
在这里插入图片描述
预处理工作:由于并不知道所拍摄的对象是否直接是平面,所以每次计算需要1)计算基础矩阵F 2)计算单应矩阵H
在这里插入图片描述

Tracks

在这里插入图片描述
图中绿线表示只在两个图像中有对应点,红线表示在三个图像中有对应点,每条线代表一个track,track中记录了这条线的信息(例如绿色类似(2,点的坐标),红色类似(3,点的坐标))OpenMVG中的计算会把绿色的track剔除掉。

联通图

在这里插入图片描述
如果两幅图像中的对应点的个数大于100就连接起来,连接起来的联通图称做G。联通图G的每一条连线称作e

计算流程

(这里的t和G都是可以用数据结构表示的,例如字典、数组)
1.计算对应点的轨迹(tracks) t
2.计算联通图G
3.从G中选取一条边e ==> G[0]、G[1]= e 0 、 e 1 、 . . . . e_0、e_1、.... e0e1....
4.利用e这条边所对应的两个图像估计本质矩阵E
5.分解E,得到这两张图所对应的位姿(外参数)
6.用e就能完成重建,但e只能看到局部,所以选择t∩e的点去重建
(举例:假设e只包含了两幅图100个对应点的信息,而track包含了3幅图,30个对应点的信息,我们只选择共有的30个对应点去重建)
7.删除G中的已重建的边e
8.如果G中还有边e:
1)选取一条满足track(e)∩{已重建3D点}最大的边e
(迭代选择e,这个e和track的交集要与已经重建的三维点交集最大)
2)利用PnP方法估计摄像机位姿(外参数)
(新选择的e中两幅图像中的对应点有部分已经重建,利用已经重建的对应点计算出新的相机位姿参数)
3)三角化新的tracks
(利用未重建的对应点重建出新的三维点)
4)删除G中的这条边
5)执行Bundle Adjustment
9.结束


http://chatgpt.dhexx.cn/article/f3hLax1X.shtml

相关文章

java中浮点数表示方式

java虚拟机中的浮点数分为float和double两种,分别为32位和64位.它参考了IEEE 754的规范对浮点数进行处理。下面以float为例 ,分析一下float数的表示方法. float的32位分成三个部分来表示一个浮点数: 浮点数的取值计算公式为: 解析: 1) 当…

一文读懂 IEEE754 浮点数的表示方法

FBI WARNING:鄙人首个开源电子书 《Go 编码建议》已经上线啦,欢迎各位大佬斧正指导,协同共建。 文章目录 1.浮点数的存储格式2.移码3.浮点数的规格化3.1 单精度浮点数真值3.2 双精度浮点数真值 4.浮点数的具体表示4.1 十进制到机器码4.2 机器…

浮点数表示(IEEE 754)

引入 N S r j N Sr^j NSrj N:浮点数S:尾数r:基数j:阶码 举个例子: 123.456 1.23456 1 0 2 123.456 1.2345610^{2} 123.4561.23456102 其中123.456是浮点数,1.23456是尾数,10是基数(10进…

c++ 浮点数表示

1.为何称为浮点数 对于一个浮点数来说,其通常可以科学计数法来表示,而对于一个浮点数来说,由于次方可变,故小数点可以左右移动。 eg:-36.5 ,及可以表示为:,也可以表示为&#xff0…

Java中浮点数的表示方法

Java中浮点数的表示方法 Java中浮点数的表示方法 1.计算机中的表示方法2.具体分析表示方法 小结 3.移位存储 小结 1.计算机中的表示方法 对于float来说,4个字节,32位,0-22位表示尾数,23-30(8位)表示指数,31位表示符…

浮点数的表示

科学计数法 浮点数的表示 阶码E反映表示范围及小数点的实际位置 位数M的数值部分的位数n反映浮点数的精度 浮点数尾数的规格化 左移三位 0.110;1.0100000 表示范围 浮点数标准 IEEE 754 移码 阶码真值移码-偏移量

dsp处理浮点数_DSP中浮点数的表示方法

DSP中浮点数的表示方法 tongxin | 2009-03-20 15:16:17 阅读:2484 发布文章 先介绍一下IEEE754中浮点数的定义(这里只介绍单精度浮点数): %A %A 单精度浮点数由4字节(32位)组成,且分成3段:数符s(0表示正数,1表示负数…

C语言浮点数的各种表示方法

2022.8.7更新 学习js的过程中发现了0.10.2更深一层的运算过程,感兴趣的可以看看这个博主写的帖子。 JavaScript 浮点数之迷:0.1 0.2 为什么不等于 0.3? ​​​​​​​ 前提: 由于存在精度限制,浮点数只是⼀个近似值&…

浮点数的表示方法是什么?

是已知的C/C编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE浮点数表示法来进行运算的。这种结构是一种科学表示法,用符号(或-)、指数和尾数来表示,底数被确定为2。所以在IEEE浮点数表示法里&#x…

浮点数表示总结

浮点数 早期的计算机使用定点数来表示实数,由于定点数的小数点位置固定,而计算机字长有限,定点数无法表示很大和很小的实数,因此而在计算机科学中有了对于实数近似值数值的表示法——浮点数。这种表示法类似于十进制中的科学计数…

计算机中浮点数表示

浮点数表示 浮点数在计算机中由符号位、指数和尾数组合而成。 通常,浮点数表示为如下形式: F为小数(尾数)字段值,E为指数字段值。 溢出(浮点的上溢):正的指数太大而超过了指数字段的表示范围。 下溢:负的指数太大而…

计算机组成原理浮点数表示

浮点数表示 浮点数的表示分为阶码和尾数; 比如3.026*1011;阶码是11;尾数是3.026; 对于阶码: 阶符为正,小数点向后移n位(n表示阶的大小); 阶符为负,小数点向前移n位(n表示阶的大小&a…

初步了解机器中浮点数表示方法

浮点数是小数点位置变化的数,能表示的范围比定点数大很多。 比如二进制数11.11可以表示为111.12-1或1.11121等,我们由此规律能得到二进制数更一般形式N2EF,E称为阶码,F称为尾数。这个数在机器里怎么存呢,是把正负符号…

32位浮点数表示方法

今天开始给大家介绍计算机组成原理课程,本文主要内容是32位浮点数表示方法。 一、32位浮点数构成 32位浮点数是计算机中常见的一种数据类型,该数占据32bit空间,可以表示较大范围内的整数和小数。32位浮点数由三部分组成,分别是符…

浮点的表示方法

浮点表示方法 一、浮点的表示方法一、单精度类型(float)二、双精度类型(double)三、IEEE 754标准 单精度名称本身的含义是“单字长精确的程度”。跟什么32位、64位有没有关系, 取决于系统支持的字长(word)是几个字节(…

浮点数的表示方法

把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。 在计算机中一个任意二进制数N可以写成: …

IOS磁力下载软件,老司机必备品

软件名为袋鼠下载,一款比较傲娇的APP目前仅支持iOS端,全程使用无广告无弹窗,关键支持任何资源的下载,直链、磁力、BT什么的通通不再话下,也不会针对性的进行限速,这样的免费产品在Android中都属不多见的精品…

这2个在线资源网千万别错过,老司机人手一份,一年省下好几千

早些时候,国内的电影资源网站大部分是搬运了国外的破解资源,并非自己 “ 原创 ” 出来的,这两天很多人都在想尽办法求《哪吒》熟肉资源,我们这边的电影院已经下播了,然后大家也知道,新出的电影在下播之后也…

实用的在线网站

目录 文档类 1. 轻松玩转PDF 2. Convertio:在线的文件转换器 3. CleverPDF 4. vvv文档在线导出工具 5. 微信公众号格式化编辑器 6. Process On:免费在线作图,实时协作 7. ALL TO ALL(在线格式转换) 8. Office…

Linux在线安装jdk

Linux在线安装jdk 远程连接Xshell后,切换到root用户(使用su命令切换到root用户) 使用cd命令切换到/usr目录(/usr目录:用户的很多应用程序和文件都放在这个目录下面,类似于windows下的program files目录) cd /usr在/usr下创建目录java&#x…