SFM-notes

Overall

Structure from motion (SFM) is a photogrammetric range imaging technique for estimating three-dimensional structures from two-dimensional image sequences that may be coupled with local motion signals. It is studied in the fields of computer vision and visual perception.

Structure from motion(SFM)是由一系列包含着视觉运动信息(motion signals)的多幅二维图像序列(2D image sequences)估计三维结构(3D model)的技术。它属于计算机视觉及可视化的研究范围。

img

SFM算法流程[^1]

img

速通攻略

版权声明:本文为CSDN博主「RyuZhihao123」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://ryuzhihao123.blog.csdn.net/article/details/70799695

流程

参数获取

包括摄像机内参、外参。有些算法需要对图片的长宽进行统一需注意。 一般来讲,内参矩阵需要通过标定求出来,但是其实部分参数我们可以从图片的信息中获取,在图片上右键“属性”,可以找到部分需要的信息。

特征点提取和特征点匹配

这里可以不用我们去实现,使用OpenCV中的SIFT或SURF都可以做到。不过需要OpenCV3.0[^2],之前版本的OpenCV可以直接使用SIFT和SURF,但是3之后的版本有我们需要的功能,只是它的SIFT等等被移动到nonfree.hpp里去了。

关于SIFT、SURF的选择:SIFT得到的结果相对比较稀疏且特征点的价值较高,但是OpenCV里的SIFT不太稳定,很多图片在提取过程中会出现莫名其妙的错误。SURT的话特征点会比较多但是质量不怎么好,但是OpenCV的SURF非常稳定。

计算本征矩阵,进一步求出R、T矩阵

在得到匹配筛选过的特征点后,就能够计算出图像间的本征矩阵了。使用OpenCV中的findEssentialMat()方法可以直接实现。之后对求得本征矩阵(Essential Matrix)进行分析,得出图像间的相对变换矩阵R(otate)和T(ransform)(两幅图像间的变换关系)。

利用已知的R、T和匹配的特征点还原三维坐标。

三角测距法

img

已知AB距离为l,α、β角度,可以求出d。
$$
l=d(\frac{1}{\tan\alpha}+\frac{1}{\tan\beta})
$$
推得
$$
d=l\frac{\sin\alpha\sin\beta}{\sin(\alpha+\beta)}
$$
由此可得出船在A为原点,AB为x轴正方向的平面坐标中处于(d/tanα, d)。

在实际中由于噪声影响,这两条射线可能根本没有交点,这时候只能用最小二乘法求取使误差最小的P点坐标。

img

摄像机内参、外参矩阵

版权声明:本文为CSDN博主「跬步达千里」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyuan123zhouhui/article/details/52043683

摄像机矩阵由P由内参矩阵和外参矩阵组成,对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵

在opencv的3D重建中(opencv中文网站中:照相机定标与三维场景重建),对摄像机的内参外参有讲解:
外参:摄像机的旋转平移属于外参,用于描述相机在静态场景下相机的运动,或者在相机固定时,运动物体的刚性运动。因此,在图像拼接或者三维重建中,就需要使用外参来求几幅图像之间的相对运动,从而将其注册到同一个坐标系下面来
内参:下面给出了内参矩阵,需要注意的是,真实的镜头还会有径向和切向畸变,而这些畸变是属于相机的内参的。
摄像机内参矩阵:
$$
K=\left[
\begin{matrix}
f_x & s & x_0 \
0 & f_y & y_0 \
0 & 0 & 1
\end{matrix}
\right]
$$
其中,fx,fy为焦距,一般情况下,二者相等,x0、y0为主点坐标(相对于成像平面),s为坐标轴倾斜参数,理想情况下为0。

摄像机外参矩阵:包括旋转矩阵和平移矩阵
旋转矩阵和平移矩阵共同描述了如何把点从世界坐标系转换到摄像机坐标系

旋转矩阵:描述了世界坐标系的坐标轴相对于摄像机坐标轴的方向
平移矩阵:描述了在摄像机坐标系下,空间原点的位置

部分工具包需要将其转置

本征矩阵

本征矩阵E:它包含了物理空间中两个摄像机相关的旋转(R)和平移信息(T)。T和R描述了一台摄像机相对于另外一台摄像机在全局坐标系中的相对位置。

基础矩阵F:除了包含E的信息外,还包含了两个摄像机的内参数。由于F包含了这些内参数,因此它可以在像素坐标系将两个摄像机关联起来。

详见:https://blog.csdn.net/xiaoyinload/article/details/49000855

稀疏表示(Sparse representation)原理理解

谈十分好学的朋友有很多,能力比自己好的更多,却少有相仿的。见博主有幸能遇见,深感艳羡。

版权声明:本文为CSDN博主「Forever_pupils」原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Forever_pupils/article/details/88572281

稀疏表示/稀疏编码:用字典中元素的线性组合去表示测试样本。

如一个图片分类问题:

图片分类

现在给定一个任务,在字典中找出10张图片,用这10张图片的一个线性组合去尽可能的表示测试样本,如果是你的话,你会怎么选,你会选10张桌子图片去表示 一张狗的图片吗?不会的,你会选10张狗的图片竟可能的描述测试样本。这也就是稀疏表示的过程。表示,就是用字典中的元素(就是字典中的样本)的线性组合尽可能的描述(还原)测试样本。稀疏表示要用尽可能少的字典中的元素去描述测试样本。为什么要稀疏呢?为什么选用的字典中的样本要尽可能少呢?你可以想象对于一个狗的图片,我用大量的字典中桌子的的样本,东补补西凑凑,只要桌子的样本够多,我也是可以用大量桌子图片的线性组合去表示狗这张图片的。所以对字典中选取的样本的数量要求尽可能的少。

然后,我们的任务就是怎么将这个想法,用数学的公式表示出来,然后用计算机编程实现。

对应的数学表示

转化为向量

SRC具体流程

Something Else

中科图形数据集

Photo Tourism: Exploring image collection in 3D 解析

Shape from Shading

(Hyper)多视图三维重构和曲面重建

Referance

[1]:https://www.cnblogs.com/yhlx125/p/8719194.html “[摘抄] SFM 和 Visual SLAM”

[2]: http://blog.csdn.net/qq_25517467/article/details/52189057 “OpenCV3.1.0+Contrib配置”

Share