我知道编辑这个网站吗?

多视图反卷积

引文

请注意,斐济提供的 SPIM 注册插件基于书籍。如果您成功将其用于您的研究,请引用我们的工作:

doi:10.1038/nmeth.2929

多观点反对插件概述

多视图反拓扑插件是图像的一种融合插件,可根据同样本在不同方向拍摄的多个三维(3d)采集(视图)计算图像。对每个视图的单独点扩散函数(PSF),反尝试估计最可能解释所有视图的最可能图像。它可以针对单个时间点或整个时间序列进行计算。

先决条件 I - 注册

融合的先决条件是扫描的数据集,完整注册过程的概述可以在here中找到,我们建议使用Bead-based registration,因为它提供了一个简单的管道。

先决条件 II - PSF

多视图反面还需要估计每个视图的PSF。如果将荧光珠添加到样品周围的体积中并使用Bead-based registration来视图记录,则可以根据数据本身直接测量它们。

或者,可以将估计或模拟的 PSF 作为 3d 图像提供。如果以任何其他方式(例如使用 Segmentation-based registration 或通过外部程序)实现注册,这尤其有用。

####先决条件III - 种植

强烈建议开始多视角反视觉之前,使用Multi-view fusion来确定要反视觉的图像的正确边界框。

Do not set the bounding box too close to the imaged sample as it might result in artifacts. A distance of around 30-50 pixels between sample and the bounding box is suggested for the multi-view deconvolution.

如何使用插件

spim-multiview-dialog1

Shows the first dialog that queries the location of the multi-view files

多视图反驳仿真两个连续对话的多视图融合。第一个对话框查询分析数据集所需的信息,即找到图像文件、注册信息和相应珠子的位置(如果适用)。请注意,所有参数都在您用于设置边界框(内部区域)的Multi-view fusion对话框中传输之前。

我们在此简略地对参数进行详细解释,因为它与第 Multi-view fusion dialog 中提供的解释相同。

提供数据后,插件将检查可用的注册类型(*.registration 和 *.registration_.to{tt})。通常,可以进行单独的配准,也可以对不同的参考时间点进行多个时间序列配准。如果找不到注册文件,插件将退出。

mv-deconvolution

Shows the second dialog that queries detailed parameters

在第二个流程图中,您必须定义如何运行多视图反驳的详细说明。

可用的选项有:

  • ** 频道 0 的注册:** 您可以选择该频道使用哪个注册。您通常可以单独选择该时间点的注册或参考任何注册的时间点。

  • 修剪输出图像偏移量x/y/z:定义输出图像的x/y/z维度中修剪区域(边界框)相对于未修剪图像的偏移量是。值0指围绕所有视图的边界框的顶点。

  • ** 修剪输出图像大小 x/y/z:** 定义输出图像的 x/y/z 维度中相对于未修剪图像的修剪区域(边界框)的大小。值为 0 表示不修剪。

The values defining the bounding box are identical to those provided in the multi-view fusion!

  • 迭代类型:已经开发并可以使用多种迭代方案。它们在收敛时间和图像质量方面各自不同,这当然是一个权衡:
    • Independent (slow, very precise) Is an ad-hoc optimization, yields reasonable results in case of very high signal-to-noise levels. In this case it is very fast.
    • Efficient Bayesian - Optimization I (fast, precise) Is an optimization of the Efficient Bayesian multi-view deconvolution which approximates the conditional probabilities - the default choice.
    • Efficient Bayesian (less fast, more precise) Incorporates conditional probabilities between the views into account without making any further assumptions.
    • Independent (slow, very precise) assumes the individual views to be independent. This scheme converges slowest, but is least susceptible to noise and distortions (relevant at low signal-noise-ratios, imprecise alignments and inaccurate estimations of the PSFs)
  • 迭代次数:当使用贝叶斯 - 优化I(快速、精确待)作为迭代方案时,包含大约4-8个视图的典型多视图反视觉场景需要行为10-15次迭代。与其他数量的视图和不同优化方案的相关可以在补充图4(链接)中。

