2、光场的基本数学描述:光场的7维函数、光场的参数化表示(双平面法)、光场的采样与重建
好,我们正式开始第二讲。上一章我们聊了光场是什么——说白了,就是空间中所有光线携带的信息的总和。但光场到底怎么描述?怎么用数学语言把它写下来?怎么在计算机里表示它?这些才是真正动手做光场显示的基础。
我记得刚入行那会儿,看论文里满篇的 L(x,y,z,θ,φ,λ,t),头都大了。后来自己搭光场采集系统,才真正理解这7个维度到底在说什么。今天我们就把它彻底讲透。
2.1 光场的7维全函数
先问一个问题:描述一束光,需要几个参数?
你想想看,一束光从某个点出发,沿着某个方向传播,它有颜色,还会随时间变化。所以最完整的描述,需要7个维度:
| 维度 | 符号 | 含义 | 举例 |
|---|---|---|---|
| 空间位置 (3维) | (x, y, z) | 光线经过的某一点坐标 | 人眼瞳孔中心、显示屏像素位置 |
| 方向 (2维) | (θ, φ) | 光线传播的俯仰角和方位角 | 从屏幕射向眼睛的方向 |
| 波长 (1维) | λ | 光的颜色/光谱 | 红光 650nm,绿光 532nm |
| 时间 (1维) | t | 光线出现的时刻 | 动态场景的帧时刻 |
所以光场的7维函数写作:
L(x, y, z, θ, φ, λ, t)
这个函数的值,就是该位置、该方向、该波长、该时刻的光辐射强度。
核心理解:7维函数不是用来直接计算的,它是一个概念框架。实际工程中,我们永远在降维——要么忽略时间(静态场景),要么忽略波长(单色光),要么固定空间位置(比如只考虑显示平面)。
我在做全息显示项目时,一开始总想着把7维全函数算出来,结果发现计算量根本扛不住。后来才明白,光场显示的本质是选择性地重建对人眼有用的那部分光场,而不是重建全部。
2.2 双平面参数化表示
7维函数太抽象了,工程上没法直接用。我们需要一个更具体的表示方法。
这里我要介绍一个经典方法——双平面法。这也是我在实际项目中最常用的光场表示方式。
思路很简单:
- 取两个平行平面,一个叫 uv 平面(通常是显示面板),一个叫 st 平面(通常是透镜阵列或观察平面)
- 任意一条光线,只要它穿过这两个平面,就可以用
(u, v, s, t)四个坐标唯一确定
这样一来,7维函数就降成了4维:
L(u, v, s, t, λ, t)
如果场景是静态的、单色的,甚至可以降到4维:
L(u, v, s, t)
我的经验:双平面法最大的好处是直观。你想想看,u-v 平面就是你的显示面板,s-t 平面就是你的眼睛位置。改变 s-t 坐标,就相当于从不同位置看同一个屏幕——这不就是光场显示要模拟的效果吗?
具体来说,双平面法有几种常见变体:
| 变体名称 | uv 平面 | st 平面 | 典型应用 |
|---|---|---|---|
| 标准双平面 | 显示面板 | 透镜阵列 | 集成成像显示 |
| 相机阵列模型 | 相机传感器 | 主透镜 | 光场相机 (Lytro) |
| 视点-像素模型 | 像素坐标 | 视点坐标 | 多视角显示 |
我建议你在做光场显示系统设计时,第一步就是确定你的双平面怎么放。这个选择直接决定了后续的采样策略和重建质量。
2.3 光场的采样与重建
有了双平面表示,下一个问题来了:我们不可能记录所有 (u, v, s, t) 组合,只能采样一部分。采样之后,还要能重建出连续的光场。
这里有两个核心问题:
- 怎么采样?——采样率多少才够?
- 怎么重建?——采样点之间怎么插值?
2.3.1 采样定理在光场中的应用
还记得 Nyquist 采样定理吗?它说:要无失真地重建一个信号,采样频率必须大于信号最高频率的两倍。
光场也一样。但光场的"频率"不是时间频率,而是空间-角度频率。具体来说:
- 空间采样率:由显示面板的像素密度决定
- 角度采样率:由视点/视角的密度决定
两者之间有一个权衡关系:
Δu · Δθ ≤ λ / (2 · NA)
其中 Δu 是空间采样间隔,Δθ 是角度采样间隔,λ 是波长,NA 是数值孔径。
避坑指南:我曾经在一个项目中,只关注了空间分辨率,忽略了角度采样率。结果做出来的光场显示,人眼稍微一动就看到明显的跳变——这就是角度欠采样的典型表现。后来我加了一组微透镜阵列才解决。
2.3.2 常见的采样策略
实际工程中,我们不会均匀采样整个4维空间。常用的策略有:
| 策略 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 均匀采样 | u-v 和 s-t 都均匀网格采样 | 实现简单 | 数据量大,冗余多 |
| 稀疏采样 | 只采样关键视点 | 数据量小 | 重建质量依赖插值算法 |
| 自适应采样 | 根据场景内容调整采样密度 | 效率高,质量好 | 实现复杂 |
2.3.3 重建方法
采样之后,怎么从离散的采样点恢复连续光场?
常用的重建方法有:
- 线性插值:最简单,但会产生模糊
- 双线性插值:在 u-v 和 s-t 方向分别插值,效果中等
- 基于深度信息的重建:利用场景的深度图,做更精确的插值
- 基于学习的重建:用神经网络从稀疏采样恢复密集光场
我的建议:如果你的系统实时性要求高(比如 60fps 的 AR 显示),用双线性插值就够了。如果追求画质(比如光场电影),可以考虑基于深度的方法。至于深度学习,嗯,效果确实好,但算力开销你得掂量掂量。
2.4 知识结构总览
下面这张图总结了本章的核心逻辑:
2.5 本章小结
这一章我们讲了三个层层递进的内容:
- 7维全函数:光场的完整数学描述,是理论基石
- 双平面参数化:把7维降到4维,工程上可操作
- 采样与重建:从离散到连续的桥梁,决定系统质量
嗯,说实话,这些概念刚接触时确实有点绕。但只要你动手搭过一次光场采集系统,或者写过一次光场渲染的代码,就会明白——这些数学工具不是用来考试的,而是用来指导工程决策的。