电影帧与运动校正

现代探测器拍的是一段电影 —— 对齐帧、加权剂量、再求和,是一切处理的第一步

直觉

倾转序列里每一个倾角下,你以为相机拍了”一张照片”——其实没有。现代直接电子探测器把一次曝光切成几十帧,记录的是一段电影 (movie)。原因很简单:电子束打上去会推动样品(束致运动 beam-induced motion),样品台本身也在漂移,整个曝光过程中图像一直在动。如果只把电荷攒成一张图,这些位移就被永久糊进去了。拍成电影,就把”动”留在了帧与帧之间——运动校正先把各帧对齐,再求和成一张清晰的图。这是整条处理管线的第一步,发生在倾转序列对齐之前。

这是「软件与数据处理」管线的第一道工序。本页假设你刚拿到显微镜存下来的原始数据,从零讲起:那一堆文件到底是什么、为什么是电影、运动校正在做什么、它的输入输出各是什么。

一帧到底是什么

先把物理图像理清楚。直接电子探测器是一块能逐个电子计数的传感器;曝光时电子穿过样品打在它上面,它以很高的速度连续读出,一次曝光就被切成 NN 个时间片,每个时间片是一帧 (frame)——本质上是一张二维像素图,记录这一小段时间里落在每个像素上的电子数。把这 NN 帧按时间顺序叠在一起,就是一个帧栈 (frame stack),也叫一段电影。它通常是一个多页的 .mrc/.tif 文件:一个倾角,一个电影文件。

单独一帧曝光极短、电子极少,因此噪声大得几乎看不出内容——这很正常,它本来就不是用来单独看的。有用的信号要靠把所有帧加起来才显现。问题在于,简单相加之前,得先把帧与帧之间的位移收拾干净。

提示

运动校正还需要一张增益参考 (gain reference):探测器每个像素的灵敏度略有差异,增益参考是一张”各像素响应有多强”的标定图,处理时用它把这种逐像素的固定差异除掉,避免它被误当成样品结构。它由显微镜随数据一起给出,不需要你自己测。

为什么是电影,不是一张图

把帧栈直接相加,等于假设曝光期间样品纹丝不动——但它没有。两个来源让它动:

每一帧本身是个噪声很大的低剂量快照,但帧之间的相对位移是可以测出来的。把这些位移测准、补回去,再相加,得到的图就和”样品没动过”时几乎一样锐利。这就是为什么要存电影:动被留在了帧与帧之间,于是还有机会改回来;若一开始就攒成一张图,动就被永久糊死了。

运动校正在做什么

校正的核心是帧间对齐 (frame alignment):估计每一帧相对于参考的平移,把它们移回对齐,再求和成一张运动校正后的图(micrograph)。对齐有两种粒度,对应上面两种运动:

实际处理一般两者都用:先整帧对齐压住整体漂移,再分块对齐处理画面内的不均匀形变。常用工具有 MotionCor2、IMOD 的 alignframes、以及 RELIONWarp 自带的运动校正。

深入

最简单的模型是全局刚性平移:第 ii 帧的图像是真实图像平移了 di\mathbf{d}_i 的结果,对齐就是估出所有 di\mathbf{d}_i 后反向平移再叠加。分块对齐把视野切成网格,对每个区块估一条随时间变化的轨迹,最后插值出平滑的局部运动场。

注意单帧信噪比极低,无法逐帧两两直接配准;实际做法是迭代地构造一个不断变好的求和参考,让每一帧去对齐这个参考,从而把微弱信号借由全局一致性估稳。

剂量分帧与剂量加权

把曝光拆成帧还带来第二件事:剂量分帧 (dose fractionation)。总电子剂量被均分到各帧上——第一帧只受了一小份照射,最后一帧则累积了全部剂量。辐射损伤是累积的,所以越晚的帧,样品被破坏得越厉害,而且损伤先吃掉高频(精细结构)。

直觉上为什么是”先吃高频”:精细结构对应原子尺度上密集的密度变化,最脆弱,最先被电离损伤打乱;而大尺度轮廓(低频)要稳健得多,受了不少剂量仍大体保留。所以一帧的高频可不可信,取决于它累积到了多少剂量。

如果不加区分地把所有帧等权相加,晚期帧里已经损坏的高频就会污染最终图像。剂量加权 (dose weighting) 据此对每一帧、每个空间频率施加一个权重:低剂量的早期帧在高频上保留得多,高剂量的晚期帧的高频被压下去——但晚期帧的低频信息仍然有用,照样保留。换句话说,加权是频率相关的,按”这一帧的这个频率还可信吗”来分配权重。

一步步怎么做

把上面合到一条最小流程里(每个倾角各跑一次,倾转序列里有多少个倾角就跑多少次):

  1. 准备输入。 一个倾角的原始帧栈(多页 .mrc/.tif 电影),加上配套的增益参考和该曝光的总剂量(用来算剂量加权)。
  2. 应用增益参考。 除掉逐像素的灵敏度差异,把探测器自身的固定花样从图里剔出去。
  3. 整帧对齐。 估每一帧的全局平移,压住样品台漂移。
  4. 分块对齐。 在网格上估局部运动场,纠正画面内不均匀的束致运动。
  5. 剂量加权求和。 按每帧累积的剂量给各帧、各频率加权,再相加成一张图。
  6. 得到输出。 一张运动校正、剂量加权后的二维图(micrograph)——这个倾角”假如样品没动过”会拍成的样子。

把整个倾转序列的每个倾角都这么跑一遍,你就得到一摞干净的二维图,正好作为下一步倾转序列对齐的输入。

下面是一个通用命令形状(占位符全部大写,需按你的数据和工具文档替换,这里不写任何具体参数值):

# 形状示意:一个倾角的电影 -> 一张运动校正、剂量加权的图
motioncor-tool \
  -InMovie   RAW_MOVIE.mrc \
  -Gain      GAIN_REF.mrc \
  -OutImage  MOTIONCORR.mrc \
  -PatchGrid <横块> <纵块> \
  -TotalDose <该曝光总剂> \
  -DoseWeight

具体可执行的命令与参数请以你所用工具(MotionCor2 / IMOD / RELION / Warp)的官方文档为准——不同工具的开关名并不一样。

偶/奇拆分从这里开始

电影帧还顺手给了我们一份”免费”的独立性来源:把帧栈按奇偶(或前后两半)拆成两组,分别求和,就得到同一次曝光的两个独立半图。它们看到的是同一个样品、同一份信号,但噪声实现互相独立。这是后续做无偏分辨率评估、以及很多自监督去噪/重构方法(见 偶/奇拆分)的基础——而这一切的前提,就是当初探测器存的是电影而不是一张图。

它在管线里的位置

运动校正是最前面的一步:

倾转序列(每个倾角一段电影)→ 运动校正 + 剂量加权(每段电影 → 一张清晰加权图)→ 倾转序列对齐断层重构 → 下游分析。

只有先把每一帧的运动收拾干净、把损伤的高频压住,后面的对齐和重构才有锐利、可信的输入。重构出来的体里之所以仍带着 缺失楔形,是采样几何的问题,与这里的帧内运动无关——两者是管线里不同环节的不同毛病。


管线上一步:管线总览 · 下一步:倾转序列对齐。相关:倾转序列 · 偶/奇拆分

← 软件与数据处理