1

我尝试用 Fiji 编写一个非常简单的宏,以便自动合并通道并增强对比度。

dir  = getDirectory("Select input directory"); out  = getDirectory("Select destination directory");
files  = getFileList(dir);
//foreach tiff couple files
for (j=0; j<lengthOf(dir);j+2) {
    channel1 = dir+files[j];
    channel2 = dir+files[j+1];
    open(channel1); 
    open(channel2);
    run("Enhance Contrast", "saturated=0.35"); // the same for the channel1
    run("Apply LUT", "stack"); // the same for the channel1
    run("Merge Channels...", "c1="+channel1+" c2="+channel2);
    run("Z Project...", "projection=[Sum Slices]");
    saveAs("Tiff", out+"merge"+files[j]);
    run("Close");
}

使用“增强对比度”,我不知道如何使用宏中亮度和对比度窗口的“自动”按钮。通道 2 比第一个强。

并且使用“应用 LUT”,当我有这行时会发生错误:“必须首先使用图像>调整>亮度/对比度或使用图像>调整>阈值定义的阈值级别来更新显示范围。” 我更改了阈值级别,它仍然不起作用...

你能给我什么建议?

4

1 回答 1

1

如果显示最小值和最大值分别为 0 和 255,则Apply Lut 命令 ( source ) 会出现此错误。如果您的图像已经具有高对比度,则可能会发生这种情况。下面我添加了一个条件getMinAndMax,如果显示范围不变(即 0-255),它将跳过应用步骤。

使用“增强对比度”,我不知道如何使用宏中亮度和对比度窗口的“自动”按钮。

根据文档run("Enhance Contrast", "saturated=0.35")与在 B&C 窗口中单击 Auto 相同。

我不清楚您是想对所有图像还是仅在第二个通道上重复此过程。下面是一个宏,可以单独增强每个通道的对比度,并修复循环的一些问题。

dir  = getDirectory("Select input directory"); out  = getDirectory("Select destination directory");
files  = getFileList(dir);
//foreach tiff couple files
    for (j=0; j<lengthOf(files);j+=2) { //fixed loop length and incrementor
    channel1 = dir+files[j];
    channel2 = dir+files[j+1];
    open(channel1); 
    image1 = getTitle(); // get the window name
    open(channel2);
    image2 = getTitle(); // get the window name

    selectWindow(image1); // focus on the first channel
    run("Enhance Contrast", "saturated=0.35 process_all"); // process all slices
    getMinAndMax(min,max);  // get display range
    if (min != 0 && max != 255) {  // check if the display has been changed
        run("Apply LUT", "stack"); 
        }

    selectWindow(image2); // repeating for the 2nd channel
    run("Enhance Contrast", "saturated=0.35 process_all"); // process all slices
    getMinAndMax(min,max); // get display range
    if (min != 0 && max != 255) {  // check if the display has been changed
        run("Apply LUT", "stack"); 
        }

    run("Merge Channels...", "c1="+image1+" c2="+image2); // use window names rather than full paths
    run("Z Project...", "projection=[Sum Slices]");
    saveAs("Tiff", out+"merge"+files[j]);
    run("Close All"); // make sure everything is closed
}
于 2016-02-18T15:31:05.490 回答