JA EN ZH

相机标定基础 - 内参与畸变校正实用指南

· 9 分钟阅读

什么是相机标定 - 为什么需要它

相机标定是确定相机内部参数(焦距、主点、畸变系数)的过程。这些参数描述了三维世界中的点如何映射到二维图像平面上。准确的标定是计算机视觉中测量、三维重建、增强现实等应用的基础。

为什么需要标定:所有真实相机的镜头都会引入畸变(直线变弯曲);不同相机的焦距和传感器尺寸不同,影响投影关系;精确的测量和三维重建要求已知相机的精确几何模型。

标定的应用场景:自动驾驶中的障碍物距离估计、工业检测中的尺寸测量、AR 应用中虚拟物体的正确放置、全景图像拼接中的畸变校正、立体视觉中的深度计算。

针孔相机模型 - 投影的数学描述

针孔相机模型是描述三维到二维投影的基本数学模型。假设光线通过一个无限小的孔(针孔)投射到成像平面上。

内参矩阵 K:3x3 矩阵,包含焦距(fx, fy,以像素为单位)和主点坐标(cx, cy,图像中心的像素位置)。将相机坐标系中的三维点投影到像素坐标。

外参:旋转矩阵 R(3x3)和平移向量 t(3x1),描述相机在世界坐标系中的位姿。将世界坐标转换为相机坐标。

投影方程s * [u, v, 1]^T = K * [R | t] * [X, Y, Z, 1]^T。其中 (X,Y,Z) 是世界坐标,(u,v) 是像素坐标,s 是缩放因子。

针孔模型的局限:不考虑镜头畸变(真实镜头会弯曲直线)、不考虑景深(所有距离都清晰)、不考虑光学像差。实际应用中需要在针孔模型基础上添加畸变模型。

镜头畸变模型 - 径向畸变与切向畸变

真实镜头会引入两种主要畸变:径向畸变和切向畸变。

径向畸变:由镜头的球面形状引起。分为桶形畸变(图像边缘向外膨胀,广角镜头常见)和枕形畸变(图像边缘向内收缩,长焦镜头常见)。用多项式模型描述:r_distorted = r * (1 + k1*r² + k2*r⁴ + k3*r⁶),其中 r 是到图像中心的距离,k1/k2/k3 是畸变系数。

切向畸变:由镜头与传感器不完全平行引起。使图像产生倾斜效果。用两个参数 p1、p2 描述。通常比径向畸变小得多。

OpenCV 畸变模型:使用 5 个参数 (k1, k2, p1, p2, k3) 描述畸变。对于鱼眼镜头,使用等距投影模型(4 个参数 k1-k4)。

畸变的影响:在图像边缘最明显(距中心越远畸变越大)。对于普通镜头,中心区域畸变可忽略;对于广角和鱼眼镜头,畸变非常显著,必须校正。

Zhang 标定法的操作步骤

张正友标定法(Zhang's Method)是最广泛使用的相机标定方法,使用平面棋盘格图案作为标定板。

准备工作:打印高质量的棋盘格图案(建议 9x6 或 11x8 内角点),贴在平整的硬板上。确保打印精度(方格尺寸误差小于 0.1mm)。

拍摄标定图像:从不同角度和距离拍摄 15-25 张棋盘格照片。覆盖图像的各个区域(不要只拍中心)。包含不同的倾斜角度(15-45°)。确保棋盘格完全在画面内且清晰。

角点检测:使用 OpenCV 的 findChessboardCorners() 检测棋盘格内角点。cornerSubPix() 进一步精确到亚像素精度。检测失败的图像应排除。

标定计算cv2.calibrateCamera() 输入所有图像的角点坐标和对应的世界坐标,输出内参矩阵 K、畸变系数和每张图像的外参。

评估精度:计算重投影误差(将三维点用标定结果投影回图像,与检测到的角点比较)。好的标定重投影误差应小于 0.5 像素,优秀的小于 0.1 像素。

畸变校正的实现与应用

标定完成后,使用获得的参数对图像进行畸变校正。

OpenCV 畸变校正cv2.undistort(img, K, dist_coeffs) 一步完成校正。或使用 initUndistortRectifyMap() + remap() 两步法,预计算映射表后可以高速处理多张图像。

校正后的图像特征:直线恢复为直线(最直观的验证方法);图像边缘可能出现黑色区域(畸变校正后的有效区域小于原图);可以选择裁剪黑边或保留完整校正区域。

应用场景

  • 测量应用:校正后的图像中像素距离与真实距离成正比,可以进行精确测量
  • 拼接应用:校正畸变后的图像更容易进行特征匹配和拼接
  • AR 应用:正确的相机参数确保虚拟物体与真实场景对齐
  • 立体视觉:双目标定后进行极线校正,使对应点搜索简化为一维问题

高精度标定技巧与故障排除

提高标定精度和解决常见问题的实用建议。

提高精度的技巧

  • 使用更大的标定板(覆盖更多图像区域)
  • 增加拍摄数量(20 张以上)
  • 确保标定板绝对平整(弯曲会引入系统误差)
  • 覆盖图像的边缘区域(畸变在边缘最大,需要更多约束)
  • 使用高分辨率图像和精确的亚像素角点检测
  • 固定光圈(改变光圈会轻微改变焦距)

常见问题

  • 重投影误差过大(>1 像素):检查标定板平整度、排除模糊图像、增加图像数量
  • 角点检测失败:调整光照避免反光、确保对比度足够、检查棋盘格尺寸参数是否正确
  • 校正后图像扭曲:可能是标定板尺寸参数错误或角点顺序不一致

在线标定:对于需要实时更新标定的场景(如温度变化导致焦距漂移),可以使用场景中的已知几何特征(如建筑物的直线)进行在线自标定。

Related Articles

单目深度估计技术与应用 - 从单张图像推断深度

从 MiDaS 和 DPT 模型到自动驾驶和 AR 应用的深度图生成系统指南。涵盖原理到实际实现。

全景拼接算法深度解析 - 从特征检测到无缝融合

深入解析全景图像拼接的完整流程,涵盖特征匹配、单应性估计、图像变形、曝光补偿、接缝查找和多频段融合。

立体视觉与距离测量 - 从视差恢复 3D 信息

详解立体视觉的原理,从对极几何到立体匹配算法 (SGM、深度学习),涵盖视差图到 3D 点云的转换和实际系统搭建。

图像去模糊原理与实践 - 从运动模糊到散焦恢复

系统讲解图像去模糊技术,涵盖维纳滤波、盲反卷积以及最新深度学习方法的实现细节。

工业检测中的图像处理 - 从外观检查到尺寸测量

系统讲解图像处理在工业检测中的应用。涵盖缺陷检测、尺寸测量、表面检查和深度学习方法。

透视校正原理与实践 - 精确修复建筑照片畸变

详解透视畸变的成因与校正方法,从光学移轴镜头到 Lightroom/Photoshop 软件校正,再到 OpenCV 编程实现。

Related Terms