MrSID Decode SDK for Raster Reference Manual
9.0.0.3864
|
combine N different bands from M images into one N-banded image More...
#include <lti_bandSelectFilter.h>
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 LTIBandSelectFilter * | create (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 |
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.
enum LTIBandSelectFilter::SourcePixel [protected] |
Definition at line 172 of file lti_bandSelectFilter.h.
LTIBandSelectFilter::LTIBandSelectFilter | ( | void | ) | [protected] |
virtual LTIBandSelectFilter::~LTIBandSelectFilter | ( | void | ) | [protected, virtual] |
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.
pixelProps | the band selection |
fullScene | the full scene to be read |
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.
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.
stripBuffer | the buffer to read the pixels into |
stripScene | the scene for this strip being decoded |
Reimplemented from LTIImageFilter.
LT_STATUS LTIBandSelectFilter::getBandMap | ( | lt_uint16 | srcImageBands[] | ) | const |
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.
scene | the scene to be charged for |
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.
scene | the area pertaining to this request |
Reimplemented from LTIImageFilter.
lt_uint32 LTIBandSelectFilter::getStripHeight | ( | ) | const [virtual] |
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.
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.
srcImages | input images, for each output band |
srcImageBands | band numbers, for each output band |
numOutputBands | number of output bands |
colorSpace | the 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.)
srcImages | input images |
numOutputBands | number of output bands |
colorSpace | the 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.)
srcImage | input image |
srcImageBands | band numbers, for each output band |
numOutputBands | number of output bands |
colorSpace | the 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.
inputString | the string to parse |
bandList | returned array of band numbers |
numBands | length of bandList arrat |
static LT_STATUS LTIBandSelectFilter::push | ( | LTIImageStage *& | pipeline, |
const LTIPixel & | pixelProps | ||
) | [static] |
LT_STATUS LTIBandSelectFilter::remapBands | ( | const lt_uint16 | srcImageBands[] | ) |
static void LTIBandSelectFilter::remapPixel | ( | const LTIPixel & | srcPixel, |
const lt_uint16 | srcImageBands[], | ||
LTIPixel & | dstPixel | ||
) | [static] |
void LTIBandSelectFilter::remapPixel | ( | LTIPixel & | pixel, |
SourcePixel | name | ||
) | const [protected] |
LT_STATUS LTIBandSelectFilter::setStripHeight | ( | lt_uint32 | stripHeight | ) | [virtual] |
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.)
stripHeight | the number of rows to decode at one time |
Reimplemented from LTIImageFilter.
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.