相关疑难解决方法(0)

相应图像的相机运动

我正在尝试根据相应图像的运动计算新的摄像机位置.图像符合针孔相机模型.

事实上,我没有得到有用的结果,所以我试着描述我的程序,并希望有人可以帮助我.

我将相应图像的特征与SIFT匹配,将它们与OpenCV的FlannBasedMatcher匹配,并使用OpenCV的findFundamentalMat(方法RANSAC)计算基本矩阵.

然后我通过相机内部矩阵(K)计算基本矩阵:

Mat E = K.t() * F * K;
Run Code Online (Sandbox Code Playgroud)

我通过奇异值分解将基本矩阵分解为旋转和平移:

SVD decomp = SVD(E);
Matx33d W(0,-1,0,
          1,0,0,
          0,0,1);
Matx33d Wt(0,1,0,
          -1,0,0,
           0,0,1);
R1 = decomp.u * Mat(W) * decomp.vt;
R2 = decomp.u * Mat(Wt) * decomp.vt;
t1 = decomp.u.col(2); //u3
t2 = -decomp.u.col(2); //u3
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过三角测量找到正确的解决方案.(这部分来自http://www.morethantechnical.com/2012/01/04/simple-triangulation-with-opencv-from-harley-zisserman-w-code/所以我认为这应该是正确的).

然后计算新职位:

new_pos = old_pos + -R.t()*t;
Run Code Online (Sandbox Code Playgroud)

其中new_pos&old_pos是向量(3x1),R是旋转矩阵(3x3),t是平移向量(3x1).

不幸的是,我没有得到任何有用的结果,所以也许任何人都知道可能出现的问题.

以下是一些结果(以防万一有人可以确认其中任何一个肯定是错误的):

F = [8.093827077399547e-07, 1.102681999632987e-06, -0.0007939604310854831;
     1.29246107737264e-06, 1.492629957878578e-06, -0.001211264339006535;
     -0.001052930954975217, -0.001278667878010564, 1]

K = [150, 0, 300;
    0, 150, 400;
    0, 0, …
Run Code Online (Sandbox Code Playgroud)

opencv translation rotation motion 3d-reconstruction

10
推荐指数
1
解决办法
8853
查看次数