OPENCV原始碼閱讀 魚眼鏡頭標定

2021-10-03 11:28:46 字數 1083 閱讀 6535

cv::fisheye::initundistortrectifymap (inputarray k, inputarray d, inputarray r, inputarray p, const cv::size &size, int m1type, outputarray map1, outputarray map2)

用後向對映的方式,計算目的影象上每個點對應源影象的位置。

void cv::fisheye::undistortpoints (inputarray distorted, outputarray undistorted, inputarray k, inputarray d, inputarray r=noarray(), inputarray p=noarray())

這個要用前向對映的方式,計算源影象上點在目的影象上的位置。這涉及乙個問題,需要利用r

dr_d

rd​求解θ

dθ_d

θd​。opencv使用的是最優化的方法,利用牛頓法求入射角:

目標函式: f(θ

)=θ(

1+k1

θ2+k

2θ4+

k3θ6

+k4θ

8)−θ

d=

0f(θ)=θ(1+k_1θ_2+k_2θ_4+k_3θ_6+k_4θ_8)-θ_d=0

f(θ)=θ

(1+k

1​θ2

​+k2

​θ4​

+k3​

θ6​+

k4​θ

8​)−

θd​=

0方向和步長為:−f(

θ)/f

′(θ)

-f(θ)/f'(θ)

−f(θ)/

f′(θ

) 這是opencv的實現**,最大迭代次數為10次。

for (int j = 0; j < 10; j++)

初始值如下,即取θ=θ

dθ=θ_d

θ=θd

min(max(-cv_pi/2., theta_d), cv_pi/2.);

使用OpenCV標定魚眼鏡頭(C )

由於魚眼鏡頭和針孔鏡頭的模型不一樣,對於魚眼鏡頭的模型在之前的部落格中已經做了詳細介紹,這裡直接使用opencv中的cv fisheye calibrate 函式進行標定。函式原型如下,需要輸入目標點集,影象點集 影象尺寸。函式輸出相機內參,畸變係數,旋轉矩陣和平移向量,以及反投影誤差。cv exp...

opencv相機標定 3 魚眼鏡頭成像模型與標定

這篇部落格介紹得很詳細,鏈結 其中,opencv魚眼相機標定後,畸變引數是4個,鏈結裡部落格的畸變引數是五個,應該是使k0 1.1 世界座標系 相機座標系 2 相機座標系 影象物理座標系 注意使用的是歸一化的座標,魚眼模型好像都是近似為單位球面投影模型,這點還是比較困惑,為什麼不直接用f,而是在單位...

OpenCV原始碼閱讀 1

開始從讀取檔案的函式說起,這裡主要有兩個函式用於讀取影象的 實際上,當我們在做數字影象處理系統的時候,主要要考慮的也是怎麼讀乙個進來。第乙個函式 cvloadimage主要是用於返回乙個iplimage 的資料結構。第二個函式 cvloadimagem主要是用於返回乙個cvmat 的資料結構。實際上...