我想計算立體相機的極線。 我知道攝像機內在矩陣以及R和T. 我試圖計算學習Opencv書籍和維基百科中講述的基本矩陣。Opencv:從R和T計算基本矩陣
其中[T] x是用叔叉積的矩陣表示。
所以
我試着用Python來實現這一點,然後使用OpenCV的功能cv2.computeCorrespondEpilines計算epilines。
的問題是,我得到的線沒有在一點收斂,因爲他們應該... 我想我一定有問題計算F.
這是相關PICE的代碼:
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]
的輸出中FI得到它的類似:
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]]
EDITED: 橫乘法矩陣是錯誤的,它必須是: S = np.mat([[0,-T 2,T 1] ,[T 2,0,-T [0]],[ - T 1,T [0],0]])
現在epilines會聚在epipole。
請發佈校準和姿態矩陣。 –
你能確認這段代碼片段有效嗎? –