引文
请注意,Stitching 以及斐济提供的其他插件均基于出版物。如果您成功地将其用于您的研究,请引用我们的工作:
doi:10.1093/bioinformatics/btp184
简介
对大型生物样本进行高分辨率成像的需求日益增长。通常这些样本不适合显微镜的视野。为了克服这个缺点,使用移动样品的电动平台来创建整个样品的平铺扫描。显微镜载物台提供的物理坐标不够精确,无法从各个图像堆栈重建(“缝合”)整个图像。
Stitching Plugin (2d-5d) 能够从任意数量的平铺输入图像/堆栈重建大图像/堆栈,利用傅里叶变换定理一次性计算两个 2d/3d 图像之间所有可能的平移 (x, y[, z]),从而在互相关测量方面产生最佳重叠。如果使用两个以上的输入图像/堆栈,则使用全局优化来确定所有图块的正确放置。拼接能够对齐任意数量的通道并支持延时注册。为了消除图块边界处的亮度差异,可以应用非线性强度混合。
请注意:这是Stitching插件的新实现,它最终基于Imglib并支持很多新功能:
- 现在合成图像和超堆栈
- 将拼接图像逐片直接写入磁盘(显着降低 RAM 要求)
- 将输入图像作为虚拟堆栈打开(显着降低 RAM 要求)
- 具有不同拼接选项的延时对齐
- 亚像素分辨率
- 支持多种不同类型的网格(逐行、逐列、蛇形……)
- 从图像元数据中读取大致的图块位置
由于虚拟输入堆栈以及将结果直接导出到磁盘,现在可以使用有限的 RAM 资源拼接任意数量的图像图块。
旧 Stitching 插件集合的文档可以在这里找到:Stitching 2D/3D。
拼接插件概述
图像拼接包附带 2 个不同的插件:
- Pairwise Stitching:拼接两个 2d-5d 图像,矩形 ROI 可用于限制搜索区域。
- Grid/Collection Stitching:拼接任意数量的 2d-5d 输入图像。它支持已知近似对齐的情况(网格、存储在文件中、元数据)以及完全无引导的对齐。
尽管这两个插件都使用分层的上下文相关通用对话框,但它们是完全可编写宏脚本的。
成对缝合
The Pairwise Stitching first queries for two input images that you intend to stitch. They can contain rectangular ROIs which limit the search to those areas, however, the full images will be stitched together. Once you selected the input images it will show the actual dialog for the Pairwise Stitching. The dialog will depend on the dimensionality of the input images. Please note that RGB input images will be converted into 8-Bit composite images.
- 线性混合:在重叠区域中,两个图像之间的强度平滑调整。
- 平均:在重叠区域中,计算所有图像之间的平均强度(example source code)。
- 中值:在重叠区域中,计算所有图像的中值强度。
- 最大限度。强度:在重叠区域中,所有图像之间的最大强度用于输出图像。
- 最小。强度:在重叠区域中,所有图像之间的最小强度用于输出图像。
- 叠加到复合:所有输入图像的所有通道将作为单独的通道放入输出图像中。
- 不融合图像:不会计算输出图像,仅计算重叠。
峰值数量定义了所检查的相位相关矩阵中最大值的数量。如果缝合不正确,增加这个数字可能会有所帮助。
如果您不选中计算重叠,该插件将仅应用可以插入到下面的翻译。
如果您检查supixel precision,该插件将计算两个图像之间的亚像素精确对齐(它几乎不花费任何计算时间,但需要一些 RAM)。此外,如果激活子像素定位,则将使用线性插值进行融合。否则将不应用插值。 选择配准通道时,您可以定义数据的哪一部分将用于计算重叠。它对数据的融合方式没有影响。
如果输入堆栈是延时图像,您将在如何随时间对齐方面有不同的选择:
- 将第一个时间点的注册应用于所有其他时间点:插件将仅计算第一个时间点的拼接,并假设此移位对于所有时间点都是正确的。
- 随时间相邻注册图像:拼接将计算所有时间点的所有图像之间的偏移,以及每个图像到下一个时间点的同一图像的偏移。将使用全局优化方案来最小化全局误差并拒绝异常值。将在附加对话框中查询此全局优化的参数。
- 全局注册所有时间点的所有图像(昂贵!):拼接将计算所有时间点和所有图像之间的偏移,这将花费相当多的时间。将使用全局优化方案来最小化全局误差并拒绝异常值。将在附加对话框中查询此全局优化的参数。
如果时间点注册需要全局优化,则会弹出另一个对话框以询问更多参数:
- 计算参数:如果您选择节省内存(但速度较慢),拼接将依次计算所有成对相关性。尽管它是多线程执行的,但它比在处理器可用时通过选项“节省计算时间(但使用更多 RAM)”同时计算尽可能多的成对相关性要慢。
- 最大/平均位移阈值:计算所有单独图块之间的重叠后,全局优化将计算所有图块的最佳排列。之后,与单独的对齐方式相比,一些图像对将被放置为彼此不同的位置,我们称之为位移。如果没有重大对齐错误,平均和最大位移将低于或约为 1 像素。如果两个图像之间的一个单独对齐是错误的,则这对图像将在全局优化中大量移位,因为所有其他连接图块将其拉向正确的全局位置。如果最大位移远高于平均位移,则意味着该单独对齐很可能是错误的并且将被删除。注意:如果不再有指向另一个图像的链接,则图像将被删除。
- 绝对位移阈值:如果绝对位移高于此值,则删除图像之间的链接。
网格/集合拼接
该插件能够拼接任意图像集合或网格,无论是 2d、3d、4d 还是 5d 图像,只要所有图像属于同一类型即可。与两个图像的成对拼接相反,该插件将从硬盘加载(并可能保存)图像。
Please note that you should take the chance to give the Grid/Collection Stitching a clue of what the approximate layout of the tiles is if you can. This will reduce the computational effort significantly and is much more likely to succeed. If this is not possible, choose the option Unknown positions and the Stitching will try to figure out the correct alignment without any help.
第一个对话框查询您想要组合的类型图像集合或图像网格。对于每种主要类型,通常有多种子类型可供选择。为了更容易理解,每个选项都有一个小数字支持:
- 网格:逐行:图像排列在网格中,一行接一行。一行完成后,新行始终从与前一行相同的位置开始(回车,就像阅读文本一样)。
- Right & Down: Start on the top left and go down line by line.
- Left & Down: Start on the top right and go down line by line.
- Right & Up: Start on the bottom left and go up line by line.
- Left & Up: Start on the bottom right and go up line by line.
- 网格:逐列:图像按网格排列,一列接着一列。一列完成后,新列始终从与前一列相同的位置开始(回车)。
- Down & Right: Start on the top left and go right column by column.
- Down & Left: Start on the top right and go left column by column.
- Up & Right: Start on the bottom left and go right column by column.
- Left & Up: Start on the bottom right and go left column by column.
- 网格:按行蛇形:排列图像在网格中,一行接一行。完成一行后,下一行从上一行结束的位置以正常的顺序开始(没有回车符,就像蛇一样)。
- Right & Down: Start on the top left and go right, then one line down, then left, then down, then right, …
- Left & Down: Start on the top right and go left, then one line down, then right, then down, then left, …
- Right & Up: Start on the bottom left and go right, then one line up, then left, then up, then right, …
- Left & Up: Start on the bottom right and go left, then one line up, then right, then up, then left, …
- 完成:按列蛇形:图像按网格排列,一列接着一列。当一列后,下一列以正确的顺序从上一列结束的位置开始(没有回车符,就像蛇一样)。
- Down & Right: Start on the top left and go down, then one column right, then up, then right, then down, …
- Down & Left: Start on the top right and go down, then one column left, then up, then left, then down, …
- Up & Right: Start on the bottom left and go up, then one column right, then down, then right, then up, …
- Up & Left: Start on the bottom right and go up, then one column left, then down, then left, then up, …
- 文件名定义的位置:每个图块的大致位置都编码在文件名中。
- 未知位置:每个图块的位置都是未知的,届时将尝试确定它们。
- 文件中的位置:每个图块的详细位置在附加文件中或由元数据定义。
- Defined by TileConfiguration: The next dialog will query for a tile configuration file that specifies the filenames as well as the approximate position of each tile in pixel coordinates. This is especially useful if the tiles are arranged in a way that is not covered by any of the other grid/snake options - or maybe also in z! You will find an example tile configuration file below. If you want to manually or automatically create such a file I suggest creating one using grid stitching (even if you do not have any image data) and changing it accordingly.
- Defined by meta data: Use this option if all tiles are stored in one big file that also contains the approximate stage positions in its meta data. When importing you will have the chance to further increase the overlap and define if the stage coordinates are calibrated or in pixel coordinates.
Once you selected your type of acquisition a second dialog will pop up that is slightly different depending up on your first selection. Here, I will explain the dialog that is used for any grid as this is the most complex one.
用户必须定义网格大小,这意味着输入图块的排列方式(例如 7 x 7 图像图块)。 *图块重叠是一个粗略的估计。注意:较小的重叠会减少计算时间,但如果未找到正确的对齐方式,请首先尝试增加该值。
网格布置假设以任何类型的网格排列的图块都是递增序号的。第一个图块索引i定义了估计图块配置中第一个图块的编号(参见上图)。接下来,您必须选择包含不同图块的目录。注意:如果您只有一个包含所有图块的大文件,请在第一个对话框中选择选项“文件中的位置 -> 由元数据定义”。
对话框中的下一个条目 图块文件名 用于告诉插件如何查找网格中的图像(例如 49 个不同的文件名)。我们假设这些文件的如下命名:
tile_001.lsmtile_002.lsm ….tile_049.lsm
这将转换为以下条目 tile_{iii}.lsm。它告诉插件在哪里放置递增的索引号i,并且使用长度为3的前导零。如果图块被称为tile_1.lsmtile_2.lsm ….tile_49.lsm,就会转换为tile_{i}.lsm。
如果您选择“文件名定义位置/由文件名定义*”作为类型,则网格中的近似坐标应成为文件名的一部分。假设您的文件名为:
tile_x01_y01.lsmtile_x02_y01.lsm ….tile_x10_y10.lsm
这会转换为以下模式:tile_x{xx}_y{yy}.lsm。
输出文本文件名称定义将包含初步近似最终布局和注册后每个图块的位置的文本文件。
融合方法与 Pairwise Stitching几乎相同,请在上面查看。
接下来的三个条目描述了全局优化的行为:
- 回归阈值:如果单独拼接后两个图像之间的回归阈值低于该数字,则假设它们不重叠。良好配准的典型值超过0.7,但在内容已知的噪声图像中,小的回归阈值也可以是正确的重叠。
- 最大/平均预测阈值:计算所有单独图块之间的重叠后,全局优化将计算所有图块的最佳排列。此后,与单独的对齐方式相比,一些图像对将被放置为不同的位置,我们称之为偏置。如果没有重大对齐误差,平均和最大分区将低于或近似1像素。如果两个图像之间的单个图标是错误的,则这对图像将在全局优化中不再大规模移动,因为所有其他连接图块将其拉向正确的全局图像位置。如果最大程度类似于一般推测,则意味着该单个图标很可能是注意错误的并且将被删除。:如果有指向另一个图像的链接,则将被删除。
- 绝对阈值:如果绝对值达到此值,则删除图像之间的链接。
您现在可以选择启用或取消序列开关。
首先,您可以添加图块作为 ROI,将在 ImageJ RoiManager 中为每个情人节图块生成一个 ROI。如果可能,ROI 名称将包含其相应图块的源文件,以便轻松识别感兴趣的图像。这启用并选择 ROI Picker 工具,以便您可以选择覆盖这所需区域块的 ROI。
接下来,您可以选择是否“计算重叠”或信任由网格配置、元数据或图块文件定义的(近似)位置。
如果您知道数据集是通过这些轴中的改装收集的,则反转x和反转y选项非常重要。如果您的拼接图像返回时图块看起来水平和/或垂直翻转,请尝试启用这些选项(如果适用)。
如果数据集中给定 XY 平面的各个图块是在稍微不同的 Z 位置(例如在倾斜的梯度上)获取的,则“忽略 Z 阶段位置”可能会很有用。拼接插件定义依赖于匹配的 Z 位置来 XY 平面,因此,如果您的拼接图像返回时有大量空白空间并裁剪散布图块之间,请尝试此选项。
如果您检查supixel precision,该插件将计算两个图像之间的亚像素精确定位(它几乎不占用任何计算时间,但需要一些RAM)。另外,如果激活子像素定位,则将使用线性插值进行融合。否则将不应用插值。
If downsample tiles is selected, a dialog will pop up during the stitching process allowing you to specify a new (smaller) image size. The current image size will be displayed at first. You can enter either a new scale (from 0-1) or a direct pixel value for the new height and width. A variety of interpolation algorithms can be selected. When you are happy with the downsampler settings, click ok and stitching will continue. Note that downsampling will occur before matching or fusion of tiles, so using this option can significantly speed up these operations and reduce the final fused image’s memory footprint.
现在,您可以选择将输入堆栈作为虚拟堆栈打开。这会显着减少内存消耗,但会消耗更多时间来执行计算。
计算参数:如果您选择节省内存(但速度较慢),拼接将依次计算所有相关性。虽然它是多线程执行的,但它比在处理器可用时通过选项“节省计算时间(但使用更多RAM)”同时计算注意多的相关性要慢。
最后,您可以选择是否显示结果或将融合图像写入磁盘。如果您选择将其直接写入磁盘,则需要很少的内存,因为它是逐片写入的。您稍后可以虚拟或部分打开此数据集,将其转换回Hyperstack (Image › Hyperstacks › Re-order hyperstack…)。不过,将其直接写入磁盘将比直接写入磁盘花费更多的时间。
网格收集/拼接插件
请参阅第§§2§§§页面,了解如何在斐济使用网格/集合拼接的完整说明。
问题、已知问题及解决方案
如果输出不正确
如果网格/集合无法创建正确的创建,图像您可以使用对拼接插件进行迭代。您只需从前两张图像开始将它们融合即可。在明显相似的正确上使用投资回报率,您可以强制进行的对齐。然后将结果与第三张图像融合,依此类推。除了时间之外最大的缺点是您只能使用最大强度融合方法,否则图像看起来会很奇怪。它会占用更多的资源。
加载图片时出现问题
为了加载显微图像,我们使用LOCI Bioformats导入器。如果您在加载文件时遇到问题,请先将其转换为TIFF,这样应该可以正常读取。
z 已知的最大数量
三维拼接不适合小于 3 个像素的 z 堆栈大小。如果您想从非常薄的瓷砖重建图像等,复制一些堆栈应该可以解决问题。或者您尝试仅研究薄堆栈的最大/平均强度投影。
互相注册不同的频道
该插件不是为了相互注册不同的频道而构建的。但是,如果您想这样做,只需将通道转换为时间点并像延迟注册一样运行即可。之后您可以将其转换回来。实现此目的最简单的方法是使用 Image › Hyperstacks › Stack to Hyperstack…
网格/集合拼接的延时景观
您可能会注意到,网格/集合拼接不提供任何延迟对齐选项,尽管它确实执行了此操作。目前,它始终使用选项将第一个时间点的注册检查所有其他时间点(如对万圣节中可用)
我对图块有一个已知的近似排列,但它不是任何网格
如果您仍然有一个已知的图块排列,并结合任何网格方法覆盖,您可以自己一个图块配置文件,该文件粗略地描述了包括创建重叠布局的排列。您可以使用它作为网格/集合拼接的输入(选项 文件中的位置 -> 由 TileConfiguration 定义)来优化它并找到正确的对齐方式。以下是 TileConfiguration.txt 示例:
# Define the number of dimensions we are working on
dim = 3
# Define the image coordinates (in pixels)
img_73.tif; ; (0.0, 0.0, 0.0)
img_74.tif; ; (409.0, 0.0, 0.0)
img_75.tif; ; (0.0, 409.0, 0.0)
img_76.tif; ; (409.0, 409.0, 0.0)
img_77.tif; ; (0.0, 818.0, 0.0)
img_78.tif; ; (409.0, 818.0, 0.0)
我想使用网格布局为X和Y定义不同的重叠
该选项存在,默认但情况下禁用取消状态,因为它可能仅在非标准场景中需要。您可以使用 脚本编辑器 启用它,如下所示:
- Language › Beanshell
- File › New › Script
- 输入以下行:
plugin.Stitching_Grid.seperateOverlapY = true; - 单击运行
从现在开始,当前运行的斐济实例上的Y重叠将有一个循环。
我想改变融合的混合参数
您可以使用脚本语言更改混合区域的比例为默认情况下,它设置 0.2 (20%),但您可以将其更改为 0 到 1 之间的任何值。您可以使用 脚本编辑器来执行此操作:
- Language › Beanshell
- File › New › Script
- 键入以下行将其更改为例如 10%:
mpicbg.stitching.fusion.BlendingPixelFusion.fractionBlended = 0.1; - 单击运行
从现在开始,混合将仅适用于每个图块的外部 10%。此更改仅对当前运行的斐济实例有效。
我想忽略Z方向上的图块的移动
有时人们会近似x和y,而不是z。有一种特殊的方法可以实现这一点,它只是在全局优化和融合时忽略z中的平移。如果事实证明这更有用,我会更适当地整合。
您可以使用脚本编辑器激活该选项:
- Language › Beanshell
- File › New › Script
- 输入以下行:
mpicbg.stitching.GlobalOptimization.ignoreZ = true; - 单击运行
从现在开始,对于 3d 采集,z 方向的任何移动都将被忽略。此更改仅对当前运行的斐济实例有效。
结果和计算时间

