MrSID Decode SDK for Raster Reference Manual  9.5.4.4709
LTIBandSelectFilter Class Reference

combine N different bands from M images into one N-banded image More...

#include <lti_bandSelectFilter.h>

Inheritance diagram for LTIBandSelectFilter:
LTIOverridePixelProps< LTIOverrideBackgroundPixel< LTIOverrideMetadata< LTIImageFilter > > > LTIOverrideBackgroundPixel< LTIOverrideMetadata< LTIImageFilter > > LTIOverridePixelPropsData LTIOverrideMetadata< LTIImageFilter > LTIOverrideBackgroundPixelData LTIImageFilter LTIOverrideMetadataData LTIImageStage LTIImage LTIReferenceCountedObject

List of all members.

Public Member Functions

LT_STATUS initialize (LTIImageStage *srcImages[], const int srcImageBands[], lt_uint16 numOutputBands, LTIColorSpace colorSpace)
 general initializer
LT_STATUS initialize (LTIImageStage *srcImages[], lt_uint16 numOutputBands, LTIColorSpace colorSpace)
 LTIColorCompositeFilter initializer.
LT_STATUS initialize (LTIImageStage *srcImage, const lt_uint16 srcImageBands[], lt_uint16 numOutputBands, LTIColorSpace colorSpace)
 single image initializer
lt_uint32 getStripHeight () const
 get strip height
LT_STATUS setStripHeight (lt_uint32 stripHeight)
 set the strip height
lt_int64 getEncodingCost (const LTIScene &scene) const
 get the cost to encode this scene
virtual lt_uint32 getModifications (const LTIScene &scene) const
 get the modification bitfield for this image
LT_STATUS remapBands (const lt_uint16 srcImageBands[])
LT_STATUS getBandMap (lt_uint16 srcImageBands[]) const

Static Public Member Functions

static LTIBandSelectFiltercreate (void)
static LT_STATUS parseString (const char *inputString, lt_int32 *&bandList, lt_uint16 &numBands)
 parse band string
static LT_STATUS push (LTIImageStage *&pipeline, const LTIPixel &pixelProps)
static void remapPixel (const LTIPixel &srcPixel, const lt_uint16 srcImageBands[], LTIPixel &dstPixel)

Protected Types

enum  SourcePixel { NodataPixel, BackgroundPixel, DRMinPixel, DRMaxPixel }

Protected Member Functions

 LTIBandSelectFilter (void)
virtual ~LTIBandSelectFilter (void)
LT_STATUS decodeBegin (const LTIPixel &pixelProps, const LTIScene &fullScene)
 start strip-based read
LT_STATUS decodeStrip (LTISceneBuffer &stripBuffer, const LTIScene &stripScene)
 read a strip from the image
LT_STATUS decodeEnd (void)
 finish strip-based read
void remapPixel (LTIPixel &pixel, SourcePixel name) const

Protected Attributes

BandSelectMap * m_bandSelectMap
BandSelectMap * m_decodeMap

Detailed Description

This class creates a single N-banded image which is a composition of N different bands from a set of images.

For example, an RGB image can be created from three (nominally grayscale) images which represent the red, green, and blue bands of a dataset. More generally, one can do things like construct a multispectral image from 1st and 2nd bands of one image and the 3rd and 4th bands of a second image.

Definition at line 38 of file lti_bandSelectFilter.h.


Member Enumeration Documentation

Enumerator:
NodataPixel 
BackgroundPixel 
DRMinPixel 
DRMaxPixel 

Definition at line 172 of file lti_bandSelectFilter.h.


Constructor & Destructor Documentation

virtual LTIBandSelectFilter::~LTIBandSelectFilter ( void  ) [protected, virtual]

Member Function Documentation

static LTIBandSelectFilter* LTIBandSelectFilter::create ( void  ) [static]
LT_STATUS LTIBandSelectFilter::decodeBegin ( const LTIPixel pixelProps,
const LTIScene fullScene 
) [protected, virtual]

This function is called by readBegin() to start the actual class-specific work for decoding a scene.

Derived classes must implement this function.

This function should never be called directly.

Parameters:
pixelPropsthe band selection
fullScenethe full scene to be read
Returns:
status code indicating success or failure

Reimplemented from LTIImageFilter.

LT_STATUS LTIBandSelectFilter::decodeEnd ( void  ) [protected, virtual]

This function is called by readEnd() to complete the actual class-specific work for decoding a scene.

Derived classes must implement this function.

This function should never be called directly.

Returns:
status code indicating success or failure

Reimplemented from LTIImageFilter.

LT_STATUS LTIBandSelectFilter::decodeStrip ( LTISceneBuffer stripBuffer,
const LTIScene stripScene 
) [protected, virtual]

This function is called by readStrip() to implement the actual class-specific work for decoding a strip of the scene.

Derived classes must implement this function.

This function should never be called directly.

Parameters:
stripBufferthe buffer to read the pixels into
stripScenethe scene for this strip being decoded
Returns:
status code indicating success or failure

Reimplemented from LTIImageFilter.

