三维重建1
从本质矩阵求R、t 有用的参考;
三角化
需要参数:
- 外参:相机位置、朝向
- 内参:焦距等参数
- 像素对应关系
针孔相机模型
三角形相似右边的图可以直接得到下面的式子,x、y为成像面上点的坐标
相机坐标系
如图所示:
内参
先介绍什么是相机的内参外参
主点偏移
主点不在图像中心,所以要对实际在图片中的位置做修正px,py,这里使用齐次坐标表示;(X,Y,Z)表示是三维空间中的点,为了表示出来Z作为分母,使用(x,y,1)齐次坐标,等价于(Zx,Zy,Z);使用中间矩阵【I;0】来匹配维度;
f为光心距离成像面的距离;
相机的像素单元长宽比可能不为1,对于x,y要有相应的乘一个系数mx,my来得到实际的距离:
将左边连个矩阵合为一个 fx=f*mx;得到:
行列不垂直:
所以得到内参矩阵K,Xcam表示在相机坐标系下三维点的坐标,x为成像面上的像素坐标:
如果X点不在相机坐标系,而且相机在世界坐标系中位姿为坐标是C,在世界坐标系中旋转R,世界坐标系一点在相机坐标系下坐标?(X-C)表示X相对于C的一个向量,这里的xyz的方向和世界坐标相同,由于进行旋转,所以这个相对C的向量也要旋转,然后将向量旋转相同的矩阵R,得到R(X-C)也就是在相机坐标系下的坐标;
进一步写成矩阵*坐标的形式:
代入从三维坐标到成像面坐标公式:
相机投影矩阵也就是
X h a t X^{hat} Xhat为三维点世界坐标齐次坐标。
就可以得到相机的内参、外参;
确定了内参外参,已知点对后可以求解三维点X:
运动推断结构SFM
不知道相机的外参,求解相机的外参,只是利用图片求出外参,假设内参已知,那么知道外参后能进行三维重建
二视图SFM
极限几何
根据极线的定义,能够确定所有的极平面都交于基线,所有极线都交于极点;
极线约束
通过极线定义,对于左图成像面上一点p,不能确定三维实际中的点是p1,p2,…,(不知道深度)但是这些点在另一个成像面右边的所有这些点都落在极线l‘上,同理可知右视图的p’点在左视图对应点一定在l上;
xi,为原本坐标在成像面上投影后并根据相机内参调整后的图片,我们想要没有调整的点,**没有调整的点 x ^ i \hat{x}_i x^i**然后假设光心到这个点距离为1,d0表示空间位置距离光心的距离, d 1 x ^ 1 d_1\hat{x}_1 d1x^1对应p1,这里将左边看作是世界坐标系,右边相对于左边移动(R,t),得到下面的公式;
向量叉积
下面得到的为3x1的向量,直接表示对应(i,j,k)
本质矩阵推导
就是说通过本质矩阵可以求出外参。
对于上面式子,先做叉积,得到的与 x ^ 1 \hat{x}_1 x^1垂直,得到的向量再与 x ^ 1 \hat{x}_1 x^1点积得到0;其中对应的本质矩阵E
然后看已知本质矩阵能否求R,t相机运动参数
已知本质矩阵,求出R, t
本质矩阵的性质:
求解得到:
这里的W是对应的求出R的解,和上面的SVD分解不一样。
解还要筛选,保证两个相机都是得到的三维点都在前方:
求本质矩阵
本质矩阵求解过程使用的 x ^ i \hat{x}_i x^i不是图像上直接的像素点坐标,而是根据内参反向推出来的:
这里求本质矩阵有两种方法:一是通过基础矩阵求 另一个是通过内参求
基础矩阵求本质矩阵
得到基础矩阵对应的与本质矩阵和内参关系;
这里对应点坐标是像素坐标:
因为点坐标是像素坐标,通过对应点,就可以直接求解基础矩阵,转化成齐次矩阵求解问题,通过SVD分解对应的最小特征向量就是f:
然后得到本质矩阵:
对应点直接估计本质矩阵
在内参矩阵已知情况下,得到R,t就然后就能进行三角化得到三维重建:
注意
多视图
两两融合方式;
同一三维点可能在多个视图同时被观察到
有待选择的多个参数,使用最小二乘求得特征点位置:
BA来恢复每个特征点在三维的位置以及每一帧图像的三维运动。