The figure shows stitched images of 3D confocal tiles. (A) shows a Drosophila melanogaster pupae expressing a GFP reporter under the regulation of the yellow gene, imaged few hours before eclosion using a 4× dry lens on an Optiphot confocal microscope (Nikon). It was stitched from three image stacks arranged in a 1 × 3 grid (Table 1 first row). The maximum intensity projection is shown. (B) shows the Drosophila larval nervous system stained with three dyes, stitched from a grid of 2 × 3 RGB images (see table 1 second row), the maximum intensity projection is shown. (C) shows a zone in the dorsal telencephalon of human embryonic tissue from week 17 post conception, incubated for 24 hours at 37°C in DiI. It was imaged using a 63×/1.4 objective on Zeiss LSM 510 equipped with a motorized stage. The final image was created from 24 image stacks arranged in a 4 × 6 grid (see table 1 third row), slice 18 is shown. Special thanks to Nicolas Gompel, James W. Truman, Simone Fietz and Wieland B. Huttner for providing the images.
For interactive examples of these datasets have a look here.
|瓷砖|单个瓷砖尺寸|图像输出尺寸|输出图像尺寸|计算时间|最小/平均/最大地质|
|——|—————————————————-|————————————————|——————————–|——————————–|—————————————-|
| 3 | 1024×1024×42 | 1097×2345×43 | 108MB(8位)| 0:42 分钟 | 0.00/0.00/0.00 像素 |
| 6 | 512×512×86 | 975×1425×86 | 350MB(RGB)| 1:20 分钟 | 0.60/0.77/1.05像素 |
| 24 | 1024×1024×68 | 3570×5211×70 | 1200MB(8位)| 22:43 分钟 | 0.49/0.76/0.99 像素 |
| 72 | 72 72 512×512×122 | 3391×3847×145 | 1850MB(8位)| 43:10 分钟 | 0.00/0.39/0.64 像素 |
| 63 | 63 63 1024×1024×92 | 6088×7667×119 | 5424MB(8位)| 178:57 分钟 | 0.00/0.66/1.18 像素 |
该表显示了在 2.67GHz 和 24GB RAM 的 Intel® 四核 CPU 上计算的拼接数据关系的示例。所有校准的全局校准的平均相位低于 1 px,第 1 行中的近似均匀,两个校准左右独立。请注意,计算时间与输出图像大小大致呈线性。
##接触
对于任何类型的评论、问题或意见,请写信至 preibischs@janelia.hhmi.org 或访问我的homepage。
##致谢
Stitching 依赖于相当多的库。我要感谢所有作者的支持和帮助:
- Mines Java Toolkit (JTK):Dave Hale 的高效一维 FFT 实现。
- MPI-CBG Transformation Package,作者:Stephan Preibisch。
- Imglib:由Stephan Saalfeld和Johannes Schindelin(现已被ImgLib2取代)用于Java的NViImage处理库。
- fiji-lib 和 Fiji_Plugins:斐济图书馆,Stephan Saalfeld。
- Bio-Formats用于读取和读取生命科学图像文件格式的Java库。我要特别感谢Melissa Linkert和Curtis Rueden。
另外,我要感谢以下人员的讨论、提供图像并推动我开发和不断改进拼接插件:
Danielle Bower,Gregory Jefferis,Nicolas Gompel,Wieland Huttner,Albert Cardona,Arnim Jenett,Pavel Tomancak,David Koos,Jan Peychl,Tom Kazimiers,James Truman,Nicholas Weiler 和Daniel James White。
另请参阅
- The Publication on the Stitching Plugin,S.普雷比施、S.萨尔菲尔德、P. Tomancak (2009) 平铺 3D 显微图像采集的全局最佳拼接”,生物信息学,25(11):1463-1465。PDF
- TrakEM2用于与浮动、可调整图像的无损拼接。
- XuvTools来自弗莱堡大学的类似拼接软件(但您无法自由访问 XuvTools 的源代码)以及随附书籍的abstract



