我有一个非常简单的编程问题,我希望有人可以帮助我。
我正在处理带有多个频道的Tiff文件(全部包含在.lif文件中,这是Leica格式)。我希望有一种方法可以轻松地将我的所有Tiff转换为只包含几个通道(我指定的)的Tiff。现在我手动完成每个图像,这很乏味。我没有编写宏的经验和一些帮助或起点将非常感激。我确定它不是一个复杂的宏。
截至目前,我已打开所有Tiff后使用以下手动例程和命令:
我想要的是一个宏,它为所有打开的Tiff循环上述步骤,让用户指定频道(例如,保留频道:2,3和5)。我知道这是一个非常简单的编程任务,但我真的可以使用一些帮助来完成它。
谢谢! 约翰内斯
答案 0 :(得分:1)
创建仅包含通道子集的堆栈有几种不太复杂的可能性:
图片>堆栈>工具>制作Substack ... ,可让您指定频道/切片,gets recorded为:
run("Make Substack...", "channels=1,3-5");
图片>重复... ,您可以在其中选择连续范围的频道,例如:
run("Duplicate...", "duplicate channels=1-5");
要将此过程应用于文件夹中的所有图像,请查看Script Editor中的处理文件夹模板(模板> IJ1宏> {{3 }} )以及斐济维基上的文档:
答案 1 :(得分:0)
感谢Jan Eglinger的帮助,从度假回来我设法写了宏,这很简单,在你的帮助下:)基于模板看起来像这样(我只是给了他们增量名称,这对我来说很好,但是我猜想可能会变得更加全面:
/*
* Macro to for converting multichannel Tiffs to Tiffs with only specified channels, processes multiple images in a folder
*/
input = getDirectory("Input directory");
output = getDirectory("Output directory");
Dialog.create("File type");
Dialog.addString("File suffix: ", ".tif", 5);
Dialog.show();
suffix = Dialog.getString();
processFolder(input);
function processFolder(input) {
list = getFileList(input);
for (i = 0; i < list.length; i++) {
if(File.isDirectory(input + list[i]))
processFolder("" + input + list[i]);
if(endsWith(list[i], suffix))
processFile(input, output, list[i]);
}
}
function processFile(input, output, file) {
open(input + file);
print("Processing: " + input + file);
run("Make Substack...", "channels=1,2,4"); //Specify which channels should be in the final tif
print("Saving to: " + output);
saveAs("Tiff", output + i);
close("*");
}