2024-04-10 利用宏实现imagej的自动化操作

需求:

想要将一个文件夹中的图片利用imagej中的merge功能进行通道重组,但是又不想一张图片一张图片打开,然后点击merge和save as,怎么办呢?这时候imagej的宏功能就可以帮助你解放双手了!具体操作如下:

操作背景:

我需要将一个文件夹中的全部图片按照一定次序进行merge,并保存。merge规则:第一张图片设为red通道,第二张图片设为green通道,第三张图片设为blue通道,进行merge并保存。然后第二张图片设为red通道,第三张图片设为green通道,第四张图片设为blue通道,进行merge并保存。按照此规则对文件夹内所有图片进行merge和保存。

步骤一:

建立一个文本进行宏命令设置

#    1.txt   文本名随意,但是尽量不要包含中文,以免识别错误
// 宏名称: 批量颜色合并
// 描述: 将文件夹中的图像进行颜色合并
// 文件夹路径
inputFolder = "your input path";
outputFolder = "your output path";


// 输出开始信息
print("start processing...");
// 打开文件夹中的图像文件
list = getFileList(inputFolder);

for (i = 1; i < list.length - 1; i++) {
    // 获取红色、绿色、蓝色通道图像
    redChannel = inputFolder + File.separator + list[i-1];
    greenChannel = inputFolder + File.separator + list[i];
    blueChannel = inputFolder + File.separator + list[i + 1];
    

    // 输出当前处理的图像信息
    print("processing " + (i) + "...");
    // 合并RGB通道
    open(redChannel);
    run("Duplicate...", "title=red");
    red = getTitle();
    
    open(greenChannel);
    run("Duplicate...", "title=green");
    green = getTitle();
    
    open(blueChannel);
    run("Duplicate...", "title=blue");
    blue = getTitle();
    
    run("Merge Channels...", "c1=" + red + " c2=" + green + " c3=" + blue + " create");
    mergedImage = getTitle();
    selectWindow(mergedImage);
    
    // 保存合并后的图像
    saveAs("png", outputFolder + File.separator + list[i]);
    
    // 关闭图像
    close("red");
    close("green");
    close("blue");
}
// 输出完成信息
print("complete!");

步骤二:

按照步骤运行宏命令。
plugins ===> Macros ===> run
稍微等待即可得到merge完成的图片。需要注意的是如果处理的图片过多,图片过大,可能会出错,灵活调整。

经验1:

// 宏名称: 批量调整图片对比度和亮度
// 描述: 相当于 image==>adjust==>B&C==>reset  操作
// 文件夹路径
inputFolder = "your input path";
outputFolder = "your output path";

// 输出开始信息
print("satrt processing...");
// 打开文件夹中的图像文件
list = getFileList(inputFolder);

for (i = 0; i < list.length; i++) {
    // 获取图像
    imagePath = inputFolder + "/" + list[i];
    
    open(imagePath);
    run("Enhance Contrast", "saturated=0.35");
   
    saveAs("Tiff", outputFolder + "/" + list[i]);
    close();

// if(i>5){
//    exit();}   
    
}
// 输出完成信息
print("complete")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容