相机标定是计算机视觉中的基础技术,就像给相机"配眼镜"一样,让我们能够准确理解相机看到的世界。
相机标定需要确定两类参数:
• 焦距:相机镜头的焦距长度
• 主点:光轴与图像平面的交点
• 畸变系数:镜头造成的图像扭曲程度
• 旋转矩阵:相机相对于世界坐标系的旋转
• 平移向量:相机在世界坐标系中的位置
1998年,张正友博士在微软研究院提出了一种基于平面棋盘格的相机标定方法,彻底改变了计算机视觉领域。
只需要一张打印的棋盘格标定板
无需昂贵的3D标定设备
标定精度可达亚像素级别
可以任意移动标定板进行标定
张正友标定法的核心思想是利用平面棋盘格在不同位置和角度下的图像来建立约束方程。
其中:
• K:相机内参矩阵
• [R | t]:外参矩阵(旋转和平移)
• [u, v]:图像坐标
• [X, Y, Z]:世界坐标
张正友标定法通过多种策略来初始化相机内参矩阵,为后续优化提供良好的初值。
对每张标定图像,通过2D-3D点对应关系计算单应矩阵H,然后通过多组单应矩阵求解内参矩阵K。
基于图像几何的简单假设:主点位于图像中心 (cx=w/2, cy=h/2),焦距相等 (fx=fy=w)。
利用标定板的已知几何信息和相机的物理参数:fx=f/dx, fy=f/dy(其中f为物理焦距,dx/dy为像素尺寸)。
建立平面到图像的投影变换
要求特征点在同一平面上
描述两幅图像间的几何关系
用于立体视觉系统
初始线性解只是起点,考虑镜头畸变后需要采用非线性优化方法获得高精度标定结果。
最常用的非线性优化方法,结合了高斯-牛顿法和梯度下降法的优点
全局优化算法,适用于复杂的多参数优化问题
概率型全局优化算法,能够避免局部最优解
不同相机分辨率下的标定精度表现,为实际应用提供参考数据。
圆心误差:0.06像素
标准差:0.04像素
适用场景:一般工业应用
圆心误差:0.4像素
标准差:0.3像素
适用场景:高精度测量
标定板的姿态分布直接影响参数估计的稳定性:
15°-45° 倾斜角度
覆盖图像各个区域
正对相机 (0°)
过大倾斜 (>60°)
15°-35°
适中的倾斜角度确保参数估计稳定
正、前倾、后倾
左倾、右提、右倾、左提
近视场、对焦距离
远视场
张正友标定法在OpenCV中的具体实现和关键函数调用。
功能:计算相机内参数矩阵、畸变系数和外参数
输入:世界坐标点、图像坐标点、图像尺寸
输出:内参矩阵K、畸变系数、旋转和平移向量
说明:得到的旋转和平移向量表示世界坐标系到相机坐标系的转换
功能:根据标定结果计算重投影点坐标
应用:验证标定精度,计算重投影误差
功能:计算双目相机系统的外参数
输出:两相机间的旋转矩阵R和平移向量t
制作或打印一个黑白相间的棋盘格标定板,确保方格大小已知且精确。
用待标定的相机拍摄标定板在不同位置、不同角度的图像,通常需要10-20张图像。
使用Harris角点检测或其他算法精确提取每张图像中棋盘格的角点坐标。
根据世界坐标与图像坐标的对应关系,建立线性方程组。
通过最小二乘法或其他优化方法求解相机内参矩阵。
对于每张图像,计算相机相对于标定板的位姿参数。
估算径向畸变和切向畸变参数,完成完整的相机模型。
使用重投影误差等指标验证标定结果的准确性。
体验完整的张正友标定流程,实时查看标定过程和结果:
📏 重投影误差:0.23 像素
🔄 畸变系数:k1=-0.12, k2=0.08
📸 使用图像:15 张
点击下方的标定板查看标定原理:
💡 提示:标定板的方格大小必须精确已知,通常为20-30mm
机器人视觉:机器人需要准确抓取物体
自动驾驶:车载摄像头需要精确测距
工业检测:产品尺寸的非接触测量
医学影像:内窥镜等医疗设备的标定
增强现实:虚拟物体的精确叠加
三维重建:从多个视角重建物体的3D模型
方格大小:20-30mm
误差要求:≤ 1mm
平整度:≤ 0.1mm
对比度:黑白清晰分明
打印精度:600dpi以上
材质:硬质板材
推荐角度:15°-45° 倾斜范围
避免角度:正对相机(0°)或过大倾斜(>60°)
覆盖要求:图像各个区域都要有标定板出现
充满程度:标定板占据图像2/3区域
图像数量:至少3张,推荐10-20张
光照条件:均匀无阴影,避免过曝和欠曝
重投影误差 < 0.3px
可用于高精度测量
重投影误差 > 0.7px
建议重新采集数据