文章目录一、单目标定得到什么① 内参Intrinsic② 畸变参数Distortion③ 每张图片的外参Pose二、双目标定得到什么三、最大的区别四、OpenCV 返回值也能看出来五、总结不完全一样但双目标定包含单目标定。可以这样理解单目标定解决的是每个相机自己长什么样双目标定解决的是两个相机之间是什么关系。一、单目标定得到什么对于一个相机标定得到① 内参Intrinsic描述相机自身成像特性K [ f x 0 c x 0 f y c y 0 0 1 ] K \begin{bmatrix} f_x0c_x\\ 0f_yc_y\\ 001 \end{bmatrix}Kfx000fy0cxcy1包括焦距 (f_x,f_y)主点 (c_x,c_y)以及② 畸变参数Distortion例如k1、k2、k3径向畸变p1、p2切向畸变注OpenCV 实际返回顺序是(k1, k2, p1, p2, k3)径向与切向是交错排列的不是先全部径向、再全部切向。③ 每张图片的外参Pose这里很多人容易误解。单目标定也有外参但它表示的是标定板相对于相机的位置和姿态。对于每张图片都会得到Rt例如R,t第1组R,t第2组R,t第3组标定板 第1张相机标定板 第2张标定板 第3张所以单目标定没有一个固定外参。每拍一张图都会重新算一组。二、双目标定得到什么双目标定首先会分别做左相机K_left / Dist_left右相机K_right / Dist_right这和单目标定完全一样。然后增加一步计算R, T固定外参左相机 Left右相机 Right也就是左相机到右相机的固定变换。OpenCV 的方向约定是把点从左相机坐标系变换到右相机坐标系即X r i g h t R ⋅ X l e f t T X_{right}R\cdot X_{left}TXrightR⋅XleftT例如R 两个相机坐标系之间旋转 T 两个相机中心之间平移这就是大家常说的Stereo Extrinsic三、最大的区别单目标定的外参外参随每张图而变标定板 Board相机 Camera它随着拍摄变化。例如第1张 Board 在这里 第2张 Board 又换地方了所以外参一直变。双目标定的外参外参固定不变左相机 Left右相机 Right这是两个相机安装好的位置关系。只要相机没拆永远一样。例如理想的完全平行安装示意Baseline 60 mm R ≈ 单位矩阵 T [60 0 0]注意真实相机装配存在公差标定出的 R几乎不会是严格的单位矩阵只会接近单位阵。严格单位阵是理想假设或者是极线校正rectification之后才有的状态——正是靠后续的校正才把左右两图摆成严格行对齐。这组参数只要相机不拆就一直不变。四、OpenCV 返回值也能看出来calibrateCamera()返回K Dist rvecs tvecs其中rvecs/tvecs 表示 Board → Camera而且有很多组。stereoCalibrate()返回K1 Dist1 K2 Dist2 R T E F其中E本质矩阵Essential描述标定坐标系下的极线约束F基础矩阵Fundamental描述像素坐标系下的极线约束这里的R T表示Left Camera ↓ Right Camera只有一组。五、总结项目单目标定双目标定左相机内参✅✅右相机内参❌需单独标定✅畸变参数✅✅标定板→相机外参✅每张图一组✅每张图参与联合优化通常不作主要返回值左相机→右相机外参❌✅固定一组是否能做去畸变✅✅是否能做双目测距/三角化❌单帧纯单目无绝对尺度✅一句话概括单目标定得到的是相机自身参数内参、畸变以及每张标定图中标定板相对于相机的姿态外参每张都不同。双目标定不仅得到左右相机各自的内参和畸变还会估计左右相机之间固定的外参R、T。正是这组固定外参使得双目系统能够进行极线校正、立体匹配和三角测量来恢复三维深度。