Perspective-n-Point
- 又稱: PnP
- 類別: Sensing › Perception outputs
- 標籤: pose-estimation, computer-vision, projective-geometry, 3d-perception, localization
根據物體上 n 個已知的 3D 點及其在影像中的 2D 投影,求出已校正相機相對於該物體之姿態的問題。
定義
n 點透視(Perspective-n-Point,PnP)問題是:已知物體上 n 個點的 3D 座標,也已在影像中找到它們的 2D 像素位置,且相機內部參數已知,求相機與物體之間的旋轉與平移。由於 3D 點以度量單位表示,解是一個完整的度量姿態,沒有尺度上的歧義,而且只需要一張影像。不論是相機依據地圖為自己定位,還是估計前方物體的姿態,出現的都是同一個問題。
三組對應點是最低需求。P3P 問題最多有四個有效解,因此要用第四個點選出正確的解。點更多時,問題變成超定,雜訊可以被平均掉。Lepetit、Moreno-Noguer 與 Fua(2009)提出的 EPnP,把各點表示成四個虛擬控制點的組合,以與 n 成線性的時間求解一般情況。實務流程通常會結合放在 RANSAC 中、用來剔除錯誤對應的最小求解器,以及最後最小化重投影誤差的非線性精修,例如使用 Levenberg-Marquardt。OpenCV 的 solvePnP 與 solvePnPRansac 實作了這些步驟。
PnP 是學習式姿態估計器常見的後端。DOPE 等網路預測物體 3D 邊界框各角點與質心在影像中的位置,PnP 再利用物體的已知尺寸與相機內部參數,把這些關鍵點轉換成 6-DoF 姿態。把幾何計算留在網路之外,代表同一個模型可以搭配不同的相機使用。精度取決於點的分布範圍與深度:當所有點都擠在一起,或位於離相機很遠的小平面上時,姿態就會變得病態,並可能在兩個相似的解之間翻轉,這是小型方形定位標記的已知歧義。
為何重要
PnP 是從 2D 偵測到 3D 姿態的標準橋樑。定位標記追蹤、依據地圖的視覺定位、擴增實境,以及供抓取使用、以關鍵點為基礎的物體姿態估計,都仰賴它。
主要應用
- 以關鍵點進行 6-DoF 物體姿態估計
- 使用 AprilTag 與 ArUco 進行定位標記追蹤
- 相機相對於 3D 地圖的定位
- 視覺里程計與 SLAM 的初始化
- 擴增實境疊加與相機追蹤
實際應用
一台抓取機器人使用以合成影像訓練的關鍵點網路,偵測一個已知麥片盒 3D 邊界框的八個角點與質心。每次偵測時,九個預測像素以及由盒子尺寸得到的對應 3D 點,會連同相機的內部參數矩陣一起交給 RANSAC PnP 求解器;它捨棄與其餘點不一致的關鍵點,並以最小化重投影誤差來精修姿態。相機座標系中的姿態透過手眼校正轉換到機器人基座座標系,再送往抓取規劃器。團隊會拒絕平均重投影誤差超過幾個像素的姿態,藉此濾除大多數角點被遮擋而預測失準的情況。
常見誤解
- PnP 需要深度資料 — 只要已知 3D 點與內部參數,它就能從單張 RGB 影像還原度量姿態
- 三個點就能得到唯一的姿態 — P3P 最多可能回傳四個解,因此需要更多點來消除歧義
- 點越多一定能彌補錯誤的對應 — 最小平方求解器會被離群值拉偏,因此需要 RANSAC 或強健損失函數
- PnP 就是 ICP — PnP 將 3D 點與 2D 影像觀測對齊;ICP 則對齊兩組 3D 點集
誰需要了解
- 電腦視覺與機器人感知工程師
- 開發抓取用姿態估計的開發者
- SLAM 與視覺定位研究人員
- 使用定位標記的工程師
相關技術
- EPnP
- P3P
- RANSAC
- OpenCV solvePnP
- AprilTag
相關術語
相關專案
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
- 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
- GLIM: GPU-accelerated 3D lidar SLAM framework for any range sensor, from AIST