雙目測距注意事項(Matlab+Opencv)

近幾天由於論文的關係,需要用到雙目測距,歷經千辛萬苦,終於得到想要的效果。我把最近一段時間踩到的坑總結一下,希望對各位有所幫助!

環境:

Matlab對雙目獲拍攝的圖片進行標定,opencv使用標定好的參數進行立體校正及立體匹配

使用Matlab標定時,會獲取各相機的內參、外參、畸變參數以及兩個相機間的平移及旋轉矩陣

1.opencv使用這些參數時,內參矩陣IntrinsicMatrix旋轉矩陣RotationOfCamera2需要轉置後再使用。這點非常重要,否則你立體校正的結果都是錯的,何況立體匹配。

2.在更改相機分辨率進行測距時,需要使用相應分辨率的圖片進行重新標定,否則得到的距離結果是錯誤的。

3.標定時選擇各參數的意義

相機的畸變參數有徑向畸變K1,K2,K3,切向畸變P1,P2

  • 選擇2Coefficients選項代表默認將K3視爲0(K3通常在魚眼鏡頭中使用,普通鏡頭一般不考慮),那麼標定得到的徑向畸變只有K1和K2兩個值。如果選擇3Coefficients則標定後也會得到K3值。

  • Skew值和我們得到的內參矩陣有關,如果未選中Skew,得到的內參就是下面式1,選中得到的內參便是式2,兩者的區別就是有沒有考慮到Skew偏斜係數

式1

式2

  • Tangential Distortion就是問你考不考慮切向畸變,不選中則切向畸變P1=P2=0;

  • 在Opencv中,畸變係數使用時順序爲K1、K2、P1、P2、K3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章