文章
阿尔特龙流程图中的分支:同时进行保存、平均和显示
假设实验室里有一个样品要在相机下放置数小时。您希望在显示器上看到平滑、低噪声的图像,保存全部原始数据以供日后分析,另外每隔几秒拍一张快照用于报告。这是对同一台相机的三项需求。在阿尔特龙中,可以通过为流程图建立分支来实现。

分支是什么意思?
每个阿尔特龙流程图都由用连线相连的节点组成。相机位于链的开头,之后是处理节点,存储和显示节点位于末端。一个节点的输出不必只连到一个节点。您可以从一个节点的输出引出多条连线,每条连线形成一个独立的分支。
分支不会复制数据,只是共享数据。因此,添加显示或保存分支不会占用额外内存。
这是最重要的决定。每个分支接收的正是在分支点流过的数据。几条简单规则:
- 用于分析的数据保存分支,应在黑电平、暗场和白场校正等物理传感器校正之后分出,但必须位于伽马等外观调整之前。
- 仅为视觉效果而做的平滑和锐化,应放在显示分支中,以确保保存的数据不受影响。
- 如果您自己的程序需要从路径中间获取数据,请在该位置连接一个 Data Holder 节点。该节点不会改变数据,只是为外部代码保留一份副本。
在 Tools › Flow Graph Editor 中搭建如下结构:
- 首先放置相机,然后是基本校正,例如使用 Correction 节点进行暗场和白场校正。
- 从最后一个校正的输出引出第一条连线,接到原始数据保存节点。该分支完整保存所有数据。
- 将第二条连线接到使用 Continuous Average 阶段的 Smoothing 节点,并将其输出送入一个显示器。该分支显示平滑的平均图像。
- 将第三条连线直接连到另一个显示器,以便同时查看未经平均的实时数据。
- 保存流程图,并在主程序中按 Recreate All。在处理链重建之前,更改不会生效。
要定期拍摄快照,请在分支开头放置一个 ImagingInterval 节点,并在其后连接保存节点。它有三种模式:
请务必检查 Apply to saving too 选项。如果勾选,该节点之后的保存节点只记录通过的样本,从而得到延时录制。如果未勾选,抽稀只会减轻该节点之后的处理和显示负担,保存节点会忽略其输出。此时,当同一相机上的保存节点正在录制时,该节点会让所有数据通过,以免录制内容有任何丢失。
阿尔特龙的默认流程图中还有一个名为 Default_AreaScan_Color_Usb3+ImagingIntervalForDataSaving 的现成示例,您可以以它为起点。
- 将伽马或锐化放在保存分支点之前,然后疑惑为什么保存的数据与测量结果不符。
- 修改流程图后忘记执行 Recreate All。
- 显示分支负载过重,拖慢整条处理链。请查看 Performance 选项卡,找出占用 CPU 份额最大的节点,并在其前面放置一个 Max rate 模式的 ImagingInterval。
在长时间录制之前,先让流程图运行几分钟,并在 Internal Info 选项卡中比较各节点的输入和输出数据速率。如果某个节点的输出突然低于其输入,而这并非您的本意,那么数据正是在该节点中丢失的。
有关处理流水线的更一般性说明,请参阅 维基百科(英文).
我们已将有关流程图和录制的常见问题汇总在 常见问题中。如果您的流程图需要特殊结构,请通过 联系页面 联系我们,我们将一起设计。