public static ImageStack mergeStacks(ImageStack red, ImageStack green, ImageStack blue, boolean keepSource) { RGBStackMerge merge = new RGBStackMerge(); return merge.mergeStacks(red.getWidth(), red.getHeight(), red.getSize(), red, green, blue, keepSource); }
public static ImagePlus mergeChannels(ImagePlus[] images, boolean keepSourceImages) { RGBStackMerge rgbsm = new RGBStackMerge(); return rgbsm.mergeHyperstacks(images, keepSourceImages); }
private String[] getInitialNames(String[] titles) { String[] names = new String[maxChannels]; for (int i=0; i<maxChannels; i++) names[i] = getName(i+1, titles); return names; }
int[] wList = WindowManager.getIDList(); if (wList==null) { error("No images are open."); return; String[] names = getInitialNames(titles); boolean createComposite = staticCreateComposite; boolean keep = staticKeep; error("There must be at least one source image or stack."); return; if (img==null) continue; if (img.getStackSize()!=stackSize) { error("The source stacks must have the same number of images."); return; error("Source hyperstacks cannot be RGB."); return; error("Source hyperstacks cannot have more than 1 channel."); return; error("Source hyperstacks must have the same dimensions."); return; error("The source images or stacks must have the same width and height."); return;
public void run(String arg) { imp = WindowManager.getCurrentImage(); mergeStacks(); }
/** Deprecated; replaced by mergeChannels(). */ public ImagePlus createComposite(int w, int h, int d, ImageStack[] stacks, boolean keep) { ImagePlus[] images = new ImagePlus[stacks.length]; for (int i=0; i<stacks.length; i++) images[i] = new ImagePlus(""+i, stacks[i]); return mergeHyperstacks(images, keep); }
for (int i=1; i<=d; i++) { cp = new ColorProcessor(w, h); redPixels = getPixels(red, slice, 0); greenPixels = getPixels(green, slice, 1); bluePixels = getPixels(blue, slice, 2); if (invertedRed) redPixels = invert(redPixels); if (invertedGreen) greenPixels = invert(greenPixels); if (invertedBlue) bluePixels = invert(bluePixels); cp.setRGB(redPixels, greenPixels, bluePixels); if (keep)
for (int i=0; i<channels; i++) { ImagePlus imp2 = images[i]; if (isDuplicate(i,images)) imp2 = imp2.duplicate(); stacks[i] = imp2.getStack();
int[] wList = WindowManager.getIDList(); if (wList==null) { error("No images are open."); return; String[] names = getInitialNames(titles); boolean createComposite = staticCreateComposite; boolean keep = staticKeep; error("There must be at least one source image or stack."); return; if (img==null) continue; if (img.getStackSize()!=stackSize) { error("The source stacks must have the same number of images."); return; error("Source hyperstacks cannot be RGB."); return; error("Source hyperstacks cannot have more than 1 channel."); return; error("Source hyperstacks must have the same dimensions."); return; error("The source images or stacks must have the same width and height."); return;
public void run(String arg) { imp = WindowManager.getCurrentImage(); mergeStacks(); }
/** Deprecated; replaced by mergeChannels(). */ public ImagePlus createComposite(int w, int h, int d, ImageStack[] stacks, boolean keep) { ImagePlus[] images = new ImagePlus[stacks.length]; for (int i=0; i<stacks.length; i++) images[i] = new ImagePlus(""+i, stacks[i]); return mergeHyperstacks(images, keep); }
for (int i=1; i<=d; i++) { cp = new ColorProcessor(w, h); redPixels = getPixels(red, slice, 0); greenPixels = getPixels(green, slice, 1); bluePixels = getPixels(blue, slice, 2); if (invertedRed) redPixels = invert(redPixels); if (invertedGreen) greenPixels = invert(greenPixels); if (invertedBlue) bluePixels = invert(bluePixels); cp.setRGB(redPixels, greenPixels, bluePixels); if (keep)
for (int i=0; i<channels; i++) { ImagePlus imp2 = images[i]; if (isDuplicate(i,images)) imp2 = imp2.duplicate(); stacks[i] = imp2.getStack();
public static ImageStack mergeStacks(ImageStack red, ImageStack green, ImageStack blue, boolean keepSource) { RGBStackMerge merge = new RGBStackMerge(); return merge.mergeStacks(red.getWidth(), red.getHeight(), red.getSize(), red, green, blue, keepSource); }
public static ImagePlus mergeChannels(ImagePlus[] images, boolean keepSourceImages) { RGBStackMerge rgbsm = new RGBStackMerge(); return rgbsm.mergeHyperstacks(images, keepSourceImages); }
private static ImageStack filterRGB(ImageStack rgb_in, int filter, float vx, float vy, float vz) { ImageStack[] channels = ChannelSplitter.splitRGB(rgb_in, false); ImageStack red = filter(channels[0], filter, vx, vy, vz); ImageStack green = filter(channels[1], filter, vx, vy, vz); ImageStack blue = filter(channels[2], filter, vx, vy, vz); return RGBStackMerge.mergeStacks(red, green, blue, false); }
private String[] getInitialNames(String[] titles) { String[] names = new String[maxChannels]; for (int i=0; i<maxChannels; i++) names[i] = getName(i+1, titles); return names; }
if (blue==null || done) return; int w = red.getWidth(), h = red.getHeight(), d = red.getStackSize(); RGBStackMerge merge = new RGBStackMerge(); ImageStack stack = merge.mergeStacks(w, h, d, red.getStack(), green.getStack(), blue.getStack(), true); new ImagePlus("Projection of "+imp.getShortTitle(), stack).show(); Prefs.useInvertingLut = saveUseInvertingLut;
/** Creates a hyperstack montage and returns it as an ImagePlus. */ private ImagePlus makeHyperstackMontage(ImagePlus imp, int columns, int rows, double scale, int inc, int borderWidth, boolean labels) { ImagePlus[] channels = ChannelSplitter.split(imp); int n = channels.length; ImagePlus[] montages = new ImagePlus[n]; for (int i=0; i<n; i++) { int last = channels[i].getStackSize(); montages[i] = makeMontage2(channels[i], columns, rows, scale, 1, last, inc, borderWidth, labels); } ImagePlus montage = (new RGBStackMerge()).mergeHyperstacks(montages, false); montage.setCalibration(montages[0].getCalibration()); montage.setTitle("Montage"); return montage; }
private static ImageStack filterRGB(ImageStack rgb_in, int filter, float vx, float vy, float vz) { ImageStack[] channels = ChannelSplitter.splitRGB(rgb_in, false); ImageStack red = filter(channels[0], filter, vx, vy, vz); ImageStack green = filter(channels[1], filter, vx, vy, vz); ImageStack blue = filter(channels[2], filter, vx, vy, vz); return RGBStackMerge.mergeStacks(red, green, blue, false); }