常用的相機模型為針孔模型,此模型在視場較小的情況下是適用的,隨著視場的增加,模型誤差越來越大。
普通鏡頭和魚眼鏡頭成像原理的差異是造成此現象的根本原因。具體原理可以參見:
[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 ...