Isis 3 Developer Reference
|
Imports JPEG 2000 images as Isis cubes. More...
#include <JP2Importer.h>
Public Member Functions | |
JP2Importer (FileName inputName) | |
Construct the importer. More... | |
virtual | ~JP2Importer () |
Destruct the importer. More... | |
virtual bool | isGrayscale () const |
Tests to see if the input image is single-banded, implying grayscale (no RGB/A). More... | |
virtual bool | isRgb () const |
Tests to see if the input image is triple-banded, implying RGB (no alpha). More... | |
virtual bool | isArgb () const |
Tests to see if the input image is quadruple-banded, implying RGBA. More... | |
void | operator() (Buffer &out) const |
The method for processing the output cube in place, called for each line of the output image. More... | |
Cube * | import (FileName outputName) |
Import the image with default output attributes. More... | |
Cube * | import (FileName outputName, CubeAttributeOutput &att) |
Import the input image this instance was constructed with into the given output Isis cube with the given output attributes. More... | |
void | setNullRange (double min, double max) |
Set the range of DN values within which a pixel from the input image will be set to Null in the output. More... | |
void | setLrsRange (double min, double max) |
Set the range of DN values within which a pixel from the input image will be set to LRS in the output. More... | |
void | setHrsRange (double min, double max) |
Set the range of DN values within which a pixel from the input image will be set to HRS in the output. More... | |
void | setSamples (int s) |
Set the sample dimension (width) of the output image. More... | |
void | setLines (int l) |
Set the line dimension (height) of the output image. More... | |
void | setBands (int b) |
Set the band dimension (depth) of the output image. More... | |
int | samples () const |
The sample dimension (width) of the output image. More... | |
int | lines () const |
The line dimension (height) of the output image. More... | |
int | bands () const |
The band dimension (depth) of the output image. More... | |
FileName | filename () const |
The filename of the input image this instance was constructed with. More... | |
virtual PvlGroup | convertProjection () const |
Pure virtual method for converting projection information in the file being imported to an ISIS Mapping group. More... | |
Static Public Member Functions | |
static ImageImporter * | fromFileName (FileName inputName) |
A static (factory) method for constructing an ImageImporter instance from an input filename. More... | |
Protected Types | |
typedef int(ImageImporter::* | GetChannelMethod) (int pixel) const |
Friendly alias for a method used to get a particular color channel. More... | |
Protected Member Functions | |
virtual void | updateRawBuffer (int line, int band) const |
Updates the buffer used to store chunks of the input data at a time. More... | |
virtual int | getPixel (int s, int l) const |
Returns a representation of a pixel for the input format that can then be broken down into specific gray or RGB/A components. More... | |
virtual int | getGray (int pixel) const |
Retrieves the gray component of the given pixel. More... | |
virtual int | getRed (int pixel) const |
Retrieves the red component of the given pixel from the first band of the input buffer. More... | |
virtual int | getGreen (int pixel) const |
Retrieves the green component of the given pixel from the second band of the input buffer. More... | |
virtual int | getBlue (int pixel) const |
Retrieves the blue component of the given pixel from the third band of the input buffer. More... | |
virtual int | getAlpha (int pixel) const |
Retrieves the alpha component of the given pixel from the fourth band of the input buffer. More... | |
int | getFromBuffer (int s, int b) const |
Retrieves the pixel value from the input buffer corresponding to the given sample and band (the buffer contains an entire line). More... | |
Cube * | createOutput (FileName outputName, CubeAttributeOutput &att) |
Create the output cube from the given filename and attributes. More... | |
void | setDefaultBands () |
Set the number of bands to be created for the output cube based on the number of color channels in the input image. More... | |
double | testSpecial (double pixel) const |
Tests a pixel against the Null, HRS, and LRS ranges defined by the importer's handler. More... | |
virtual GetChannelMethod | getBandChannel (int band) const |
Retrieve the method responsible for fetching the color channel from the input image corresponding to the current band out of output being filled. More... | |
virtual int | convertRgbToGray (int pixel) const |
Convert the current pixel, taken from an RGB/A image, and blend its RGB components into a single grayscale DN. More... | |
Imports JPEG 2000 images as Isis cubes.
Takes a JPEG 2000 input image and imports it into Isis in the cube format.
|
protectedinherited |
Friendly alias for a method used to get a particular color channel.
Isis::JP2Importer::JP2Importer | ( | FileName | inputName | ) |
Construct the importer.
inputName | The name of the input image |
References _FILEINFO_, Isis::ImageImporter::bands(), Isis::FileName::expanded(), Isis::ImageImporter::filename(), Isis::JP2Decoder::GetBandDimension(), Isis::JP2Decoder::GetLineDimension(), Isis::JP2Decoder::GetPixelBytes(), Isis::JP2Decoder::GetSampleDimension(), Isis::JP2Decoder::GetSignedData(), Isis::JP2Decoder::OpenFile(), Isis::IException::Programmer, Isis::ImageImporter::samples(), Isis::ImageImporter::setBands(), Isis::ImageImporter::setLines(), Isis::ImageImporter::setSamples(), Isis::SignedWord, Isis::SizeOf(), Isis::UnsignedByte, Isis::UnsignedWord, and Isis::IException::User.
|
virtual |
Destruct the importer.
|
inherited |
The band dimension (depth) of the output image.
Referenced by Isis::ImageImporter::createOutput(), Isis::ImageImporter::getBandChannel(), Isis::ImageImporter::import(), and JP2Importer().
|
virtualinherited |
Pure virtual method for converting projection information in the file being imported to an ISIS Mapping group.
Reimplemented in Isis::TiffImporter.
Referenced by Isis::ImageImporter::import().
|
protectedvirtualinherited |
Convert the current pixel, taken from an RGB/A image, and blend its RGB components into a single grayscale DN.
The three color components are weighted by the following formula:
gray = (red * 11 + green * 16 + blue * 5) / 32
This formula was taken from the Qt documentation on converting an RGB value to grayscale: http://qt-project.org/doc/qt-4.8/qcolor.html#qGray-2
pixel | The pixel value to be broken up into RGB components and converted to grayscale |
References Isis::ImageImporter::getBlue(), Isis::ImageImporter::getGreen(), and Isis::ImageImporter::getRed().
Referenced by getGray(), and Isis::TiffImporter::getGray().
|
protectedinherited |
Create the output cube from the given filename and attributes.
Set its dimensions based on those encapsulated by the importer.
outputName | The filename of the output cube |
att | The attributes for writing the output cube |
References Isis::ImageImporter::bands(), Isis::Cube::create(), Isis::FileName::expanded(), Isis::ImageImporter::lines(), Isis::ImageImporter::samples(), and Isis::Cube::setDimensions().
Referenced by Isis::ImageImporter::import().
|
inherited |
The filename of the input image this instance was constructed with.
Referenced by JP2Importer().
|
staticinherited |
A static (factory) method for constructing an ImageImporter instance from an input filename.
The specific subclass of the returned instance is determined from the interpreted image format of the input image. Such tests are done by reading a minimal amount of the input data necessary to determine the format. It is the caller's responsibility to delete the importer instance when they are finished with it. Note that deleting the importer will also delete the cube handle returned by the import() method.
inputName | The filename of the input image to be imported |
References _FILEINFO_, Isis::FileName::expanded(), Isis::JP2Decoder::IsJP2(), and Isis::IException::Programmer.
|
protectedvirtual |
Retrieves the alpha component of the given pixel from the fourth band of the input buffer.
pixel | Index into the line buffer corresponding to a sample |
Implements Isis::ImageImporter.
References getFromBuffer().
|
protectedvirtualinherited |
Retrieve the method responsible for fetching the color channel from the input image corresponding to the current band out of output being filled.
This will always be the getGray() method for single band output images. For RGB/A images, band 1 will be red, band 2 green, band 3 blue, and band 4 alpha.
band | The current band of the output image |
References _FILEINFO_, Isis::ImageImporter::bands(), Isis::ImageImporter::getAlpha(), Isis::ImageImporter::getBlue(), Isis::ImageImporter::getGray(), Isis::ImageImporter::getGreen(), Isis::ImageImporter::getRed(), and Isis::IException::Programmer.
Referenced by Isis::ImageImporter::operator()().
|
protectedvirtual |
Retrieves the blue component of the given pixel from the third band of the input buffer.
pixel | Index into the line buffer corresponding to a sample |
Implements Isis::ImageImporter.
References getFromBuffer().
|
protected |
Retrieves the pixel value from the input buffer corresponding to the given sample and band (the buffer contains an entire line).
Dependent upon the pixel type of the input data.
s | Index into the line buffer corresponding to a sample |
b | Index into the line buffer corresponding to a band |
References _FILEINFO_, Isis::IException::Programmer, Isis::SignedWord, Isis::UnsignedByte, and Isis::UnsignedWord.
Referenced by getAlpha(), getBlue(), getGray(), getGreen(), and getRed().
|
protectedvirtual |
Retrieves the gray component of the given pixel.
For grayscale images, simply returns the value in the single band. For RGB/A, converts the RGB components into grayscale.
pixel | Index into the line buffer corresponding to a sample |
Implements Isis::ImageImporter.
References Isis::ImageImporter::convertRgbToGray(), getFromBuffer(), and isGrayscale().
|
protectedvirtual |
Retrieves the green component of the given pixel from the second band of the input buffer.
pixel | Index into the line buffer corresponding to a sample |
Implements Isis::ImageImporter.
References getFromBuffer().
|
protectedvirtual |
Returns a representation of a pixel for the input format that can then be broken down into specific gray or RGB/A components.
s | The sample of the desired pixel |
l | The line of the desired pixel |
Implements Isis::ImageImporter.
|
protectedvirtual |
Retrieves the red component of the given pixel from the first band of the input buffer.
pixel | Index into the line buffer corresponding to a sample |
Implements Isis::ImageImporter.
References getFromBuffer().
Import the image with default output attributes.
outputName | The filename of the output cube |
|
inherited |
Import the input image this instance was constructed with into the given output Isis cube with the given output attributes.
This will do a black-box import using a ProcessByLine routine. The BandBin group will be updated in the output cube with the names of the color channels included. The output cube will be returned on completion of the import process so the caller can continue to modify the labels. The importer instance will retain ownership of this cube, such that the cube handle will be deallocated upon destruction of the importer.
outputName | The filename of the output cube |
att | The attributes for writing the output cube |
References _FILEINFO_, Isis::PvlObject::addGroup(), Isis::ImageImporter::bands(), Isis::ProcessByBrick::BandsFirst, Isis::ImageImporter::convertProjection(), Isis::ImageImporter::createOutput(), Isis::ProcessByBrick::EndProcess(), Isis::PvlObject::findObject(), Isis::PvlContainer::keywords(), Isis::Cube::label(), Isis::ProcessByLine::ProcessCubeInPlace(), Isis::IException::Programmer, Isis::ProcessByLine::SetInputCube(), Isis::ProcessByBrick::SetProcessingDirection(), and Isis::Process::WriteHistory().
|
virtual |
Tests to see if the input image is quadruple-banded, implying RGBA.
Implements Isis::ImageImporter.
References Isis::JP2Decoder::GetBandDimension().
|
virtual |
Tests to see if the input image is single-banded, implying grayscale (no RGB/A).
Implements Isis::ImageImporter.
References Isis::JP2Decoder::GetBandDimension().
Referenced by getGray().
|
virtual |
Tests to see if the input image is triple-banded, implying RGB (no alpha).
Implements Isis::ImageImporter.
References Isis::JP2Decoder::GetBandDimension().
|
inherited |
The line dimension (height) of the output image.
Referenced by Isis::ImageImporter::createOutput(), Isis::TiffImporter::getPixel(), and Isis::TiffImporter::TiffImporter().
|
inherited |
The method for processing the output cube in place, called for each line of the output image.
Enables the importer to be used as a functor in a custom ProcessByLine routine, bypassing the black-box import() method entirely. Care should be taken, however, to observe the requirements placed on the structure of such a processing routine by this method. For example, the JP2Importer child requires that the processing proceed in the direction of bands before lines, because its input data is structured in a BIL (band interlaced by line) format.
out | A reference to a line of output data to be written to |
References Isis::Buffer::Band(), Isis::ImageImporter::getBandChannel(), Isis::ImageImporter::getPixel(), Isis::Buffer::Line(), Isis::Buffer::SampleDimension(), Isis::ImageImporter::testSpecial(), and Isis::ImageImporter::updateRawBuffer().
|
inherited |
The sample dimension (width) of the output image.
Referenced by Isis::ImageImporter::createOutput(), Isis::TiffImporter::getPixel(), JP2Importer(), and Isis::TiffImporter::TiffImporter().
|
inherited |
Set the band dimension (depth) of the output image.
Because this importer only works on Grayscale, RGB, and RGBA images, possible values are 1, 3, and 4 for the respective color modes.
b | The new band dimension |
References _FILEINFO_, and Isis::IException::Programmer.
Referenced by JP2Importer(), and Isis::ImageImporter::setDefaultBands().
|
protectedinherited |
Set the number of bands to be created for the output cube based on the number of color channels in the input image.
References Isis::ImageImporter::isArgb(), Isis::ImageImporter::isGrayscale(), and Isis::ImageImporter::setBands().
Referenced by Isis::QtImporter::QtImporter(), and Isis::TiffImporter::TiffImporter().
|
inherited |
Set the range of DN values within which a pixel from the input image will be set to HRS in the output.
min | Any DN less than this value will not be set to HRS. |
max | Any DN greater than this value will not be set to HRS. |
|
inherited |
Set the line dimension (height) of the output image.
l | The new line dimension |
Referenced by JP2Importer(), Isis::QtImporter::QtImporter(), and Isis::TiffImporter::TiffImporter().
|
inherited |
Set the range of DN values within which a pixel from the input image will be set to LRS in the output.
min | Any DN less than this value will not be set to LRS. |
max | Any DN greater than this value will not be set to LRS. |
|
inherited |
Set the range of DN values within which a pixel from the input image will be set to Null in the output.
min | Any DN less than this value will not be set to Null. |
max | Any DN greater than this value will not be set to Null. |
|
inherited |
Set the sample dimension (width) of the output image.
s | The new sample dimension |
Referenced by JP2Importer(), Isis::QtImporter::QtImporter(), and Isis::TiffImporter::TiffImporter().
|
protectedinherited |
Tests a pixel against the Null, HRS, and LRS ranges defined by the importer's handler.
Any pixel value falling within one of these ranges will be converted into the given type of special pixel. In case of overlapping ranges, these tests will be performed in the order mentioned at the start of this description. By default, these ranges are set such that all incoming pixels will retain their original values.
pixel | The DN value to be tested |
References Isis::HIGH_REPR_SAT8, Isis::LOW_REPR_SAT8, and Isis::NULL8.
Referenced by Isis::ImageImporter::operator()().
|
protectedvirtual |
Updates the buffer used to store chunks of the input data at a time.
Reads a single line of data from the input with all its color channels. Uses the pixel type to determine the size of each pixel value to read in.
line | Current line of the output buffer |
band | Current band of the output buffer |
Implements Isis::ImageImporter.
References Isis::JP2Decoder::Read(), and Isis::UnsignedByte.