创建现实世界物体的逼真“数字孪生”是现代计算机图形学的基石,它为从电影视觉特效到沉浸式 VR/AR 体验的一切提供动力。要让一个数字物体看起来真实,你需要两样东西: 它的形状 (表面法线) 和它的材质属性 (它有多亮或多粗糙) 。
多年来,这一直是一场速度与质量之间的拉锯战。传统方法,如光度立体视觉 (Photometric Stereo, PS) ,需要在不同光照下拍摄数百张高动态范围 (HDR) 图像。这不仅速度慢、数据量大,而且往往在“棘手”的材质上失效——特别是那些非常闪亮或金属质感的物体。
在最近发表于 CVPR 的一篇论文中,研究人员提出了一种名为 EventPSR 的突破性解决方案。通过放弃传统相机,转而使用事件相机 (event cameras) , 并结合巧妙的光照算法,他们能够同时恢复形状和材质属性,不仅速度更快,所需数据量也显著减少。
在这篇文章中,我们将深入探讨 EventPSR 的工作原理,为什么事件相机是 3D 扫描的秘密武器,以及该方法如何解决扫描高光物体的这一著名难题。
问题所在: “高光物体”的困境
要理解这里的创新,我们首先需要了解标准相机的局限性。
当你拍摄一个哑光 (漫反射) 物体时,光线会均匀散射。估计其形状很容易。然而,当你拍摄一个高光 (镜面反射) 物体——比如一个金属球或上釉的陶瓷——光线会反射出锐利、明亮的高光。
标准相机在这里很吃力,原因有二:
- 动态范围: 高光部分通常会“过曝” (纯白) ,而物体的其余部分则是黑暗的。为了解决这个问题,你必须在不同曝光度下拍摄多张照片 (HDR) ,这很耗时。
- 稀疏数据: 镜面反射具有方向性。只有当光线以相对于相机的完美角度照射到表面时,你才能看到反射。为了绘制整个表面,你需要将光源移动到数百个不同的位置。
这导致了缓慢的捕捉过程和巨大的数据存储需求。EventPSR 背后的研究人员问道: 如果我们使用一种不捕捉帧,而是捕捉光线变化的相机,会怎么样?
事件相机登场
事件相机是仿生传感器。与以固定间隔 (例如每秒 30 帧) 捕捉整个场景快照的标准相机不同,事件相机是异步工作的。每个像素都独立运行。
当一个像素检测到亮度 (对数强度) 的变化超过某个阈值时,它就会触发一个“事件”——一个包含时间戳、像素坐标和极性 (变亮还是变暗) 的数据包。
这为 3D 扫描提供了两个巨大的优势:
- 高动态范围 (HDR) : 事件相机可以同时看到极暗阴影和极亮高光中的细节。
- 高时间分辨率: 它们可以在微秒级检测变化。
然而,使用事件相机引入了一个新的挑战: 你得到的不是一张“照片”,而是一股数据流。研究人员必须弄清楚如何将这股数据流转化为具有材质纹理的 3D 模型。
EventPSR 方法
EventPSR 方法由两个主要部分组成: 专门设计的光照扫描图案和两阶段重建算法 。

如上图 1 所示,该流程获取目标物体,用光照图案照射它,记录“事件流”,并对其进行处理以输出法线贴图 (形状) 、金属度贴图和粗糙度贴图。
1. 设计完美的光照图案
你不能只拿手电筒照着物体就指望事件相机理解其形状。光线需要随时间变化才能触发事件。研究人员分析了三种不同的光照图案,看看哪种效果最好:
- 点光源 (Point Light) : 一个做螺旋运动的点。
- 结构化环境贴图 (Structured Environment Map) : 在屏幕上闪烁的复杂图案。
- 移动环形光 (Moving Ring Light) : 扫过物体的光环。
他们基于三个标准评估了这些图案:
- 镜面覆盖范围 (Specular Coverage) : 它能照到高光部分吗?
- 漫反射灵敏度 (Diffuse Sensitivity) : 它能揭示哑光部分的形状吗?
- 事件效率 (Event Efficiency) : 它能在不产生过多噪声导致系统过载的情况下生成有用数据吗?