lt_int64 LTIBandSelectFilter::getEncodingCost ( const LTIScene scene) const [virtual]

Returns the "cost" to encode this scene, for use by those image writers which have usage metering enabled. The typical cost is equal to the nominal image size (width * height * numBands * bytesPerSample), but this is overridden for special situations, e.g. the mosaic filter.

Parameters:
scenethe scene to be charged for
Returns:
the cost to encode the given scene

Reimplemented from LTIImageFilter.

virtual lt_uint32 LTIBandSelectFilter::getModifications ( const LTIScene scene) const [virtual]

This function returns a bitfield describing what kinds of modifications have been made to the image during and since its initial encoding.

Parameters:
scenethe area pertaining to this request
Returns:
a bitfield itemizing the encoding modifications

Reimplemented from LTIImageFilter.

Returns the strip height used in read() calls.

Reader classes should set this. Filter classes should inherit the stripheight of their pipeline predecessor. A writer class will force the stripheight of the pipeline to match its stripheight.

Returns:
the strip height

Reimplemented from LTIImageFilter.

LT_STATUS LTIBandSelectFilter::initialize ( LTIImageStage srcImages[],
const int  srcImageBands[],
lt_uint16  numOutputBands,
LTIColorSpace  colorSpace 
)

Creates an image stage which composes the specified bands of the input images.

The srcImages and srcImageBands arrays each contain numOutputBands elements and serve to describe the bands of the desired output image. That is, band i of the output image will contain band srcImageBands[i] from image srcImages[i].

An element of srcImages may be NULL. In this case, however, the corresponding srcImageBands element must be set to (int)-'Z', indicating a band of all zeros is to be used.

At least one of the srcImages elements must be non-NULL.

Note: Data from srcImages and srcImageBands arrays are copied locally after initialize() is called.

Parameters:
srcImagesinput images, for each output band
srcImageBandsband numbers, for each output band
numOutputBandsnumber of output bands
colorSpacethe colorspace of the output image
LT_STATUS LTIBandSelectFilter::initialize ( LTIImageStage srcImages[],
lt_uint16  numOutputBands,
LTIColorSpace  colorSpace 
)

Same as the above general constructor, except that (1) each source image is either a one-banded image or NULL, and (2) the srcImageBands array is constructed as the form [0,1,2...].

(This provides compatability with the old LTIColorCompositeFilter class.)

Parameters:
srcImagesinput images
numOutputBandsnumber of output bands
colorSpacethe colorspace of the output image
LT_STATUS LTIBandSelectFilter::initialize ( LTIImageStage srcImage,
const lt_uint16  srcImageBands[],
lt_uint16  numOutputBands,
LTIColorSpace  colorSpace 
)

Same as the above general constructor, except that (1) a single source image is used, instead of an array of possibly different images, and (2) the output image has the same number of bands and colorspace as the input image.

(This provides compatability with the old LTISampleMapTransformer class.)

Parameters:
srcImageinput image
srcImageBandsband numbers, for each output band
numOutputBandsnumber of output bands
colorSpacethe colorspace of the output image
static LT_STATUS LTIBandSelectFilter::parseString ( const char *  inputString,
lt_int32 *&  bandList,
lt_uint16 numBands 
) [static]

Given a string such as "1,3-4,2", this function will return an array like [1,3,4,2].

The formal grammar of the input string is (ignoring whitespace): string := token? (comma token)* token := letter | number | number hyphen number letter := 'Z' number := digit+ digit := '0' | '1' | ... '9' comma := ',' hyphen := '-' Note that the range may be negative, i.e. "3-1" will be returned as [3,2,1]. A band value of Z indicates a band of all zeros should be used.

The caller takes ownership of the returned array.

Note that the caller may need to adjust the data in the returned array to be zero-based.

Parameters:
inputStringthe string to parse
bandListreturned array of band numbers
numBandslength of bandList arrat
Returns:
status code
static LT_STATUS LTIBandSelectFilter::push ( LTIImageStage *&  pipeline,
const LTIPixel pixelProps 
) [static]
static void LTIBandSelectFilter::remapPixel ( const LTIPixel srcPixel,
const lt_uint16  srcImageBands[],
LTIPixel dstPixel 
) [static]
void LTIBandSelectFilter::remapPixel ( LTIPixel pixel,
SourcePixel  name 
) const [protected]

Sets the strip height to be used in decoding. This is the number of rows to be decoded in each strip of the read() sequence.

Reader classes should implement this directly. (LTIImageFilter implements this as a call to setStripHeight() on the previous stage.)

Parameters:
stripHeightthe number of rows to decode at one time
Returns:
status code indicating success or failure

Reimplemented from LTIImageFilter.


Member Data Documentation

BandSelectMap* LTIBandSelectFilter::m_bandSelectMap [protected]

Definition at line 181 of file lti_bandSelectFilter.h.

BandSelectMap* LTIBandSelectFilter::m_decodeMap [protected]

Definition at line 182 of file lti_bandSelectFilter.h.


The documentation for this class was generated from the following file: