原始 MediaWiki 页面

我知道编辑这个网站吗?

分析骨架二维时间序列

自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南

简介:

这是一个可以从斐济运行的 Python 脚本(仅 imageJ - 包含电池),使用内置的 Jython 解释器 Jython 是 Python 的 Java 实现,它在 Java 虚拟机上本机运行。您可以使用其中的所有 java 类和 imagej 类,这很好。有关斐济 Jython 脚本编写的更多信息,请参阅 Jython_Scripting

感谢阿尔伯特·卡多纳(Albert Cardona)提供了有关如何执行此操作的提示。

该##脚本的目的:

Analyze Skeleton 2D/3D plugin 有一个限制,它无法处理 2D 时间序列堆栈本身。它只是将其视为 z 系列,这意味着结果不符合预期,因为将数据视为单个 3D 数据集而不是关心多个的 2D 时间点。

##解决方案:

为了解决这个限制,我们可以在时间序列中的每个单独帧上运行“分析重构(2D/3D)”命令,因为插件“分析图像(2D/3D)”在单帧上按预期工作!我们需要以合理转换的方式输出每一帧的结果(另存为.xls),并通过将所有单帧标记结果图像为后续制作标记结果“电影”。

如何使用这个脚本:

  1. 通过将脚本添加到 Fiji 插件目录来安装脚本,然后运行菜单命令插件 - 脚本 - 刷新 Jythion 脚本。然后脚本名称将出现在插件菜单中(底部)

  2. 在斐济打开一个电影数据集 - 检查图像元数据(Bat Cochlea Volume 样本图像有效)检查它是否是 2D 电影而不是 3D z 堆栈:选择 mobie 图像窗口,然后执行菜单项图像 - 属性您可能需要通过更改那里的数字将其从 z 堆栈更改为序列。如果第一次出现错误,您可以在此处设置像素大小,这样您的结果就会以微米等而不是像素为单位进行故障排除(我希望时间是真的)

  3. 从背景中分割对象,例如使用自动阈值方法,这样您就拥有一个8位二进制图像,其中包含背景0和对象255。

  4. 使用菜单命令“处理”-“二进制”-“重构”对影片中的每个帧进行重构。当系统询问您是否要对影片中的所有帧/切片进行重构时,单击“是”。

  5. 运行脚本:选择组成电影后,从插件菜单中选择脚本来运行脚本。注释!您必须更改脚本中的行: IJ.saveAs(“Measurements”, (“/Users/dan/Desktop/Results” + str(i) + “.xls”) ) 以便将记录路径您想要记录结果 .xls 文件的位置!在 Windows 上,可能需要脚本:IJ.saveAs("Measurements", ("C:\\Some Folder\\Whatever name want" + str(i) + ".xls")

  6. 保存标记图像电影的结果:TaggedMovie(例如,tiff)以及日志窗口中的结果摘要。每帧的结果已经在最后一步中保存了!

##代码:

#!/usr/bin/env python

from ij import IJ, ImagePlus
from java.lang import Runtime, Runnable

# the current image
imp = IJ.getImage()
stack = imp.getStack()

# for all the frames in the movie, run  "Analyze Skeleton (2D/3D)" (maybe later in multiple threads)
for i in range(1, imp.getNFrames() + 1):  # remember a python range (1, 10) is the numbers 1 to 9 !
#getNFrames not getNSlices since input data is a 2D time series stack NOT a 3D stack.
  slice = ImagePlus(str(i), stack.getProcessor(i))
  # Execute plugin exactly on this slice i
  IJ.run(slice, "Analyze Skeleton (2D/3D)", "")
  #Save the results for this frame as a .xls file
  IJ.saveAs("Measurements", ("/Users/dan/Desktop/Results" + str(i) + ".xls") )


# turn all the output tagged images into a stack - seems to be in the right order even though all the output frames have the same name
IJ.run("Images to Stack", "name=TaggedMovie title=Tagged use")

IJ.log("Done!")