Class ImageMath

java.lang.Object
com.jhlabs.image.ImageMath

public class ImageMath extends Object
A class containing static math methods useful for image processing.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final float
     
    static final float
     
    static final float
     
    static final float
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static float
    bias(float a, float b)
    Apply a bias to a number in the unit interval, moving numbers towards 0 or 1 according to the bias parameter.
    static int
    bilinearInterpolate(float x, float y, int nw, int ne, int sw, int se)
    Bilinear interpolation of ARGB values.
    static int
    brightnessNTSC(int rgb)
    Return the NTSC gray level of an RGB value.
    static float
    circleDown(float x)
    A "circle down" function.
    static float
    circleUp(float x)
    A "circle up" function.
    static float
    clamp(float x, float a, float b)
    Clamp a value to an interval.
    static int
    clamp(int x, int a, int b)
    Clamp a value to an interval.
    static int
    colorSpline(float x, int numKnots, int[] knots)
    Compute a Catmull-Rom spline for RGB values.
    static int
    colorSpline(int x, int numKnots, int[] xknots, int[] yknots)
    Compute a Catmull-Rom spline for RGB values, but with variable knot spacing.
    static float
    gain(float a, float b)
    A variant of the gamma function.
    static float
    lerp(float t, float a, float b)
    Linear interpolation.
    static int
    lerp(float t, int a, int b)
    Linear interpolation.
    static int
    mixColors(float t, int rgb1, int rgb2)
    Linear interpolation of ARGB values.
    static double
    mod(double a, double b)
    Return a mod b.
    static float
    mod(float a, float b)
    Return a mod b.
    static int
    mod(int a, int b)
    Return a mod b.
    static float
    pulse(float a, float b, float x)
    The pulse function.
    static void
    resample(int[] source, int[] dest, int length, int offset, int stride, float[] out)
    An implementation of Fant's resampling algorithm.
    static float
    smoothPulse(float a1, float a2, float b1, float b2, float x)
    A smoothed pulse function.
    static float
    smoothStep(float a, float b, float x)
    A smoothed step function.
    static float
    spline(float x, int numKnots, float[] knots)
    Compute a Catmull-Rom spline.
    static float
    spline(float x, int numKnots, int[] xknots, int[] yknots)
    Compute a Catmull-Rom spline, but with variable knot spacing.
    static float
    step(float a, float x)
    The step function.
    static float
    triangle(float x)
    The triangle function.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ImageMath

      public ImageMath()
  • Method Details

    • bias

      public static float bias(float a, float b)
      Apply a bias to a number in the unit interval, moving numbers towards 0 or 1 according to the bias parameter.
      Parameters:
      a - the number to bias
      b - the bias parameter. 0.5 means no change, smaller values bias towards 0, larger towards 1.
      Returns:
      the output value
    • gain

      public static float gain(float a, float b)
      A variant of the gamma function.
      Parameters:
      a - the number to apply gain to
      b - the gain parameter. 0.5 means no change, smaller values reduce gain, larger values increase gain.
      Returns:
      the output value
    • step

      public static float step(float a, float x)
      The step function. Returns 0 below a threshold, 1 above.
      Parameters:
      a - the threshold position
      x - the input parameter
      Returns:
      the output value - 0 or 1
    • pulse

      public static float pulse(float a, float b, float x)
      The pulse function. Returns 1 between two thresholds, 0 outside.
      Parameters:
      a - the lower threshold position
      b - the upper threshold position
      x - the input parameter
      Returns:
      the output value - 0 or 1
    • smoothPulse

      public static float smoothPulse(float a1, float a2, float b1, float b2, float x)
      A smoothed pulse function. A cubic function is used to smooth the step between two thresholds.
      Parameters:
      a1 - the lower threshold position for the start of the pulse
      a2 - the upper threshold position for the start of the pulse
      b1 - the lower threshold position for the end of the pulse
      b2 - the upper threshold position for the end of the pulse
      x - the input parameter
      Returns:
      the output value
    • smoothStep

      public static float smoothStep(float a, float b, float x)
      A smoothed step function. A cubic function is used to smooth the step between two thresholds.
      Parameters:
      a - the lower threshold position
      b - the upper threshold position
      x - the input parameter
      Returns:
      the output value
    • circleUp

      public static float circleUp(float x)
      A "circle up" function. Returns y on a unit circle given 1-x. Useful for forming bevels.
      Parameters:
      x - the input parameter in the range 0..1
      Returns:
      the output value
    • circleDown

      public static float circleDown(float x)
      A "circle down" function. Returns 1-y on a unit circle given x. Useful for forming bevels.
      Parameters:
      x - the input parameter in the range 0..1
      Returns:
      the output value
    • clamp

      public static float clamp(float x, float a, float b)
      Clamp a value to an interval.
      Parameters:
      a - the lower clamp threshold
      b - the upper clamp threshold
      x - the input parameter
      Returns:
      the clamped value
    • clamp

      public static int clamp(int x, int a, int b)
      Clamp a value to an interval.
      Parameters:
      a - the lower clamp threshold
      b - the upper clamp threshold
      x - the input parameter
      Returns:
      the clamped value
    • mod

      public static double mod(double a, double b)
      Return a mod b. This differs from the % operator with respect to negative numbers.
      Parameters:
      a - the dividend
      b - the divisor
      Returns:
      a mod b
    • mod

      public static float mod(float a, float b)
      Return a mod b. This differs from the % operator with respect to negative numbers.
      Parameters:
      a - the dividend
      b - the divisor
      Returns:
      a mod b
    • mod

      public static int mod(int a, int b)
      Return a mod b. This differs from the % operator with respect to negative numbers.
      Parameters:
      a - the dividend
      b - the divisor
      Returns:
      a mod b
    • triangle

      public static float triangle(float x)
      The triangle function. Returns a repeating triangle shape in the range 0..1 with wavelength 1.0
      Parameters:
      x - the input parameter
      Returns:
      the output value
    • lerp

      public static float lerp(float t, float a, float b)
      Linear interpolation.
      Parameters:
      t - the interpolation parameter
      a - the lower interpolation range
      b - the upper interpolation range
      Returns:
      the interpolated value
    • lerp

      public static int lerp(float t, int a, int b)
      Linear interpolation.
      Parameters:
      t - the interpolation parameter
      a - the lower interpolation range
      b - the upper interpolation range
      Returns:
      the interpolated value
    • mixColors

      public static int mixColors(float t, int rgb1, int rgb2)
      Linear interpolation of ARGB values.
      Parameters:
      t - the interpolation parameter
      rgb1 - the lower interpolation range
      rgb2 - the upper interpolation range
      Returns:
      the interpolated value
    • bilinearInterpolate

      public static int bilinearInterpolate(float x, float y, int nw, int ne, int sw, int se)
      Bilinear interpolation of ARGB values.
      Parameters:
      x - the X interpolation parameter 0..1
      y - the y interpolation parameter 0..1
      rgb - array of four ARGB values in the order NW, NE, SW, SE
      Returns:
      the interpolated value
    • brightnessNTSC

      public static int brightnessNTSC(int rgb)
      Return the NTSC gray level of an RGB value.
      Parameters:
      rgb1 - the input pixel
      Returns:
      the gray level (0-255)
    • spline

      public static float spline(float x, int numKnots, float[] knots)
      Compute a Catmull-Rom spline.
      Parameters:
      x - the input parameter
      numKnots - the number of knots in the spline
      knots - the array of knots
      Returns:
      the spline value
    • spline

      public static float spline(float x, int numKnots, int[] xknots, int[] yknots)
      Compute a Catmull-Rom spline, but with variable knot spacing.
      Parameters:
      x - the input parameter
      numKnots - the number of knots in the spline
      xknots - the array of knot x values
      yknots - the array of knot y values
      Returns:
      the spline value
    • colorSpline

      public static int colorSpline(float x, int numKnots, int[] knots)
      Compute a Catmull-Rom spline for RGB values.
      Parameters:
      x - the input parameter
      numKnots - the number of knots in the spline
      knots - the array of knots
      Returns:
      the spline value
    • colorSpline

      public static int colorSpline(int x, int numKnots, int[] xknots, int[] yknots)
      Compute a Catmull-Rom spline for RGB values, but with variable knot spacing.
      Parameters:
      x - the input parameter
      numKnots - the number of knots in the spline
      xknots - the array of knot x values
      yknots - the array of knot y values
      Returns:
      the spline value
    • resample

      public static void resample(int[] source, int[] dest, int length, int offset, int stride, float[] out)
      An implementation of Fant's resampling algorithm.
      Parameters:
      source - the source pixels
      dest - the destination pixels
      length - the length of the scanline to resample
      offset - the start offset into the arrays
      stride - the offset between pixels in consecutive rows
      out - an array of output positions for each pixel