2014-08-31 43 views
0

我想糾正兩個圖像序列的立體匹配。將stereoCalibrate()與棋盤圖案結合使用的常用方法對我來說並不重要,因爲我只使用這些素材。立體校正與測量外部參數

我所擁有的是各個攝像機的正確校準數據(攝像機矩陣和失真參數)以及它們之間的距離和角度的測量結果。

我該如何構造stereoRectify()所需的旋轉矩陣和平移向量?

使用

Mat T = (Mat_<double>(3,1) << distance, 0, 0); 
Mat R = (Mat_<double>(3,3) << cos(angle), 0, sin(angle), 0, 1, 0, -sin(angle), 0, cos(angle)); 

的簡易方法導致了嚴重變形的圖像。這些矩陣是否需要涉及我不知道的不同來源點?或者我需要將距離/角度值以某種方式轉換爲像素大小的依賴性?

任何幫助,將不勝感激。

回答

0

目前還不清楚您是否有足夠的相機姿態信息來進行精確校正。 兩個T和R在三維測量,但在你的情況:

  • T是一維的(僅沿x軸),這意味着,如果確信兩個照相機是完全沿着相互對準(特別是,y軸上的像素誤差小於1個像素,即今天的標準爲幾微米)。
  • R保持Y座標不變。因此,你所擁有的只是圍繞這個軸旋轉,它是否符合你的實驗設置?

最後,您需要檢查用於翻譯和旋轉的單位的一致性,以便與內部數據中的單位相匹配。

如果可行,您可以通過在兩臺攝像機之間找到一些匹配點並進行投影校準來檢查結果:只有對於度量重建,才需要準確瞭解校準點的三維位置。其他任務依賴於基本矩陣或基本矩陣,可以根據圖像到圖像點的對應關係進行計算。

0

如果內在的和已知的外部參數,我建議這個方法:http://link.springer.com/article/10.1007/s001380050120#page-1

這是很容易實現的。基本上,您旋轉右側攝像頭,直到兩個攝像頭具有相同的方向,意味着兩個攝像頭共享一個共同的R. Epipols然後轉換爲無窮遠,並且您的核線與圖像x軸平行。

新R(x)的第一行僅僅是基線,例如,減去兩個相機中心。第二行(y)基線與舊左Z軸的叉積。第三行(z)等於前兩行的叉積。

最後,您需要計算上述鏈接中描述的3x3單應性,並使用warpPerspective()來獲得糾正版本。