我正在尝试编写一个 imageJ 宏,它将
1(打开图像并将其拆分为两个通道2( 对每个图像进行颗粒分析并保存测量结果3( 保存原始图像并叠加粒子轮廓
到目前为止,我已经意识到我需要首先复制原始图像,以便以后可以在此基础上保存投资回报率。但是,我目前无法弄清楚如何重命名此重复的图像,以便以后可以选择它进行拼合:
dir=getDirectory("Choose a Directory");
print(dir);
greenDir=dir + "/Green/";
blueDir=dir + "/Blue/";
print(greenDir);
print(blueDir);
File.makeDirectory(greenDir);
File.makeDirectory(blueDir);
list = getFileList(dir);
for (i=0; i<list.length; i++) {
if (endsWith(list[i], ".tif")){
print(i + ": " + dir+list[i]);
open(dir+list[i]);
imgName=getTitle();
baseNameEnd=indexOf(imgName, ".tif");
baseName=substring(imgName, 0, baseNameEnd);
run("Split Channels");
selectWindow("C1-" + imgName);
run("Duplicate...", "title= imgName + "original");
selectWindow("C1-" + imgName);
setAutoThreshold("Default dark");
//run("Threshold...");
//setThreshold(1, 255);
run("Convert to Mask");
run("Analyze Particles...", "size=60-Infinity pixel show=Outlines display exclude summarize add");
selectWindow(imgName + "original");
roiManager("Show All without labels");
run("Flatten");
saveAs("Tiff", greenDir + baseName + "green.tif");
close();
如果这是非常简单的事情,提前抱歉,这对我来说都是非常新的,并且从谷歌搜索中学到了!
我昨晚将我的代码修改为这个,现在它正在工作:
dir=getDirectory("Choose a Directory");
print(dir);
greenDir=dir + "/Green/";
blueDir=dir + "/Blue/";
print(greenDir);
print(blueDir);
File.makeDirectory(greenDir);
File.makeDirectory(blueDir);
list = getFileList(dir);
for (i=0; i<list.length; i++) {
if (endsWith(list[i], ".tif")){
print(i + ": " + dir+list[i]);
open(dir+list[i]);
imgName=getTitle();
baseNameEnd=indexOf(imgName, ".tif");
baseName=substring(imgName, 0, baseNameEnd);
run("Split Channels");
roiManager("Reset");
selectWindow("C1-" + imgName);
run("Duplicate...", "title=");
saveAs("Tiff", greenDir + "originalgreen" + baseName);
selectWindow("C1-" + imgName);
setAutoThreshold("Default dark");
//run("Threshold...");
//setThreshold(1, 255);
setOption("BlackBackground", false);
run("Convert to Mask");
run("Analyze Particles...", "size=60-Infinity pixel show=Outlines display exclude summarize add");
selectWindow("originalgreen" + imgName);
roiManager("Show All with labels");
run("Flatten");
saveAs("Tiff", greenDir + baseName + "overlaygreen.tif");
close();
}
}
for (i=0; i<list.length; i++) {
if (endsWith(list[i], ".tif")){
print(i + ": " + dir+list[i]);
open(dir+list[i]);
imgName=getTitle();
baseNameEnd=indexOf(imgName, ".tif");
baseName=substring(imgName, 0, baseNameEnd);
run("Split Channels");
roiManager("Reset");
selectWindow("C2-" + imgName);
run("Duplicate...", "title=");
saveAs("Tiff", blueDir + "originalblue" + baseName);
selectWindow("C2-" + imgName);
//run("Threshold...");
//setThreshold(23, 255);
setOption("BlackBackground", false);
run("Convert to Mask");
run("Analyze Particles...", "size=60-Infinity pixel show=Outlines display exclude summarize add");
selectWindow("originalblue" + imgName);
roiManager("Show All with labels");
run("Flatten");
saveAs("Tiff", blueDir + baseName + "overlayblue.tif");
run("Close All");
}
}
ImageJ 中的每个 GUI 操作都可以使用宏录制器以不同的脚本语言录制,这很有帮助,请参阅:
https://imagej.nih.gov/ij/docs/guide/146-31.html#sub:Record...
http://imagej.net/Introduction_into_Macro_Programming
重命名的宏命令很简单:rename("YourImageTitle"(;