Isis 3 Programmer Reference
|
Imports TIFF images as Isis cubes. More...
#include <TiffImporter.h>
Public Member Functions | |
TiffImporter (FileName inputName) | |
Construct the importer. More... | |
virtual | ~TiffImporter () |
Destruct the importer. More... | |
virtual PvlGroup | convertProjection () const |
Convert any projection information associated with the input image to an ISIS Mapping group in PVL form. More... | |
virtual bool | isGrayscale () const |
Tests to see if the input image has a "min is white" or "min is black" photometric interpretation, implying grayscale (no RGB/A). More... | |
virtual bool | isRgb () const |
Tests to see if the input image is neither grayscale nor has more than three samples per pixel, implying RGB (no alpha). More... | |
virtual bool | isArgb () const |
Tests to see if the input image is not grayscale and has more than three samples per pixel, 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... | |
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 | |
int | samplesPerPixel () const |
The number of "samples" (bands in Isis terms) per pixel in the input image. More... | |
virtual void | updateRawBuffer (int line, int band) const |
Does nothing as LibTIFF reads the entire input image into memory, and therefore does not need to be updated throughout the import process. 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. More... | |
virtual int | getGreen (int pixel) const |
Retrieves the green component of the given pixel. More... | |
virtual int | getBlue (int pixel) const |
Retrieves the blue component of the given pixel. More... | |
virtual int | getAlpha (int pixel) const |
Retrieves the alpha component of the given pixel. 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... | |
Private Member Functions | |
Pvl | gdalItems (const Pvl &outPvl) const |
Convert items in the GDAL tag to the ISIS mapping group. More... | |
Pvl | upperLeftXY (const Pvl &inLab) const |
Convert the Tiff Tiepoint tag data to Upper Left X & Y values for the ISIS cube label mapping group. More... | |
Pvl | resolution (const Pvl &inLab) const |
Convert the Tiff PixelScale tag data to a singe resolution for the ISIS cube label mapping group. More... | |
Private Attributes | |
TIFF * | m_image |
LibTIFF representation of the input image. More... | |
uint32 * | m_raster |
Buffer holding the raw TIFF image in memory. More... | |
uint16 | m_photo |
The enumerated photometric interpretation of the input image. More... | |
uint16 | m_samplesPerPixel |
The number of "samples" (bands in Isis terms) in the input image. More... | |
GTIF * | m_geotiff |
GeoTiff hanele. More... | |
PvlGroup | m_map |
ISIS Mapping group. More... | |
FileName * | m_inputName |
The filename of the input image. More... | |
Cube * | m_outCube |
The owned handle on the output cube to be imported to. More... | |
int | m_samples |
The number of samples to be written to the output. More... | |
int | m_lines |
The number of lines to be written to the output. More... | |
int | m_bands |
The number of bands to be written to the output. More... | |
double | m_nullMin |
The lower bound of the range within which input DNs will be made Null. More... | |
double | m_nullMax |
The upper bound of the range within which input DNs will be made Null. More... | |
double | m_lrsMin |
The lower bound of the range within which input DNs will be made LRS. More... | |
double | m_lrsMax |
The upper bound of the range within which input DNs will be made LRS. More... | |
double | m_hrsMin |
The lower bound of the range within which input DNs will be made HRS. More... | |
double | m_hrsMax |
The upper bound of the range within which input DNs will be made HRS. More... | |
Imports TIFF images as Isis cubes.
Takes a TIFF input image and imports it into Isis in the cube format. Unlike Qt's facilities for importing TIFFs, this class is capable of importing images >2GB, provided the user's machine has sufficient RAM to hold such an image in memory.
Definition at line 45 of file TiffImporter.h.
|
protectedinherited |
Friendly alias for a method used to get a particular color channel.
Definition at line 97 of file ImageImporter.h.
Isis::TiffImporter::TiffImporter | ( | FileName | inputName | ) |
Construct the importer.
inputName | The name of the input image |
Definition at line 33 of file TiffImporter.cpp.
References Isis::FileName::expanded(), Isis::ImageImporter::lines(), m_geotiff, m_image, m_photo, m_raster, m_samplesPerPixel, Isis::IException::Programmer, Isis::ImageImporter::samples(), Isis::ImageImporter::setDefaultBands(), Isis::ImageImporter::setLines(), and Isis::ImageImporter::setSamples().
|
virtual |
Destruct the importer.
Definition at line 85 of file TiffImporter.cpp.
|
inherited |
The band dimension (depth) of the output image.
Definition at line 298 of file ImageImporter.cpp.
References Isis::ImageImporter::m_bands.
Referenced by Isis::ImageImporter::createOutput(), Isis::ImageImporter::getBandChannel(), Isis::ImageImporter::import(), and Isis::JP2Importer::JP2Importer().
|
virtual |
Convert any projection information associated with the input image to an ISIS Mapping group in PVL form.
Currently this routine only handles GeoTiff tags containing UTM projection parameters. NOTE: As written, this only works for a few projections. The tranlsation files can be extened to work for more, but the whole design needs to be generalized and thought out.
References: http://www.remotesensing.org/geotiff/spec/geotiffhome.html
Reimplemented from Isis::ImageImporter.
Definition at line 110 of file TiffImporter.cpp.
References Isis::PvlObject::addGroup(), Isis::PvlToPvlTranslationManager::Auto(), Isis::ProjectionFactory::Create(), Isis::FileName::expanded(), Isis::FileName::fileExists(), Isis::PvlObject::findGroup(), gdalItems(), Isis::TProjection::LocalRadius(), m_geotiff, Isis::PI, resolution(), Isis::toString(), Isis::TProjection::TrueScaleLatitude(), and upperLeftXY().
|
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 |
Definition at line 399 of file ImageImporter.cpp.
References Isis::ImageImporter::getBlue(), Isis::ImageImporter::getGreen(), and Isis::ImageImporter::getRed().
Referenced by Isis::JP2Importer::getGray(), and 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 |
Definition at line 179 of file ImageImporter.cpp.
References Isis::ImageImporter::bands(), Isis::Cube::create(), Isis::FileName::expanded(), Isis::ImageImporter::lines(), Isis::ImageImporter::m_outCube, Isis::ImageImporter::samples(), and Isis::Cube::setDimensions().
Referenced by Isis::ImageImporter::import().
|
inherited |
The filename of the input image this instance was constructed with.
Definition at line 308 of file ImageImporter.cpp.
References Isis::ImageImporter::m_inputName.
Referenced by Isis::JP2Importer::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 |
Definition at line 420 of file ImageImporter.cpp.
References Isis::FileName::expanded(), and Isis::IException::Programmer.
Convert items in the GDAL tag to the ISIS mapping group.
This includes the min/max lats/lons
Definition at line 371 of file TiffImporter.cpp.
References Isis::PvlObject::findGroup(), m_image, and Isis::toString().
Referenced by convertProjection().
|
protectedvirtual |
Retrieves the alpha component of the given pixel.
pixel | Representation of a LibTIFF pixel value |
Implements Isis::ImageImporter.
Definition at line 635 of file TiffImporter.cpp.
|
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 |
Definition at line 354 of file ImageImporter.cpp.
References 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.
pixel | Representation of a LibTIFF pixel value |
Implements Isis::ImageImporter.
Definition at line 623 of file TiffImporter.cpp.
|
protectedvirtual |
Retrieves the gray component of the given pixel.
In LibTIFF, even grayscale images are given RGB channels, so converts the RGB components into grayscale regardless of input photometric interpretation.
pixel | Representation of a LibTIFF pixel value |
Implements Isis::ImageImporter.
Definition at line 587 of file TiffImporter.cpp.
References Isis::ImageImporter::convertRgbToGray().
|
protectedvirtual |
Retrieves the green component of the given pixel.
pixel | Representation of a LibTIFF pixel value |
Implements Isis::ImageImporter.
Definition at line 611 of file TiffImporter.cpp.
|
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.
Definition at line 571 of file TiffImporter.cpp.
References Isis::ImageImporter::lines(), m_raster, and Isis::ImageImporter::samples().
|
protectedvirtual |
Retrieves the red component of the given pixel.
pixel | Representation of a LibTIFF pixel value |
Implements Isis::ImageImporter.
Definition at line 599 of file TiffImporter.cpp.
Import the image with default output attributes.
outputName | The filename of the output cube |
Definition at line 108 of file ImageImporter.cpp.
|
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 |
Definition at line 129 of file ImageImporter.cpp.
References Isis::PvlObject::addGroup(), Isis::ImageImporter::bands(), 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 not grayscale and has more than three samples per pixel, implying RGBA.
Implements Isis::ImageImporter.
Definition at line 545 of file TiffImporter.cpp.
References isGrayscale(), and samplesPerPixel().
|
virtual |
Tests to see if the input image has a "min is white" or "min is black" photometric interpretation, implying grayscale (no RGB/A).
Implements Isis::ImageImporter.
Definition at line 521 of file TiffImporter.cpp.
References m_photo.
|
virtual |
Tests to see if the input image is neither grayscale nor has more than three samples per pixel, implying RGB (no alpha).
Implements Isis::ImageImporter.
Definition at line 534 of file TiffImporter.cpp.
References isGrayscale(), and samplesPerPixel().
|
inherited |
The line dimension (height) of the output image.
Definition at line 288 of file ImageImporter.cpp.
References Isis::ImageImporter::m_lines.
Referenced by Isis::ImageImporter::createOutput(), getPixel(), and 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 |
Definition at line 84 of file ImageImporter.cpp.
References Isis::Buffer::Band(), Isis::ImageImporter::getBandChannel(), Isis::ImageImporter::getPixel(), Isis::Buffer::Line(), Isis::Buffer::SampleDimension(), Isis::ImageImporter::testSpecial(), and Isis::ImageImporter::updateRawBuffer().
Convert the Tiff PixelScale tag data to a singe resolution for the ISIS cube label mapping group.
Definition at line 475 of file TiffImporter.cpp.
References Isis::PvlObject::findGroup(), m_image, Isis::toString(), and Isis::IException::User.
Referenced by convertProjection().
|
inherited |
The sample dimension (width) of the output image.
Definition at line 278 of file ImageImporter.cpp.
References Isis::ImageImporter::m_samples.
Referenced by Isis::ImageImporter::createOutput(), getPixel(), Isis::JP2Importer::JP2Importer(), and TiffImporter().
|
protected |
The number of "samples" (bands in Isis terms) per pixel in the input image.
Combined with the photometric interpretation, this can be used to determine the color mode of the input image. We need both pieces of information because grayscale images are not guaranteed to have only one sample per pixel.
Definition at line 510 of file TiffImporter.cpp.
References m_samplesPerPixel.
|
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 |
Definition at line 263 of file ImageImporter.cpp.
References Isis::ImageImporter::m_bands, and Isis::IException::Programmer.
Referenced by Isis::JP2Importer::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.
Definition at line 192 of file ImageImporter.cpp.
References Isis::ImageImporter::isArgb(), Isis::ImageImporter::isGrayscale(), and Isis::ImageImporter::setBands().
Referenced by Isis::QtImporter::QtImporter(), and 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. |
Definition at line 230 of file ImageImporter.cpp.
References Isis::ImageImporter::m_hrsMax, and Isis::ImageImporter::m_hrsMin.
|
inherited |
Set the line dimension (height) of the output image.
l | The new line dimension |
Definition at line 251 of file ImageImporter.cpp.
References Isis::ImageImporter::m_lines.
Referenced by Isis::JP2Importer::JP2Importer(), Isis::QtImporter::QtImporter(), and 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. |
Definition at line 217 of file ImageImporter.cpp.
References Isis::ImageImporter::m_lrsMax, and Isis::ImageImporter::m_lrsMin.
|
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. |
Definition at line 204 of file ImageImporter.cpp.
References Isis::ImageImporter::m_nullMax, and Isis::ImageImporter::m_nullMin.
|
inherited |
Set the sample dimension (width) of the output image.
s | The new sample dimension |
Definition at line 241 of file ImageImporter.cpp.
References Isis::ImageImporter::m_samples.
Referenced by Isis::JP2Importer::JP2Importer(), Isis::QtImporter::QtImporter(), and 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 |
Definition at line 325 of file ImageImporter.cpp.
References Isis::ImageImporter::m_hrsMin, Isis::ImageImporter::m_lrsMin, and Isis::ImageImporter::m_nullMin.
Referenced by Isis::ImageImporter::operator()().
|
protectedvirtual |
Does nothing as LibTIFF reads the entire input image into memory, and therefore does not need to be updated throughout the import process.
line | Current line of the output buffer |
band | Current band of the output buffer |
Implements Isis::ImageImporter.
Definition at line 557 of file TiffImporter.cpp.
Convert the Tiff Tiepoint tag data to Upper Left X & Y values for the ISIS cube label mapping group.
Definition at line 430 of file TiffImporter.cpp.
References Isis::PvlContainer::deleteKeyword(), Isis::PvlObject::findGroup(), Isis::PvlContainer::hasKeyword(), m_image, Isis::toString(), and Isis::IException::User.
Referenced by convertProjection().
|
privateinherited |
The number of bands to be written to the output.
Definition at line 193 of file ImageImporter.h.
Referenced by Isis::ImageImporter::bands(), and Isis::ImageImporter::setBands().
|
private |
GeoTiff hanele.
Definition at line 82 of file TiffImporter.h.
Referenced by convertProjection(), TiffImporter(), and ~TiffImporter().
|
privateinherited |
The upper bound of the range within which input DNs will be made HRS.
Definition at line 211 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), and Isis::ImageImporter::setHrsRange().
|
privateinherited |
The lower bound of the range within which input DNs will be made HRS.
Definition at line 208 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), Isis::ImageImporter::setHrsRange(), and Isis::ImageImporter::testSpecial().
|
private |
LibTIFF representation of the input image.
Definition at line 70 of file TiffImporter.h.
Referenced by gdalItems(), resolution(), TiffImporter(), upperLeftXY(), and ~TiffImporter().
|
privateinherited |
The filename of the input image.
Definition at line 181 of file ImageImporter.h.
Referenced by Isis::ImageImporter::filename(), Isis::ImageImporter::ImageImporter(), and Isis::ImageImporter::~ImageImporter().
|
privateinherited |
The number of lines to be written to the output.
Definition at line 190 of file ImageImporter.h.
Referenced by Isis::ImageImporter::lines(), and Isis::ImageImporter::setLines().
|
privateinherited |
The upper bound of the range within which input DNs will be made LRS.
Definition at line 205 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), and Isis::ImageImporter::setLrsRange().
|
privateinherited |
The lower bound of the range within which input DNs will be made LRS.
Definition at line 202 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), Isis::ImageImporter::setLrsRange(), and Isis::ImageImporter::testSpecial().
|
private |
ISIS Mapping group.
Definition at line 85 of file TiffImporter.h.
|
privateinherited |
The upper bound of the range within which input DNs will be made Null.
Definition at line 199 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), and Isis::ImageImporter::setNullRange().
|
privateinherited |
The lower bound of the range within which input DNs will be made Null.
Definition at line 196 of file ImageImporter.h.
Referenced by Isis::ImageImporter::ImageImporter(), Isis::ImageImporter::setNullRange(), and Isis::ImageImporter::testSpecial().
|
privateinherited |
The owned handle on the output cube to be imported to.
Definition at line 184 of file ImageImporter.h.
Referenced by Isis::ImageImporter::createOutput(), Isis::ImageImporter::ImageImporter(), and Isis::ImageImporter::~ImageImporter().
|
private |
The enumerated photometric interpretation of the input image.
Definition at line 76 of file TiffImporter.h.
Referenced by isGrayscale(), and TiffImporter().
|
private |
Buffer holding the raw TIFF image in memory.
Definition at line 73 of file TiffImporter.h.
Referenced by getPixel(), TiffImporter(), and ~TiffImporter().
|
privateinherited |
The number of samples to be written to the output.
Definition at line 187 of file ImageImporter.h.
Referenced by Isis::ImageImporter::samples(), and Isis::ImageImporter::setSamples().
|
private |
The number of "samples" (bands in Isis terms) in the input image.
Definition at line 79 of file TiffImporter.h.
Referenced by samplesPerPixel(), and TiffImporter().