// works all the same for: byte, short, int float[] myData; // create a new image. change 32 to 16 for short or 8 for byte ImageStack stack = ImageStack.create(width, height, 1, 32); stack.setPixels(myData, 1); ImageProcessor processor = new ImagePlus("", stack).getProcessor(); // crop and scale processor.setRoi(x, y, rwidth, rheight); ImageProcessor result = processor.crop().resize(newWidth, newHeight); // retrieve results float[] myScaledData = (float[]) result.getPixels();
/** * Assigns a pixel array to the current position, * * @param pixels */ public void setPixels(final Object pixels) { if (isInitialized && pixels != null) { if (imageStack.isVirtual()) return; if (!pixels.getClass().equals( imageStack.getPixels(getCurrentImageStackIndex()).getClass())) return; if (width * height != Array.getLength(pixels)) { throw (new IllegalArgumentException( "Array size does not match image dimensions.")); } imageStack.setPixels(pixels, getCurrentImageStackIndex()); channelIPs[currentPosition[2]].setPixels(pixels); super.getStack().setPixels(pixels, getCurrentPosition(3) + 1); } }
@Override public void run(ImageProcessor ip) { ImageStack stack = image.getStack(); for( int z = 0; z < image.getStackSize(); ++z ) { byte [] pixels = ( byte [] ) stack.getPixels( z + 1 ); for( int i = 0; i < pixels.length; ++i ) { int v = domainToTemplate[ (int)(pixels[i] & 0xFF )]; pixels[i] = (byte)v; } stack.setPixels( pixels, z + 1 ); } }
/** This method has been replaced by IJ.createHyperStack(). */ public ImagePlus createHyperStack(String title, int channels, int slices, int frames, int bitDepth) { int size = channels*slices*frames; ImageStack stack2 = new ImageStack(width, height, size); // create empty stack ImageProcessor ip2 = null; switch (bitDepth) { case 8: ip2 = new ByteProcessor(width, height); break; case 16: ip2 = new ShortProcessor(width, height); break; case 24: ip2 = new ColorProcessor(width, height); break; case 32: ip2 = new FloatProcessor(width, height); break; default: throw new IllegalArgumentException("Invalid bit depth"); } stack2.setPixels(ip2.getPixels(), 1); // can't create ImagePlus will null 1st image ImagePlus imp2 = new ImagePlus(title, stack2); stack2.setPixels(null, 1); imp2.setDimensions(channels, slices, frames); imp2.setCalibration(getCalibration()); imp2.setOpenAsHyperStack(true); return imp2; }
/** This method has been replaced by IJ.createHyperStack(). */ public ImagePlus createHyperStack(String title, int channels, int slices, int frames, int bitDepth) { int size = channels*slices*frames; ImageStack stack2 = new ImageStack(width, height, size); // create empty stack ImageProcessor ip2 = null; switch (bitDepth) { case 8: ip2 = new ByteProcessor(width, height); break; case 16: ip2 = new ShortProcessor(width, height); break; case 24: ip2 = new ColorProcessor(width, height); break; case 32: ip2 = new FloatProcessor(width, height); break; default: throw new IllegalArgumentException("Invalid bit depth"); } stack2.setPixels(ip2.getPixels(), 1); // can't create ImagePlus will null 1st image ImagePlus imp2 = new ImagePlus(title, stack2); stack2.setPixels(null, 1); imp2.setDimensions(channels, slices, frames); imp2.setCalibration(getCalibration()); imp2.setOpenAsHyperStack(true); return imp2; }
public void setSlice(int index, ImageProcessor ip) { String name = preview.getSliceLabel(index); ImagePlus imp = new ImagePlus(name, ip); new FileSaver(imp).saveAsPng(dir + "/" + name); ip = ip.resize(w_prev).convertToByte(true); preview.setPixels(ip.getPixels(), index); }
public void insert(ImagePlus imp1, ImagePlus imp2, int x, int y) { ImageStack stack1 = imp1.getStack(); ImageStack stack2 = imp2.getStack(); int size1 = stack1.getSize(); int size2 = stack2.getSize(); ImageProcessor ip1, ip2; for (int i=1; i<=size2; i++) { ip1 = stack1.getProcessor(i<=size1?i:size1); ip2 = stack2.getProcessor(i); ip2.insert(ip1, x, y); stack2.setPixels(ip2.getPixels(), i); } imp2.setStack(null, stack2); }
public void insert(ImagePlus imp1, ImagePlus imp2, int x, int y) { ImageStack stack1 = imp1.getStack(); ImageStack stack2 = imp2.getStack(); int size1 = stack1.getSize(); int size2 = stack2.getSize(); ImageProcessor ip1, ip2; for (int i=1; i<=size2; i++) { ip1 = stack1.getProcessor(i<=size1?i:size1); ip2 = stack2.getProcessor(i); ip2.insert(ip1, x, y); stack2.setPixels(ip2.getPixels(), i); } imp2.setStack(null, stack2); }
public ImagePlus compute(ImageStack stack) { w = stack.getWidth(); h = stack.getHeight(); d = stack.getSize(); ImageStack result = new ImageStack(w, h, d); for (int i = 1; i <= d; i++) result.setPixels(new float[w * h], i); current = 0; total = w * h * d * 3; new Z(stack, result).compute(); new Y(result).compute(); new X(result).compute(); return new ImagePlus("EDT", result); }
void swapStackImages(ImagePlus imp) { int n1 = (int)getFirstArg(); int n2 = (int)getLastArg(); ImageStack stack = imp.getStack(); int size = stack.getSize(); if (n1<1||n1>size||n2<1||n2>size) interp.error("Argument out of range"); Object pixels = stack.getPixels(n1); String label = stack.getSliceLabel(n1); stack.setPixels(stack.getPixels(n2), n1); stack.setSliceLabel(stack.getSliceLabel(n2), n1); stack.setPixels(pixels, n2); stack.setSliceLabel(label, n2); int current = imp.getCurrentSlice(); if (imp.isComposite()) { CompositeImage ci = (CompositeImage)imp; if (ci.getMode()==IJ.COMPOSITE) { ci.reset(); imp.updateAndDraw(); imp.repaintWindow(); return; } } if (n1==current || n2==current) imp.setStack(null, stack); }
void swapStackImages(ImagePlus imp) { int n1 = (int)getFirstArg(); int n2 = (int)getLastArg(); ImageStack stack = imp.getStack(); int size = stack.getSize(); if (n1<1||n1>size||n2<1||n2>size) interp.error("Argument out of range"); Object pixels = stack.getPixels(n1); String label = stack.getSliceLabel(n1); stack.setPixels(stack.getPixels(n2), n1); stack.setSliceLabel(stack.getSliceLabel(n2), n1); stack.setPixels(pixels, n2); stack.setSliceLabel(label, n2); int current = imp.getCurrentSlice(); if (imp.isComposite()) { CompositeImage ci = (CompositeImage)imp; if (ci.getMode()==IJ.COMPOSITE) { ci.reset(); imp.updateAndDraw(); imp.repaintWindow(); return; } } if (n1==current || n2==current) imp.setStack(null, stack); }
/** Flattens Overlay 'overlay' on slice 'slice' of ImageStack 'stack'. * Copied from OverlayCommands by Marcel Boeglin 2014.01.08. */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int roiPosition = r.getPosition(); //IJ.log(slice+" "+i+" "+roiPosition+" "+showAll+" "+overlay.size()); if (!(roiPosition==0 || roiPosition==slice || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
/** Flattens Overlay 'overlay' on slice 'slice' of ImageStack 'stack'. * Copied from OverlayCommands by Marcel Boeglin 2014.01.08. */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int roiPosition = r.getPosition(); //IJ.log(slice+" "+i+" "+roiPosition+" "+showAll+" "+overlay.size()); if (!(roiPosition==0 || roiPosition==slice || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
public ImagePlus compute(ImageStack stack) { w = stack.getWidth(); h = stack.getHeight(); d = stack.getSize(); ImageStack result = new ImageStack(w, h, d); for (int i = 1; i <= d; i++) result.setPixels(new float[w * h], i); current = 0; total = w * h * d * 3; /* Since X class is the last to call set method, * it is its set method that takes care of * updating {min,max}Value */ minValue = 0; maxValue = 0; new Z(stack, result).compute(); new Y(result).compute(); new X(result).compute(); scaledResult = new ImagePlus("EDT", result); scaledResult.setDisplayRange(minValue, maxValue); return scaledResult; }
/** Flattens Overlay 'overlay' on slice 'slice' corresponding to * coordinates 'z' and 't' in RGB-HyperStack 'stack' */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll, int z, int t) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int cPos = r.getCPosition();// 0 or 1 (RGB-HyperStack) int zPos = r.getZPosition(); int tPos = r.getTPosition(); if (!((cPos==1 || cPos==0) && (zPos==z || zPos==0) && (tPos==t || tPos==0) || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
/** Flattens Overlay 'overlay' on slice 'slice' corresponding to * coordinates 'z' and 't' in RGB-HyperStack 'stack' */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll, int z, int t) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int cPos = r.getCPosition();// 0 or 1 (RGB-HyperStack) int zPos = r.getZPosition(); int tPos = r.getTPosition(); if (!((cPos==1 || cPos==0) && (zPos==z || zPos==0) && (tPos==t || tPos==0) || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
public void flipStack(ImagePlus imp) { ImageStack stack = imp.getStack(); int n = stack.getSize(); if (n==1) return; Calibration cal = imp.getCalibration(); double min = cal.getCValue(imp.getDisplayRangeMin()); double max = cal.getCValue(imp.getDisplayRangeMax()); ImageStack stack2 = new ImageStack(imp.getWidth(), imp.getHeight(), n); for (int i=1; i<=n; i++) { stack2.setPixels(stack.getPixels(i), n-i+1); stack2.setSliceLabel(stack.getSliceLabel(i), n-i+1); } stack2.setColorModel(stack.getColorModel()); imp.setStack(stack2); if (imp.isComposite()) { ((CompositeImage)imp).reset(); imp.updateAndDraw(); } IJ.setMinAndMax(imp, min, max); }
public void flipStack(ImagePlus imp) { ImageStack stack = imp.getStack(); int n = stack.getSize(); if (n==1) return; Calibration cal = imp.getCalibration(); double min = cal.getCValue(imp.getDisplayRangeMin()); double max = cal.getCValue(imp.getDisplayRangeMax()); ImageStack stack2 = new ImageStack(imp.getWidth(), imp.getHeight(), n); for (int i=1; i<=n; i++) { stack2.setPixels(stack.getPixels(i), n-i+1); stack2.setSliceLabel(stack.getSliceLabel(i), n-i+1); } stack2.setColorModel(stack.getColorModel()); imp.setStack(stack2); if (imp.isComposite()) { ((CompositeImage)imp).reset(); imp.updateAndDraw(); } IJ.setMinAndMax(imp, min, max); }
@Override public void run() { final int si = imp.getStackIndex( imp.getChannel(), imp.getSlice(), imp.getFrame() ); final ImageStack stack = imp.getStack(); for ( int i = 1; i <= stack.getSize(); ++i ) { final ImageProcessor source = stack.getProcessor( i ).duplicate(); final ImageProcessor target = source.createProcessor( source.getWidth(), source.getHeight() ); source.setInterpolationMethod( ImageProcessor.BILINEAR ); mapping.mapInterpolated( source, target ); if ( i == si ) imp.getProcessor().setPixels( target.getPixels() ); stack.setPixels( target.getPixels(), i ); IJ.showProgress( i, stack.getSize() ); } if ( imp.isComposite() ) ( ( CompositeImage )imp ).setChannelsUpdated(); imp.updateAndDraw(); } } );
@Override public void run() { final int si = imp.getStackIndex( imp.getChannel(), imp.getSlice(), imp.getFrame() ); final ImageStack stack = imp.getStack(); for ( int i = 1; i <= stack.getSize(); ++i ) { final ImageProcessor source = stack.getProcessor( i ).duplicate(); final ImageProcessor target = source.createProcessor( source.getWidth(), source.getHeight() ); source.setInterpolationMethod( ImageProcessor.BILINEAR ); mapping.mapInterpolated( source, target ); if ( i == si ) imp.getProcessor().setPixels( target.getPixels() ); stack.setPixels( target.getPixels(), i ); IJ.showProgress( i, stack.getSize() ); } if ( imp.isComposite() ) ( ( CompositeImage )imp ).setChannelsUpdated(); imp.updateAndDraw(); } } );