SFM问题简介

article/2025/10/15 18:39:59

最近在学习opencv的知识,遇到的一些知识点和理解记录下来,由于还是小白,有所不对的地方,大家一起交流沟通
Structure from motion,简称为SFM,是单目相机在物体周围不同的角度拍摄不同的图片,而相机的内参外参数可以使用张正友的标定方法获取,点云的获取还是在不同的图像之间进行匹配获得。需要注意的是此时获取的点云是稀疏点云,此时采用的方法是SIFT特征点匹配的方法,在实际的操作过程中,发现哦pencv4.0.0已经删除了#include<opencv2\nonfree\nonfree.hpp>、#include<opencv2\legacy\legacy.hpp>这两个模块,要配置需要安装opencv4.0.0 对应的opencv_contrib版本,此部分可以参考博文:opencv4.0.0 +opencv_contrib在vs2015下编译 :win10 调用SIFT特征检测

一.小孔成像
世界中的一个点经过小孔在图像平面上会形成一个倒立缩小的像。这就形成了几何相似三角形关系。如果我们把成像平面放到前面来,就是正立缩小的像。具体的焦距、图像片面,相机中心什么就不赘述了。右下角公式表示通过一个 相似性可以建立图像坐标系和世界坐标系的关系。
小孔成像
接下来存在一个坐标系之间的变换问题,张正友在2000年的文章中讲的很清楚,这里就不再累述,给出最后的像素坐标和世界坐标系之间的变换过程
相机成像模型
像素坐标和世界坐标的转换
在相机已经标定好的情况下,就可以开始SFM处理,总体上可以分为
二.SFM处理流程

1.特征点检测和匹配
特征点的检测用的是SIFT,匹配则是根据L2范数距离小、比值约束等来匹配。
SIFT的特征检测分为以下几个步骤:
a.建立高斯金字塔
b.关键点确定
b1.阈值化
b2.在高斯金字塔中找极值
b3.调制极值点的位置,也可以叫精提取极值点,主要采用泰勒展开,在二阶导数为零的位置为极 值点
b4.舍去对比度低的点,这里是去掉边界上的一些点
c.关键点的方向
采用权值加权的方向,考虑到周围像素离中心像素的距离,给每个像素点一个权值,类似于但区别于HOG算子。
d.构建关键点的描述符
匹配基于关键点的描述符
2.外极几何图构造
求解本质矩阵E
3.相机位姿和场景结构估计
2D-2D的估计,分别采用增量式、全局式、混合式的估计
4.BA优化相机位姿和场景

//欢迎大神交流指导

参考来源:
Structure from motion简介:https://blog.csdn.net/Mahabharata_/article/details/70799695
SIFT算法详解:https://blog.csdn.net/zddblog/article/details/7521424
基于图像的大规模场景三维重建(上):https://www.leiphone.com/news/201711/9dxX6g30dlEoqvPZ.html
基于图像的大规模场景三维重建(下):https://www.leiphone.com/news/201711/s6CHNAyjurPPyKiz.html
SIFT算法的教程、源代码及应用软件
1、ubc:DAVID LOWE—SIFT算法的创始人,两篇巨经典
http://www.cs.ubc.ca/~lowe/
2、cmu:YanKe—PCASIFT,总结的SIFT方面的文章
http://www.andrew.cmu.edu/user/yke/
3、ubc:M.BROWN—SIFT算法用于图像拼接的经典应用autopano-sift。包含一个SIFTLIB库
http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html
http://www.cs.ubc.ca/~mbrown/panorama/panorama.html
4、toronto:Jepson—Matlab SIFT tutorial, 超级超级超级经典~
http://www.cs.toronto.edu/~jepson/csc2503/
5、ucla:Vedaldi—加州大学一个博士生编的Matlab SIFT tutorial
http://www.cs.ucla.edu/~vedaldi/
6.http://en.wikipedia.org/wiki/Scale-inva … _transform
7. 大牛整理的计算机视觉分类
http://www.cs.ubc.ca/~lowe/vision.html
8. http://note.sonots.com/SciSoftware/SIFT.html
9.提到了计算变换矩阵的RANSAC法
http://web.engr.oregonstate.edu/~hess/index.html
10. 仿射不变特征点检測。提到了性能评价的方法
http://www.robots.ox.ac.uk/~vgg/research/affine/
11. 一个日本人,挺牛的
http://note.sonots.com/
12. PCA-SIFT
http://www.cs.cmu.edu/~yke/pcasift/
13 opencv sift
http://web.engr.oregonstate.edu/~hess/index.html
14 matlab sift
http://www.vlfeat.org/~vedaldi/code/sift.html
http://www.vlfeat.org/overview/sift.html
15 Improve Scale Invariant Feature Transform (SIFT) 斯坦福
http://robots.stanford.edu/cs223b04/project9.html
16 Known implementations of SIFT mit


