SFM(structure from motion)学习记录(一)

时间:2024-01-07 22:15:26

visualSFM用法

SFM(structure from motion)学习记录(一)

添加图片

  • "File->Open Multi Images". 一次添加多幅图片
  • "SfM->Load NView Match". 可以把之前保存的.nvm文件添加进来

特征检测&全图像对匹配

  • 点击2或选择"SfM->Pairwise Matching->Compute Missing Match",执行完后可以回到第一步再添加一些图片,再次计算缺失的匹配。
  • 这个过程会比较慢,耐心等待就好^_^

稀疏重建

  • 点击3或者选择"SfM->Reconstruct Sparse"

稠密重建

  • 点击4
  • 该过程会让保存文件,CMVS过程在[name].nvm.cmvs文件夹下会进行。结束后文件夹下包含各种文件如相机信息、点云信息及meshlab使用的文件。[name].i.ply是第i个模型的信息。

相机模型和坐标系统

  • 相机模型有8个参数,如果忽略径向畸变的话,有7个参数。
  • 给定相机K[R T],K=[f 0 0;0 f 0;0 0 1],径向畸变r,三维点X
  • 则X在图像的投影是[x,y,z]=K(RX+T)->(x/z,y/z)
  • 假设X在图像的真实位置是mx,my(相对于主点即图像中心)
  • 畸变因子r2=r*(mx*mx+my*my),未畸变的测量是(1+r2)*(mx,my)
  • 投影误差是:(x/z - (1 + r2) mx, y /z - (1 + r2) my)

当在以图像左上角为原点的坐标系时:

  • K = [fx 0 0; 0 fx 0; 0 0 1],  Kc = [1 0 cx; 0 fy/fx cy; 1],
  • 则Kc * K = [fx 0 cx; 0 fy cy; 0 0 1](u, v, 1)' 表示在像素坐标系下的坐标 (相对于图像左上角
  • (u, v, 1)'= Kc*(mx, my, 1)' 
  • 在进行特征提取和匹配时,会在图像同一目录自动生成[name].sift和[name].mat文件。[name].sift保存提取的图像特征点,[name].mat保存图像间的匹配信息。若想要改变特征检测的参数重新重建模型的话,需要先删除.sift,.mat文件。
  • 若想要读回匹配的信息,需要先"SfM->Pairwise Matching->Export F-Matrix Matches"使匹配信息保存到txt文件里。