Structure From Motion
SFM简介
通过相机的移动来确定目标的空间和几何关系,是三维重建的一种常见方法。
它与Kinect这种3D摄像头最大的不同在于,它只需要普通的RGB摄像头即可,因此成本更低廉,且受环境约束较小,
在室内和室外均能使用。
- 1
- 2
- 3
SFM基本原理
小孔相机模型
在计算机视觉中,最常用的相机模型就是小孔成像模型,它将相机的透镜组简化为一个小孔,光线透过小孔在小孔后方的像面上成像。
小孔模型成的是倒像,为了表述与研究的方便,我们常常将像面至于小孔之前,且到小孔的距离仍然是焦距f,这样的模型与原来的小孔模型是等价的,只不过成的是正像,符合人的直观感受。
在这种情况下,往往将小孔称作光心(Optical Center)。
坐标系
世界坐标系
世界坐标系的原点可以任意选择,与相机的具体位置无关。
摄像机坐标系
相机坐标系以相机的光心(小孔)作为原点,X轴为水平方向,Y轴为竖直方向,Z轴指向相机所观察的方向。
图像物理坐标系
其原点为透镜光轴与成像平面的交点,x与y轴分别平行于摄像机坐标系的X与Y轴,是平面直角坐标系,单位为毫米。
图像像素坐标系
固定在图像上的以像素为单位的平面直角坐标系,其原点位于图像左上角,x与y轴平行于图像物理坐标系的X 和Y轴。对于数字图像,分别为行列方向。
摄像机内参矩阵
设空间中有一点P,若世界坐标系与相机坐标系重合,则该点在空间中的坐标为(X, Y, Z),
其中Z为该点到相机光心的垂直距离。设该点在像面上的像为点p,像素坐标为(x, y),如下图所示。根据相似三角形关系可以得到 x=fXZx=fXZ。
图像的像素坐标系原点在左上角,而上面公式假定原点在图像中心,为了处理这一偏移,设光心在图像上对应的像素坐标为(cx,cy)(cx,cy)
摄像机的外参矩阵
一般情况下,世界坐标系和相机坐标系不重合,这时,世界坐标系中的某一点P要投影到像面上时,先要将该点的坐标转换到相机坐标系下。设P在世界坐标系中的坐标为X,P到光心的垂直距离为s(即上文中的Z),在像面上的坐标为x,世界坐标系与相机坐标系之间的相对旋转为矩阵R(R是一个3行3列的旋转矩阵),相对位移为向量T(3行1列),则
sx=K[RX+T]sx=K[RX+T]是一个3行4列的矩阵,称为外参矩阵,它和相机的参数无关,只与相机在世界坐标系中的位置有关。摄像机标定
相机的标定,即为通过某个已知的目标,求取相机内参矩阵的过程。
极线约束与本征矩阵
假设在世界坐标系中有一点p,坐标为X,它在1相机中的像为x1x1。由于det(F)=0,所以基础矩阵的秩小于等于2,在估计F的算法中会用到这些性质。
SFM算法流程
特征点提取与特征点匹配
特征点提取
- Shi&Tomasi
- SIFT
- SURF
特征点匹配
描述子计算
匹配结果往往有很多误匹配,为了排除这些错误,使用KNN算法寻找与该特征最匹配的2个特征,若第一个特征的匹配距离与第二个特征的匹配距离之比小于某一阈值,就接受该匹配,否则视为误匹配。当然,也可以使用交叉验证方法来排除错误。
基础矩阵估计F
基础矩阵中有9 个元素
5点法
8点法
- 采用了RANSAC的方法进行对E进行估计,每一步迭代的过程中,利用8点法进行求解。
本质矩阵估计E
本征矩阵有7个独立参数
估计出本质矩阵的目的是为了对之前求得的匹配进行约束,得到的匹配成为几何一致匹配,不同图像上的几何一致匹配形成了一个TRACK(其实就是一个空间点在不同的图像上的投影点之间的匹配)。本质矩阵分解为R和T
SVD分解
存在4种可能的解,寻找正确的解
检查旋转矩阵R的正确性
R的行列式必须为1或者-1
三维点云计算
三角形法
已经知道了两个相机之间的变换矩阵(R和T),还有每一对匹配点的坐标,通过这些已知信息还原匹配点在空间当中的坐标,根据公式
x2s2=K(R2X+T2)x2s2=K(R2X+T2),得
0=x2^K(R2X+T2)⇒x2^KR2X=−