OpenCV3 1 0魚眼相機標定及畸變校正

2021-07-12 01:32:56 字數 1312 閱讀 4175

常用的相機模型為針孔模型,此模型在視場較小的情況下是適用的,隨著視場的增加,模型誤差越來越大。

普通鏡頭和魚眼鏡頭成像原理的差異是造成此現象的根本原因。具體原理可以參見:

[1] 

[2] juho kannalaand sami s. brandt. a generic camera model and calibration method for conventional,wide-angle and fish-eye lenses. ieee transactions on pattern analysis andmachine intelligence, vol. 28, no. 8, august 2006.

[3] juho kannala,janne heikkila and sami s. brandt. geometric camera calibration. wileyencyclopedia of computer science and engineering, 2008.

我的源程式:

vectorimg_ptstemp;

vector> img_ptsvector;

vectorobj_ptstemp;

vector> obj_ptsvector;

// 魚眼鏡頭引數

mat intrinsic_mat;            //matx33d intrinsic_mat亦可;           mat intrinsic_mat(3, 3, cv_64fc1, scalar(0))亦可,注意資料型別;      

mat distortion_coeffs;     //vec4d distortion_coeffs亦可

int flag = 0;

flag |= cv::fisheye::calib_recompute_extrinsic;

flag |= cv::fisheye::calib_check_cond;

flag |= cv::fisheye::calib_fix_skew;  /*非常重要*/

cv::fisheye::calibrate(

obj_ptsvector,

img_ptsvector,

board_img_size,

intrinsic_mat, 

distortion_coeffs,

cv::noarray(),      

cv::noarray(),     

flag,

cv::termcriteria(3, 20, 1e-6));

//畸變校正

void fisheyeimgundistort()

魚眼相機標定模型

camera calibration是計算camera的extrinsic 外參 和 intrinsic 內參 的過程。一旦你標定完成了乙個camera,你即可從2維影象中去恢復3維影象。你同樣可以在在乙個魚眼相機中獲得未失真的影象。為了將3維世界座標系的點關聯到2維影象座標系中,必須獲取相機的外部...

OpenCV相機標定

include include include include 標頭檔案 include using namespace cv 包含cv命名空間 using namespace std 棋盤標靶中每塊的寬和高 int g height 100 int g width 100 int g innerh...

相機標定 OpenCV

使用opencv標定的好處 會自動生成乙個.xml檔案,方便使用。即換不同相機時候只用換這個檔案,而不需要改變 作業系統 ubuntu16.04 opencv版本 3.4.6 攝像頭 電腦自帶攝像頭 標定步驟 1 找到標定例程 進入opencv安裝目錄,找到samples cpp tutorial ...