it.geosolutions.jaiext.algebra
Class AlgebraOpImage

java.lang.Object
  extended by javax.media.jai.PlanarImage
      extended by javax.media.jai.OpImage
          extended by javax.media.jai.PointOpImage
              extended by it.geosolutions.jaiext.algebra.AlgebraOpImage
All Implemented Interfaces:
RenderedImage, javax.media.jai.ImageJAI, javax.media.jai.PropertyChangeEmitter, javax.media.jai.PropertySource, javax.media.jai.WritablePropertySource

public final class AlgebraOpImage
extends javax.media.jai.PointOpImage

An OpImage implementing the "Add" operation as described in javax.media.jai.operator.AddDescriptor.

This OpImage adds the pixel values of two source images on a per-band basis. In case the two source images have different number of bands, the number of bands for the destination image is the smaller band number of the two source images. That is dstNumBands = Math.min(src1NumBands, src2NumBands). In case the two source images have different data types, the data type for the destination image is the higher data type of the two source images.

The value of the pixel (x, y) in the destination image is defined as:

 for (b = 0; b < numBands; b++) {
     dst[y][x][b] = src1[y][x][b] + src2[y][x][b];
 }
 

If the result of the addition overflows/underflows the maximum/minimum value supported by the destination image, then it will be clamped to the maximum/minimum value respectively. The data type byte is treated as unsigned, with maximum value as 255 and minimum value as 0.

See Also:
AddDescriptor, AddCRIF

Field Summary
 
Fields inherited from class javax.media.jai.OpImage
cache, cobbleSources, OP_COMPUTE_BOUND, OP_IO_BOUND, OP_NETWORK_BOUND, tileCacheMetric, tileRecycler
 
Fields inherited from class javax.media.jai.PlanarImage
colorModel, eventManager, height, minX, minY, properties, sampleModel, tileFactory, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, width
 
Constructor Summary
AlgebraOpImage(Map config, javax.media.jai.ImageLayout layout, AlgebraDescriptor.Operator op, javax.media.jai.ROI srcROI, Range noData, double destinationNoData, RenderedImage... sources)
          Constructs an AddOpImage.
 
Method Summary
protected  void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect)
          Adds the pixel values of two source images within a specified rectangle.
 
Methods inherited from class javax.media.jai.PointOpImage
computeTile, dispose, isColormapOperation, mapDestRect, mapSourceRect, permitInPlaceOperation
 
Methods inherited from class javax.media.jai.OpImage
addTileToCache, cancelTiles, computeRect, computesUniqueTiles, createTile, getExpandedNumBands, getFormatTags, getOperationComputeType, getTile, getTileCache, getTileCacheMetric, getTileDependencies, getTileFromCache, getTileRecycler, getTiles, hasExtender, mapDestPoint, mapSourcePoint, prefetchTiles, queueTiles, recycleTile, setTileCache, vectorize, vectorize, vectorize
 
Methods inherited from class javax.media.jai.PlanarImage
addPropertyChangeListener, addPropertyChangeListener, addSink, addSink, addSource, addTileComputationListener, copyData, copyData, copyExtendedData, createColorModel, createSnapshot, createWritableRaster, finalize, getAsBufferedImage, getAsBufferedImage, getBounds, getColorModel, getData, getData, getDefaultColorModel, getExtendedData, getGraphics, getHeight, getImageID, getMaxTileX, getMaxTileY, getMaxX, getMaxY, getMinTileX, getMinTileY, getMinX, getMinY, getNumBands, getNumSources, getNumXTiles, getNumYTiles, getProperties, getProperty, getPropertyClass, getPropertyNames, getPropertyNames, getSampleModel, getSinks, getSource, getSourceImage, getSourceObject, getSources, getSplits, getTileComputationListeners, getTileFactory, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileIndices, getTileRect, getTiles, getTileWidth, getWidth, overlapsMultipleTiles, removeProperty, removePropertyChangeListener, removePropertyChangeListener, removeSink, removeSink, removeSinks, removeSource, removeSources, removeTileComputationListener, setImageLayout, setProperties, setProperty, setSource, setSources, tileXToX, tileXToX, tileYToY, tileYToY, toString, wrapRenderedImage, XToTileX, XToTileX, YToTileY, YToTileY
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AlgebraOpImage

public AlgebraOpImage(Map config,
                      javax.media.jai.ImageLayout layout,
                      AlgebraDescriptor.Operator op,
                      javax.media.jai.ROI srcROI,
                      Range noData,
                      double destinationNoData,
                      RenderedImage... sources)
Constructs an AddOpImage.

The layout parameter may optionally contains the tile grid layout, sample model, and/or color model. The image dimension is determined by the intersection of the bounding boxes of the two source images.

The image layout of the first source image, source1, is used as the fall-back for the image layout of the destination image. Any layout parameters not specified in the layout argument are set to the same value as that of source1.

Parameters:
source1 - The first source image.
source2 - The second source image.
layout - The destination image layout.
useROIAccessor -
Method Detail

computeRect

protected void computeRect(Raster[] sources,
                           WritableRaster dest,
                           Rectangle destRect)
Adds the pixel values of two source images within a specified rectangle.

Overrides:
computeRect in class javax.media.jai.OpImage
Parameters:
sources - Cobbled sources, guaranteed to provide all the source data necessary for computing the rectangle.
dest - The tile containing the rectangle to be computed.
destRect - The rectangle within the tile to be computed.


Copyright © 2006–2014 GeoSolutions. All rights reserved.