0

I am trying to write an imageJ macro that will

1) Open and split an image into two channels 2) Perform particle analysis on each image and save measurements 3) Save the original image with the particle outlines overlayed

So far I have realised I need to first duplicate the original image so that the ROI can later be saved on top of this. However I at the moment I can't figure out how to rename this duplicated image so I can later select it for flattening:

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(); 

Sorry in advance if this is something very simple, this is all very new to me and learnt off googling!

2 Answers2

1

I modified my code to this last night and now it is working:

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"); 
     } 
} 
0

Every GUI action in ImageJ can be recorded in different script languages with the macro recorder which is a great help, see:

https://imagej.nih.gov/ij/docs/guide/146-31.html#sub:Record...

http://imagej.net/Introduction_into_Macro_Programming

The macro command for rename is simply: rename("YourImageTitle");

Marcel
  • 502
  • 3
  • 11