9

我有許多校準攝像機拍攝平面場景圖片。爲了簡單起見,我們假設有3臺攝像機。這些相機正在進行廣泛的運動,但大部分是平移加上一些輕微的旋轉。 Example positions of cameras將像素從一個圖像重新映射到另一個圖像

任務是完全縫合它們。我不瞭解3D座標,只是一組使用校準相機拍攝的圖像。

我的操作:

我檢測與SURF特徵/ SIFT在OpenCV中實現通過使用findHomography每對圖像(1-> 2之間得到初始的單應性,2-> 3,1-> 3)。從這些單應性我得到每臺攝像機姿勢的初始esitimation (similiar procedure to this)

然後,我嘗試使用束調整技術,以儘量減少每個匹配對的重投影誤差。雖然我可以稍後添加內部參數(焦點,主點等),但優化的參數是三個平移值和三個旋轉值(從Rodrigues的旋轉公式獲得)。

假設圖像#2將是參考幀(通過與其他兩幅圖像匹配的量最多),它的旋轉和平移矩陣分別是恆等矩陣和零矩陣。

我計算關鍵點的重新投影(可見在兩個圖像#2和圖像#1)從圖像#2(僞代碼)

[x1_; y1_; z1_] = K1*R1*inv(K2)*[x2; y2; 1] + K1*T1/Z2; 
x1 = x1_/z1_; 
y1 = y1_/z1_; 

x1 = ((f1/f2)*r11*x2 + (f1/f2)*r12*y2 + f1*r13 + f1*tx/Z2)/((1/f2)*r31*x2 + (1/f2)*r32*y2 + r33 + tx/Z2) 
y1 = ((f1/f2)*r21*x2 + (f1/f2)*r22*y2 + f1*r23 + f1*ty/Z2)/((1/f2)*r31*x2 + (1/f2)*r32*y2 + r33 + ty/Z2) 

其中R__至圖像#1是R1矩陣的元素並且兩個本徵矩陣的形式是

[f 0 0] 
[0 f 0] 
[0 0 1] 

我假定Z2 coo將參考幀的rdinate設置爲1.

下一階段是使用獲得的相機矩陣(K1,R1,T1,K3,R3,T3)將圖像#1和#3轉換爲圖像#2的公共座標系。

的問題是,我不知道Z1和Z3所需要的知識正確再投影到圖像#2的參考幀,因爲從圖像#1反轉重投影 - >#2是這樣的:

x2 = ((f2/f1)*R11*x1 + (f2/f1)*R12*y1 + f2*R13 - f0/Z1*(R11*tx + R12*ty + R13*tz))/((1/f1)*R31*x1 + (1/f1)*R32*y1 + R33 - 1/Z1*(R31*tx + R32*ty + R33*tz)) 
y2 = ((f2/f1)*R21*x1 + (f2/f1)*R22*y1 + f2*R23 - f0/Z1*(R21*tx + R22*ty + R23*tz))/((1/f1)*R31*x1 + (1/f1)*R32*y1 + R33 - 1/Z1*(R31*tx + R32*ty + R33*tz)) 

哪裏R__是inv(R1)矩陣的元素。

有沒有更好的方法來計算光束調整(2d-> 2d)的重投影誤差,然後將圖像變形爲常用座標系?我注意到OpenCV在它們的拼接模塊中有非常類似的框架,但它在假設純旋轉運動的情況下運行,這不是這裏的情況。

+0

您是否想過3D三角測量?例如,您可以使用除一臺攝像機以外的所有攝像機對一個點進行三角測量,並將其重新投影到最後一個攝像機。 – cedrou 2013-03-18 14:19:26

回答

1

我autoanswered這個問題在我的崗位How to get points in stereo image from extrinsic parameters

請注意,我用的方法(測試和工作!)這是唯一有效的,如果在三維座標中的對象(現實世界中!)是平面的,它是在ž = 0(校準相機外部參數的點)。在這種情況下,此方法與您的校準一樣精確。注意:爲了獲得最佳校準效果,請檢查openCVs校準圓圈,它的再次着色誤差爲0.018像素(由我在大學裏工作的一名博士生測試)。

0

您可能已發現重新投影錯誤的錯誤。它有這行做的事:

[x1_; y1_; z1_] = K1*R1*inv(K2)*[x2; y2; 1] + K1*T1/Z2; 

點[X2; Y2; 1]不確定,直到一個比例常數C * [x2; Y2; 1],這裏你設置C = 1時,它通常是未知的。在第一視圖中,可能性的軌跡表現爲核線。您可以使用最小二乘三角發現沿着這條線的三維點存在最有可能的點,然後計算重投影點爲:

[x1_; y1_; z1_] = K1*(R1*X + T1); 

,並從那裏出發,你有以上。點雲中每個點X的三維座標可以使用其對應的歸一化座標(x1,y1),(x2,y2),...以及相應的旋轉矩陣和平移矢量,通過格式化來計算到基質中的問題:

A X = b 

,然後解最小二乘:

min |A X - b|_2 

其上3和4頁here所示。

相關問題