gpt4 book ai didi

python - Opencv:从 R 和 T 计算基本矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:52 26 4
gpt4 key购买 nike

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

Essential Matrix

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

Fundamental matrix 所以

enter image description here

我尝试用 python 实现它,然后使用 opencv 函数 cv2.computeCorrespondEpilines 来计算外线。

Bad 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,-T 2 ,T 1 ],[T 2 ,0,-T[0]],[-T 1 ,T[0],0]])

epilines 现在会聚在 epipole。 Eipole ok

最佳答案

嗯,您的 F 矩阵似乎有误 - 首先,等级更接近 3 而不是 2。从你的数据中我得到:

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 矩阵吗?

关于python - Opencv:从 R 和 T 计算基本矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com