需求:
想要将一个文件夹中的图片利用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")