Isis 3 Programmer Reference
|
Exports cubes into JPEG 2000 images. More...
#include <JP2Exporter.h>
Public Member Functions | |
JP2Exporter () | |
Construct the JPEG 2000 exporter. | |
virtual | ~JP2Exporter () |
Destruct the exporter. | |
virtual void | write (FileName outputName, int quality=100, QString compression="none", UserInterface *ui=nullptr) |
Initialize the encoder, open the output file for writing, then let the base ImageExporter handle the generic black-box writing routine. | |
virtual void | setGrayscale (ExportDescription &desc) |
Generic initialization with the export description. | |
virtual void | setRgb (ExportDescription &desc) |
Generic initialization with the export description. | |
virtual void | setRgba (ExportDescription &desc) |
Generic initialization with the export description. | |
void | operator() (vector< Buffer * > &in) const |
The method for writing a line of input image data (with potentially several bands representing color channels) to the output image. | |
int | samples () const |
Number of samples (columns) in the output image. | |
int | lines () const |
Number of lines (rows) in the output image. | |
int | bands () const |
Number of bands (channels) in the output image. | |
double | inputMinimum (int channel) const |
Returns the input minimum for the given channel. | |
double | inputMaximum (int channel) const |
Returns the input maximum for the given channel. | |
void | setOutputPixelRange (double outputPixelMinimum, double outputPixelMaximum) |
Set the DN floor and ceiling for the exported image. | |
Static Public Member Functions | |
static bool | canWriteFormat (QString format) |
Returns true if the format is "jp2". | |
static ImageExporter * | fromFormat (QString format) |
A static (factory) method for constructing an ImageExporter instance from an output format. | |
Protected Types | |
typedef void(ImageExporter::* | WriteChannels) (vector< Buffer * > &in) const |
Friendly alias for a method used to write a particular color channel. | |
Protected Member Functions | |
virtual void | createBuffer () |
Creates the buffer to store a chunk of streamed line data with one or more bands. | |
virtual void | setBuffer (int s, int b, int dn) const |
Set the DN value at the given sample and band of the line buffer. | |
virtual void | writeLine (int l) const |
Writes a line of buffered data to the output image on disk. | |
virtual void | initialize (ExportDescription &desc) |
Generic initialization with the export description. | |
virtual void | writeGrayscale (vector< Buffer * > &in) const |
Write a line of grayscale data to the output image. | |
virtual void | writeRgb (vector< Buffer * > &in) const |
Write a line of RGB data to the output image. | |
virtual void | writeRgba (vector< Buffer * > &in) const |
Write a line of RGBA data to the output image. | |
void | setExtension (QString extension) |
Sets the extension for the output image and generates the extension for the world file from it. | |
void | setExportDescription (ExportDescription &desc) |
Sets the description for the output image. | |
Cube * | initializeProcess () |
Sets up the export process with the parameters described within the given description. | |
QString | extension () const |
Gets the extension for the output image. | |
ExportDescription & | exportDescription () const |
Gets the description for the output image. | |
ProcessExport & | process () const |
Get a reference to the process object, useful for subclasses to access and manipulate the process. | |
PixelType | pixelType () const |
Returns the pixel type. | |
virtual int | outputPixelValue (double dn) const |
Return the output clamped integer pixel value from the input double-precision DN. | |
Private Member Functions | |
Cube * | addChannel (int i) |
Add a channel of input data to the process from the export description at the given index. | |
void | createWorldFile (FileName outputName) |
Creates a world file is the input has a map projection. | |
Private Attributes | |
JP2Encoder * | m_encoder |
Object responsible for writing data to the output image. | |
char ** | m_buffer |
Two dimensional array containing all color channels for a line. | |
ProcessExport * | m_process |
The object that feeds lines to this instance and handles stretching. | |
WriteChannels | m_writeMethod |
Method pointer to one of the pure virtual write methods. | |
QString | m_extension |
Extension to append to the output image if not already provided. | |
QString | m_worldExtension |
Extension to append to the output world file. | |
int | m_samples |
Number of samples (columns) in the output image. | |
int | m_lines |
Number of lines (rows) in the output image. | |
int | m_bands |
Number of bands (channels) in the output image. | |
double | m_outputPixelMinimum |
! The absolute minimum value for the output pixels. | |
double | m_outputPixelMaximum |
! The absolute maximum value for the output pixels. | |
ExportDescription * | m_exportDescription |
! The description for the export. | |
Exports cubes into JPEG 2000 images.
A streamed exporter for JPEG 2000 images. Can write an arbitrarily large set of single-band Isis cubes to an arbitrarily large JPEG 2000 image with the given pixel type.
2012-04-04 Travis Addair - Added documentation.
2013-06-05 Jeannie Backer - Removed "get" prefix from ImageExporter method calls. References #1380.
2015-02-12 Jeffrey Covington - Added compression parameter to write() method. Fixes #1745.
Definition at line 34 of file JP2Exporter.h.
|
protectedinherited |
Friendly alias for a method used to write a particular color channel.
Definition at line 99 of file ImageExporter.h.
Isis::JP2Exporter::JP2Exporter | ( | ) |
Construct the JPEG 2000 exporter.
Definition at line 23 of file JP2Exporter.cpp.
References m_buffer, m_encoder, and Isis::ImageExporter::setExtension().
|
virtual |
Destruct the exporter.
Definition at line 34 of file JP2Exporter.cpp.
|
privateinherited |
Add a channel of input data to the process from the export description at the given index.
i | Index of the channel to add within the export description |
Definition at line 355 of file ImageExporter.cpp.
References Isis::ExportDescription::ChannelDescription::attributes(), Isis::ExportDescription::channel(), Isis::FileName::expanded(), Isis::ExportDescription::ChannelDescription::filename(), Isis::ExportDescription::ChannelDescription::hasCustomRange(), Isis::ExportDescription::ChannelDescription::inputMaximum(), Isis::ExportDescription::ChannelDescription::inputMinimum(), Isis::ImageExporter::m_exportDescription, and Isis::ImageExporter::process().
Referenced by Isis::ImageExporter::initializeProcess().
|
inherited |
Number of bands (channels) in the output image.
Definition at line 147 of file ImageExporter.cpp.
References Isis::ImageExporter::m_bands.
Referenced by Isis::QtExporter::checkDataSize(), createBuffer(), Isis::TiffExporter::createBuffer(), Isis::TiffExporter::setBuffer(), write(), and Isis::TiffExporter::write().
|
static |
Returns true if the format is "jp2".
format | Lowercase format abbreviation |
Definition at line 127 of file JP2Exporter.cpp.
Referenced by Isis::ImageExporter::fromFormat().
|
protectedvirtual |
Creates the buffer to store a chunk of streamed line data with one or more bands.
Implements Isis::StreamExporter.
Definition at line 47 of file JP2Exporter.cpp.
References Isis::ImageExporter::bands(), m_buffer, Isis::ImageExporter::pixelType(), and Isis::ImageExporter::samples().
|
privateinherited |
Creates a world file is the input has a map projection.
outputName | Name of the world file |
Definition at line 373 of file ImageExporter.cpp.
References Isis::ImageExporter::m_worldExtension, and Isis::ImageExporter::process().
Referenced by Isis::ImageExporter::write().
|
protectedinherited |
Gets the description for the output image.
Definition at line 235 of file ImageExporter.cpp.
References Isis::ImageExporter::m_exportDescription.
Referenced by Isis::ImageExporter::initializeProcess().
|
protectedinherited |
Gets the extension for the output image.
Definition at line 217 of file ImageExporter.cpp.
References Isis::ImageExporter::m_extension.
Referenced by Isis::ImageExporter::setExtension(), write(), Isis::QtExporter::write(), and Isis::TiffExporter::write().
|
staticinherited |
A static (factory) method for constructing an ImageExporter instance from an output format.
The specific subclass of the returned instance is determined from the desired output image format provided. Each subclass has knowledge of whether or not it can write a particular format. Because the ability to export an image format is not mutually exclusive amongst exporters, the order of condieration here matters. For example, using a TIFF exporter takes precedence over a Qt exporter for TIFF images, because the former can process cubes greater than 2GB while the latter cannot. It is the caller's responsibility to delete the exporter instance when they are finished with it.
format | The format for the output image to be created |
Definition at line 399 of file ImageExporter.cpp.
References canWriteFormat(), Isis::QtExporter::canWriteFormat(), Isis::TiffExporter::canWriteFormat(), and Isis::IException::Programmer.
|
protectedvirtualinherited |
Generic initialization with the export description.
Set the input, set the pixel type, and create the buffer.
desc | Export description containing necessary channel information |
Implements Isis::ImageExporter.
Definition at line 74 of file StreamExporter.cpp.
References Isis::StreamExporter::createBuffer(), and Isis::ImageExporter::initialize().
Referenced by Isis::StreamExporter::setGrayscale(), Isis::StreamExporter::setRgb(), and Isis::StreamExporter::setRgba().
|
protectedinherited |
Sets up the export process with the parameters described within the given description.
This method determines determines whether to write the data as grayscale, RGB, or RGBA. It then opens a cube for retrieving the input data and establishing the dimensions of the output image. Next, the ProcessExport format is set to BIL and the ProcessExport output pixel type, output valid data range, and output null are set based on the given export description. Last, the absolute output pixel range is set based on the given description (this is the smallest and largest allowed pixel values in the output, including "special" pixel values).
Definition at line 255 of file ImageExporter.cpp.
References Isis::ImageExporter::addChannel(), Isis::ProcessExport::BIL, Isis::ExportDescription::channelCount(), Isis::ImageExporter::exportDescription(), Isis::Cube::lineCount(), Isis::ImageExporter::m_bands, Isis::ImageExporter::m_exportDescription, Isis::ImageExporter::m_lines, Isis::ImageExporter::m_samples, Isis::ImageExporter::m_writeMethod, Isis::ExportDescription::outputPixelAbsoluteMax(), Isis::ExportDescription::outputPixelAbsoluteMin(), Isis::ExportDescription::outputPixelNull(), Isis::ExportDescription::outputPixelValidMax(), Isis::ExportDescription::outputPixelValidMin(), Isis::ImageExporter::pixelType(), Isis::ImageExporter::process(), Isis::IException::Programmer, Isis::Cube::sampleCount(), Isis::Cube::setFormat(), Isis::ImageExporter::setOutputPixelRange(), Isis::ImageExporter::writeGrayscale(), Isis::ImageExporter::writeRgb(), and Isis::ImageExporter::writeRgba().
Referenced by Isis::ImageExporter::initialize().
|
inherited |
Returns the input maximum for the given channel.
Any value of max in the input cube will be mapped to the output max of the output channel.
channel | Index of the channel within the process |
Definition at line 173 of file ImageExporter.cpp.
References Isis::ProcessExport::GetInputMaximum(), and Isis::ImageExporter::m_process.
|
inherited |
Returns the input minimum for the given channel.
Any value of min in the input cube will be mapped to the output min of the output channel.
channel | Index of the channel within the process |
Definition at line 160 of file ImageExporter.cpp.
References Isis::ProcessExport::GetInputMinimum(), and Isis::ImageExporter::m_process.
|
inherited |
Number of lines (rows) in the output image.
Definition at line 137 of file ImageExporter.cpp.
References Isis::ImageExporter::m_lines.
Referenced by Isis::QtExporter::checkDataSize(), Isis::QtExporter::setGrayscale(), Isis::QtExporter::setRgb(), Isis::QtExporter::setRgba(), write(), and Isis::TiffExporter::write().
|
inherited |
The method for writing a line of input image data (with potentially several bands representing color channels) to the output image.
It is called for each line of data in the input images (provides a vector containing the same line from each single-band input image). Enables the exporter to be used as a functor in a custom ProcessExport routine, bypassing the black-box write() method entirely.
in | Vector containing a line of input data from each input channel |
Definition at line 85 of file ImageExporter.cpp.
References Isis::ImageExporter::m_writeMethod.
|
protectedvirtualinherited |
Return the output clamped integer pixel value from the input double-precision DN.
dn | The input DN |
Definition at line 334 of file ImageExporter.cpp.
References Isis::ImageExporter::m_outputPixelMaximum, and Isis::ImageExporter::m_outputPixelMinimum.
Referenced by Isis::QtExporter::writeGrayscale(), Isis::StreamExporter::writeGrayscale(), Isis::QtExporter::writeRgb(), Isis::StreamExporter::writeRgb(), Isis::QtExporter::writeRgba(), and Isis::StreamExporter::writeRgba().
|
protectedinherited |
Returns the pixel type.
Defaults to None if not set by the user.
Definition at line 316 of file ImageExporter.cpp.
References Isis::ImageExporter::m_exportDescription, and Isis::ExportDescription::pixelType().
Referenced by createBuffer(), Isis::TiffExporter::createBuffer(), Isis::ImageExporter::initializeProcess(), setBuffer(), Isis::TiffExporter::setBuffer(), write(), Isis::TiffExporter::write(), and writeLine().
|
protectedinherited |
Get a reference to the process object, useful for subclasses to access and manipulate the process.
Definition at line 306 of file ImageExporter.cpp.
References Isis::ImageExporter::m_process.
Referenced by Isis::ImageExporter::addChannel(), Isis::ImageExporter::createWorldFile(), Isis::ImageExporter::initializeProcess(), and Isis::ImageExporter::write().
|
inherited |
Number of samples (columns) in the output image.
Definition at line 127 of file ImageExporter.cpp.
References Isis::ImageExporter::m_samples.
Referenced by Isis::QtExporter::checkDataSize(), createBuffer(), Isis::TiffExporter::createBuffer(), Isis::QtExporter::setGrayscale(), Isis::QtExporter::setRgb(), Isis::QtExporter::setRgba(), write(), and Isis::TiffExporter::write().
|
protectedvirtual |
Set the DN value at the given sample and band of the line buffer.
s | The sample index into the buffer |
b | The band index into the buffer |
dn | The value to set at the given index |
Implements Isis::StreamExporter.
Definition at line 86 of file JP2Exporter.cpp.
References m_buffer, Isis::ImageExporter::pixelType(), Isis::IException::Programmer, and Isis::toString().
|
protectedinherited |
Sets the description for the output image.
desc | The export description |
Definition at line 226 of file ImageExporter.cpp.
References Isis::ImageExporter::m_exportDescription.
Referenced by Isis::ImageExporter::initialize().
|
protectedinherited |
Sets the extension for the output image and generates the extension for the world file from it.
extension | The extension for the output image |
Definition at line 202 of file ImageExporter.cpp.
References Isis::ImageExporter::extension(), Isis::ImageExporter::m_extension, and Isis::ImageExporter::m_worldExtension.
Referenced by JP2Exporter(), Isis::QtExporter::QtExporter(), and Isis::TiffExporter::TiffExporter().
|
virtualinherited |
Generic initialization with the export description.
Stream exporters do not do anything special to export a grayscale image beyond setting up the appropriate number of color channels.
desc | Export description containing necessary channel information |
Implements Isis::ImageExporter.
Definition at line 39 of file StreamExporter.cpp.
References Isis::StreamExporter::initialize().
|
inherited |
Set the DN floor and ceiling for the exported image.
All DNs less than the min will be set to the min in the exported image. Similarly, all DNs greater than the max will be set to the max in the exported image.
Note: These values may be "special". For example, if Null pixels are exported to 0.0 and the minimum valid pixels are exported to 2.0, then 0.0 should be passed in for the value of the min parameter.
min | The absolute minimum output DN value. |
max | The absolute maximum output DN value. |
Definition at line 190 of file ImageExporter.cpp.
References Isis::ImageExporter::m_outputPixelMaximum, and Isis::ImageExporter::m_outputPixelMinimum.
Referenced by Isis::ImageExporter::initializeProcess().
|
virtualinherited |
Generic initialization with the export description.
Stream exporters do not do anything special to export an RGB image beyond setting up the appropriate number of color channels.
desc | Export description containing necessary channel information |
Implements Isis::ImageExporter.
Definition at line 51 of file StreamExporter.cpp.
References Isis::StreamExporter::initialize().
|
virtualinherited |
Generic initialization with the export description.
Stream exporters do not do anything special to export an RGBA image beyond setting up the appropriate number of color channels.
desc | Export description containing necessary channel information |
Implements Isis::ImageExporter.
Definition at line 63 of file StreamExporter.cpp.
References Isis::StreamExporter::initialize().
|
virtual |
Initialize the encoder, open the output file for writing, then let the base ImageExporter handle the generic black-box writing routine.
outputName | The filename of the output cube |
quality | The quality of the output, not used for JPEG 2000 |
compression | The compression algorithm used. Not used for JPEG 2000 |
Reimplemented from Isis::ImageExporter.
Definition at line 65 of file JP2Exporter.cpp.
References Isis::ImageExporter::bands(), Isis::ImageExporter::extension(), Isis::ImageExporter::lines(), m_encoder, Isis::JP2Encoder::OpenFile(), Isis::ImageExporter::pixelType(), Isis::ImageExporter::samples(), and Isis::ImageExporter::write().
|
protectedvirtualinherited |
Write a line of grayscale data to the output image.
in | Vector containing a single grayscale input line |
Implements Isis::ImageExporter.
Definition at line 85 of file StreamExporter.cpp.
References Isis::Buffer::Line(), Isis::ImageExporter::outputPixelValue(), Isis::StreamExporter::setBuffer(), and Isis::StreamExporter::writeLine().
|
protectedvirtual |
Writes a line of buffered data to the output image on disk.
l | The line of the output image, unused for JPEG 2000 |
Implements Isis::StreamExporter.
Definition at line 111 of file JP2Exporter.cpp.
References m_buffer, m_encoder, Isis::ImageExporter::pixelType(), and Isis::JP2Encoder::Write().
|
protectedvirtualinherited |
Write a line of RGB data to the output image.
in | Vector containing three input lines (red, green, blue) |
Implements Isis::ImageExporter.
Definition at line 103 of file StreamExporter.cpp.
References Isis::ImageExporter::outputPixelValue(), Isis::StreamExporter::setBuffer(), and Isis::StreamExporter::writeLine().
|
protectedvirtualinherited |
Write a line of RGBA data to the output image.
in | Vector containing four input lines (red, green, blue, alpha) |
Implements Isis::ImageExporter.
Definition at line 127 of file StreamExporter.cpp.
References Isis::ImageExporter::outputPixelValue(), Isis::StreamExporter::setBuffer(), and Isis::StreamExporter::writeLine().
|
privateinherited |
Number of bands (channels) in the output image.
Definition at line 163 of file ImageExporter.h.
Referenced by Isis::ImageExporter::bands(), Isis::ImageExporter::ImageExporter(), and Isis::ImageExporter::initializeProcess().
|
private |
Two dimensional array containing all color channels for a line.
Definition at line 55 of file JP2Exporter.h.
Referenced by createBuffer(), JP2Exporter(), setBuffer(), writeLine(), and ~JP2Exporter().
|
private |
Object responsible for writing data to the output image.
Definition at line 52 of file JP2Exporter.h.
Referenced by JP2Exporter(), write(), writeLine(), and ~JP2Exporter().
|
privateinherited |
! The description for the export.
This includes, pixel type, number of channels, and the output values for min valid, max valid, and special pixels
Definition at line 176 of file ImageExporter.h.
Referenced by Isis::ImageExporter::addChannel(), Isis::ImageExporter::exportDescription(), Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::initializeProcess(), Isis::ImageExporter::pixelType(), Isis::ImageExporter::setExportDescription(), and Isis::ImageExporter::~ImageExporter().
|
privateinherited |
Extension to append to the output image if not already provided.
Definition at line 151 of file ImageExporter.h.
Referenced by Isis::ImageExporter::extension(), Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::setExtension(), and Isis::ImageExporter::write().
|
privateinherited |
Number of lines (rows) in the output image.
Definition at line 160 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::initializeProcess(), and Isis::ImageExporter::lines().
|
privateinherited |
! The absolute maximum value for the output pixels.
Larger DNs will be mapped to this value.
Definition at line 171 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::outputPixelValue(), and Isis::ImageExporter::setOutputPixelRange().
|
privateinherited |
! The absolute minimum value for the output pixels.
Smaller DNs will be mapped to this value.
Definition at line 167 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::outputPixelValue(), and Isis::ImageExporter::setOutputPixelRange().
|
privateinherited |
The object that feeds lines to this instance and handles stretching.
Definition at line 145 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::inputMaximum(), Isis::ImageExporter::inputMinimum(), Isis::ImageExporter::process(), and Isis::ImageExporter::~ImageExporter().
|
privateinherited |
Number of samples (columns) in the output image.
Definition at line 157 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::initializeProcess(), and Isis::ImageExporter::samples().
|
privateinherited |
Extension to append to the output world file.
Definition at line 154 of file ImageExporter.h.
Referenced by Isis::ImageExporter::createWorldFile(), Isis::ImageExporter::ImageExporter(), and Isis::ImageExporter::setExtension().
|
privateinherited |
Method pointer to one of the pure virtual write methods.
Definition at line 148 of file ImageExporter.h.
Referenced by Isis::ImageExporter::ImageExporter(), Isis::ImageExporter::initializeProcess(), and Isis::ImageExporter::operator()().