图 2 展示了为什么他们选择了移动环形光 :
- A 列 (镜面覆盖范围) : 点光源 (左) 只照亮一个小点。环形光 (中) 照亮了一条宽带,覆盖表面的速度快得多。
- B 列 (漫反射灵敏度) : 结构化贴图 (右) 产生了混乱的信号,难以区分形状。环形光产生了平滑、可读的曲线。
- C 列 (效率) : 点光源在击中高光时会产生巨大的事件尖峰 (数据瓶颈) 。环形光则将数据更均匀地分散开来。
结论: “移动环形光”图案提供了最佳的平衡,有效地覆盖了整个球面的光照角度。
2. 算法: 从事件到属性
一旦捕捉到数据,我们如何将光点的闪烁转化为 3D 材质?作者提出了一个两阶段的过程。
阶段 1: 网格匹配 (粗搜索)
想象一下,研究人员创建了一个巨大的“字典”,其中包含了表面法线 (角度) 、粗糙度和金属度的每种可能组合对应的事件流应该是什么样子。他们使用渲染引擎完成了这项工作。
当相机记录下一个像素的事件流时,算法会将该流与字典进行比较。它寻找与现实世界数据最相似的条目。
损失函数 (用于计算差异的数学公式) 如下所示:

这个方程本质上是检查随时间推移观察到的亮度变化 (来自事件) 与预测的亮度变化 (来自数据库) 之间的差异。这个阶段给出了一个“粗略”的结果——它让我们大致了解了正确的形状和材质。
阶段 2: 梯度微调 (精细调整)
网格匹配阶段受限于字典 (网格) 的分辨率。如果真实的表面法线落在两个网格点之间,结果就会有轻微偏差。
为了解决这个问题,第二阶段使用了梯度下降 。 它获取粗略结果,并通过数学方法微调法线、金属度和粗糙度的数值,直到误差最小化。
至关重要的是,他们还添加了一个“平滑度”约束。由于闪亮的物体可能存在光线无法反射的“死区” (因此不会触发事件) ,算法假设相邻像素可能具有相似的属性。这填补了高反射表面的空白。
实验设置
为了验证这一点,研究人员用商用电脑显示器搭建了一个“笼子”。

如图 3 所示,目标物体悬挂在中心。五台显示器围绕着它,从各个角度投射“移动环形”图案。事件相机位于底部,向上仰视。这种设置允许他们在捕捉高速事件数据的同时精确控制光照。
结果: 它有效吗?
研究人员将 EventPSR 与最先进的方法进行了对比测试,包括基于神经辐射场 (NeRF) 的方法 (如 NeILF) 和其他光度立体视觉方法 (SDM-UniPS) 。
效率
最令人印象深刻的数据之一是数据效率。因为事件相机只记录变化,它们不存储冗余的静态背景数据。
- 与基于帧的方法相比, EventPSR 仅使用了约 30% 的数据率 。
- 在达到这一点的同时,它的精度匹配甚至超过了需要数百张全帧 HDR 图像的方法。
合成数据表现

图 5 显示了在合成物体上的比较。
- 顶行 (法线) : 看“误差 (Error) ”列。EventPSR 的误差图大部分是黑色的 (低误差) ,而 NeILF 方法显示出明显的亮斑 (高误差) ,表明它在猜测形状方面很吃力。
- 底行 (金属度) : 与基准真值 (Ground Truth) 相比,EventPSR 几乎完美地恢复了金属度贴图。
真实世界表现
真正的考验是在具有复杂材质混合的物理物体上。

图 8 展示了三个具有挑战性的真实物体的结果:
- 鼻子 (左) : 一个均匀、闪亮的塑料。EventPSR 捕捉到了平滑的曲率,没有被镜面高光所迷惑。
- 碗里的猫 (中) : 一个哑光的猫和一个高反射 (镜面般) 碗的混合体。“金属度”贴图正确地将碗识别为金属,将猫识别为非金属。
- 喷射战士手办 (右) : 一个具有不同粗糙度 (光滑的头发 vs. 粗糙的皮肤) 的复杂物体。“粗糙度”贴图准确地分割了这些不同的纹理。
这些结果意义重大,因为传统的扫描仪通常要求你在扫描之前给闪亮的物体喷上哑光粉 (显影剂) 。EventPSR 拥抱光泽,利用反射来计算材质属性,而不是被其蒙蔽。
结论与未来展望
EventPSR 代表了光度立体视觉向前迈出的重要一步。通过利用事件相机的独特优势——特别是它们的动态范围和时间分辨率——研究人员解决了 3D 扫描中长期存在的瓶颈。
关键要点:
- 同步捕捉: 它一次性恢复形状、粗糙度和金属度属性。
- 鲁棒性: 它适用于从哑光粘土到镜面金属的所有材质。
- 效率: 它所需的数据带宽显著低于传统的 HDR 成像。
虽然目前的设置使用了固定的显示器阵列 (由于显示器刷新率的原因,速度略受限制) ,但底层算法证明了事件相机不仅仅用于运动追踪——它们是高保真 3D 重建的强大工具。随着事件传感器在机器人和移动设备中变得越来越普遍,我们可能会看到这项技术让我们能够直接从口袋里实现高质量的 3D 扫描。
](https://deep-paper.org/en/paper/file-2019/images/cover.png)