Module ij
Package ij.process

Class ShortProcessor

java.lang.Object
ij.process.ImageProcessor
ij.process.ShortProcessor
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
SignedShortProcessor

public class ShortProcessor extends ImageProcessor
ShortProcessors contain a 16-bit unsigned image and methods that operate on that image.
  • Field Details

    • min

      protected int min
    • max

      protected int max
    • snapshotMin

      protected int snapshotMin
    • snapshotMax

      protected int snapshotMax
    • pixels

      protected short[] pixels
    • pixels8

      protected byte[] pixels8
    • fixedScale

      protected boolean fixedScale
  • Constructor Details

    • ShortProcessor

      public ShortProcessor(int width, int height, short[] pixels, ColorModel cm)
      Creates a new ShortProcessor using the specified pixel array and ColorModel. Set 'cm' to null to use the default grayscale LUT.
    • ShortProcessor

      public ShortProcessor(int width, int height)
      Creates a blank ShortProcessor using the default grayscale LUT that displays zero as black. Call invertLut() to display zero as white.
    • ShortProcessor

      public ShortProcessor(BufferedImage bi)
      Creates a ShortProcessor from a TYPE_USHORT_GRAY BufferedImage.
    • ShortProcessor

      public ShortProcessor(int width, int height, short[] pixels, ColorModel cm, boolean unsigned)
      Deprecated.
      16 bit images are normally unsigned but signed images can be simulated by subtracting 32768 and using a calibration function to restore the original values.
    • ShortProcessor

      public ShortProcessor(int width, int height, boolean unsigned)
      Obsolete. 16 bit images are normally unsigned but signed images can be used by subtracting 32768 and using a calibration function to restore the original values.
  • Method Details

    • findMinAndMax

      public void findMinAndMax()
    • createImage

      public Image createImage()
      Create an 8-bit AWT image by scaling pixels in the range min-max to 0-255.
      Specified by:
      createImage in class ImageProcessor
    • getBufferedImage

      public BufferedImage getBufferedImage()
      Returns this image as an 8-bit BufferedImage .
      Overrides:
      getBufferedImage in class ImageProcessor
    • get16BitBufferedImage

      public BufferedImage get16BitBufferedImage()
      Returns a copy of this image as a TYPE_USHORT_GRAY BufferedImage.
    • createProcessor

      public ImageProcessor createProcessor(int width, int height)
      Returns a new, blank ShortProcessor with the specified width and height.
      Specified by:
      createProcessor in class ImageProcessor
    • snapshot

      public void snapshot()
      Description copied from class: ImageProcessor
      Makes a copy of this image's pixel data that can be later restored using reset() or reset(mask).
      Specified by:
      snapshot in class ImageProcessor
      See Also:
    • reset

      public void reset()
      Description copied from class: ImageProcessor
      Restores the pixel data from the snapshot (undo) buffer.
      Specified by:
      reset in class ImageProcessor
    • reset

      public void reset(ImageProcessor mask)
      Description copied from class: ImageProcessor
      Restores pixels from the snapshot buffer that are within the rectangular roi but not part of the mask.
      Specified by:
      reset in class ImageProcessor
    • swapPixelArrays

      public void swapPixelArrays()
      Swaps the pixel and snapshot (undo) arrays.
      Specified by:
      swapPixelArrays in class ImageProcessor
    • setSnapshotPixels

      public void setSnapshotPixels(Object pixels)
      Description copied from class: ImageProcessor
      Sets a new pixel array for the snapshot (undo) buffer.
      Specified by:
      setSnapshotPixels in class ImageProcessor
    • getSnapshotPixels

      public Object getSnapshotPixels()
      Description copied from class: ImageProcessor
      Returns a reference to the snapshot (undo) buffer, or null.
      Specified by:
      getSnapshotPixels in class ImageProcessor
    • getMin

      public double getMin()
      Returns the smallest displayed pixel value.
      Specified by:
      getMin in class ImageProcessor
    • getMax

      public double getMax()
      Returns the largest displayed pixel value.
      Specified by:
      getMax in class ImageProcessor
    • setMinAndMax

      public void setMinAndMax(double minimum, double maximum)
      Sets the min and max variables that control how real pixel values are mapped to 0-255 screen values. With signed 16-bit images, use IJ.setMinAndMax(imp,min,max).
      Specified by:
      setMinAndMax in class ImageProcessor
      See Also:
    • resetMinAndMax

      public void resetMinAndMax()
      Recalculates the min and max values used to scale pixel values to 0-255 for display. This ensures that this ShortProcessor is set up to correctly display the image.
      Overrides:
      resetMinAndMax in class ImageProcessor
    • getPixel

      public int getPixel(int x, int y)
      Description copied from class: ImageProcessor
      Returns the value of the pixel at (x,y). For RGB images, the argb values are packed in an int. For float images, the the value must be converted using Float.intBitsToFloat(). Returns zero if either the x or y coodinate is out of range. Use getValue(x,y) to get calibrated values from 8-bit and 16-bit images, to get intensity values from RGB images and to get float values from 32-bit images.
      Specified by:
      getPixel in class ImageProcessor
      See Also:
    • get

      public int get(int x, int y)
      Description copied from class: ImageProcessor
      This is a faster version of getPixel() that does not do bounds checking.
      Specified by:
      get in class ImageProcessor
    • set

      public final void set(int x, int y, int value)
      Description copied from class: ImageProcessor
      This is a faster version of putPixel() that does not clip out of range values and does not do bounds checking.
      Specified by:
      set in class ImageProcessor
    • get

      public final int get(int index)
      Specified by:
      get in class ImageProcessor
    • set

      public final void set(int index, int value)
      Specified by:
      set in class ImageProcessor
    • getf

      public final float getf(int x, int y)
      Description copied from class: ImageProcessor
      Returns the value of the pixel at (x,y) as a float. Faster than getPixelValue() but does no bounds checking and does not return calibrated values.
      Specified by:
      getf in class ImageProcessor
    • setf

      public final void setf(int x, int y, float value)
      Description copied from class: ImageProcessor
      Sets the value of the pixel at (x,y) to 'value'. Does no bounds checking or clamping, making it faster than putPixel(). Due to the lack of bounds checking, (x,y) coordinates outside the image may cause an exception. Due to the lack of clamping, values outside the 0-255 range (for byte) or 0-65535 range (for short) are not handled correctly.
      Specified by:
      setf in class ImageProcessor
    • getf

      public final float getf(int index)
      Specified by:
      getf in class ImageProcessor
    • setf

      public final void setf(int index, float value)
      Specified by:
      setf in class ImageProcessor
    • getInterpolatedPixel

      public double getInterpolatedPixel(double x, double y)
      Uses the current interpolation method (BILINEAR or BICUBIC) to calculate the pixel value at real coordinates (x,y).
      Specified by:
      getInterpolatedPixel in class ImageProcessor
    • getPixelInterpolated

      public final int getPixelInterpolated(double x, double y)
      Description copied from class: ImageProcessor
      Uses the current interpolation method to find the pixel value at real coordinates (x,y). For RGB images, the argb values are packed in an int. For float images, the value must be converted using Float.intBitsToFloat(). Returns zero if the (x, y) is not inside the image.
      Specified by:
      getPixelInterpolated in class ImageProcessor
    • putPixel

      public final void putPixel(int x, int y, int value)
      Stores the specified value at (x,y). Does nothing if (x,y) is outside the image boundary. Values outside the range 0-65535 are clipped.
      Specified by:
      putPixel in class ImageProcessor
    • putPixelValue

      public void putPixelValue(int x, int y, double value)
      Stores the specified real value at (x,y). Does nothing if (x,y) is outside the image boundary. Values outside the range 0-65535 (-32768-32767 for signed images) are clipped. Support for signed values requires a calibration table, which is set up automatically with PlugInFilters.
      Specified by:
      putPixelValue in class ImageProcessor
    • drawPixel

      public void drawPixel(int x, int y)
      Draws a pixel in the current foreground color.
      Specified by:
      drawPixel in class ImageProcessor
    • getPixelValue

      public float getPixelValue(int x, int y)
      Returns the value of the pixel at (x,y) as a float. For signed images, returns a signed value if a calibration table has been set using setCalibrationTable() (this is done automatically in PlugInFilters).
      Specified by:
      getPixelValue in class ImageProcessor
      See Also:
    • getPixels

      public Object getPixels()
      Returns a reference to the short array containing this image's pixel data. To avoid sign extension, the pixel values must be accessed using a mask (e.g. int i = pixels[j]&0xffff).
      Specified by:
      getPixels in class ImageProcessor
    • getPixelsCopy

      public Object getPixelsCopy()
      Returns a copy of the pixel data. Or returns a reference to the snapshot buffer if it is not null and 'snapshotCopyMode' is true.
      Specified by:
      getPixelsCopy in class ImageProcessor
      See Also:
    • setPixels

      public void setPixels(Object pixels)
      Description copied from class: ImageProcessor
      Sets a new pixel array for the image. The length of the array must be equal to width*height. Use setSnapshotPixels(null) to clear the snapshot buffer.
      Specified by:
      setPixels in class ImageProcessor
    • copyBits

      public void copyBits(ImageProcessor ip, int xloc, int yloc, int mode)
      Copies the image contained in 'ip' to (xloc, yloc) using one of the transfer modes defined in the Blitter interface.
      Specified by:
      copyBits in class ImageProcessor
    • applyTable

      public void applyTable(int[] lut)
      Transforms the pixel data using a 65536 entry lookup table.
      Specified by:
      applyTable in class ImageProcessor
    • process

      protected void process(int op, double value)
    • invert

      public void invert()
      If "Full range 16-bit inversions" (Prefs.fullRange16bitInversions) is set in Edit/Options/Conversions, the image or ROI is inverted using the full pixel value range (0-65535) or, if set, using the "Unsigned 16-bit range" in the "Set" option of the Image>Adjust>Brightness/Contrast dialog.
      Otherwise, each pixel in the image or ROI is inverted using v2=max-(v1-min), where 'min' and 'max' are the image's minimum and maximum pixel values.
      Overrides:
      invert in class ImageProcessor
      See Also:
    • add

      public void add(int value)
      Description copied from class: ImageProcessor
      Adds 'value' to each pixel in the image or ROI.
      Overrides:
      add in class ImageProcessor
    • add

      public void add(double value)
      Description copied from class: ImageProcessor
      Adds 'value' to each pixel in the image or ROI.
      Overrides:
      add in class ImageProcessor
    • set

      public void set(double value)
      Description copied from class: ImageProcessor
      Assigns 'value' to each pixel in the image or ROI.
      Overrides:
      set in class ImageProcessor
    • multiply

      public void multiply(double value)
      Description copied from class: ImageProcessor
      Multiplies each pixel in the image or ROI by 'value'.
      Overrides:
      multiply in class ImageProcessor
    • and

      public void and(int value)
      Description copied from class: ImageProcessor
      Binary AND of each pixel in the image or ROI with 'value'.
      Overrides:
      and in class ImageProcessor
    • or

      public void or(int value)
      Description copied from class: ImageProcessor
      Binary OR of each pixel in the image or ROI with 'value'.
      Overrides:
      or in class ImageProcessor
    • xor

      public void xor(int value)
      Description copied from class: ImageProcessor
      Binary exclusive OR of each pixel in the image or ROI with 'value'.
      Overrides:
      xor in class ImageProcessor
    • gamma

      public void gamma(double value)
      Description copied from class: ImageProcessor
      Performs gamma correction of the image or ROI.
      Overrides:
      gamma in class ImageProcessor
    • log

      public void log()
      Description copied from class: ImageProcessor
      Does a natural logarithmic (base e) transform of the image or ROI.
      Overrides:
      log in class ImageProcessor
    • exp

      public void exp()
      Description copied from class: ImageProcessor
      Performs a exponential transform on the image or ROI.
      Overrides:
      exp in class ImageProcessor
    • sqr

      public void sqr()
      Description copied from class: ImageProcessor
      Performs a square transform on the image or ROI.
      Overrides:
      sqr in class ImageProcessor
    • sqrt

      public void sqrt()
      Description copied from class: ImageProcessor
      Performs a square root transform on the image or ROI.
      Overrides:
      sqrt in class ImageProcessor
    • abs

      public void abs()
      Description copied from class: ImageProcessor
      If this is a 32-bit or signed 16-bit image, performs an absolute value transform, otherwise does nothing.
      Overrides:
      abs in class ImageProcessor
    • min

      public void min(double value)
      Description copied from class: ImageProcessor
      Pixels less than 'value' are set to 'value'.
      Overrides:
      min in class ImageProcessor
    • max

      public void max(double value)
      Description copied from class: ImageProcessor
      Pixels greater than 'value' are set to 'value'.
      Overrides:
      max in class ImageProcessor
    • fill

      public void fill()
      Fills the current rectangular ROI.
      Overrides:
      fill in class ImageProcessor
      See Also:
    • fill

      public void fill(ImageProcessor mask)
      Fills pixels that are within roi and part of the mask. Does nothing if the mask is not the same as the ROI.
      Specified by:
      fill in class ImageProcessor
      See Also:
    • convolve3x3

      public void convolve3x3(int[] kernel)
      Does 3x3 convolution.
      Specified by:
      convolve3x3 in class ImageProcessor
    • filter

      public void filter(int type)
      Filters using a 3x3 neighborhood.
      Specified by:
      filter in class ImageProcessor
    • rotate

      public void rotate(double angle)
      Rotates the image or ROI 'angle' degrees clockwise.
      Specified by:
      rotate in class ImageProcessor
      See Also:
    • flipVertical

      public void flipVertical()
      Description copied from class: ImageProcessor
      Flips the image or ROI vertically.
      Specified by:
      flipVertical in class ImageProcessor
    • scale

      public void scale(double xScale, double yScale)
      Scales the image or selection using the specified scale factors.
      Specified by:
      scale in class ImageProcessor
      See Also:
    • resize

      public ImageProcessor resize(int dstWidth, int dstHeight)
      Creates a new ShortProcessor containing a scaled copy of this image or selection.
      Specified by:
      resize in class ImageProcessor
      See Also:
    • crop

      public ImageProcessor crop()
      Description copied from class: ImageProcessor
      Returns a new processor containing an image that corresponds to the current ROI.
      Specified by:
      crop in class ImageProcessor
    • duplicate

      public ImageProcessor duplicate()
      Returns a duplicate of this image.
      Specified by:
      duplicate in class ImageProcessor
    • setColor

      public void setColor(Color color)
      Sets the foreground fill/draw color.
      Specified by:
      setColor in class ImageProcessor
    • setBackgroundColor

      public void setBackgroundColor(Color color)
      Sets the background fill/draw color.
      Overrides:
      setBackgroundColor in class ImageProcessor
    • setValue

      public void setValue(double value)
      Sets the default fill/draw value, where 0<=value<=65535).
      Specified by:
      setValue in class ImageProcessor
    • getForegroundValue

      public double getForegroundValue()
      Returns the foreground fill/draw value.
      Specified by:
      getForegroundValue in class ImageProcessor
    • setBackgroundValue

      public void setBackgroundValue(double value)
      Description copied from class: ImageProcessor
      Sets the background fill value used by the rotate() and scale() methods.
      Specified by:
      setBackgroundValue in class ImageProcessor
    • getBackgroundValue

      public double getBackgroundValue()
      Description copied from class: ImageProcessor
      Returns the background fill value.
      Specified by:
      getBackgroundValue in class ImageProcessor
    • getHistogram

      public int[] getHistogram()
      Returns 65,536 bin histogram of the current ROI, which can be non-rectangular.
      Specified by:
      getHistogram in class ImageProcessor
    • setLutAnimation

      public void setLutAnimation(boolean lutAnimation)
      Description copied from class: ImageProcessor
      For 16 and 32 bit processors, set 'lutAnimation' true to have createImage() use the cached 8-bit version of the image.
      Overrides:
      setLutAnimation in class ImageProcessor
    • setThreshold

      public void setThreshold(double minThreshold, double maxThreshold, int lutUpdate)
      Description copied from class: ImageProcessor
      Sets the lower and upper threshold levels. The 'lutUpdate' argument can be RED_LUT, BLACK_AND_WHITE_LUT, OVER_UNDER_LUT or NO_LUT_UPDATE. Thresholding of RGB images is not supported.
      Overrides:
      setThreshold in class ImageProcessor
    • convolve

      public void convolve(float[] kernel, int kernelWidth, int kernelHeight)
      Performs a convolution operation using the specified kernel.
      Specified by:
      convolve in class ImageProcessor
    • noise

      public void noise(double standardDeviation)
      Adds pseudorandom, Gaussian ("normally") distributed values, with mean 0.0 and the specified standard deviation, to this image or ROI.
      Specified by:
      noise in class ImageProcessor
    • threshold

      public void threshold(int level)
      Description copied from class: ImageProcessor
      Sets pixels less than or equal to level to 0 and all other pixels to 255. Only works with 8-bit and 16-bit images.
      Specified by:
      threshold in class ImageProcessor
    • toFloat

      public FloatProcessor toFloat(int channelNumber, FloatProcessor fp)
      Returns a FloatProcessor with the same image, no scaling or calibration (pixel values 0 to 65535). The roi, mask, lut (ColorModel), threshold, min&max are also set for the FloatProcessor
      Specified by:
      toFloat in class ImageProcessor
      Parameters:
      channelNumber - Ignored (needed for compatibility with ColorProcessor.toFloat)
      fp - Here a FloatProcessor can be supplied, or null. The FloatProcessor is overwritten by this method (re-using its pixels array improves performance).
      Returns:
      A FloatProcessor with the converted image data
    • setPixels

      public void setPixels(int channelNumber, FloatProcessor fp)
      Sets the pixels from a FloatProcessor, no scaling. Also the min&max values are taken from the FloatProcessor.
      Specified by:
      setPixels in class ImageProcessor
      Parameters:
      channelNumber - Ignored (needed for compatibility with ColorProcessor.toFloat)
      fp - The FloatProcessor where the image data are read from.
    • maxValue

      public double maxValue()
      Returns the maximum possible pixel value.
      Overrides:
      maxValue in class ImageProcessor
    • getBitDepth

      public int getBitDepth()
      Description copied from class: ImageProcessor
      Returns the bit depth, 8, 16, 24 (RGB) or 32. RGB images actually use 32 bits per pixel.
      Overrides:
      getBitDepth in class ImageProcessor
    • isSigned16Bit

      public boolean isSigned16Bit()
      Returns 'true' if this is a signed 16-bit image.
      Overrides:
      isSigned16Bit in class ImageProcessor
    • createMask

      public ByteProcessor createMask()
      Returns a binary mask, or null if a threshold is not set.
      Overrides:
      createMask in class ImageProcessor
      See Also:
    • medianFilter

      public void medianFilter()
      Not implemented.
      Specified by:
      medianFilter in class ImageProcessor
    • erode

      public void erode()
      Not implemented.
      Specified by:
      erode in class ImageProcessor
    • dilate

      public void dilate()
      Not implemented.
      Specified by:
      dilate in class ImageProcessor