MLPnP 3D点到切平面的投影过程 📅 2026/7/15 0:21:01 这个残差函数是MLPnP算法的核心几何约束。它巧妙地绕开了传统PnP算法必须求解深度尺度这一难题将3D-2D的匹配关系转化为了纯粹的方向一致性约束。下面我把这个约束从几何直觉到数学推导再到代码落地完整地拆解给你看。5. 代码中的直观对应ORB-SLAM3在MLPnPsolver.cc的高斯-牛顿迭代中你看到的代码正是这个公式的直接翻译cpp// 1. 变换到相机坐标系 Vector3d p_cam R * p_i t; // 2. 构造切平面投影矩阵 W I - v*v^T Matrix3d W Matrix3d::Identity() - v * v.transpose(); // 3. 计算残差将点投影到切平面 Vector3d error W * p_cam; 几何本质总结这个残差函数在几何上测量的是“当前估计的3D点位置偏离观测光线Bearing Vector的垂直距离”。它把复杂的“透视投影”问题简化为了“将点投影到平面使误差最小化”的线性代数问题。正因如此MLPnP才能在不依赖特定相机模型针孔、鱼眼、全景的情况下仅凭方向向量 vivi 就能鲁棒地求解位姿。