java.awt.image

Class ConvolveOp

Implemented Interfaces:
BufferedImageOp, RasterOp

public class ConvolveOp
extends Object
implements BufferedImageOp, RasterOp

This class implements a convolution from the source to the destination. Convolution using a convolution kernel is a spatial operation that computes the output pixel from an input pixel by multiplying the kernel with the surround of the input pixel. This allows the output pixel to be affected by the immediate neighborhood in a way that can be mathematically specified with a kernel.

This class operates with BufferedImage data in which color components are premultiplied with the alpha component. If the Source BufferedImage has an alpha component, and the color components are not premultiplied with the alpha component, then the data are premultiplied before being convolved. If the Destination has color components which are not premultiplied, then alpha is divided out before storing into the Destination (if alpha is 0, the color components are set to 0). If the Destination has no alpha component, then the resulting alpha is discarded after first dividing it out of the color components.

Rasters are treated as having no alpha channel. If the above treatment of the alpha channel in BufferedImages is not desired, it may be avoided by getting the Raster of a source BufferedImage and using the filter method of this class which works with Rasters.

If a RenderingHints object is specified in the constructor, the color rendering hint and the dithering hint may be used when color conversion is required.

Note that the Source and the Destination may not be the same object.

See Also:
Kernel, RenderingHints.KEY_COLOR_RENDERING, RenderingHints.KEY_DITHERING

Field Summary

static int
EDGE_NO_OP
Pixels at the edge of the source image are copied to the corresponding pixels in the destination without modification.
static int
EDGE_ZERO_FILL
Pixels at the edge of the destination image are set to zero.

Constructor Summary

ConvolveOp(Kernel kernel)
Constructs a ConvolveOp given a Kernel.
ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)
Constructs a ConvolveOp given a Kernel, an edge condition, and a RenderingHints object (which may be null).

Method Summary

BufferedImage
createCompatibleDestImage(BufferedImage src, ColorModel destCM)
Creates a zeroed destination image with the correct size and number of bands.
WritableRaster
createCompatibleDestRaster(Raster src)
Creates a zeroed destination Raster with the correct size and number of bands, given this source.
BufferedImage
filter(BufferedImage src, BufferedImage dst)
Performs a convolution on BufferedImages.
WritableRaster
filter(Raster src, WritableRaster dst)
Performs a convolution on Rasters.
Rectangle2D
getBounds2D(BufferedImage src)
Returns the bounding box of the filtered destination image.
Rectangle2D
getBounds2D(Raster src)
Returns the bounding box of the filtered destination Raster.
int
getEdgeCondition()
Returns the edge condition.
Kernel
getKernel()
Returns the Kernel.
Point2D
getPoint2D(Point2D srcPt, Point2D dstPt)
Returns the location of the destination point given a point in the source.
RenderingHints
getRenderingHints()
Returns the rendering hints for this op.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

EDGE_NO_OP

public static final int EDGE_NO_OP
Pixels at the edge of the source image are copied to the corresponding pixels in the destination without modification.
Field Value:
1
Usages and Demos :

View More Examples of ConvolveOp.EDGE_NO_OP
   1:   };
   2:   private static final ConvolveOp OP = new ConvolveOp(new Kernel(3,3, ELEMENTS), ConvolveOp.EDGE_NO_OP, null);
   3: 
   4: 
   5:   public void restore(ESISNode n, Map<String,Object> attr, Layer layer) {

View Full Code Here
   1:   };
   2:   private static final ConvolveOp OP = new ConvolveOp(new Kernel(3,3, ELEMENTS), ConvolveOp.EDGE_NO_OP, null);
   3: 
   4: 
   5:   public void restore(ESISNode n, Map<String,Object> attr, Layer layer) {

View Full Code Here
   1:   };
   2:   private static final ConvolveOp OP = new ConvolveOp(new Kernel(3,3, ELEMENTS), ConvolveOp.EDGE_NO_OP, null);
   3: 
   4: 
   5:   public void restore(ESISNode n, Map<String,Object> attr, Layer layer) {

View Full Code Here
   1:         spotlights = new ArrayList();
   2:         blurOp = new ConvolveOp(getBlurKernel(3), ConvolveOp.EDGE_NO_OP, null);
   3:         hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
   4:         hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   5:         hints.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

View Full Code Here
   1:                 ConvolveOp cop = new ConvolveOp(kernel,
   2:                                                 ConvolveOp.EDGE_NO_OP,
   3:                                                 null);
   4:                 cop.filter(bi[i],bimg);
   5:                 biop = new AffineTransformOp(at,

View Full Code Here

EDGE_ZERO_FILL

public static final int EDGE_ZERO_FILL
Pixels at the edge of the destination image are set to zero. This is the default.
Field Value:
0

Constructor Details

ConvolveOp

public ConvolveOp(Kernel kernel)
Constructs a ConvolveOp given a Kernel. The edge condition will be EDGE_ZERO_FILL.
Parameters:
kernel - the specified Kernel
Usages and Demos :

View More Examples of ConvolveOp(Kernel kernel)
   1:         spotlights = new ArrayList();
   2:         blurOp = new ConvolveOp(getBlurKernel(3), ConvolveOp.EDGE_NO_OP, null);
   3:         hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
   4:         hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   5:         hints.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

View Full Code Here
   1:             1f/9f, 1f/9f, 1f/9f});
   2:     BufferedImageOp op = new ConvolveOp(kernel);
   3:     bufferedImage = op.filter(bufferedImage, null);
   4:     return bufferedImage;
   5:     }

