2015-04-28 47 views
2

使用calibrateCamera後,我可以將投影矩陣從單眼設置中取出。立體聲整流後如何獲得相機的投影矩陣?

This stackoverflow answer explains how.

現在,我按照立體聲校準樣品,我想我做的立體聲整流(openCV - stereo rectify)後做同樣的兩個攝像頭。該方法給我Q,R1,R2,P1和P2矩陣。

void stereoRectify(InputArray cameraMatrix1, InputArray distCoeffs1, InputArray cameraMatrix2, InputArray distCoeffs2, Size imageSize, InputArray R, InputArray T, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags=CALIB_ZERO_DISPARITY, double alpha=-1, Size newImageSize=Size(), Rect* validPixROI1=0, Rect* validPixROI2=0) 

我想我必須給他們以某種方式結合在一起,但我不知道如何與這些輸出矩陣到內在和相機的外部參數。

在此先感謝!

編輯:我們假設我的相機沒有失真。我知道我可以使用initUndistorRectifyMap重新映射圖像並重新映射。但是,我只是有興趣使用投影矩陣編寫我自己的代碼,也就是說,如果它只是一個單一的攝像機校準,我會得到相機矩陣C以及旋轉和平移矢量,我將它們組合到投影矩陣由C * [R | t]表示。我想要做同樣的事情,但要糾正相機的位置。

回答

1

答案在這裏有點顯而易見,儘管當時並不是那麼明顯。我正在尋找的投影矩陣是P1和P2。我想知道如何用失真參數構造它們。實際上,這並不是必須的,因爲整個重映射過程不會影響圖像,所以我們可以直接使用P1和P2作爲投影。希望這可以幫助某人。

2

你需要什麼樣的投影矩陣?

stereoRectify只計算每個攝像頭的旋轉矩陣,將兩個圖像平面轉換到一個公共圖像平面上。這使所有極線平行,因此您可以在每條光柵線上找到對應點。即您在相機#1的圖像平面上有一個二維點X1 = (x1, y1),則相機#2上的對應點將位於具有相同y1組件的光柵線上。所以搜索被簡化爲一個維度。

如果您有興趣計算聯合失真和整流轉換,您應該使用stereoRectify的輸出作爲initUndistortRectifyMap的輸入,然後使用remap來應用投影。即:

stereoRectify(M1, D1, M2, D2, img_size, R, T, R1, R2, P1, P2, Q, CALIB_ZERO_DISPARITY, -1, img_size, &roi1, &roi2); 

Mat map11, map12, map21, map22; 
initUndistortRectifyMap(M1, D1, R1, P1, img_size, CV_16SC2, map11, map12); 
initUndistortRectifyMap(M2, D2, R2, P2, img_size, CV_16SC2, map21, map22); 

Mat img1r, img2r; 
remap(img1, img1r, map11, map12, INTER_LINEAR); 
remap(img2, img2r, map21, map22, INTER_LINEAR); 

更新#1:

假設你有一個在世界上的點的座標系:P_W。它可以通過將其乘以外部參數,即P_C = R*P_W + TP_C = [R|T] * P_W而轉換成照相機座標系。

整流後,你將有兩個矩陣爲每個攝像機:

  • 每個攝像機的旋轉矩陣(R1R2),使得這兩個照相機的圖像平面的同一平面上,並且
  • 投影矩陣在每個攝像機的新(校正後)座標系統中(P1,P2),如您所見,P1P2的前三列將實際上是新整流相機矩陣。

可以通過簡單的矩陣乘法將點轉換爲整流相機座標系:P_R = R1*P_C
並且轉換到校正後的圖像平面與上面類似:p_R = P1*R1*P_C

+0

我添加了一個編輯。我正在爲每臺相機尋找投影矩陣。我已經通過這個樣本。我想知道是否需要在整流前用投影矩陣(R1或R2取決於相機)乘以投影矩陣,這樣才能得到投影矩陣(它是組合的相機和外部矩陣)。 –

+0

你認爲像我的更新#1? – Kornel

+0

是的,我認爲那是我想要的。我現在正在測試一些代碼,並提供您的答案。我會回來的結果。謝謝! –