matlab vision sfm学习笔记

matlab从r2019a版本开始在Computer Vision Toolbox中提供了一套完整的sfm程序,输入标定好的图像序列,可以计算出相机位姿进行稀疏重建和稠密重建

matlab sfm文档链接

matlab sfm基本步骤:

  1. 输入图像,检测图像SURF特征点
  2. 5点法RANSAC计算双视图本质矩阵E
  3. 由E分解出四组R,t,三角化重建三维点,利用正负景深筛选出正确的R,t
  4. 双视图下做BA优化,得到BA修正后的R,t,X
  5. 最后一对视图BA得到的X作为最后稀疏重建结果展示的X
  6. 稠密重建

输入图片序列

matlab vision sfm学习笔记

稀疏重建结果

matlab vision sfm学习笔记

其实程序写的很简单明了,很容易就能看懂,需要注意的是这个程序中投影方程的形式是
x=K(RXt)x=K(RX-t)

RRtt就是最后程序输出的orientation和location

在RANSAC中用Sampson distance计算误差,判断是否为内点
xiFxi(Fxi)12+(Fxi)22+(FTxi)12+(FTxi)22\sum \frac{x_i'Fx_i}{(Fx_i)_1^2+(Fx_i)_2^2+(F^Tx_i')_1^2+(F^Tx_i')_2^2}