View Full Code Here
   1:       Kernel kernel = new Kernel(3, 3, elements);
   2:       ConvolveOp op = new ConvolveOp(kernel);
   3:       filter(op);
   4:    }

View Full Code Here
   1:                 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f });
   2:         BufferedImageOp op = new ConvolveOp(kernel);
   3: 
   4:         for (int i = 0; i < 4; i++)
   5:             transImage = op.filter(transImage, null);

View Full Code Here
   1:                 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f, 1f / 9f });
   2:         BufferedImageOp op = new ConvolveOp(kernel);
   3: 
   4:         for (int i = 0; i < 4; i++)
   5:             transImage = op.filter(transImage, null);

View Full Code Here

ConvolveOp

public ConvolveOp(Kernel kernel,
                  int edgeCondition,
                  RenderingHints hints)
Constructs a ConvolveOp given a Kernel, an edge condition, and a RenderingHints object (which may be null).
Parameters:
kernel - the specified Kernel
edgeCondition - the specified edge condition
hints - the specified RenderingHints object
Usages and Demos :

View More Examples of ConvolveOp(Kernel kernel,int edgeCondition,RenderingHints hints)
   1:         Kernel kernel = new Kernel(3, 3, softenArray);
   2:         ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
   3:         thumbnailImage = cOp.filter(thumbnailImage, null);
   4:       } catch (Exception e) {
   5:         System.out.println("ImageUtils-> Soften: " + e.getMessage());

View Full Code Here
   1:                          RenderingHints.VALUE_RENDER_QUALITY);
   2:         BufferedImageOp op = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,hints);
   3: 
   4:         ...
   5:                          RenderingHints.VALUE_RENDER_QUALITY);
   6:         BufferedImageOp op = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,hints);
   7: 
   8:         im = op.filter(im, null);

View Full Code Here
   1:                          RenderingHints.VALUE_RENDER_QUALITY);
   2:         BufferedImageOp op = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,hints);
   3: 
   4:         ...
   5:                          RenderingHints.VALUE_RENDER_QUALITY);
   6:         BufferedImageOp op = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,hints);
   7: 
   8:         im = op.filter(im, null);

View Full Code Here

Method Details

createCompatibleDestImage

public BufferedImage createCompatibleDestImage(BufferedImage src,
                                               ColorModel destCM)
Creates a zeroed destination image with the correct size and number of bands. If destCM is null, an appropriate ColorModel will be used.
Specified by:
createCompatibleDestImage in interface BufferedImageOp
Parameters:
src - Source image for the filter operation.
destCM - ColorModel of the destination. Can be null.
Returns:
a destination BufferedImage with the correct size and number of bands.

createCompatibleDestRaster

public WritableRaster createCompatibleDestRaster(Raster src)
Creates a zeroed destination Raster with the correct size and number of bands, given this source.
Specified by:
createCompatibleDestRaster in interface RasterOp

filter

public final BufferedImage filter(BufferedImage src,
                                  BufferedImage dst)
Performs a convolution on BufferedImages. Each component of the source image will be convolved (including the alpha component, if present). If the color model in the source image is not the same as that in the destination image, the pixels will be converted in the destination. If the destination image is null, a BufferedImage will be created with the source ColorModel. The IllegalArgumentException may be thrown if the source is the same as the destination.
Specified by:
filter in interface BufferedImageOp
Parameters:
src - the source BufferedImage to filter
dst - the destination BufferedImage for the filtered src
Returns:
the filtered BufferedImage
Throws:
NullPointerException - if src is null
IllegalArgumentException - if src equals dst
ImagingOpException - if src cannot be filtered
Usages and Demos :

