ColorProcessor
ij.process

Class ColorProcessor

  • All Implemented Interfaces:
    Cloneable


    public class ColorProcessorextends ImageProcessor
    This is an 32-bit RGB image and methods that operate on that image.. Based on the ImageProcessor class from"KickAss Java Programming" by Tonny Espeset (http://www.sn.no/~espeset).
    • Constructor Detail

      • ColorProcessor

        public ColorProcessor(Image img)
        Creates a ColorProcessor from an AWT Image.
      • ColorProcessor

        public ColorProcessor(int width,              int height)
        Creates a blank ColorProcessor of the specified dimensions.
      • ColorProcessor

        public ColorProcessor(int width,              int height,              int[] pixels)
        Creates a ColorProcessor from a pixel array.
    • Method Detail

      • getColor

        public Color getColor(int x,             int y)
      • setColor

        public void setColor(int color)
        Sets the fill/draw color, where color is an RGB int.
        Overrides:
        setColor in class ImageProcessor
      • setValue

        public void setValue(double value)
        Sets the default fill/draw value, where value is interpreted as an RGB int.
        Specified by:
        setValue in class ImageProcessor
      • setBackgroundValue

        public void setBackgroundValue(double value)
        Sets the background fill value, where value is interpreted as an RGB int.
        Specified by:
        setBackgroundValue 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 min,                double max)
        Uses a table look-up to map the pixels in this image from min-max to 0-255.
        Specified by:
        setMinAndMax in class ImageProcessor
      • setMinAndMax

        public void setMinAndMax(double min,                double max,                int channels)
      • 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
      • getSnapshotPixels

        public Object getSnapshotPixels()
        Returns a reference to the snapshot pixel array. Used by the ContrastAdjuster.
        Specified by:
        getSnapshotPixels 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.
        Specified by:
        getPixel in class ImageProcessor
      • get

        public final 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
      • set

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

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

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

        public int[] getPixel(int x,             int y,             int[] iArray)
        Returns the 3 samples for the pixel at (x,y) in an array of int. Returns zeros if the the coordinates are not in bounds. iArray is an optional preallocated array.
        Overrides:
        getPixel in class ImageProcessor
      • putPixel

        public final void putPixel(int x,            int y,            int[] iArray)
        Sets a pixel in the image using a 3 element (R, G and B) int array of samples.
        Overrides:
        putPixel 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).
        Specified by:
        putPixel in class ImageProcessor
      • putPixelValue

        public void putPixelValue(int x,                 int y,                 double value)
        Stores the specified real grayscale value at (x,y). Does nothing if (x,y) is outside the image boundary. The value is clamped to be in the range 0-255.
        Specified by:
        putPixelValue in class ImageProcessor
      • getPixelValue

        public float getPixelValue(int x,                  int y)
        Converts the specified pixel to grayscale using the formula g=(r+g+b)/3 and returns it as a float. Call setWeightingFactors() to specify different conversion factors.
        Specified by:
        getPixelValue 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
      • getPixels

        public Object getPixels()
        Returns a reference to the int array containing this image's pixel data.
        Specified by:
        getPixels in class ImageProcessor
      • 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
      • getHSB

        public void getHSB(byte[] H,          byte[] S,          byte[] B)
        Returns hue, saturation and brightness in 3 byte arrays.
      • getHSBStack

        public ImageStack getHSBStack()
        Returns an ImageStack with three 8-bit slices, representing hue, saturation and brightness
      • getBrightness

        public FloatProcessor getBrightness()
        Returns brightness as a FloatProcessor.
      • getRGB

        public void getRGB(byte[] R,          byte[] G,          byte[] B)
        Returns the red, green and blue planes as 3 byte arrays.
      • setRGB

        public void setRGB(byte[] R,          byte[] G,          byte[] B)
        Sets the current pixels from 3 byte arrays (reg, green, blue).
      • setHSB

        public void setHSB(byte[] H,          byte[] S,          byte[] B)
        Sets the current pixels from 3 byte arrays (hue, saturation and brightness).
      • setBrightness

        public void setBrightness(FloatProcessor fp)
        Updates the brightness using the pixels in the specified FloatProcessor).
      • 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)
        Description copied from class: ImageProcessor
        Transforms the image or ROI using a lookup table. The length of the table must be 256 for byte images and 65536 for short images. RGB and float images are not supported.
        Specified by:
        applyTable in class ImageProcessor
      • applyTable

        public void applyTable(int[] lut,              int channels)
      • filterRGB

        public void filterRGB(int type,             double arg)
        Performs the specified filter on the red, green and blue planes of this image.
      • noise

        public void noise(double range)
        Description copied from class: ImageProcessor
        Adds random noise to the image or ROI.
        Specified by:
        noise in class ImageProcessor
        Parameters:
        range - the range of random numbers
      • erode

        public void erode()
        Description copied from class: ImageProcessor
        Erodes the image or ROI using a 3x3 maximum filter. Requires 8-bit or RGB image.
        Specified by:
        erode in class ImageProcessor
      • dilate

        public void dilate()
        Description copied from class: ImageProcessor
        Dilates the image or ROI using a 3x3 minimum filter. Requires 8-bit or RGB image.
        Specified by:
        dilate in class ImageProcessor
      • autoThreshold

        public void autoThreshold()
        Description copied from class: ImageProcessor
        Converts the image to binary using an automatically determined threshold. For byte and short images, converts to binary using an automatically determined threshold. For RGB images, converts each channel to binary. For float images, does nothing.
        Overrides:
        autoThreshold in class ImageProcessor
      • getInterpolatedRGBPixel

        public int getInterpolatedRGBPixel(double x,                          double y)
        Uses bilinear interpolation to find the pixel value at real coordinates (x,y).
      • makeThumbnail

        public ImageProcessor makeThumbnail(int width2,                           int height2,                           double smoothFactor)
        Uses averaging to creates a new ColorProcessor containing a downsized copy of this image or selection.
      • convolve3x3

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

        public void filter(int type)
        3x3 unweighted smoothing.
        Specified by:
        filter in class ImageProcessor
      • getHistogram

        public int[] getHistogram()
        Description copied from class: ImageProcessor
        Returns the histogram of the image or ROI. Returns a luminosity histogram for RGB images and null for float images.
        Specified by:
        getHistogram 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
      • setWeightingFactors

        public static void setWeightingFactors(double rFactor,                       double gFactor,                       double bFactor)
        Sets the weighting factors used by getPixelValue(), getHistogram() and convertToByte() to do color conversions. The default values are 1/3, 1/3 and 1/3. Check "Weighted RGB Conversions" in Edit/Options/Conversions to use 0.299, 0.587 and 0.114.
      • getWeightingFactors

        public static double[] getWeightingFactors()
        Returns the three weighting factors used by getPixelValue(), getHistogram() and convertToByte() to do color conversions.
      • isInvertedLut

        public boolean isInvertedLut()
        Always returns false since RGB images do not use LUTs.
        Overrides:
        isInvertedLut in class ImageProcessor
      • invertLut

        public void invertLut()
        Does nothing since RGB images do not use LUTs.
        Overrides:
        invertLut in class ImageProcessor
      • updateComposite

        public void updateComposite(int[] rgbPixels,                   int channel)
        Description copied from class: ImageProcessor
        CompositeImage calls this method to generate an updated color image.
        Overrides:
        updateComposite in class ImageProcessor
      • getNChannels

        public int getNChannels()
        Returns the number of color channels of the image, i.e., 3.
        Overrides:
        getNChannels in class ImageProcessor
        Returns:
        1 for grayscale images, 3 for RGB images
      • toFloat

        public FloatProcessor toFloat(int channelNumber,                     FloatProcessor fp)
        Returns a FloatProcessor with one color channel of the image. The roi and mask are also set for the FloatProcessor.
        Specified by:
        toFloat in class ImageProcessor
        Parameters:
        channelNumber - Determines the color channel, 0=red, 1=green, 2=blue
        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 of the color channel selected
      • setPixels

        public void setPixels(int channelNumber,             FloatProcessor fp)
        Sets the pixels of one color channel from a FloatProcessor.
        Specified by:
        setPixels in class ImageProcessor
        Parameters:
        channelNumber - Determines the color channel, 0=red, 1=green, 2=blue
        fp - The FloatProcessor where the image data are read from.

SCaVis 1.7 © jWork.org