【问题标题】:Opencv: Computing fundamental matrix from R and TOpencv:从 R 和 T 计算基本矩阵
【发布时间】:2013-12-26 11:07:02
【问题描述】:

我想计算立体相机的核线。 我知道相机内在矩阵以及 R 和 T。 我尝试按照 Learning Opencv 书籍和维基百科中的说明计算基本矩阵。

其中 [t]x 是与 t 的叉积的矩阵表示。

所以

我尝试用 python 实现这个,然后使用 opencv 函数cv2.computeCorrespondEpilines 来计算epilines。

问题是我得到的线条并没有像他们应该的那样收敛在一个点上...... 我想我在计算 F 时一定有问题。

这是相关的代码:

 T #Contains translation vector
 R #Rotation matrix
 S=np.mat([[0,-T[2],T[1]],[T[2],0,-T[1]],[-T[1],T[0],0]])
 E=np.mat(R)*S

 M1=np.mat(self.getCameraMatrix(cam1))
 M1_inv=np.linalg.inv(M1)
 M2=np.mat(self.getCameraMatrix(cam2))
 M2_inv=np.linalg.inv(M2)

 F=(M2_inv.T)*E*M1_inv

矩阵是:

M1=[[ 776.21275864    0.          773.70733324]
 [   0.          776.21275864  627.82872456]
 [   0.            0.            1.        ]]

M2=[[ 764.35675708    0.          831.26052677]
 [   0.          764.35675708  611.85363745]
 [   0.            0.            1.        ]]

R=[[ 0.9999902   0.00322032  0.00303674]
 [-0.00387935  0.30727176  0.9516139 ]
 [ 0.0021314  -0.95161636  0.30728124]]

T=[ 0.0001648   0.04149158 -0.02854541]

我得到的输出 F 类似于:

F=[[  4.75910592e-07   6.28777619e-08  -2.78886982e-04]
 [ -4.66942275e-08  -7.62837993e-08  -7.34825205e-04]
 [ -8.86965149e-04  -6.86717269e-04   1.40633035e+00]]

编辑: 交叉乘法矩阵是错误的,它必须是: S=np.mat([[0,-T2,T1],[T2,0,-T[0]],[-T1,T[0],0 ]])

epilines现在在epipole汇合。

【问题讨论】:

  • 请发布校准和姿势矩阵。
  • 你能确认这段代码 sn-p 有效吗?

标签: python opencv computer-vision camera-calibration stereo-3d


【解决方案1】:

嗯,你的 F 矩阵似乎是错误的 - 首先,秩比 2 更接近 3。 从你的数据中我得到:

octave:9> tx = [ 0 -T(3) T(2)
> T(3) 0 -T(1)
> -T(2) T(1) 0]
tx =

   0.000000   0.028545   0.041492
  -0.028545   0.000000  -0.000165
  -0.041492   0.000165   0.000000

octave:11> E= R* tx
E =

  -2.1792e-04   2.8546e-02   4.1491e-02
  -4.8255e-02   4.6088e-05  -2.1160e-04
   1.4415e-02   1.1148e-04   2.4526e-04

octave:12> F=inv(M1')*E*inv(M2)
F =

  -3.6731e-10   4.8113e-08   2.4320e-05
  -8.1333e-08   7.7681e-11   6.7289e-05
   7.0206e-05  -3.7128e-05  -7.6583e-02

octave:14> rank(F)
ans =  2

这似乎更有意义。你能在你的绘图代码中试试那个 F 矩阵吗?

【讨论】:

  • 很抱歉。我在交叉乘法矩阵中有一个错误的值......现在看起来好多了。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 2012-05-10
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多