View More Examples of filter(BufferedImage src,BufferedImage dst)
   1:                 Kernel kernel = new Kernel(3,3,data[i]);
   2:                 ConvolveOp cop = new ConvolveOp(kernel,
   3:         ...
   4:                                                 ConvolveOp.EDGE_NO_OP,
   5:                                                 null);
   6:         ...
   7:                 cop.filter(bi[i],bimg);
   8:                 biop = new AffineTransformOp(at,
   9:         ...
  10:                 LookupOp lop = new LookupOp(blut, null); 
  11:                 lop.filter(bi[i],bimg);  

View Full Code Here
   1: import java.awt.image.ColorConvertOp;
   2: import java.awt.image.ConvolveOp;
   3: import java.awt.image.Kernel;
   4:         ...
   5:     BufferedImage rescaledImage =
   6:       rescaleOp.filter(rgba, null);
   7:     Graphics2D g = (Graphics2D)dest.getGraphics().create();
   8:         ...
   9:     BufferedImage rescaledImage =
  10:       rescaleOp.filter(rgba, null);
  11: 
  12:         ...
  13:       new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
  14:     colorConvertOp.filter(dest._bufferedImage, dest._bufferedImage);

View Full Code Here

filter

public final WritableRaster filter(Raster src,
                                   WritableRaster dst)
Performs a convolution on Rasters. Each band of the source Raster will be convolved. The source and destination must have the same number of bands. If the destination Raster is null, a new Raster will be created. The IllegalArgumentException may be thrown if the source is the same as the destination.
Specified by:
filter in interface RasterOp
Parameters:
src - the source Raster to filter
dst - the destination WritableRaster for the filtered src
Returns:
the filtered WritableRaster
Throws:
NullPointerException - if src is null
ImagingOpException - if src and dst do not have the same number of bands
ImagingOpException - if src cannot be filtered
IllegalArgumentException - if src equals dst
Usages and Demos :

View More Examples of filter(Raster src,WritableRaster dst)
   1:                 Kernel kernel = new Kernel(3,3,data[i]);
   2:                 ConvolveOp cop = new ConvolveOp(kernel,
   3:         ...
   4:                                                 ConvolveOp.EDGE_NO_OP,
   5:                                                 null);
   6:         ...
   7:                 cop.filter(bi[i],bimg);
   8:                 biop = new AffineTransformOp(at,
   9:         ...
  10:                 LookupOp lop = new LookupOp(blut, null); 
  11:                 lop.filter(bi[i],bimg);  

View Full Code Here
   1: import java.awt.image.ColorConvertOp;
   2: import java.awt.image.ConvolveOp;
   3: import java.awt.image.Kernel;
   4:         ...
   5:     BufferedImage rescaledImage =
   6:       rescaleOp.filter(rgba, null);
   7:     Graphics2D g = (Graphics2D)dest.getGraphics().create();
   8:         ...
   9:     BufferedImage rescaledImage =
  10:       rescaleOp.filter(rgba, null);
  11: 
  12:         ...
  13:       new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
  14:     colorConvertOp.filter(dest._bufferedImage, dest._bufferedImage);

View Full Code Here

getBounds2D

public final Rectangle2D getBounds2D(BufferedImage src)
Returns the bounding box of the filtered destination image. Since this is not a geometric operation, the bounding box does not change.
Specified by:
getBounds2D in interface BufferedImageOp

getBounds2D

public final Rectangle2D getBounds2D(Raster src)
Returns the bounding box of the filtered destination Raster. Since this is not a geometric operation, the bounding box does not change.
Specified by:
getBounds2D in interface RasterOp

getEdgeCondition

public int getEdgeCondition()
Returns the edge condition.
Returns:
the edge condition of this ConvolveOp.

getKernel

public final Kernel getKernel()
Returns the Kernel.
Returns:
the Kernel of this ConvolveOp.
Usages and Demos :

View More Examples of getKernel()
   1: import java.awt.image.BufferedImageOp;
   2: import java.awt.image.ConvolveOp;
   3: import java.awt.image.Kernel;
   4:         ...
   5:                                      Rectangle filterRect){
   6:         if(filter instanceof ConvolveOp)
   7:         ...
   8:             return toSVG((ConvolveOp)filter);
   9:         else
  10:         ...
  11:         if (filterDesc == null) {
  12:             Kernel kernel = convolveOp.getKernel();

View Full Code Here

getPoint2D

public final Point2D getPoint2D(Point2D srcPt,
                                Point2D dstPt)
Returns the location of the destination point given a point in the source. If dstPt is non-null, it will be used to hold the return value. Since this is not a geometric operation, the srcPt will equal the dstPt.
Specified by:
getPoint2D in interface BufferedImageOp
getPoint2D in interface RasterOp

getRenderingHints

public final RenderingHints getRenderingHints()
Returns the rendering hints for this op.
Specified by:
getRenderingHints in interface BufferedImageOp
getRenderingHints in interface RasterOp