跳到主要内容
Sandbox Physics

光学 069 · 衍射、Fourier 光学与计算成像

编码孔径相机

不用镜头,只用一块带图案的掩模,相机怎样成像? 场景里每一点都在探测器上投下一个错开的掩模阴影,记录到的是所有阴影的叠加。拿配套的解码图样和它做相关,例如 MURA 掩模对应的解码器,就能把这些阴影重新拆成场景图像。噪声和掩模有限的边缘会留下伪影。

从相互重叠的阴影里解码出天空。掩模有具体的开孔,计数服从 Poisson 统计;可以看到 MURA 的局限,以及有限掩模边缘造成的伪影。

交互模型编码孔径相机
基本编码开口率/源期望计数 fopen,Csrcf_{\rm open},C_{\rm src}0.500.50
探测拟合/仅模拟真值误差 εD,εtruth\varepsilon_D,\varepsilon_{\rm truth}50%50\%
轴上角度步长/选中源编码率 Δθ,cselected\Delta\theta,c_{\rm selected}0.00π0.00\pi
模型适用区间模型适用\text{模型适用}

物理教程

检验编码孔径相机的物理过程

背景探测器记录不了负的掩模权重。开孔透光,闭格吸光,各个非相干光源的贡献直接相加:Di∼Poisson⁡ ⁣(E∑qHiqfq+b)D_i\sim\operatorname{Poisson}\!\left(E\sum_q H_{iq}f_q+b\right)。记录可以选无噪声的期望值,也可以选固定随机种子的 Poisson 计数。带正负号的解码器只在采集完成后才用上。

为什么值得理解不用镜头,只用一块带图案的掩模,相机怎样成像?

先抓重点

核心问题
不用镜头,只用一块带图案的掩模,相机怎样成像?
一句话直觉
对完整的 13 乘 13 MURA 周期,掩模和它的专用解码器满足 A⋆G=Kδ,K=84A\star G=K\delta,\qquad K=84。实体掩模板一旦被截短,周期模型就不成立。原点修正不能省,因为普通自相关并不是完美的单峰。

核心数学模型

光线几何与真实掩模尺寸

rM=rD−aqtan⁡θray=aqdND=13,NM=25 or 13a=2 mm\begin{aligned}\mathbf r_M&=\mathbf r_D-a\mathbf q\\ \tan\boldsymbol\theta_{\rm ray}&=\frac{a\mathbf q}{d}\\ N_D&=13,\quad N_M=25\text{ or }13\\ a&=2\,\mathrm{mm}\end{aligned}

探测图上,行号向下增加,列号向右增加。光线从掩模射向探测器,光源方向和入射光线的斜率方向相反。完整拼接覆盖所有采样平移,板外不会绕回。平移整数格时,像素和开孔面积正好对齐。

非负的计数采集

μi=E(Hf)i+bDi∼Poisson⁡(μi)E[Di]=Var⁡(Di)=μi\begin{aligned}\mu_i&=E(H\mathbf f)_i+b\\ D_i&\sim\operatorname{Poisson}(\mu_i)\\ \mathbb E[D_i]&=\operatorname{Var}(D_i)=\mu_i\end{aligned}

通量以单位光源在每个开放探测像素上的计数表示。背景均匀,事先标定,不用真值拟合。关掉噪声时,记录的是期望计数,不一定是整数。打开噪声时,用小均值的精确 Poisson 采样,均值大时把多次采样相加。

解码记录下的阴影

f^q=∑iGi−q(Di−b)EKG00=1,Gij=2Aij−1 (i,j)≠(0,0)\begin{aligned}\widehat f_q&=\frac{\sum_i G_{i-q}(D_i-b)}{EK}\\ G_{00}&=1,\quad G_{ij}=2A_{ij}-1\ (i,j)\ne(0,0)\end{aligned}

MURA 加上特殊的原点修正,只有在完整周期下才给出单峰点响应。其他掩模用零均值的匹配相关,并归一到轴上峰值为一;这样会丢掉天空的平均亮度,旁瓣也会留下。这一点明确标出,不声称随机掩模能完美反演。

按有限几何做岭重建

f^=arg⁡min⁡f∥Hf−D−bE∥2+λ∥f∥2λ=ρtr⁡(HTH)169\begin{aligned}\widehat{\mathbf f}&=\arg\min_{\mathbf f}\left\|H\mathbf f-\frac{\mathbf D-b}{E}\right\|^2+\lambda\|\mathbf f\|^2\\ \lambda&=\rho\frac{\operatorname{tr}(H^TH)}{169}\end{aligned}

共轭梯度法用实际的有限矩阵,只用采集到的数据。这是允许负值的岭最小二乘,没有非负先验,不是最优的 Poisson 似然,也不是真正的 Wiener 滤波。最多迭代八十步。正则化能压低噪声,也会让场景产生偏差。

常见难点

开孔越多,图像就一定越好吗?

容易误解阴影图越亮,重建就一定越清晰、信噪比越高。

正确理解每个开孔也会放进其他光源的光子,它们的散粒噪声做减法也去不掉。掩模图案、背景、光源分布,以及有限几何是否建模正确,都会影响结果。计数多了,信息不一定跟着多。

动手实验

  1. 01

    场景 1:完整 MURA 阴影

    在答案图中拖动亮源。查看真实的开孔和探测器正面,看两个阴影怎样叠在同一块探测器上。

    你会看到: MURA 的 169 格中固定开 84 格,开口率不能随意调。开口率滑块只改变随机掩模的设计。
  2. 02

    场景 2:随机掩模与光子噪声

    保持曝光不变,在 MURA、随机掩模、阵列和单针孔之间切换。比较各自实际收集的计数,以及解码后点响应的旁瓣。

    你会看到: 改变间距时,实体探测器跟着移动。角度网格的步长变小,但整数格的阴影平移保持不变。
  3. 03

    场景 3:掩模边缘缺失

    去掉外圈拼接,把一个光源移到边缘。用同一份记录,比较周期解码和考虑真实几何的岭重建。再加入 Poisson 噪声,增大曝光。

    你会看到: 真实场景只用来给结果打分。相关解码和岭重建可能给出负值、正则化偏差或鬼影,原始记录却始终非负。
反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策