Efficient and Robust Absolute Pose Estimation via Gravity-Prior-Driven Transformation Decoupling and Pose Refinement
Hu Cao, Qianyi Yang, Xinyi Li, Jiong Liu, Yinlong Liu, Alois Knoll
cs.CV
2026-09-01
A gravity prior reduces PnP to 4-DoF: vote on the 1-DoF yaw, then solve translation and refine. Inside ORB-SLAM2, KITTI APE RMSE falls from 16.40 to 9.36.
Absolute pose from 2D-3D correspondences is PnP. Real matches are full of outliers. RANSAC slows down and becomes brittle as the outlier rate climbs; globally optimal search is stuck in a 6-DoF space. An IMU almost always supplies gravity, so rotation about that axis is the only remaining angular degree of freedom and the problem drops from 6-DoF to 4-DoF. Prior gravity solvers often search 3-DoF translation first, while outliers are still in the set, so the 3D search stays expensive, and they lack a refinement written for the 4-DoF constraint.
This paper, from Southeast University, TUM, and City University of Macau, reverses the order: vote globally on the 1-DoF angle, estimate translation on a thinned set, then refine with a hidden-variable resultant.
After aligning gravity in the camera and world frames, rotation is an angle θ about the gravity axis composed with a fixed matrix that maps the two gravity vectors. A pair of correspondences cancels scale and translation and yields a trigonometric equation in θ only. N points give N(N-1)/2 pairs. Each pair votes into 360 bins on [-π, π]. The fullest bin is θ, and correspondences that land there often are treated as likely inliers.
With rotation fixed, translation is linear. RANSAC runs on the filtered set. Refinement aligns gravity with z, leaving cosθ and sinθ, eliminates translation in closed form, and obtains a quadratic in those two variables under x²+y²=1. The Lagrangian stationarity condition is the intersection of two conics. A hidden-variable resultant reduces it to a quartic; the root that minimizes the objective is kept.
On synthetic data, success is rotation error under 1° and translation error under 1.5. With N=1000 and noise σ=2.0, as outliers go from 10% to 80%, rotation and translation success stay clearly above RANSAC-wrapped Gao, AP3P, and EPnP, and above a gravity 4-DoF BnB solver. Noise hurts more than outliers; inside a moderate noise band, success is near 100%. Gravity bias from 0.5° to 5° grows both errors, with large failures once the bias is big.
Real tests on TUM RGB-D, ETH3D, and RobotCar use non-adjacent frames and ORB or SIFT matches. Accuracy is reported as curves, not per-dataset tables. At N=1000, single-thread runtime is about 8.05 seconds and 16 threads reach 0.91 seconds. Angle voting is quadratic and dominates. BnB averages about 30 seconds on ETH3D; this method about 1.47 seconds.
Dropped into ORB-SLAM2 in place of the stock PnP, KITTI absolute pose RMSE falls from 16.40 to 9.36 and relative pose RMSE from 1.029 to 0.539. Relocalization pulls a drifted trajectory back onto the point-cloud map.
Vehicles and robots already have gravity. Voting on a 1-D angle strips outliers before translation is touched, which is the cheap part of 4-DoF. The refinement is written for this constraint, not borrowed from generic PnP. Halving KITTI RMSE is evidence it can sit inside an existing SLAM stack, not only on synthetic plots.
There is no learned model and no training. The cost is O(N²) voting once correspondences get large.
Real-world accuracy lives in figures, so the comparable numbers that travel are KITTI and runtime. Gravity error becomes pose error; the paper does not ship a compensation for IMU noise. Single-thread N=1000 still takes seconds, so live use needs threads or downsampling. Bins are a 1° hard quantization; refinement can patch some of that, a wrong bin under heavy noise cannot. Code is promised after acceptance.