自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
该插件计算使用给定堆栈制作的每对图像的光流。
原理
该插件使用 PIV 方法工作,这是最基本的光流技术。这项技术主要用于声学或流体力学,可以使用成像和图像分析来测量一个平面中的速度场1。它可以被视为最简单的模式匹配问题实现之一。
PIV 分析是一种基于块的光流,基于推断图像的一部分在两个连续瞬间之间移动的方向和量。在上述领域中,通过在流动中注入光反射粒子(空气中的烟雾、气泡、水中的玻璃珠……)来可视化流动,并在两个非常接近的时刻成像。然后使用两幅图像中可以看到粒子生成的图案的部分之间的互相关来计算速度场。
PIV算法由以下步骤组成:
1.在连续两个时刻获取同一物体的两个图像; 2.它们被拼接成小块,称为审讯窗口; 3.针对每个小窗口计算两个图像之间的互相关性;
- 搜索所得相关图像中的峰值。峰值位置给出了两个图像部分看起来最相似的位移,即: 第二个图像必须移动的量才能看起来最像第一个图像;
- 将此时的速度矢量定义为峰值位置。这假设在两个连续的时刻之间,图像的内容没有发生太大变化,但发生了移动或变形。
在生命科学图像中的应用
以下是其在生物学中首次应用的两个示例:
对我们来说,这项技术的主要兴趣在于它允许计算速度场,而无需从图像中分割物体并跟踪它们,这使得它在处理明场或 DIC 图像时特别有趣。代价是精度的损失,而且你可能会得到完全不相关的向量。
算法
如前所述,这个插件实现了一种非常幼稚和原始的算法,没有微妙的感觉,主要是为了教育目的而存在。它的路线非常行人,因此速度很慢。对于远离图像边界的每个像素,为前图像和后图像提取一个块。然后根据这两个块计算相关矩阵,并对结果进行分析以产生流向量。这是一个高度冗余的过程,因为当算法向右移动到下一个像素时,块内容只发生了一点变化(实际上只替换了一列,其余的向左移动),但整个相关矩阵从头开始重新计算(浪费了大量的CPU周期)。
通常,在MacBook(灰色型号,2009)上,对于窗口大小为8x8的8位堆栈,插件可以在大约1秒内处理200x200的堆栈。我建议对图像进行下采样,这会降低结果的密度,但使这个插件负担得起。
该插件现在是多线程的,这意味着它将一次分析多个帧对,具体取决于它可以找到多少个 CPU。
示例
右侧的图像由 2000 个小高斯斑点 (sigma=1) 组成,随机生成(您可以获取原始文件here)。第二帧是通过向每个斑点添加偏移而获得的,如下所示:
- ΔY = α × (X-Xm)
- ΔX = α × (Y-Ym)
α=25,Xm 和 Ym 为图像宽度的一半。这有效地对图像产生了一种圆形扭曲。
下面是 PIV 分析发现的结果,窗口大小为 64x64(算法可以找到的最大位移由窗口大小的一半给出,因此我们必须至少使用 50x50),没有掩蔽,也没有插值。使用色轮中可以看到的参考来对流向和大小进行颜色编码。
这里还有另外两个例子,取自 J. Kristian Sveen 的MatPIV page。第一个描绘了水中的表面波:
第二个描绘了内波。注意框架中间的剪切。
安装
斐济
该插件是 Fiji 发行版的一部分。您可以在Plugins › Optic Flow菜单中找到它。
用法

选项如下:
- 窗口大小:设置用于分析的询问窗口大小。这是将进行比较以从中获取流量的块的大小。有关尺寸选择的见解,请参阅下文。
- 插值:如果选中,分析将为每个像素执行一个附加步骤,从而获得子像素流幅度。相关窗口的最大值将被插值(使用 3x3 邻域的泰勒展开),从而更好地估计其位置。
- Do masking:设置后,结果将使用峰高值进行屏蔽。对于低于 掩蔽水平 ×
max(pkh)的峰高值,流量将设置为 0。
投资回报率选择
如果您想将分析仅限于图像的特定部分,请在任何形状的 ROI 中选择它。
图像特征
尽管您不需要 PIV 的可追踪对象,但它仍然有一些要求。
PIV 基于非常简单的模式匹配算法。这意味着,为了有效,你的形象中必须有一些模式。通常,落射荧光电影中聚集体的点状结构或在明场图像上可以看到的颗粒度就可以了。根据经验,如果您可以通过眼睛看到物体移动,PIV 可能能够定量地获取它;否则当然不行。
另请记住,(到目前为止)它仅适用于 2D 平面。对于光学切片,算法可能会对沿 Z 方向移动的颗粒的出现感到困惑。此外,对于在明场中成像的厚样本:点的图像在 Z 轴上移动时会变形,这可能会导致不相关的值。
询问窗口大小的选择
为了执行模式匹配,图像被拼接成小块。由于您想要匹配清晰的图案,因此最好选择比您感兴趣的运动的图像特征更大的询问窗口大小。
让我们假设在一张图像中,可以以“颗粒”的形状找到某种结构,其大小约为 10-15 像素。为了始终获得至少一个完整的窗口,32x32 像素的窗口将是相关的。
平均
在流体动力学中,PIV 产生的速度场通常随后经过严格的空间过滤。在这些情况下,每个矢量都代表流体中的速度,流体通常在大范围内空间相关,因此空间域中的过滤是有意义的。
我们可以建议进行时间过滤,即:对于场中的每个向量,将其值替换为从前几帧到后几帧的移动平均值。如果您的电影在时间上过度采样,这可能会有效地平均异常值。
过滤
该插件还返回一个由分析峰高组成的堆栈。
峰值高度就是每个像素的相关峰值的值。这可用于掩盖结果图像的不相关部分。如果没有可关联的结构,算法通常会感到困惑。在图像的这些部分中,峰高通常较低;然后可以对峰值高度图像进行阈值处理,并用它来掩盖结果图像。
版本历史
- 1.0 - 2009 年 4 月 18 日 - 首次公开发布。
- 1.1 - 2009 年 4 月 19 日 - 现在可以在帧之间中断。
- 1.2 - 2009 年 4 月 20 日 - 现在是多线程的。