Perspective-n-Point
- 別名: PnP
- カテゴリ: Sensing › Perception outputs
- タグ: pose-estimation, computer-vision, projective-geometry, 3d-perception, localization
物体上の既知の 3D 点 n 個と、それらの画像中の 2D 投影から、キャリブレーション済みカメラの物体に対する姿勢を求める問題。
定義
Perspective-n-Point(PnP)は、物体上の n 個の点の 3D 座標が既知で、画像中でのそれらの 2D ピクセル位置が見つかっており、カメラ内部パラメータも既知であるときに、カメラと物体の間の回転と並進を求める問題である。3D 点は計量的な単位で表されているため、解はスケールの曖昧さのない完全な計量的姿勢となり、しかも 1 枚の画像から得られる。カメラが地図に対して自己位置を推定する場合でも、目の前の物体の姿勢を推定する場合でも、同じ問題が現れる。
対応点は最低 3 組必要である。P3P 問題には最大 4 つの有効な解があるため、4 つ目の点を使って正しい解を選ぶ。点がさらに多ければ問題は過剰決定となり、ノイズを平均化できる。Lepetit、Moreno-Noguer、Fua(2009)による EPnP は、点を 4 つの仮想制御点の組み合わせとして表すことで、一般の場合を n に対して線形の時間で解く。実用的なパイプラインでは通常、誤った対応を除去するために RANSAC の中で使う最小ソルバーと、たとえば Levenberg-Marquardt 法を用いて再投影誤差を最小化する最終的な非線形の精密化とを組み合わせる。OpenCV の solvePnP と solvePnPRansac はこれらの手順を実装している。
PnP は学習型の姿勢推定器でよく使われるバックエンドである。DOPE のようなネットワークは物体の 3D バウンディングボックスの各頂点と重心の画像上の位置を予測し、PnP は物体の既知の寸法とカメラ内部パラメータを使ってそれらのキーポイントを 6-DoF の姿勢に変換する。幾何をネットワークの外に置くことで、同じモデルを別のカメラでも使える。精度は点の広がりと奥行きに依存する。すべての点が近接している場合や、カメラから遠い小さな平面上にある場合には、姿勢の推定は悪条件となり、2 つの似た解の間で反転することがある。これは小さな正方形のフィデューシャルマーカーで知られている曖昧さである。
重要な理由
PnP は、2D の検出結果から 3D の姿勢を得るための標準的な橋渡しである。フィデューシャルマーカーの追跡、地図に対する視覚的自己位置推定、拡張現実、そして把持のためのキーポイントベースの物体姿勢推定は、いずれもこれに依存している。
主な用途
- キーポイントからの 6-DoF 物体姿勢推定
- AprilTag や ArUco によるフィデューシャルマーカーの追跡
- 3D 地図に対するカメラの自己位置推定
- 視覚オドメトリと SLAM の初期化
- 拡張現実のオーバーレイとカメラトラッキング
実際の使われ方
ある把持ロボットは、合成画像で学習したキーポイントネットワークを使って、既知のシリアルの箱の 3D バウンディングボックスの 8 つの頂点と重心を検出する。検出ごとに、予測された 9 つのピクセルと、箱の寸法から得られる対応する 3D 点が、カメラの内部パラメータ行列とともに RANSAC PnP ソルバーに渡され、ソルバーは他と整合しないキーポイントを除外し、再投影誤差を最小化して姿勢を精密化する。カメラ座標系での姿勢はハンドアイキャリブレーションによってロボットのベース座標系に変換され、把持プランナーに送られる。チームは平均再投影誤差が数ピクセルを超える姿勢を棄却し、これにより頂点が遮蔽されて誤って予測された場合の大半が除かれる。
よくある誤解
- PnP には深度データが必要である — 既知の 3D 点と内部パラメータがあれば、1 枚の RGB 画像から計量的な姿勢を復元できる
- 3 点あれば姿勢は一意に決まる — P3P は最大 4 つの解を返しうるため、曖昧さをなくすにはさらに点が必要である
- 点を増やせば誤った対応は必ず解消される — 最小二乗ソルバーは外れ値に引きずられるため、RANSAC やロバストな損失関数が必要である
- PnP は ICP と同じである — PnP は 3D 点を 2D の画像観測に合わせ、ICP は 2 つの 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