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 以瀏覽我們的開源機器人專案。