ImageJ:打开一系列文本图像作为堆栈

时间:2015-08-04 23:44:44

标签: macros imagej

在ImageJ中,我可以使用文件>>导入>>图像序列...打开一系列图像(tif,png,jpg等)作为堆栈。

我可以使用文件>>导入>>文字图片...

打开文字图片(包含像素矩阵的.txt文件)

但是如何将一系列文本图像作为堆栈打开?

有些人提供了Macro这样做,但它不能很好地工作,因为它也会单独打开所有图像,如果你打开其他图像,那么这些图像被合并到堆栈中同样(尝试连续两次运行宏)。

如果有一个宏或插件将文本图像导入单个堆栈(忽略其他打开的图像)而不是调出单个图像,那将是很好的。基本上,它应该像Import>> Image Sequence一样运行。

这是当前的宏作为起点,但我不确定这是最好的起点。谢谢!

dir = getDirectory("Choose directory");
list = getFileList(dir);
run("Close All");
setBatchMode(true);
for (i=0; i<list.length; i++) {
   file = dir + list[i];
   run("Text Image... ", "open=&file");
}
run("Images to Stack", "use");
setBatchMode(false);

2 个答案:

答案 0 :(得分:2)

在最新的斐济运行时,您个人粘贴的宏个人工作 - run("Close All");行旨在防止意外图像被包含在您的堆栈中,而批处理模式可防止间歇性图像弹出。

事实上,如果您尝试使用非2D图像(即上一次运行的输出)运行它,则应该抱怨Images to Stack。因此,如果您在运行宏时看到此行为,则可能是一个错误 - 您是否可以提供有关您正在使用的ImageJ / OS / Java版本的更多信息?

此外,更通用的解决方案可能是Bio-Formats importer - 它有一个标志,允许您将多个文件分组到一个堆栈中。如果您不想manually install它,默认情况下会包含生物格式Fiji distribution of ImageJ

您可能还有兴趣测试ImageJ2功能,该功能旨在将全格式支持插入到现有功能中 - 例如所以这样的宏不需要根据个别格式进行定制。从理论上讲,如果你下载斐济并打开Edit>Options>ImageJ2,那么File>>Import>>Image Sequence...应该按照你想要的方式工作......但它目前还没有经过充分测试。

答案 1 :(得分:0)

如果您想避免关闭其他打开的图像,可以使用图像到堆栈的标题包含参数

Images to Stack dialog

只需重命名打开的文本图像,使其标题包含唯一的字符串。 使用Macro recorder获取相应的宏代码:

dir = getDirectory("Choose directory");
list = getFileList(dir);

setBatchMode(true);
for (i=0; i<list.length; i++) {
    file = dir + list[i];
    run("Text Image... ", "open=[" + file + "]");
    rename("myUniqueIdentifier" + file);
}
run("Images to Stack", "title=myUniqueIdentifier");
setBatchMode(false);