雙目標定


雙目攝像機標定最主要的目的:是要得求出每個攝像機的相機內參數矩陣K和畸變系數矩陣D,左右兩個攝像機的相對位置關系(即右攝像頭相對於左攝像頭的平移向量 t和旋轉矩陣R)

由於OpenCV中StereoCalibrate標定的結果極其不穩定,甚至會得到很誇張的結果,所以決定Matlab標定工具箱立體標定,再將標定的結果讀入OpenCV,來進行后續圖像校准和匹配。

[1]首先對左右攝像頭分別進行標定,得到兩個攝像頭各自的內參矩陣和畸變參數向量

注意事項:
1. 采集棋盤圖的時候要注意,盡量讓棋盤占據盡可能多的畫面,這樣可以得到更多有關攝像頭畸變方面的信息。
2. 在Matlab標定工具箱中,可以通過reproject on images,得到根據當前標定結果得到的反投影誤差,從點雲的聚集情況和分散的最大范圍可以看出反投影誤差的大小。Recomp. corners選項,主要完成根據反向投影得到的角點坐標重作為對角點的估計,重新計算角點的功能。針對第一次標定結果誤差太大的情況,可以通過此方法重新計算角點。計算完成后,點擊Calibration根據新的角點進行標定。此時,得到的標定信息,比第一次得到的反投影誤差分布更集中,直徑也小。(該步驟在標定過程中需謹慎使用,因為往往首次得到的三維坐標精確度並不高,如果參考誤差較大的話,有可能使結果與正解偏差更大。)
3. 兩個攝像頭的焦距應該保持一致,因為在后續的視差圖轉換為三維圖時的Q矩陣只有一個f值。所以必須要求至少焦距相近。而且立體成像的三角測量(Learning OpenCV書中提到)的前提假設就是fl=fr。(調整兩個攝像頭的焦距相同的方法:離兩個相機相同遠處放置標定板,分別調節兩個相機的焦距,使得兩個畫面的清晰度相似。)

[2]經過雙目標定得到攝像頭的各項參數后,采用OpenCV中的stereoRectify(立體校正)得到校正旋轉矩陣R、投影矩陣P、重投影矩陣Q,再采用initUndistortRectifyMap函數得出校准映射參數,然后用remap來校准輸入的左右圖像。

其中remap的圖像剪裁系數alpha,取值范圍是-1、0~1。

(1)當取值為 0 時,OpenCV會對校正后的圖像進行縮放和平移,使得remap圖像只顯示有效像素(即去除不規則的邊角區域),適用於機器人避障導航等應用;

(2)當alpha取值為1時,remap圖像將顯示所有原圖像中包含的像素,該取值適用於畸變系數極少的高端攝像頭;

(3)alpha取值在0-1之間時,OpenCV按對應比例保留原圖像的邊角區域像素。

(4)alpha取值為-1時,OpenCV自動進行縮放和平移。

 

雙目校正過程中要使用極線約束
計算目標點在左右兩個視圖上形成的視差,首先要把該點在左右視圖上兩個對應的像點匹配起來。然而,在二維空間上匹配對應點是非常耗時的,為了減少匹配搜索范圍,我們可以利用極線約束使得對應點的匹配由二維搜索降為一維搜索。

而雙目校正的作用:把消除畸變后的兩幅圖像嚴格地行對應,使得兩幅圖像的對極線恰好在同一水平線上,這樣一幅圖像上任意一點與其在另一幅圖像上的對應點就必然具有相同的行號,只需在該行進行一維搜索即可匹配到對應點。
這里寫圖片描述


這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM