相機標定1——幾個函數

相機標定中的幾個函數:

雙目標定函數

stereoCalibrate

double cv::stereoCalibrate 
(
	InputArrayOfArrays objectPoints, //表示物點座標,由棋盤格生成的,Z=0.
	InputArrayOfArrays imagePoints1, //相機1中的像點座標
	InputArrayOfArrays imagePoints2, //相機2中的像點座標
	InputOutputArray cameraMatrix1, //相機1內參數
	InputOutputArray distCoeffs1,      //相機1畸變係數
	InputOutputArray cameraMatrix2, //相機2內參數
	InputOutputArray distCoeffs2,      //相機2畸變係數
	Size imageSize,                           //圖像大小
	InputOutputArray R,                    //相機1與相機2之間的旋轉矩陣 
	InputOutputArray T,                    //相機1與相機2之間的轉移矩陣 
	OutputArray E,                           //本質矩陣
	OutputArray F,                           //基礎矩陣
	OutputArray perViewErrors,       //RMS重新投射點的誤差
	int flags = CALIB_FIX_INTRINSIC, //標誌位,缺省爲0,可以自主設定
	TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) //迭代結束標誌
)

可以先通過其它方法把相機的內參數搞定,傳入到該函數裏面去計算其它的參數。也可以直接計算所有的參數。

雙目校正函數

void cv::stereoRectify 
(
	InputArray cameraMatrix1, //相機1內部參數
	InputArray distCoeffs1,      //相機1畸變參數
	InputArray cameraMatrix2, //相機2內部參數
	InputArray distCoeffs2,      //相機2畸變參數
	Size imageSize,                //圖像大小
	InputArray R,                    //相機1與相機2之間的旋轉矩陣
	InputArray T,                    //相機1與相機2之間的平移矩陣
	OutputArray R1,              //相機1與世界座標系之間的旋轉矩陣3*3
	OutputArray R2,              //相機2與世界座標系之間的旋轉矩陣
	OutputArray P1,              //相機1的投影矩陣3*4
	OutputArray P2,              //相機2投影矩陣
	OutputArray Q,               //視差到深度的映射矩陣4*4
	int flags = CALIB_ZERO_DISPARITY, //標誌位
	double alpha = -1,         //縮放係數
	Size newImageSize = Size(),  //新圖像大小
	Rect * validPixROI1 = 0, //有效像素區域1
	Rect * validPixROI2 = 0  //有效像素區域2
)

flags 缺省爲CALIB_ZERO_DISPARITY,也可以設爲0,設爲0時使每個相機的主點在校正後的圖像裏具有相同的座標。如果不設,圖像可以在水平和豎直方向上移動具有更大的可用區域。

校正映射函數

void cv::initUndistortRectifyMap 
(
	InputArray cameraMatrix,  //相機內參數
	InputArray distCoeffs,       //畸變係數
	InputArray R,                    //旋轉矩陣R1或R2
	InputArray newCameraMatrix, //投影矩陣P1
	Size size,                         //圖像大小
	int m1type,                      //數據類型
	OutputArray map1,         //x方向映射矩陣
	OutputArray map2          //y方向映射矩陣
)

remap

void cv::remap 
(
InputArray src,  //源圖像
OutputArray dst, //目標圖像
InputArray map1, //用於x座標的映射矩陣
InputArray map2, //y座標的映射矩陣
int interpolation, //插值標誌位,插值方法
int borderMode = BORDER_CONSTANT,  //邊界模式
const Scalar & borderValue = Scalar() //邊界爲常值時的像素值,缺省爲0,也就是黑點
)

棋盤格標定和校正

發佈了39 篇原創文章 · 獲贊 9 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章