Closed-form Bayesian homography estimation from noisy point correspondences
Hanne Beuter, Sebastian Dorn
cs.CV, stat.ME
2026-09-14
奥格斯堡应用技术大学给出含噪声点对应的单应闭式后验均值与协方差,四点拼接上Skyline测试RMSE从DLT的47.42像素降到8.92像素,并带参数1σ误差条。
单应矩阵把同一平面在两个视角下的点对应起来,图像拼接、标定、BEV、视觉 SLAM 都用它。常用的 Direct Linear Transform 给出一个点估计,不带参数协方差,也吃不进「这块变换大概是仿射」这类先验。噪声一大,四点 DLT 会漂。后续标定和三维重建会把这份误差接着传下去。
已有贝叶斯做法两条路:视频里用卡尔曼滤波吃时序,或者对相机参数做 MCMC。前者要连续帧,后者算得慢。缺的是:只有一批静态点对应时,单应及其不确定性能不能闭式算出来。
奥格斯堡应用技术大学把单应当成矩阵值随机变量。观测写成齐次坐标下的线性式 \(di = R si + ni\),噪声高斯,协方差可以按点不同。先验取矩阵正态(行、列各一张协方差),共轭,后验仍是高斯。信息函数对 \(R\) 最高二次,MAP 就是后验均值,写成 Wiener 滤波闭式:把 \(\sumi (si si^\top)\otimes Ni^{-1}\) 加上先验精度,再去乘噪声加权的 \(\sumi si \otimes Ni^{-1} di\)。
各向同性白噪声再加各向同性先验时,公式收成一次 3×3 求逆。没有先验、各点噪声相同,进一步变成 \((\sum di si^\top)(\sum si si^\top)^{-1}\),噪声大的点自动贡献接近零。后验协方差是信息函数的逆 Hessian,点数增加则收缩,噪声为零则协方差为零。
像素平面上的噪声要先透视除法,模型变非线性。做法是把投影分量 \(w\) 和 \(R\) 暂时拆开,交替用同一套 Wiener 滤波估 \(R\) 和 \(1/w\),用 DLT 或单次贝叶斯当初值,相对变化掉到 \(10^{-6}\) 停。这是迭代补丁,不是新的闭式。
合成实验:已知射影单应,像素噪声 \(\sigman\) 从 0.01 扫到 0.10,每档 100 次。论文只给了 RMSE 曲线,没列表。迭代贝叶斯全程低于 DLT,单次贝叶斯夹在中间;噪声越大,差距越大。\(\sigman=0.04\) 时,100 次平均的迭代贝叶斯单应贴近真值,DLT 参数散、有离群。
真实拼接用 SIFT 对应,故意只用四点,不加 RANSAC,再往目标点加高斯噪声。Skyline 上 \(\sigman=10\) px,DLT 测试点 RMSE 47.42 px、1 ms;迭代贝叶斯 184 步、2.18 ms,降到 8.92 px。vgraffiti 上 \(\sigman=5\) px,16.95 px 降到 14.11 px,但要 1507 步、1679 ms。River 17.03→11.44 px。Restaurant 277.45→235.88 px,两边都不可用。Palazzo 14.48→11.48 px。
| 场景 | DLT RMSE (px) | 迭代贝叶斯 RMSE (px) |
| AANAP/skyline | 47.42 | 8.92 |
| HPatches/vgraffiti | 16.95 | 14.11 |
| OBJ-GSP-03 river | 17.03 | 11.44 |
需要把单应不确定性传给下游(标定、拼接拒识、安全相关感知)时,闭式后验均值加协方差比 MCMC 便宜,也不要求视频。线性齐次噪声模型可以直接用;像素噪声要走迭代。这是概念验证,还不能替换 OpenCV 里带 RANSAC 的 findHomography。四点加人工噪声的设置让 DLT 特别脆弱,收益不能外推到常规多点稳健估计。
作者自己把像素噪声迭代版叫 PoC,下一步才是「直接贝叶斯」和认真基准。对照只有 DLT,没有 RANSAC、MAGSAC,也没有学习式单应。先验方差靠经验挑,Skyline 用 \((V\otimes U)=\mathrm{diag}(0.1)\),换一组数结果会变。vgraffiti 跑到 1.7 秒,闭式的速度优势在非线性分支上没保住。Restaurant 仍超过 200 px。四点是单应的最小配置,也是 DLT 最不稳的配置。高斯加性噪声覆盖不了错配。摘要里的医学、自动驾驶场景一篇都没测。