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 的資料結構。實際上...