一、相机标定目的① 第一个目的就是获得相机的内参矩阵和外参矩阵。②第二个目的就是获得相机的畸变参数相机标定的目的是建立真实世界坐标与图像像素坐标之间的准确映射关系求解相机的内参、外参和畸变参数从而消除镜头畸变并实现图像测量、三维重建、目标定位和机器人视觉感知等任务。相机标定主要得到三个参数1内参Intrinsic Parameters描述相机自身的成像特性例如焦距 fx,fy主点光心(cx,cy)作用将相机坐标系中的三维点投影到图像坐标系。内参, 相机自身的几何属性内参矩阵Camera Intrinsic Matrix描述的是相机自身的成像特性它决定了相机如何将相机坐标系中的三维点投影到图像像素坐标系。内参矩阵通常表示为其中fx​x 方向焦距单位像素fyy 方向焦距单位像素cx,cy主点Principal Point即光轴与图像平面的交点一般接近图像中心内参矩阵如何计算见下面2外参Extrinsic Parameters描述相机与世界坐标系之间的位置关系包括旋转矩阵 R平移向量 t作用将世界坐标系转换到相机坐标系。 外参, 相机在世界坐标中的位置和姿态。可以理解为计算外参矩阵就是计算世界坐标系到相机坐标系之间的位置关系旋转R和平移t教材根据角点坐标与世界坐标的对应关系求外参。更准确地说利用角点的二维像素坐标和对应的三维世界坐标估计世界坐标系到相机坐标系的刚体变换R、t。内参 K相机自身参数焦距、主点等。外参 R、t相机相对于世界的位置和朝向。角点对应关系是求解内参和外参所利用的观测数据而不是外参本身。注意所以外参不是把世界坐标变成像素坐标。而是世界坐标(X,Y,Z)││ 外参(R,t)▼相机坐标(Xc,Yc,Zc)││ 内参(K)▼像素坐标(u,v)3畸变参数Distortion Coefficients包括径向畸变k1,k2,k3​切向畸变p1,p2作用对图像进行去畸变提高测量精度。4角点坐标□ ■ □ ■ □■ □ ■ □ ■□ ■ □ ■ □■ □ ■ □ ■角点就是□ ■■ □ X它们交汇的位置二、内参矩阵是如何计算的张正友标定法并不是直接计算 K而是间接求解。第一步拍摄多张棋盘格图片例如10~20 张每张棋盘格姿态不同旋转、平移不同这样可以提供足够的约束。第二步建立对应点每个角点都有世界坐标已知图像坐标角点检测得到形成大量3D→2D 对应关系。第三步计算单应矩阵 H由于棋盘格是平面Z0第四步由多个 H 求解内参 K张正友证明单应矩阵满足HK[r1,r2,t]K未知内参r1,r2旋转矩阵前两列t平移向量由于旋转矩阵具有两列互相垂直两列长度相等即利用多张图片产生的多个单应矩阵就能建立关于 KKK 的线性方程组然后求解出唯一的内参矩阵。第五步非线性优化初步求得 K 后再结合外参 R,t畸变参数以重投影误差最小为目标进行优化。优化目标是让计算得到的像素坐标尽可能接近真实检测到的角点坐标。通常采用Levenberg–MarquardtLM算法进行非线性优化。张正友标定整体流程拍摄棋盘格图片│▼图像预处理│▼角点检测│▼亚像素优化│▼得到每个角点像素坐标(u,v)│▼根据棋盘格尺寸建立世界坐标(X,Y,Z)│▼计算Homography│▼求相机内参、外参│▼计算畸变系数张正友标定法利用棋盘格标定板在得到一张标定板的图像之后可以利用相应的图像检测算法得到每一个角点的像素坐标 (u,v) 。张正友标定法将世界坐标系固定于棋盘格上则棋盘格上任一点的物理坐标W0 由于标定板的世界坐标系是人为事先定义好的标定板上每一个格子的大小是已知的我们可以计算得到每一个角点在世界坐标系下的物理坐标 (U ,V , W0)。我们将利用这些信息每一个角点的像素坐标 、每一个角点在世界坐标系下的物理坐标 (U ,V , W0)。来进行相机的标定获得相机的内外参矩阵、畸变参数。总结内参矩阵描述的是相机自身的成像参数包括焦距 fx、fy 和主点坐标 cx、cy​它用于将相机坐标系中的三维点投影到图像像素坐标系。张正友标定法首先利用棋盘格角点建立世界坐标与像素坐标的对应关系计算每幅图像的单应矩阵 H再利用多个单应矩阵和旋转矩阵的正交约束求解内参矩阵 K最后通过最小化重投影误差对内参、外参和畸变参数进行联合优化。重投影误差角点衍生指标面试重点流程用标定得到的 \(K、D、R、t\)把 3D 世界角点重新投影回图像得到预测像素角点误差预测角点坐标 和 实际检测图像角点 的欧氏距离合格标准平均重投影误差0.1 像素误差过大说明角点模糊、棋盘反光、标定姿态单一。常见问题与避坑1. findChessboardCorners 返回 false检测不到角点棋盘格只占画面很小区域、部分格子出画面图像过曝、反光、模糊棋盘格尺寸参数填反9×6 写成 6×9。2. 为什么必须亚像素角点整数像素角点存在 ±0.5 像素固有误差会直接导致重投影误差超标最终手眼标定定位漂移、抓取偏移。3. 世界角点 z 为什么恒等于 0张正友标定使用平面标定板所有角点在同一平面简化单应矩阵求解若使用三维标定块z 会有不同数值。4. 标定后角点坐标还能用来做什么solvePnP 实时解算物体位姿评估相机标定精度重投影误差手眼标定、3D 重建、视觉测量的基础观测数据。Q1obj_points 和 img_points 分别代表什么obj_points棋盘格内角点在标定板局部世界坐标系下的 3D 物理坐标全局固定 img_points棋盘格角点在图像上的 2D 像素坐标每张图片都不同。Q2一张标定图需要多少组角点对应关系9×6 棋盘格有 54 个内角点一张图提供 54 组 3D-2D 匹配对约束方程充足。Q3solvePnP 和 calibrateCamera 对角点的使用区别calibrateCamera多张图片的全部角点联合优化求解内参 畸变 每张外参solvePnP单张图片的角点已知内参、畸变只求解当前画面物体外参 R/t。Q4角点坐标误差会对机器人抓取造成什么影响角点定位不准 → solvePnP 解算的物体相机坐标系位姿偏移 → 手眼转换后的世界坐标漂移 → 机械臂抓取点位偏差工件抓空或碰撞。友情提示关于详细如何计算内参外参矩阵可以参考https://zhuanlan.zhihu.com/p/94244568本文章属于自己学习总结面试用哪有不对请指出。