//Get info on stack getDimensions(width, height, channels, slices, frames); title = getTitle(); //Get current position Stack.getPosition(channel, slice, frame); currentSlice = 0; currentFrame = 0; for (currentSlice=1; currentSlice<=slices; currentSlice++) { //Duplicate just the current slice selectWindow(title); run("Duplicate...", "title=[&title] duplicate channels=1-3 slices=¤tSlice frames=1-&frames"); rename("Duplicate"); run("Median...", "radius=.5"); //Copy out all of the color channels selectWindow("Duplicate"); run("Duplicate...", "title=Blue duplicate channels=1 slices=1 frames=1-&frames"); selectWindow("Duplicate"); run("Duplicate...", "title=Green duplicate channels=2 slices=1 frames=1-&frames"); selectWindow("Duplicate"); run("Duplicate...", "title=Red duplicate channels=3 slices=1 frames=1-&frames"); //Clean up the green channel by subtracting the Red bleedthrough //imageCalculator("Subtract create stack", "Green","Red"); //selectWindow("Result of Green"); //rename("GFP"); selectWindow("Duplicate"); run("Duplicate...", "title=GFP duplicate channels=2 slices=¤tSlice frames=1-&frames"); //Copy out the blood channel selectWindow("Red"); run("Duplicate...", "title=Blood duplicate channels=1 frames=1-&frames"); //Reorder in order to average the time series run("Stack to Hyperstack...", "order=xyctz channels=1 slices=&frames frames=1 display=Composite"); run("Z Project...", "start=1 stop=&frames projection=[Average Intensity]"); rename("AVG_Blood"); run("Copy"); newImage("AVG_" + currentSlice, "16-bit color-mode label", width, height, 1, 1, frames); for(currentFrame=1; currentFrame<=frames; currentFrame++) { selectWindow("AVG_" + currentSlice); Stack.setPosition(1, 1, currentFrame); run("Paste"); } run("Merge Channels...", "c1=AVG_" + currentSlice + " c2=GFP c3=Blue create ignore"); selectWindow("Merged"); rename("AVG_" + currentSlice); selectWindow("Green"); close(); selectWindow("Red"); close(); selectWindow("Blood"); close(); selectWindow("AVG_Blood"); close(); selectWindow("Duplicate"); close(); } selectWindow("AVG_" + 1); rename("Merged") for (currentSlice=1; currentSlice