http://chatgpt.dhexx.cn/article/0qAaeHAq.shtml

相关文章

SfM详细流程介绍

增量式(Incremental)sfm则是一边三角化(triangulation)和pnp(perspective-n-points),一边进行局部BA。这类方法在每次添加图像后都要进行一次BA,效率较低,而且由于误差累积,容易出现漂移问题;但是增量式sfm的鲁棒性较高。 增量式sfm初始化 初始化主要是指选取两张匹…

主流SFM处理方式的梳理

SFM是什么&#xff1f; SFM即Structure-from-motion运动结构重建&#xff0c;从大批量图像数据出发&#xff0c;通过相关处理&#xff0c;获取目标图像集3D几何&#xff08;结构&#xff09;和摄像机姿态&#xff08;运动&#xff09;信息&#xff0c;主要处理流程可分为如下几…

SFM过程(一)

以图像为基础的三维重建过程SFM基本如下图所示&#xff1a; 以SfM-Toy-Library代码为例&#xff0c;如下&#xff1a; ErrorCode SfM::runSfM() {if (mImages.size() < 0) {cerr << "No images to work on." << endl;return ErrorCode::ERROR;}//in…

SfM算法

参考 https://blog.csdn.net/kokerf/article/details/72630863 https://blog.csdn.net/qq_42399848/article/details/89348740 https://blog.csdn.net/lpj822/article/details/82716971 《基于无序图像集的运动恢复结构研究与实现》 Structure from Motion可以认为一个相机在运…

SFM算法流程

SFM算法流程 Figure1:Block diagram of structure from motion 1. 算法简介 SFM算法是一种基于各种收集到的无序图片进行三维重建的离线算法。在进行核心的算法structure-from-motion之前需要一些准备工作&#xff0c;挑选出合适的图片。 首先从图片中提取焦距信息(之后初始化…

Sfm方法过程及原理

1. 算法简介 SFM算法是一种基于各种收集到的无序图片进行三维重建的离线算法。在进行核心的算法structure-from-motion之前需要一些准备工作&#xff0c;挑选出合适的图片。 先从图片中提取焦距信息(之后初始化BA( Bundle adjust)需要)&#xff0c;然后利用SIFT等特征提取算法去…

SFM原理简介

Structure From Motion SFM简介 通过相机的移动来确定目标的空间和几何关系&#xff0c;是三维重建的一种常见方法。 它与Kinect这种3D摄像头最大的不同在于&#xff0c;它只需要普通的RGB摄像头即可&#xff0c;因此成本更低廉&#xff0c;且受环境约束较小&#xff0c; 在室…

SFM(Structure from Motion)一点总结

SFM&#xff08;Structure from Motion&#xff09;一点总结 运动结构恢复(Structure from motion)数十年来一直是计算机视觉领域的热门研究方向之一&#xff0c;实现了众多实际应用&#xff0c;尤其在近景三维重建中&#xff0c;该算法从获取的目标物系列影像出发&#xff0c…

sfm从运动到结构

sfm&#xff0c;即structure from motion。从一堆同一场景的照片中恢复场景的三维结构和照片拍摄时相机的位置&#xff0c;可分为全局sfm和增量式sfm。 全局sfm主要包括以下步骤&#xff1a; 1.提取各张照片上的特征点及其描述&#xff1b; 2.对所有照片相互进行特征点匹配&a…

猿创征文|SfM(Structure from Motion)学习之路

文章目录 0 前言1 理论基础1.1 书籍推荐1.2 SfM概述 2 动手实践2.1 增量式SfM复现总结2.2 部分复现结果2.3 遇到问题与解决 3 后续学习3.1 前沿论文阅读笔记3.2 Colmap使用问题3.3 三维旋转3.4 场景对齐 0 前言 一转眼&#xff0c;研究生生活已经过去两年了。开始接触SfM也是两…

SFM综述

Structure from Motion&#xff08;SfM&#xff09;是一个估计相机参数及三维点位置的问题。SfM方法可以分为增量式&#xff08;incremental/sequential&#xff09;,全局式&#xff08;global&#xff09;&#xff0c;混合式&#xff08;hybrid&#xff09;,层次式&#xff08…

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

SFM系统 1.PnP问题2. RANSAC拟合3.本质矩阵与单应矩阵4.sift特征提取*2视图欧式结构恢复求解流程*openMVG系统Tracks联通图计算流程 北邮三维重建课笔记 1.PnP问题 PnP问题&#xff1a;就是利用其中两个相机算出三维点坐标&#xff0c;再利用三维点坐标和第三个相机的像平面坐标…

java中浮点数表示方式

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

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

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

浮点数表示(IEEE 754)

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

c++ 浮点数表示

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

Java中浮点数的表示方法

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

浮点数的表示

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

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

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

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

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