In order to determine the correct number of iterations for your dataset we suggest to use the Debug Mode (see below) on a partial volume.

  • 使用 Tikhonov 正则化/Tikhonov 参数: 可以激活(取消)激活正则化。 Tikhonov 参数的行为如补充图 5 和 6(待链接)所示。

  • ImgLib 容器: 定义哪个容器用于在内存中保存图像数据。ArrayContainer 通常是正确的选择,因为它提供最高的性能。 PlanarContainer 和 CellContainer 可能(!)在内存不足的情况下提供帮助,但它们只节省了几个百分点。

  • 计算:是否定义应立即或分块计算整个图像的多视图反方向。结果将100%相同!块计算可以节省大量RAM,但代价是计算时间更长。如果内存不足,请尝试以小块的形式进行计算。如果您选择手动定义的块大小,则对话框将查询尺寸。

For computation on the CPU, specific block sizes are not important (it is not a traditional power-of-2 scheme). However, on the GPU it is highly recommended to use only power-of-two values (256, 512, etc.), or maximally a sum of power-of-two values (384, 768, etc.)

  • 计算上:多视图反面可以通过 JNA 和 CUDA 在 CPU 或 GPU 上计算。CPU 计算是在 Fiji 中构建的,CUDA 代码需要加载本机库(*.dll、*.so),需要在启动 Fiji 将其复制到 Fiji 目录中。如果您选择在 GPU 上一次计算整个图像,后面的对话框将查询使用的 CUDA 设备。如果您选择 CUDA上面的块,您可以在接下来的对话框中选择将使用哪些 GPU。如果您有多个 CUDA 设备,请同时使用它们。让 CPU 的计算块也运行通常不会更快,但也可能会更快。

Note that when CUDA crashes (e.g. because of out-of-memory), Java usually crashes with it.

  • PSF估计: PSF可以从基于珠子的配准过程中检测到相应的珠子中提取,也可以提供PSF的图像。您可以使用模拟的PSF转换实验测量的PSF(有关如何存储它们的详细信息,请参阅PSF显示)。您可以对所有视图使用相同的PSF,那么根据每个视图的注册进行,或者为每个视图指定一个PSF。在后面的一种情况下,您可以选择PSF,或者提供已转换的 PSF。通常,您将改造它们。如果 PSF 已转换它们,将具有与输入视图相同的结构。

  • PSF 显示: 为了验证或存储提取的 PSF,它们可以显示为沿旋转轴的最大强度投影、平均三维体积或每个 PSF 单独显示为三维体积。对于后两种情况,您可以选择以与输入视图相同的思维方式或已转换的布局显示它们。 例如,您可以将它们保存起来作为不包含珠子的反对称实验的输入。

All images are displayed as Virtual stacks. You might need to duplicate them in order to save them.

  • 调试模式:调试模式不仅会计算最终图像,还会在ImageJ窗口中中间迭代。这样可以确定数据集所需的正确迭代次数。每次迭代后,系统将在后续对话框中询问您想要查看迭代的当前状态。否则整个数据集运行调试模式,而对一小部分显示数据集运行调试模式是有意义的。虽然输出可能不同,但很好地可以了解需要多少次迭代。

  • 按顺序加载图像:您通常需要激活此选项,因为它可以节省大量内存,同时速度却明显变慢。

  • 融合图像输出:您可以选择显示结果、将其保存为切片的目录输出或为处理的每个时间点创建不同的目录。

多通道多观点反对

多通道反心血管可以通过在两个通道上单独运行插件来实现。首先,您必须确保两个通道相辅相成。你有两个选择:

