三级复合射线把未见折反射相机的角度误差从 75.7° 降到 1.12°

OmniRay: Camera-Agnostic Monocular 3D Reconstruction with Composite Ray Fields

Namitha Guruprasad, Abhay Yadav, Cheng Peng, Rama Chellappa, Anand Bhattad

cs.CV

2026-10-23

单张图无需相机内参,OmniRay 用径向基加两级残差合成射线并重建点云:见过的相机射线误差 0.14°,训练未见的折反射相机 1.12°,同数据微调的 UniK3D 为 6.34° 与 75.7°。

这篇在解决什么

单目三维重建要给每个像素一个空间点。近两年的前馈模型默认针孔相机,鱼眼和全景上几何会歪。视场过了 90°,针孔表达不了光轴侧面的射线;先标定再去畸变,会裁掉视场,或把边缘拉扁,深度模型在那里给出低置信预测。

直接预测逐像素射线之后,接下来卡在射线怎么参数化。UniK3D 用同一组球谐基同时描述镜头的整体投影和更细的偏差。近似径向对称的镜头,一条随图像半径单调上升的入射角曲线就够。2:1 等距柱状全景里,离图像中心更近的点入射角可以更大,单调曲线排不出这个顺序。

方法

OmniRay 只处理中心相机,所有视线交于一个光心。每个像素拆成单位射线 d 和径向距离 ρ,点是 P = ρ d。预测的是沿射线的距离。垂直深度在射线接近 90° 时分母趋近 0,超过 90° 还会变号。推理只输入图像,不给内参,也不给相机类型。

编码器是 DINOv2 ViT-L/14。射线分三级,后一级在球面上把前一级转动一个角度,残差头零初始化。

距离头是 DPT,融合编码器第 4、11、17、23 块,softplus 保证 ρ 为正。射线损失同时看最终射线和两个中间场,外围和误差最大的 5% 像素加权。点云先按平均点范数归一化,消掉全局尺度,射线偏了点也会偏。

训练先只开射线模块并按级激活,再端到端接上距离头。数据由 2D3DS、360Loc 全景渲染成透视、鱼眼和全景,并随机采样单调径向轮廓,实心和环形视场都覆盖。靠近留出几何的样本被拒绝。GoPro 鱼眼和 Nayar 折反射(抛物面镜加正交投影,约 40° 到 155° 的环带)整类不进训练集。

结果

训练之前先把每种表示拟合到解析真值射线上。径向基在鱼眼上 0.002°,等距柱状全景停在 22.8°,结点从 16 加到 32 也几乎不动。球谐(L=7)把全景降到 0.641°,鱼眼却有 0.276°,比径向基差约两个数量级。加上球谐残差后,鱼眼、全景、折反射为 0.075°、0.217°、0.174°,紧凑表示里只有这一档在三种几何上都低于 0.25°。

主实验对照 GeoCalib、AnyCalib、Depth Anything 3,以及在同一批全景上微调过的 UniK3D。射线误差取平均夹角,Chamfer 距离按场景平均点范数归一化后取中位数,每张图做中位尺度对齐。

设置OmniRay 射线 / CDUniK3DDA3
见过(针孔/鱼眼/全景)0.140° / 0.01796.336° / 0.076033.028° / 0.1999
留出折反射1.120° / 0.013175.702° / 0.5948121.566° / 1.0412
留出 GoPro5.533° / 0.03926.342° / 0.045416.637° / 0.1097
未见域 PanoCity1.350° / 0.024021.220° / 0.212050.533° / 0.3677
未见域 CO3Dv22.967° / 0.03802.676° / 0.02772.041° / 0.0288

4500 张汇总上,射线误差 1.414°,UniK3D 为 20.211°,DA3 为 47.457°;相对 CD 为 0.0212,对照 0.1736 和 0.3501;10 cm 点云 F-score 为 0.499,UniK3D 为 0.193。

去掉随机镜头增强,见过相机仍是 1.385°,折反射和 GoPro 升到 30.867° 和 7.965°。射线注入 DPT 各尺度后方向不一致,最终模型未采用。只训射线模块时,分阶段三级模型在全景、鱼眼、折反射上为 0.399°、1.322°、1.538°。VGGT 初始化的针孔误差 0.330°,另外四类更差。

CO3Dv2 是物体中心图像,COLMAP 真值大约覆盖 12% 像素。OmniRay 在这里落后:AbsRel 0.0889,DA3 为 0.0573,UniK3D 为 0.0478;F-score 0.173,对照 0.282 和 0.293。

为什么重要

Depth Any Camera 和 UniDAC 把图像变到等距柱状图再估深度,这一步要内参。OmniRay 推理只吃一张图,给出相机坐标系里的点云,尺度不定。相对微调后的 UniK3D,留出折反射从 75.7° 落到 1.12°,街景域 PanoCity 从 21.2° 落到 1.35°。

针孔物体上它不如 DA3。GoPro 只从 6.34° 降到 5.53°,10 cm F-score 从 0.235 掉到 0.215。相机类型未知、镜头可能很怪时值得跟;已有标定的针孔流水线不必换模型。输出不能直接当测距。

局限与存疑

训练图像接近地面拍摄,地平线大体对齐。地平线靠近画面上方的航拍全景上,预测射线只盖住前方一块有界区域,没有铺满视球。拍摄高度和相机朝向同样限制泛化。多视重建留到了后续工作。

指标都经过每张图的中位尺度对齐,比的是形状。和 DA3、GeoCalib、AnyCalib 的差距还混着训练分布:UniK3D 在同样的 2D3DS 与 360Loc 全景上微调过,另外三家没有。留出相机和 PanoCity 更接近公平对照。

GoPro 只排除入射角曲线全程相差 15° 以内的轮廓,离训练分布多远没有另给度量。非单视点相机不在假设内。拟合上界和网络误差相差一个数量级以上,容量没有吃满。CO3Dv2 上 12% 像素的真值覆盖对落后的影响,正文没有拆开。

术语

原文与代码

社区讨论

相关论文

全部论文解读