第10章:成像系统
本章深入探讨计算机图形学中的成像系统,从物理相机模型到人类视觉感知。我们将学习如何准确模拟真实世界的成像过程,理解光场的数学表示,以及颜色科学的基础理论。这些知识对于创建真实感图像、设计高级渲染算法以及理解人类视觉系统至关重要。
10.1 相机与透镜模型
10.1.1 针孔相机模型
针孔相机是最简单的成像模型,虽然在现实中很少使用,但它是理解复杂相机系统的基础。
基本原理:
- 光线通过一个无限小的孔径(针孔)投射到成像平面
- 成像关系:$\frac{h_i}{h_o} = \frac{d_i}{d_o}$
- $h_i$:像高,$h_o$:物高
- $d_i$:像距,$d_o$:物距
- 成像特点:景深无限大,但光通量极小
几何光学基础:
针孔成像遵循直线传播原理。考虑一个位于原点的针孔,成像平面位于$z = -f$处:
- 物点:$\mathbf{P} = (X, Y, Z)$,其中$Z > 0$
- 像点:$\mathbf{p} = (x, y, -f)$
- 相似三角形关系:$\frac{x}{-f} = \frac{X}{Z}$,$\frac{y}{-f} = \frac{Y}{Z}$
解得像点坐标:
\(x = -f\frac{X}{Z}, \quad y = -f\frac{Y}{Z}\)
负号表示成像是倒立的。为了方便,通常将成像平面放在$z = f$前方,得到:
\(x = f\frac{X}{Z}, \quad y = f\frac{Y}{Z}\)
透视投影的数学描述:
世界坐标系中的点 $\mathbf{X}_w = [X_w, Y_w, Z_w]^T$ 需要先变换到相机坐标系:
\(\mathbf{X}_c = \mathbf{R}\mathbf{X}_w + \mathbf{t}\)
然后投影到图像平面:
\(\begin{aligned}
x &= f\frac{X_c}{Z_c} \\
y &= f\frac{Y_c}{Z_c}
\end{aligned}\)
其中 $(X_c, Y_c, Z_c)$ 是相机坐标系中的坐标。
归一化图像平面:
定义归一化图像平面在$z = 1$处,归一化坐标为:
\(x_n = \frac{X_c}{Z_c}, \quad y_n = \frac{Y_c}{Z_c}\)
物理图像坐标与归一化坐标的关系:
\(x = f \cdot x_n, \quad y = f \cdot y_n\)
像素坐标系:
实际数字图像使用离散的像素坐标$(u, v)$:
\(\begin{aligned}
u &= \frac{x}{p_x} + c_x = \frac{f}{p_x} \cdot \frac{X_c}{Z_c} + c_x \\
v &= \frac{y}{p_y} + c_y = \frac{f}{p_y} \cdot \frac{Y_c}{Z_c} + c_y
\end{aligned}\)
其中:
- $p_x, p_y$:像素的物理尺寸(mm/pixel)
- $c_x, c_y$:主点的像素坐标
- $f_x = f/p_x, f_y = f/p_y$:以像素为单位的焦距
齐次坐标表示:
使用齐次坐标,投影过程可以表示为线性变换:
\(s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \mathbf{K}[\mathbf{R}|\mathbf{t}]\begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix}\)
其中 $s = Z_c$ 是尺度因子。
投影矩阵分解:
\(\mathbf{P} = \mathbf{K}[\mathbf{R}|\mathbf{t}] = \mathbf{K}\mathbf{R}[\mathbf{I}|\mathbf{R}^T\mathbf{t}]\)
其中内参矩阵:
\(\mathbf{K} = \begin{bmatrix}
f_x & s & c_x \\
0 & f_y & c_y \\
0 & 0 & 1
\end{bmatrix}\)
- $f_x, f_y$:焦距(像素单位)
- $c_x, c_y$:主点坐标
- $s$:扭曲参数(skew),表示像素坐标轴的非正交性,现代相机通常为0
外参矩阵:
- $\mathbf{R}$:3×3旋转矩阵(正交矩阵,$\det(\mathbf{R}) = 1$)
- $\mathbf{t}$:3×1平移向量
- 总共6个自由度:3个旋转+3个平移
投影矩阵的性质:
- 维度:$\mathbf{P}$是3×4矩阵,秩为3
- 零空间:维度为1,对应相机中心$\mathbf{C}$,满足$\mathbf{P}\mathbf{C} = \mathbf{0}$
- 相机中心:$\mathbf{C} = -\mathbf{R}^T\mathbf{t}$(世界坐标系)
- 主轴方向:相机的光轴方向为$\mathbf{R}^T[0, 0, 1]^T$
- 保持直线:3D直线投影后仍为2D直线(或点)
- 不保持平行:平行线投影后会相交于消失点(除非平行于成像平面)
逆投影(反投影):
给定图像点$(u, v)$,对应的3D射线方向(相机坐标系):
\(\mathbf{d}_c = \mathbf{K}^{-1}\begin{bmatrix} u \\ v \\ 1 \end{bmatrix}\)
世界坐标系中的射线:
\(\mathbf{X}_w(\lambda) = \mathbf{C} + \lambda \mathbf{R}^T\mathbf{d}_c\)
其中$\lambda > 0$是射线参数。
消失点与消失线:
- 消失点:平行线在图像中的交点
- 世界坐标系中方向为$\mathbf{d}$的平行线,其消失点为:
\(\mathbf{v} = \mathbf{K}\mathbf{R}\mathbf{d}\)
- 消失线:平行平面的像,由该平面所有方向的消失点组成
- 地平线是所有水平方向消失点的集合
针孔相机的局限性:
- 光通量:孔径极小,进光量不足,需要长时间曝光
- 衍射效应:孔径过小时衍射会降低图像质量
- 最优孔径:约为$d_{opt} = \sqrt{2.44\lambda L}$,其中$\lambda$是波长,$L$是物距
- 实用性:实际相机使用透镜系统增加进光量
10.1.2 薄透镜模型
薄透镜模型更接近真实相机,引入了有限孔径和景深效果。
透镜制造者方程:
对于半径为$R_1$和$R_2$的两个球面,折射率为$n$的薄透镜:
\(\frac{1}{f} = (n-1)\left(\frac{1}{R_1} - \frac{1}{R_2}\right)\)
约定:凸面半径为正,凹面半径为负。
高斯透镜方程:
\(\frac{1}{f} = \frac{1}{d_o} + \frac{1}{d_i}\)
这个方程描述了物距、像距和焦距之间的基本关系。
特殊情况:
- 无穷远物体:$d_o \to \infty \Rightarrow d_i = f$
- 物体在焦点:$d_o = f \Rightarrow d_i \to \infty$(平行光出射)
- 物体在2倍焦距:$d_o = 2f \Rightarrow d_i = 2f$(等大成像)
牛顿形式:
以焦点为参考:
\(x \cdot x' = f^2\)
其中$x = d_o - f$,$x’ = d_i - f$。
横向放大率:
\(M = -\frac{d_i}{d_o} = \frac{f}{f - d_o} = \frac{d_i - f}{f}\)
负号表示像是倒立的。
角放大率:
\(\gamma = \frac{\tan\theta'}{\tan\theta} = \frac{d_o}{d_i} = -\frac{1}{M}\)
其中$\theta$和$\theta’$是入射和出射光线与光轴的夹角。
光圈与f数:
- 光圈直径:$D = \frac{f}{N}$
- f数(f-number):$N = \frac{f}{D}$
- 常见f数序列:f/1.4, f/2, f/2.8, f/4, f/5.6, f/8, f/11, f/16
- 每一级相差$\sqrt{2}$倍,光通量相差2倍
有效f数:
当对焦在有限距离时:
\(N_{eff} = N(1 + M) = N\left(1 + \frac{d_i - f}{f}\right)\)
这在微距摄影中特别重要。
景深的精确计算:
景深是指在成像平面上产生可接受清晰图像的物体深度范围。
超焦距:
\(H = \frac{f^2}{Nc} + f \approx \frac{f^2}{Nc}\)
对于大多数情况,$f \ll \frac{f^2}{Nc}$,所以可以简化。
近景深界限:
\(D_n = \frac{d(H-f)}{H + d - 2f} \approx \frac{Hd}{H + d}\)
远景深界限:
\(D_f = \frac{d(H-f)}{H - d} \approx \frac{Hd}{H - d}\)
景深总量:
\(\text{DOF} = D_f - D_n = \frac{2Hd^2(H-f)}{H^2 - d^2} \approx \frac{2Hd^2}{H^2 - d^2}\)
特殊情况:
- 当$d = H$时,$D_f \to \infty$,远景深无限远
- 当$d \ll H$时,$\text{DOF} \approx \frac{2d^2Nc}{f^2}$
- 当$d \gg H$时,$\text{DOF} \approx \frac{2HNc}{f}$
景深的实用规则:
- 景深与光圈数成正比:$\text{DOF} \propto N$
- 景深与焦距平方成反比:$\text{DOF} \propto \frac{1}{f^2}$(远距离)
- 景深与对焦距离平方成正比:$\text{DOF} \propto d^2$(近距离)
弥散圆与模糊:
对于物距为$d_o’$的点,其在对焦平面上形成的弥散圆直径:
\(b = \frac{D \cdot |d_i - d_i'|}{d_i'} = \frac{f}{N} \cdot \left|\frac{d_i}{d_i'} - 1\right|\)
使用透镜方程:
\(b = \frac{f^2}{N} \cdot \left|\frac{1}{d_o} - \frac{1}{d_o'}\right|\)
弥散圆的角度大小:
从物体看,弥散圆的角度大小为:
\(\theta_b = \frac{b \cdot d_o}{d_i \cdot d_o'} = \frac{D}{d_o'} \cdot \left|1 - \frac{d_o'}{d_o}\right|\)
点扩散函数(PSF):
理想薄透镜的PSF在焦外是均匀圆盘:
\(\text{PSF}(x, y) = \begin{cases}
\frac{1}{\pi (b/2)^2} & \text{if } x^2 + y^2 \leq (b/2)^2 \\
0 & \text{otherwise}
\end{cases}\)
实际应用考虑:
- 弥散圆容许度:通常取传感器对角线的$1/1500$到$1/1000$
- 像素尺寸限制:弥散圆小于2倍像素尺寸时被认为清晰
- 衍射极限:当$N > \frac{f}{1.22\lambda}$时,衍射效应超过弥散圆
10.1.3 厚透镜与透镜组
实际相机镜头由多个透镜元件组成,需要考虑更复杂的光学系统。
基主点系统:
厚透镜的完整描述需要六个基主点:
- 前主点 $H$ 和后主点 $H’$
- 前焦点 $F$ 和后焦点 $F’$
- 前节点 $N$ 和后节点 $N’$
主点和节点的物理意义:
- 主点:横向放大率为+1的共轭点
- 通过$H$的入射光线平行于通过$H’$的出射光线
- 满足:$h’ = h$(物高等于像高)
- 节点:角放大率为+1的共轭点
- 通过$N$的入射光线与通过$N’$的出射光线平行
- 满足:$\tan\theta’ = \tan\theta$
重要性质:
- 当前后介质相同时(如空气),主点和节点重合
- 浸没透镜中,$HN = \frac{n_1 - n_3}{n_3}f$,$H’N’ = \frac{n_3 - n_1}{n_1}f’$
厚透镜的基本参数:
对于半径为$R_1$和$R_2$,厚度为$t$,折射率为$n$的厚透镜:
光焦度:
\(P = P_1 + P_2 - \frac{t}{n}P_1 P_2\)
其中:
- $P_1 = \frac{n-1}{R_1}$:第一面光焦度
- $P_2 = \frac{1-n}{R_2}$:第二面光焦度
等效焦距:
\(f = \frac{1}{P} = \frac{nR_1R_2}{(n-1)[n(R_2-R_1) + t(n-1)]}\)
主点位置:
- 前主点到第一面:$\ell_H = -\frac{f \cdot t(n-1)}{nR_2}$
- 后主点到第二面:$\ell_{H’} = \frac{f \cdot t(n-1)}{nR_1}$
组合透镜系统的矩阵方法:
使用ABCD矩阵(光线传输矩阵):
\(\begin{bmatrix} y_2 \\ \theta_2 \end{bmatrix} = \begin{bmatrix} A & B \\ C & D \end{bmatrix} \begin{bmatrix} y_1 \\ \theta_1 \end{bmatrix}\)
基本元件的ABCD矩阵:
-
自由空间传播:
\(\mathbf{M}_{\text{space}} = \begin{bmatrix} 1 & d \\ 0 & 1 \end{bmatrix}\)
-
薄透镜:
\(\mathbf{M}_{\text{lens}} = \begin{bmatrix} 1 & 0 \\ -1/f & 1 \end{bmatrix}\)
-
球面折射:
\(\mathbf{M}_{\text{refr}} = \begin{bmatrix} 1 & 0 \\ \frac{n_1-n_2}{R n_2} & \frac{n_1}{n_2} \end{bmatrix}\)
系统矩阵的级联:
\(\mathbf{M}_{\text{total}} = \mathbf{M}_n \cdot \mathbf{M}_{n-1} \cdot ... \cdot \mathbf{M}_2 \cdot \mathbf{M}_1\)
从系统矩阵提取参数:
- 等效焦距:$f = -\frac{1}{C}$
- 前主点位置:$\ell_H = \frac{D-1}{C}$
- 后主点位置:$\ell_{H’} = \frac{1-A}{C}$
- 前焦距:$\text{FFL} = \frac{D}{C}$
- 后焦距:$\text{BFL} = -\frac{A}{C}$
两透镜系统的详细分析:
两个焦距为$f_1$和$f_2$,间距为$d$的薄透镜:
\[\mathbf{M} = \begin{bmatrix} 1 & 0 \\ -1/f_2 & 1 \end{bmatrix} \begin{bmatrix} 1 & d \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ -1/f_1 & 1 \end{bmatrix}\]
\[= \begin{bmatrix} 1-d/f_1 & d \\ -1/f_1-1/f_2+d/(f_1f_2) & 1-d/f_2 \end{bmatrix}\]
有效焦距:
\(\frac{1}{f} = \frac{1}{f_1} + \frac{1}{f_2} - \frac{d}{f_1 f_2}\)
主点位置:
- 前主点到第一透镜:$\text{H}_1 = -\frac{fd}{f_2}$
- 后主点到第二透镜:$\text{H}_2 = \frac{fd}{f_1}$
焦距位置:
- 前焦距(FFL):$\text{FFL} = f_1 \frac{f_2 - d}{f_1 + f_2 - d}$
- 后焦距(BFL):$\text{BFL} = f_2 \frac{f_1 - d}{f_1 + f_2 - d}$
特殊配置:
- 望远镜配置:$d = f_1 + f_2$
- 系统焦距:$f \to \infty$(无焦系统)
- 角放大率:$\gamma = -\frac{f_2}{f_1}$
- 显微镜配置:$d > f_1 + f_2$
- 虚像放大
- 总放大率:$M = M_1 \times M_2$
- 4f系统:$d = 2(f_1 + f_2)$,且$f_1 = f_2 = f$
- 单位放大率($M = -1$)
- 用于僅里叶变换和空间滤波
多元件系统的设计考虑:
- 表面数量优化:每个空气-玻璃界面都会引入反射损失
- 玻璃选择:不同折射率和色散特性的组合
- 机械约束:总长度、重量、成本的平衡
像差类型与特征:
- 球差(Spherical Aberration)
- 不同入射高度的光线聚焦位置不同
- 纵向球差:$\Delta s’ = s’{\text{marginal}} - s’{\text{paraxial}}$
- 可通过非球面透镜或透镜组合校正
- 彗差(Coma)
- 离轴点光源成像为彗星状
- 与入射角的三次方成正比
- 正弦条件:$n y \sin u = n’ y’ \sin u’$
- 像散(Astigmatism)
- 子午面和弧矢面的聚焦位置不同
- 像散差:$\Delta s’ = s’_T - s’_S$
- 产生椭圆形的点扩散函数
- 场曲(Field Curvature)
- 平面物体成像在曲面上
- Petzval曲率:$\rho_P = \sum \frac{1}{n_i f_i}$
- 可通过场镜校正
- 畸变(Distortion)
- 影响几何形状但不影响清晰度
- 桶形畸变:$r’ = r(1 - kr^2)$
- 枕形畸变:$r’ = r(1 + kr^2)$
- 色差(Chromatic Aberration)
- 纵向色差:不同波长焦距不同
- 横向色差:不同波长放大率不同
- 使用不同色散材料组合消除
Seidel像差系数:
对于三阶像差,可用五个Seidel系数描述:
- $S_I$:球差系数
- $S_{II}$:彗差系数
- $S_{III}$:像散系数
- $S_{IV}$:场曲系数
- $S_V$:畸变系数
10.1.4 径向畸变模型
实际镜头的畸变主要包括径向和切向畸变,这些畸变需要在图像处理中进行校正。
径向畸变:
由透镜的径向对称性引起,使得图像中心和边缘的放大率不同。
\[\begin{aligned}
x_d &= x_u(1 + k_1r^2 + k_2r^4 + k_3r^6) \\
y_d &= y_u(1 + k_1r^2 + k_2r^4 + k_3r^6)
\end{aligned}\]
- $k_1 < 0$:桶形畸变(barrel distortion)
- $k_1 > 0$:枕形畸变(pincushion distortion)
-
| 通常$ |
k_1 |
\gg |
k_2 |
\gg |
k_3 |
$ |
切向畸变:
由透镜和成像平面不完全平行引起,也称为偏心畸变。
\[\begin{aligned}
x_d &= x_u + [2p_1x_uy_u + p_2(r^2 + 2x_u^2)] \\
y_d &= y_u + [p_1(r^2 + 2y_u^2) + 2p_2x_uy_u]
\end{aligned}\]
其中 $r^2 = x_u^2 + y_u^2$,$(x_u, y_u)$ 是归一化的未畸变坐标。
完整的畸变模型:
组合径向和切向畸变:
\(\begin{aligned}
x_d &= x_u(1 + k_1r^2 + k_2r^4 + k_3r^6) + [2p_1x_uy_u + p_2(r^2 + 2x_u^2)] \\
y_d &= y_u(1 + k_1r^2 + k_2r^4 + k_3r^6) + [p_1(r^2 + 2y_u^2) + 2p_2x_uy_u]
\end{aligned}\)
畸变校正流程:
- 将像素坐标转换为归一化坐标:$(x_u, y_u) = ((u-c_x)/f_x, (v-c_y)/f_y)$
- 计算径向距离:$r^2 = x_u^2 + y_u^2$
- 应用畸变模型得到$(x_d, y_d)$
- 转换回像素坐标:$(u_d, v_d) = (f_x x_d + c_x, f_y y_d + c_y)$
高级畸变模型:
- 棱镜畸变(thin prism distortion):考虑更高阶的切向畸变
- 有理函数模型:使用有理函数更精确地建模畸变
- 分段线性模型:对不同半径区域使用不同参数
10.2 光场理论
10.2.1 光场的数学表示
光场(Light Field)描述空间中所有位置、所有方向的光线分布。这个概念最早由Faraday在1846年提出,现代计算机图形学中广泛应用于渲染和摄影。
5D全光函数:
\(L(x, y, z, \theta, \phi)\)
表示空间位置 $(x, y, z)$ 处方向 $(\theta, \phi)$ 的光线辐射度。
其他表示方式:
- 7D全光函数:$L(x, y, z, \theta, \phi, \lambda, t)$
- 增加波长$\lambda$和时间$t$维度
- 完整描述光的所有属性
4D光场参数化(双平面参数化):
在自由空间中(无遮挡),光线可以用两个平面上的交点表示:
\(L(u, v, s, t)\)
其中 $(u, v)$ 和 $(s, t)$ 分别是两个平行平面上的坐标。
光线方程:
从$(u, v, 0)$到$(s, t, 1)$的光线可以参数化为:
\(\mathbf{r}(\tau) = (1-\tau)(u, v, 0) + \tau(s, t, 1)\)
其他参数化方式:
- 球面参数化:使用球面坐标表示光线方向
- 平面+半球参数化:适合表示表面光场
- 相机内参数化:使用相机参数表示多视点图像
光场的性质:
- 常数性:在自由空间中,沿光线辐射度不变
- 对称性:$L(u, v, s, t) = L(s, t, u, v)$
- 线性性:多个光源的光场可以叠加
10.2.2 光场采样与重建
奈奎斯特采样定理应用:
为了完整重建光场,需要满足空间和角度的采样要求。
- 角度采样率:$\Delta\theta \leq \frac{\lambda}{D}$
- 空间采样率:$\Delta x \leq \frac{\lambda z}{D}$
其中 $\lambda$ 是波长,$D$ 是孔径,$z$ 是深度。
采样密度分析:
- 总采样数:$N = N_x \times N_y \times N_u \times N_v$
- 空间-角度分辨率权衡:$N_x N_y \times N_u N_v = \text{const}$
- 景深与角度分辨率关系:$\Delta z \propto \frac{1}{N_u}$
光场相机原理:
传统设计:
- 主透镜后放置微透镜阵列
- 每个微透镜对应多个传感器像素
- 可以记录光线的位置和方向信息
光场采集的数学模型:
微透镜下的像素$(p, q)$记录的光场值:
\(I(i, j, p, q) = \int\int L(i\Delta_u, j\Delta_v, p\Delta_s, q\Delta_t) \cdot A(p, q) \, ds \, dt\)
其中$(i, j)$是微透镜索引,$A(p, q)$是像素响应函数。
其他采集方法:
- 相机阵列:使用多个相机从不同视点拍摄
- 移动相机:单相机在不同位置拍摄
- 编码孔径:使用特殊图案的孔径掩模
- 时间复用:使用可编程孔径或快门
光场重建算法:
- 插值方法:
- 基于深度的重建:
- 压缩感知重建:
10.2.3 光场渲染与应用
数字重聚焦:
光场最重要的应用之一是后期重聚焦。通过对光场进行剪切和积分操作:
\[I_\alpha(x', y') = \iint L\left(\frac{x'}{\alpha}, \frac{y'}{\alpha}, x' - u\frac{1-\alpha}{\alpha}, y' - v\frac{1-\alpha}{\alpha}\right) du dv\]
其中 $\alpha$ 是重聚焦参数:
- $\alpha = 1$:聚焦在主透镜平面
- $\alpha > 1$:聚焦在更远处
- $\alpha < 1$:聚焦在更近处
剪切变换的几何解释:
重聚焦操作对应于光场的剪切变换:
\(\begin{bmatrix} u' \\ v' \\ s' \\ t' \end{bmatrix} = \begin{bmatrix} 1 & 0 & \alpha & 0 \\ 0 & 1 & 0 & \alpha \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} u \\ v \\ s \\ t \end{bmatrix}\)
合成孔径:
通过组合不同视角的子图像,可以:
- 改变景深:选择不同的$(u, v)$范围
- 透视遮挡物:利用视差信息
- 产生立体视差:选择左右视点
孔径函数设计:
- 圆形孔径:传统模糊效果
- 心形孔径:艺术效果
- 编码孔径:深度估计
傅里叶切片定理:
光场的傅里叶变换中,不同深度的重聚焦图像对应于4D频域中的2D切片。
定理陈述:
重聚焦图像的频谱是光场频谱的一个2D切片:
\(\hat{I}_\alpha(\Omega_x, \Omega_y) = \hat{L}(\Omega_x, \Omega_y, -\alpha\Omega_x, -\alpha\Omega_y)\)
应用意义:
- 频域滤波可以实现特定深度的增强
- 快速重聚焦算法设计
- 深度估计的频域方法
其他光场应用:
- 视点合成:生成新的视角图像
- 超分辨率:利用多视角信息提高分辨率
- 材质识别:利用BRDF信息
- 三维重建:从光场恢复几何
10.2.4 光场压缩与传输
光场数据量巨大,高效的压缩和传输方法至关重要。
数据量分析:
- 典型光场:$1000 \times 1000 \times 10 \times 10 = 10^8$个样本
- 每个样本3个颜色通道,16位精度
- 总数据量:~600MB(未压缩)
维度降低策略:
- 基于深度的分层表示:
- 将场景分解为多个深度层
- 每层使用纹理+透明度表示
- 层数远小于角度样本数
- 稀疏采样与插值:
- 利用光场的平滑性
- 自适应采样:边缘密集,平滑区域稀疏
- 使用高质量插值算法重建
- 基于字典的压缩:
- 学习光场块的字典表示
- 稀疏编码:$\mathbf{l} = \mathbf{D}\mathbf{\alpha}$
- 字典学习:K-SVD、MOD算法
光场编码技术:
利用相关性:
- 空间相关性:相邻像素相似
- 角度相关性:相邻视点相似
- 空间-角度相关性:由几何约束决定
视差补偿预测:
\(L(u+\Delta u, v+\Delta v, s, t) \approx L(u, v, s-d\Delta u, t-d\Delta v)\)
其中$d$是视差,与深度成反比。
多尺度表示:
- 小波变换:
- 分层表示:
- 基础层:低分辨率全光场
- 增强层:高频细节
- 渐进式传输
实时传输优化:
- 视点预测:只传输可能用到的数据
- 流式传输:按需加载数据块
- GPU加速解码:并行处理光场块
新兴压缩方法:
- 深度学习方法:
- 自编码器网络
- 生成对抗网络(GAN)
- 神经辐射场(NeRF)
- 隐式表示:
- 将光场表示为神经网络
- 极高的压缩率
- 连续表示,可任意分辨率采样
10.3 颜色科学与感知
10.3.1 人类视觉系统
光感受器:
- 视杆细胞(Rods):约1.2亿个,对光敏感,无色觉
- 视锥细胞(Cones):约600万个,分为L、M、S三种
- L型:峰值约564nm(红)
- M型:峰值约534nm(绿)
- S型:峰值约420nm(蓝)
光谱响应函数:
\(\bar{x}(\lambda), \bar{y}(\lambda), \bar{z}(\lambda)\)
CIE 1931标准观察者匹配函数。
10.3.2 色彩空间与变换
CIE XYZ色彩空间:
\(\begin{aligned}
X &= \int_{380}^{780} S(\lambda)\bar{x}(\lambda)d\lambda \\
Y &= \int_{380}^{780} S(\lambda)\bar{y}(\lambda)d\lambda \\
Z &= \int_{380}^{780} S(\lambda)\bar{z}(\lambda)d\lambda
\end{aligned}\)
色度坐标:
\(x = \frac{X}{X+Y+Z}, \quad y = \frac{Y}{X+Y+Z}\)
RGB到XYZ变换(sRGB):
\(\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix}
0.4124 & 0.3576 & 0.1805 \\
0.2126 & 0.7152 & 0.0722 \\
0.0193 & 0.1192 & 0.9505
\end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix}\)
10.3.3 感知均匀色彩空间
CIELAB(Lab*):
\(\begin{aligned}
L^* &= 116f(Y/Y_n) - 16 \\
a^* &= 500[f(X/X_n) - f(Y/Y_n)] \\
b^* &= 200[f(Y/Y_n) - f(Z/Z_n)]
\end{aligned}\)
其中:
\(f(t) = \begin{cases}
t^{1/3} & \text{if } t > \delta^3 \\
\frac{t}{3\delta^2} + \frac{4}{29} & \text{otherwise}
\end{cases}\)
$\delta = 6/29$
色差计算:
\(\Delta E_{ab}^* = \sqrt{(\Delta L^*)^2 + (\Delta a^*)^2 + (\Delta b^*)^2}\)
10.3.4 色彩管理与校准
ICC色彩配置文件:
- 描述设备的色彩特性
- 包含色彩空间变换矩阵
- 支持多种渲染意图
色域映射:
- 感知渲染(Perceptual)
- 相对色度(Relative Colorimetric)
- 绝对色度(Absolute Colorimetric)
- 饱和度(Saturation)
显示器校准:
- 白点设置(通常D65)
- 伽马校正(通常2.2)
- 色域覆盖率测量
10.3.5 高动态范围与色调映射
对数感知模型:
人眼对亮度的感知近似对数关系:
\(L_{\text{perceived}} = k \log(L_{\text{physical}} + \epsilon)\)
色调映射算子:
Reinhard算子:
\(L_d = \frac{L_w(1 + L_w/L_{white}^2)}{1 + L_w}\)
其中 $L_w$ 是世界亮度,$L_{white}$ 是映射到白色的亮度值。
基于梯度域的方法:
通过压缩亮度梯度来保持局部对比度:
\(\nabla L_d = \Phi(\nabla L_w)\)
其中 $\Phi$ 是梯度衰减函数。
本章小结
本章系统地介绍了计算机图形学中的成像系统,涵盖了从物理相机模型到人类视觉感知的完整知识体系。
关键概念回顾
相机模型:
-
| 针孔相机:$\mathbf{P} = \mathbf{K}[\mathbf{R} |
\mathbf{t}]$ |
- 薄透镜方程:$\frac{1}{f} = \frac{1}{d_o} + \frac{1}{d_i}$
- 景深与光圈的关系:$\text{DOF} \propto N$
- 畸变模型:径向畸变 + 切向畸变
光场理论:
- 5D全光函数:$L(x, y, z, \theta, \phi)$
- 4D光场参数化:$L(u, v, s, t)$
- 数字重聚焦原理
- 傅里叶切片定理的应用
颜色科学:
- CIE XYZ色彩空间定义
- 感知均匀空间:CIELAB
- 色差度量:$\Delta E_{ab}^*$
- HDR与色调映射
重要公式汇总
- 超焦距:$H = \frac{f^2}{Nc} + f$
- 组合透镜焦距:$\frac{1}{f} = \frac{1}{f_1} + \frac{1}{f_2} - \frac{d}{f_1 f_2}$
- 色度坐标:$x = \frac{X}{X+Y+Z}$, $y = \frac{Y}{X+Y+Z}$
- Reinhard色调映射:$L_d = \frac{L_w(1 + L_w/L_{white}^2)}{1 + L_w}$
实际应用要点
- 相机标定时需要考虑内参和畸变参数
- 光场相机可实现后期重聚焦和视角调整
- 色彩管理需要完整的ICC工作流程
- HDR成像需要适当的色调映射算法
练习题
基础题
习题10.1:给定一个焦距为50mm的薄透镜,物距为2m,求像距和放大率。
提示
使用薄透镜方程 $\frac{1}{f} = \frac{1}{d_o} + \frac{1}{d_i}$
答案
由薄透镜方程:
$$\frac{1}{50} = \frac{1}{2000} + \frac{1}{d_i}$$
$$\frac{1}{d_i} = \frac{1}{50} - \frac{1}{2000} = \frac{40-1}{2000} = \frac{39}{2000}$$
$$d_i = \frac{2000}{39} \approx 51.28 \text{mm}$$
放大率:$M = -\frac{d_i}{d_o} = -\frac{51.28}{2000} \approx -0.0256$
负号表示像是倒立的,放大率约为1:39。
习题10.2:已知相机的光圈为f/2.8,焦距为85mm,对焦在5m处,弥散圆直径为0.03mm。计算景深范围。
提示
先计算超焦距 $H = \frac{f^2}{Nc} + f$,然后计算近景深和远景深界限。
答案
超焦距:
$$H = \frac{85^2}{2.8 \times 0.03} + 85 = \frac{7225}{0.084} + 85 \approx 86012 + 85 \approx 86.1 \text{m}$$
近景深界限:
$$D_n = \frac{Hd}{H + d - f} = \frac{86100 \times 5000}{86100 + 5000 - 85} \approx 4.74 \text{m}$$
远景深界限:
$$D_f = \frac{Hd}{H - d + f} = \frac{86100 \times 5000}{86100 - 5000 + 85} \approx 5.30 \text{m}$$
景深范围:4.74m - 5.30m,总景深约0.56m。
习题10.3:将RGB颜色(0.8, 0.6, 0.2)转换为CIE XYZ色彩空间(假设sRGB)。
提示
使用sRGB到XYZ的转换矩阵。
答案
使用转换矩阵:
$$\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix}
0.4124 & 0.3576 & 0.1805 \\
0.2126 & 0.7152 & 0.0722 \\
0.0193 & 0.1192 & 0.9505
\end{bmatrix} \begin{bmatrix} 0.8 \\ 0.6 \\ 0.2 \end{bmatrix}$$
计算得:
- $X = 0.4124 \times 0.8 + 0.3576 \times 0.6 + 0.1805 \times 0.2 = 0.5801$
- $Y = 0.2126 \times 0.8 + 0.7152 \times 0.6 + 0.0722 \times 0.2 = 0.6136$
- $Z = 0.0193 \times 0.8 + 0.1192 \times 0.6 + 0.9505 \times 0.2 = 0.2769$
习题10.4:光场相机的微透镜阵列有100×100个微透镜,每个微透镜下有10×10个像素。计算光场的空间和角度分辨率。
提示
空间分辨率对应微透镜数量,角度分辨率对应每个微透镜下的像素数。
答案
- 空间分辨率:100×100 = 10,000个空间样本
- 角度分辨率:10×10 = 100个角度样本
- 总的光场分辨率:10,000 × 100 = 1,000,000个光线样本
- 如果用于2D成像,最大图像分辨率为100×100像素
挑战题
习题10.5:推导径向畸变的逆变换公式。已知畸变模型为 $r_d = r_u(1 + k_1r_u^2)$(仅考虑一阶项),求从畸变坐标到未畸变坐标的变换。
提示
这是一个三次方程,可以使用牛顿迭代法或解析解。
答案
给定 $r_d = r_u(1 + k_1r_u^2)$,需要从 $r_d$ 求 $r_u$。
令 $f(r_u) = r_u(1 + k_1r_u^2) - r_d = 0$
牛顿迭代法:
$$r_{u,n+1} = r_{u,n} - \frac{f(r_{u,n})}{f'(r_{u,n})}$$
其中 $f'(r_u) = 1 + 3k_1r_u^2$
迭代公式:
$$r_{u,n+1} = r_{u,n} - \frac{r_{u,n}(1 + k_1r_{u,n}^2) - r_d}{1 + 3k_1r_{u,n}^2}$$
初始值可选 $r_{u,0} = r_d$。
对于小畸变($|k_1r_u^2| \ll 1$),可以使用近似:
$$r_u \approx r_d(1 - k_1r_d^2)$$
习题10.6:设计一个算法,从一组不同焦距的图像中恢复场景的深度图。假设相机内参已知,图像已配准。
提示
利用散焦模糊与深度的关系,可以通过分析不同焦距下的模糊程度来估计深度。
答案
深度从散焦(Depth from Defocus)算法:
1. **模糊圆直径与深度关系**:
$$b = \frac{|d - d_f|}{d} \cdot \frac{f}{N} \cdot \frac{1}{d_f}$$
其中 $d$ 是深度,$d_f$ 是对焦深度,$f$ 是焦距,$N$ 是光圈数。
2. **算法步骤**:
- 对每个像素位置,测量不同焦距图像中的局部模糊程度
- 使用拉普拉斯算子或梯度幅值作为清晰度度量
- 找到最清晰的焦距设置,对应该点的深度
- 使用模糊程度变化率细化深度估计
3. **优化目标**:
$$d^* = \arg\min_d \sum_{i} \|I_i - B(I_{\text{sharp}}, b_i(d))\|^2$$
其中 $B$ 是模糊算子,$b_i(d)$ 是第 $i$ 张图像在深度 $d$ 处的模糊核大小。
4. **实际考虑**:
- 使用多尺度方法提高鲁棒性
- 考虑边缘处的遮挡问题
- 使用正则化保持深度图平滑
习题10.7:推导4D光场的傅里叶切片定理,并解释其在光场处理中的应用。
提示
考虑光场的傅里叶变换和重聚焦操作在频域的表现。
答案
**傅里叶切片定理**:
1. **4D光场的傅里叶变换**:
$$\hat{L}(\Omega_x, \Omega_y, \Omega_u, \Omega_v) = \mathcal{F}\{L(x, y, u, v)\}$$
2. **重聚焦操作**(剪切变换):
$$L_\alpha(x, y, u, v) = L(x + \alpha u, y + \alpha v, u, v)$$
3. **频域表示**:
重聚焦在频域对应于:
$$\hat{L}_\alpha(\Omega_x, \Omega_y, \Omega_u, \Omega_v) = \hat{L}(\Omega_x, \Omega_y, \Omega_u - \alpha\Omega_x, \Omega_v - \alpha\Omega_y)$$
4. **2D切片**:
重聚焦图像的频谱是4D频谱的2D切片:
$$\hat{I}_\alpha(\Omega_x, \Omega_y) = \hat{L}(\Omega_x, \Omega_y, -\alpha\Omega_x, -\alpha\Omega_y)$$
**应用**:
- 快速重聚焦:在频域进行切片比空域积分更高效
- 深度估计:不同深度对应不同的频域切片角度
- 光场压缩:利用频域稀疏性进行压缩
- 光场滤波:在4D频域设计滤波器
习题10.8:设计一个感知均匀的HDR色调映射算法,要求保持局部对比度并避免光晕效应。
提示
结合人眼感知模型、多尺度分解和梯度域处理。
答案
**多尺度感知色调映射算法**:
1. **对数域转换**:
$$L_{\log} = \log(L_w + \epsilon)$$
2. **多尺度分解**(使用高斯金字塔):
$$L_{\log} = B_0 + \sum_{i=1}^{N} D_i$$
其中 $B_0$ 是基础层,$D_i$ 是细节层。
3. **基础层压缩**:
$$B_0' = \frac{B_0 - B_{\min}}{B_{\max} - B_{\min}} \cdot (L_{\max} - L_{\min}) + L_{\min}$$
4. **细节层增强**(保持局部对比度):
$$D_i' = \sigma(|D_i|) \cdot \text{sign}(D_i) \cdot |D_i|^{\gamma_i}$$
其中 $\sigma$ 是sigmoid函数,$\gamma_i$ 随尺度变化。
5. **重建**:
$$L_{\log}' = B_0' + \sum_{i=1}^{N} w_i D_i'$$
权重 $w_i$ 基于局部对比度自适应调整。
6. **避免光晕**:
- 使用边缘停止函数限制跨边缘的平滑
- 梯度域约束:$\|\nabla L_{\log}' - \Phi(\nabla L_{\log})\| < \tau$
7. **线性域转换**:
$$L_d = \exp(L_{\log}') - \epsilon$$
该算法通过多尺度处理分离全局亮度和局部细节,保持感知均匀性的同时避免光晕效应。
常见陷阱与错误
相机模型相关
陷阱1:混淆物理焦距和等效焦距
- 错误:直接使用传感器尺寸不同的相机焦距进行比较
- 正确:转换为35mm等效焦距或使用视场角
- 调试:检查传感器尺寸和裁剪因子
陷阱2:径向畸变校正顺序错误
- 错误:先进行其他几何变换,再校正畸变
- 正确:畸变校正应在其他变换之前进行
- 调试:可视化校正前后的网格图案
陷阱3:忽略主点偏移
- 错误:假设主点在图像中心
- 正确:使用标定得到的准确主点位置
- 调试:检查相机标定结果的主点参数
光场处理相关
陷阱4:光场采样不足
- 错误:角度采样率过低导致混叠
- 正确:满足奈奎斯特采样定理
- 调试:检查重聚焦图像是否有重影
陷阱5:光场数据维度混淆
- 错误:混淆空间坐标和角度坐标
- 正确:明确区分(u,v)和(s,t)的物理意义
- 调试:可视化子孔径图像排列
陷阱6:傅里叶域处理边界效应
- 错误:直接进行FFT而不考虑边界
- 正确:使用适当的窗函数或填充
- 调试:检查频谱是否有不连续
颜色处理相关
陷阱7:忽略gamma校正
- 错误:在sRGB空间直接进行线性运算
- 正确:先转换到线性空间,运算后再转回
- 调试:检查中间色调是否正确
陷阱8:色彩空间转换精度损失
- 错误:使用8位整数进行中间计算
- 正确:使用浮点数保持精度
- 调试:往返转换检查误差累积
陷阱9:白平衡与色彩空间不匹配
- 错误:在错误的色彩空间应用白平衡
- 正确:在线性RGB空间进行白平衡
- 调试:使用灰卡验证白平衡效果
HDR相关
陷阱10:HDR合成中的运动伪影
- 错误:直接合成未对齐的多曝光图像
- 正确:先进行图像配准或使用鬼影消除
- 调试:检查运动区域的合成效果
陷阱11:色调映射参数选择不当
- 错误:使用固定参数处理所有图像
- 正确:根据场景动态范围自适应调整
- 调试:检查高光和阴影细节保留
陷阱12:忽略显示设备限制
- 错误:假设显示器可以准确显示所有颜色
- 正确:考虑显示器色域和亮度范围
- 调试:使用色彩管理的显示器验证
最佳实践检查清单
相机系统设计
光场系统实现
色彩管理流程
HDR工作流程
性能优化