(1)只能在一个通道上运行Bead-based registration,并为其他通道复制并重命名 *.dim、*.beads.txt 和 *.registration 文件。现在,当您在包含珠子的通道上运行反逻辑时,选择导出原始正确中的 PSF。对于其他通道,使用加载的 PSF 运行反拓扑。或者使用模拟 PSF。只需合并所有通道的结果即可。 (2) 运行Multi-channel bead based registration,它要求相同的珠子在所有通道中都可见,并且将相互注册。现在在两个通道上单独运行反波形并从中提取PSF或使用模拟图像PSF。现在会出现这样的问题:图像很可能会相互偏移,您甚至可能需要定义两个不同的边界框。好消息是,我们无意中知道偏移量(即使有不同的边界框)是多少。因此,您需要记下通道融合反对称输出中的一行(实际上是相同的):

Location of pixel (0,0,0) in global coordinates is: (367.39523, 452.0, 105.90103)

例如,可以使用FileNewScript应用不同通道的这些坐标之间的差异。

我知道…问题、已知问题和解决方案

接下来的几段中的一些提示和技巧需要更改源代码中的静态变量来更改插件的行为。这是使用 脚本编辑器 完成的,工作原理如下:

  • TransformJTranslate
  • LanguageBeanshell
  • 输入命令,例如
      System.gc();
    
  • 点击Run

这只是清理RAM,这可能有用。请注意,所做的更改(但不是在本例中)仅对当前运行的斐济实例有效

我想更改 PSF 的大小

该插件会选择提取检测到相应珠子周围的 PSF 的区域。您可以通过以下方式在 Beanshell 中更改它: fiji.plugin.Multi_View_Deconvolution.psfSize3d = new int[]{ 31, 31, 31 }; 这将检测到的珠子周围的区域更改为 31x31x31 像素(在输入视图的原始排序中)。

我想在失败之前进行反驳

您可以在运行中恢复之前丢失的背景(所有属于 0 的内容都会被剪掉)。因此,请在脚本编辑器中输入: fiji.plugin.Multi_View_Deconvolution.subtractBackground = 100; 例如,在开始之前以及开始去除PSF之前,从每个像素中的缺失值100。

如何为CPU选择有效的块大小

现在这非常棘手。在给定一定大小的情况下,您希望使用注意少量的块。如果您选择的块大小为 512x512x512px,则最终的有效大小可能为 475x489x432px,这取决于转换后的 PSF 的大小。它的计算方式为块大小 - 内核大小 + 1。因此,在真正运行一次反方向之前您无法预测它。每个视图的它也不同(参见next section)。但是,相对于边界框大小的有效块大小定义了覆盖边界框需要多少块。有多少块和有效块大小写入标准输出。以后我计划让这件事变得更容易。

如何使所有 PSF 大小相同

在您优化块大小的过程中,可能会厌倦每个视图的块大小都不同的事实。这可能会带来巨大的问题。因此,我在开始反方向之前添加了使所有变换后的 PSF 具有相同大小的选项。这意味着所有视图的有效块大小都是相同的。 fiji.plugin.Multi_View_Deconvolution.makeAllPSFSameSize = true; 请注意,如果您必须对数百或数千个时间点进行反补贴,您可能需要了解此优化细节。

调试模式的中间(取消)激活

也许您已经运行反财政部一段时间了,因为图像巨大并且以小块计算,您可以在下一次迭代时检查当前状态。或者您可能想终止调试模式,因为您担心下一个调试图像会消耗内存。可以通过执行来实现这一点 mpicbg.spim.postprocessing.deconvolution2.debug = true; // or false 您还可以更改间隔 mpicbg.spim.postprocessing.deconvolution2.debugInterval = 10; 现在,我只需每10次迭代进行调试。

使用之前的结果开始反驳

默认情况下,反重力使用每个像素的常量值进行初始化。但是,您有机会使用不同的图像进行初始化。通过这种方式,您可以简单地向现有结果添加更多迭代,甚至您尝试组合不同的参数。通过设置输入图像来做到可以点 mpicbg.spim.postprocessing.deconvolution2.initialImage = “/users/preibischs/data/psi_10.tif”; 并重新运行反方向。请注意,根据定义,解决图像有一个简单的方法,这里我们使用 0.0001。默认情况下,将检查图像是否存在异常。您可以执行来取消检查 mpicbg.spim.postprocessing.deconvolution2.checkNumbers = false;