Perspective-Aligned AR Mirror with Under-Display Camera
Snap Inc.; Columbia University
一句话总结
把相机放到透明显示屏的正后方,用一套基于物理成像模型的图像复原算法消除屏幕带来的画质退化,从而做出一面「视角对齐」的 AR 魔镜——用户看到的自己就像真实镜子里一样正对着自己,而不是被侧置相机拍出的歪斜视角。
研究背景
AR 魔镜(大尺寸屏幕 + 相机,实时把增强后的画面显示出来模拟镜子)在虚拟试衣等零售场景已有商用潜力。但现有系统有一个根本性的体验缺陷:相机只能放在屏幕的上方或侧边,而用户习惯站在屏幕正中,于是相机总是从一个倾斜的角度拍摄用户,无法呈现真实镜子那种「正对自己、有眼神接触」的视角。
一个自然的想法是:能否把相机放在屏幕正中央、但藏在屏幕背后?借助近年出现的透明显示屏(成排的 OLED 像素之间留有透光缝隙),这在物理上是可行的。但把相机紧贴在屏幕后方几毫米处时,微米级的像素结构会对成像造成多种退化。
已有的屏下相机(UDC)研究主要面向手机小屏幕,且通常假设拍摄时屏幕关闭、相机垂直于屏幕。本文面向的是大尺寸屏幕的交互场景,带来一组此前未被充分研究的新挑战。
方法
整体框架
系统的核心是「先建模、再复原、后成像」的完整链路:从相机的 12-bit RAW 数据出发,先做 wire 校正与去马赛克,再送入复原网络去除背散射、模糊与噪声,最后经过白平衡/锐化/时域平滑等后处理,叠加 AR 特效并显示。整条流水线在双 GPU 上以 30fps 运行,延迟约 24ms。
flowchart LR
A[RAW 数据] --> B[Wire 校正<br/>逐像素除法]
B --> C[双线性去马赛克]
C --> D[复原网络<br/>去背散射/模糊/噪声]
D --> E[拼接·相机取景·<br/>白平衡·锐化·时域平滑]
E --> F[AR Lens 渲染]
F --> G[显示]
关键设计一:物理成像模型
作者系统推导了「相机置于大屏之后」的成像模型:
\[y = [(x * k) + b] \odot w + n\]其中 \(y\) 是拍摄到的退化图像,\(x\) 是待复原的清晰图像,\(*\) 表示使用空间变化卷积核的卷积,\(\odot\) 表示逐元素(Hadamard)乘积。四类退化分别是:
- \(k\):由衍射造成的、大支撑、空间变化的点扩散函数(PSF,模糊);
- \(b\):由玻璃夹层多次反射与散射造成的加性背散射(backscatter)——这是此前工作从未讨论过的退化;
- \(w\):由 OLED 像素遮挡造成的乘性强度调制(wire pattern,条纹伪影);
- \(n\):图像噪声(透明屏损失约 62% 光量,散粒噪声更明显)。
与手机 UDC 的关键区别来自三条假设:(1) 曝光期间像素始终点亮(避免大屏在 60Hz 下开关屏导致降到 30Hz 的闪烁),因此背散射不可回避;(2) 相机可向下倾斜,以便用更小 FOV、更低分辨率的现成镜头拍到全身并保持眼神接触;(3) 大屏像素更大,wire 伪影更显著。
关键设计二:物理标定与数据合成
由于该装置几乎无法直接采集配对的清晰真值,作者采用基于物理的合成数据,按模型逐步加退化:
- Wire 标定:在屏前放一块 LED 面板拍全白场景,得到 wire 图,其局部呈小幅正弦调制;推理时直接把拍摄图像除以该 wire 图即可去除,作为预处理(而非像以往工作那样让网络盲学)。
- Backscatter 标定:用黑布罩住相机与屏幕,采集只含背散射的图像,并将其直接叠加到合成图像上让网络学习去除;由于相机正前方像素亮度高时背散射很强,特意把 1/3 图像的亮度调高来平衡数据集。
- PSF 标定:在 2 米外放置近似单像素宽的白光 LED,通过逐步增大曝光采集 3 通道 HDR PSF,在采样位置标定后在全图插值。
- 噪声标定:按已有物理噪声模型分别标定暗噪声、光子噪声与高斯噪声。
关键设计三:注入背散射先验的复原网络
作者观察到背散射是最主要的退化,而普通卷积网络因其空间不变性难以应对。网络因此设计为两分支:图像复原分支(提取深层特征、去模糊去噪)与背散射预测分支(估计背散射分布并从预复原结果中减去)。两分支共享编码器与残差连接,分别由清晰图像与背散射真值监督。
- 编解码器各由 4 个 NAFNet block 构成(含 SimpleGate 激活),解码器每个 block 后接 SFTLayer;
- 关键在于把 backscatter mask 作为条件信息 输入每个 SFTLayer,使模型能自适应空间变化、有效去除背散射;
- 网络轻量:输入 1152×1152 时约 8.63M 参数、225.5 GFLOPs;
- 变体 Ours_2f 把连续两帧堆成 6 通道输入,利用人体与背散射光流相互独立这一线索进一步分离二者,效果更好。
实验结果
作者采集了两个真实数据集:Human-TV(用 70” 电视播放人体动作视频,屏下相机与旁置相机同时录制,经单应变换与颜色归一化后由旁置相机提供真值)与 Human-Real(真实人体动作,旁置相机因视差仅作主观参考)。在有真值的 Human-TV 上与所有可获取代码的 UDC 复原方法、两种去雾方法及通用复原方法 Restormer 做了对比(均用本文数据集重训以公平比较)。
| 方法 | PSNR ↑ | SSIM ↑ | LPIPS ↓ |
|---|---|---|---|
| Input | 21.50 | .7654 | .2926 |
| D.a.g.f. | 25.00 | .8003 | .2104 |
| DISCNet | 23.01 | .8255 | .1246 |
| MIMO-UDC | 23.55 | .8504 | .1645 |
| UDCUNet | 23.79 | .7727 | .1654 |
| BNUDC | 24.59 | .8432 | .1576 |
| Restormer | 25.00 | .8329 | .1280 |
| Ours_1f | 32.32 | .9273 | .1151 |
| Ours_2f | 33.46 | .9314 | .1085 |
| Ours w/o Bal. Bksc | 25.20 | .8362 | .1592 |
| Ours w/o Bksc Guid. | 29.34 | .8443 | .1154 |
单帧的 Ours_1f 已显著超过所有已有方法,双帧 Ours_2f 进一步提升。消融实验表明:一旦去掉「平衡的背散射数据增强」或「网络中的背散射引导」,性能均大幅下降,验证了两项围绕背散射的设计各自的作用。
用户研究方面,作者用同一显示装置、仅改变相机位置,将本文屏下相机(UDC)方案与传统旁置相机(SCD)方案做直接对比。结果显示:UDC 在图像质量各维度上与 SCD 相当甚至更好(说明处理流水线没有牺牲画质),而在整体体验上被显著更多参与者偏好;在视频会议场景中,UDC 也带来更自然、更舒适的交流体验。
亮点与局限
亮点:
- 首次系统建模了「相机置于大屏之后」的成像过程,尤其揭示并处理了前人未讨论的背散射与仅被略提的 wire 伪影;
- 用「物理预处理(除法去 wire)+ 数据驱动网络(去背散射)」的分工,既简洁又契合物理;
- 不只停留在算法,而是完整落地了一台机械稳固、实时运行的 AR 魔镜系统,并用用户研究证明「视角对齐」确实带来体验提升(获 SIGGRAPH Asia 2024 最佳论文奖)。
局限(作者自陈):
- 实时运行仍需两块高端 GPU,成本高、部署受限,未来可用知识蒸馏/NAS/量化等提效;
- 单相机只能对中央、平均身高的用户提供近似对齐视角,极高/极矮或站在角落的用户视角不完美,未来可用屏下相机阵列 + 新视角合成实现真正的镜面体验;
- 多步标定需在每台相机上执行,限制量产,可发展自动标定(如在屏上显示标定图案、利用背散射差异估计相机位姿),并进一步支持可上下移动的电动相机以适配不同身高。
延伸思考
这项工作的巧妙之处在于把一个看似纯粹的「体验/交互」问题(镜中视角不对齐)转化为一个「计算成像」问题(屏下相机复原),再用完整的软硬件协同来闭环。它也提示了一个通用范式:当硬件放置带来新的、可标定的物理退化时,与其让网络盲学,不如把可解析的部分(如 wire 的乘性调制)用物理预处理精确剥离,把剩下难以解析的部分(如背散射)交给带物理先验条件的网络——这种「能算的就算、算不动的再学」的分工往往比端到端更稳、更省。
另一个值得延伸的点是数据合成中「刻意加强强背散射样本」的数据平衡思路,本质上是在用领域知识对齐训练分布与推理时的困难分布;以及用双帧输入借助运动线索分离前景与退化层,这与视频去雨/去反射中利用时序独立性的思想一脉相承,可迁移到其他「加性干扰层」的分离任务上。