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