org.jscience.media.pictures.filters
Class ImageMath

java.lang.Object
  extended by org.jscience.media.pictures.filters.ImageMath

public class ImageMath
extends java.lang.Object

A class containing static math methods useful for image processing.


Field Summary
static float HALF_PI
          DOCUMENT ME!
static float PI
          DOCUMENT ME!
static float QUARTER_PI
          DOCUMENT ME!
static float TWO_PI
          DOCUMENT ME!
 
Constructor Summary
ImageMath()
           
 
Method Summary
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[] p)
          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 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 Detail

PI

public static final float PI
DOCUMENT ME!

See Also:
Constant Field Values

HALF_PI

public static final float HALF_PI
DOCUMENT ME!

See Also:
Constant Field Values

QUARTER_PI

public static final float QUARTER_PI
DOCUMENT ME!

See Also:
Constant Field Values

TWO_PI

public static final float TWO_PI
DOCUMENT ME!

See Also:
Constant Field Values
Constructor Detail

ImageMath

public ImageMath()
Method Detail

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:
x - the input parameter
a - the lower clamp threshold
b - the upper clamp threshold
Returns:
the clamped value

clamp

public static int clamp(int x,
                        int a,
                        int b)
Clamp a value to an interval.

Parameters:
x - the input parameter
a - the lower clamp threshold
b - the upper clamp threshold
Returns:
the clamped value

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[] p)
Bilinear interpolation of ARGB values.

Parameters:
x - the X interpolation parameter 0..1
y - the y interpolation parameter 0..1
p - 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:
rgb - 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
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

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
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

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
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

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
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

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