Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Camera Intrinsics

  • 又称: intrinsic parameters, intrinsic matrix
  • 类别: Foundations & spatial maths › Frames & transforms
  • 标签: camera-calibration, computer-vision, projective-geometry, sensors, 3d-perception

相机的内部参数,即焦距、主点和镜头畸变,它们把相机坐标系中的 3D 点映射到像素坐标。

定义

相机内参(camera intrinsics)是描述相机如何把来自其自身坐标系中 3D 点的光转换为像素位置的参数。在针孔模型中,它们汇集在一个 3×3 矩阵 K 中,包含以像素表示的焦距 fx 和 fy、光轴与图像相交处的主点 (cx, cy),有时还有一个倾斜项,对几乎所有现代传感器来说它都为零。相机坐标系中的点 (X, Y, Z) 投影到像素 u = fx·X/Z + cx 和 v = fy·Y/Z + cy。真实的镜头会引入畸变,通常用 Brown-Conrady 模型中的径向和切向系数建模,对广角镜头则使用专门的鱼眼模型。

内参通过标定来估计。常用的方法由 Zhang(2000)提出:从多个方向拍摄一个平面标定靶,例如棋盘格,并通过最小化重投影误差求解 K 和畸变系数;OpenCV、MATLAB 和 ROS 的相机标定工具都遵循这种方法。深度相机中存储的出厂标定通常足够好,可以直接使用,但应当从设备中读取,而不是靠猜测。内参会随分辨率、裁剪、变焦,有时还会随对焦而变化,因此一次标定只对进行标定时所用的图像模式有效。

内参不同于外参,后者描述相机相对于机器人或世界的位置。两者合在一起,给出从世界点到像素的完整投影。机器人处处都在使用内参:把深度像素反投影成点云,用 Perspective-n-Point 从图像关键点恢复物体位姿,在特征匹配之前对图像去畸变,以及渲染与真实相机相匹配的合成训练图像。不把内参放进学习模型,而是在之后的几何步骤中应用它们,可以让同一个网络适用于不同的相机。

为何重要

任何把像素与真实世界几何联系起来的测量都依赖内参。内参中的误差会使点云变形、使位姿估计产生偏差,并破坏仿真图像与真实图像之间的匹配,因此正确的内参是大多数机器人视觉的前提。

主要应用

  • 把深度图像反投影成点云
  • 用 PnP 进行物体和相机位姿估计
  • 在特征跟踪和视觉里程计之前对图像去畸变
  • 渲染与真实相机相匹配的合成训练数据
  • 立体校正和深度估计

实际应用

一个团队把他们的抓取系统从一台 RGB-D 相机换成另一台分辨率不同的相机。他们的关键点检测器输出像素坐标,位姿则使用相机矩阵通过 PnP 恢复。他们没有重新训练,而是从新相机的驱动程序中读取与实际使用的数据流分辨率完全对应的内参,把去畸变后的图像传给检测器,并更新 PnP 步骤中的 K。一个快速检查是把一个已知物体的 3D 模型按估计的位姿重投影到图像中;边缘的对齐误差在一两个像素以内,证实参数是正确的。后来他们为了提高速度把图像缩小一半时,也把 fx、fy、cx 和 cy 减半。

常见误解

  • K 中的焦距就是以毫米为单位的镜头焦距 — 它以像素表示,取决于传感器像素尺寸和图像分辨率
  • 图像缩放或裁剪后内参保持不变 — 缩放会改变焦距和主点,裁剪会使主点平移
  • 主点总是恰好位于图像中心 — 它通常接近中心,但可能偏离几个像素甚至更多
  • 在机器人学中可以忽略镜头畸变 — 它在图像边缘附近和广角镜头上影响最大,未校正的误差在这些地方可能很大

谁需要了解

  • 机器人视觉和感知工程师
  • 使用 RGB-D 相机进行操作的开发者
  • 生成合成训练数据的研究人员
  • 学习射影几何的机器人学学生

相关技术

  • OpenCV calibrateCamera
  • ROS camera_calibration
  • 针孔相机模型(Pinhole Camera Model)
  • Brown-Conrady 畸变模型(Brown-Conrady Distortion Model)
  • Kannala-Brandt 鱼眼模型(Kannala-Brandt Fisheye Model)

相关术语

  • Extrinsic Calibration
  • Perspective-n-Point
  • RGB Camera
  • Depth Camera
  • Point Cloud
  • Coordinate Frame

相关项目

  • pySLAM: Hybrid Python/C++ visual SLAM pipeline with classic and deep-learning front-ends
  • AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
  • MRPT: Comprehensive C++ toolkit for mobile robotics, SLAM, and sensor-based navigation
  • Gazebo: Industry-standard open-source robotics simulator with multi-physics and ROS integration
  • PULP-Dronet: Visual navigation for nano-drones with CNN inference onboard a PULP processor.
  • OpenWeedLocator: Low-cost Raspberry Pi weed detector that uses computer vision for precision spot spraying

视频

  • Intrinsic and Extrinsic Matrices | Camera Calibration: First Principles of Computer Vision
  • Linear Camera Model | Camera Calibration: First Principles of Computer Vision

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。