Isis 3 Programmer Reference
Isis::JP2Decoder Class Reference

JPEG2000 decoder class. More...

#include <JP2Decoder.h>

Collaboration diagram for Isis::JP2Decoder:
Collaboration graph

Public Member Functions

 JP2Decoder (const QString &jp2file)
 Constructs a JPEG2000 decoder object. More...
 
 ~JP2Decoder ()
 JP2Decoder destructor. More...
 
JP2Errorkakadu_error () const
 
void OpenFile ()
 Open the JPEG2000 file. More...
 
int GetSampleDimension () const
 
int GetLineDimension () const
 
int GetBandDimension () const
 
int GetPixelBytes () const
 
bool GetSignedData () const
 
void Read (unsigned char **inbuf)
 Read data from JP2 file containing 8-bit data. More...
 
void Read (short int **inbuf)
 Read data from JP2 file containing 16-bit data. More...
 

Static Public Member Functions

static bool IsJP2 (QString filename)
 

Private Member Functions

void SetResolutionAndRegion ()
 Sets resolution of data that will be decompressed. Also determines the image dimensions at the requested resolution. More...
 

Private Attributes

QString p_jp2File
 Input file name. More...
 
unsigned int p_numSamples
 Number of samples in JP2 file. More...
 
unsigned int p_numLines
 Number of lines in JP2 file. More...
 
unsigned int p_numBands
 Number of bands in JP2 file. More...
 
unsigned int p_pixelBytes
 Number of bytes per pixel in JP2 file. More...
 
bool p_signedData
 Set to true if data in JP2 file is signed. More...
 
JP2ErrorKakadu_Error
 JP2 Error handling facility. More...
 

Detailed Description

JPEG2000 decoder class.

This class is used to decode a JPEG2000 image.

Here is an example of how to use JP2Decoder

JP2Decoder *JP2_decoder;
JP2_decoder = new JP2Decoder(QString(ui.GetFileName("FROM")));
JP2_decoder->OpenFile();
int nsamps = JP2_decoder->GetSampleDimension();
int nlines = JP2_decoder->GetLineDimension();
int nbands = JP2_decoder->GetBandDimension();
int pixelbytes = JP2_decoder->GetPixelBytes();
bool is_signed = JP2_decoder->GetSignedData();
delete JP2_decoder;
ProcessImport jp;
jp.SetDimensions(nsamps,nlines,nbands);
if (pixelbytes == 1) {
jp.SetPixelType(Isis::UnsignedByte);
} else if (pixelbytes == 2) {
if (is_signed) {
jp.SetPixelType(Isis::SignedWord);
} else {
jp.SetPixelType(Isis::UnsignedWord);
}
} else {
throw iException::Message(iException::User,
"The file [" + ui.GetFileName("FROM") + "] contains unsupported data type.",
}
jp.SetInputFile(QString(ui.GetFileName("FROM")));
jp.SetOutputCube("TO");
jp.SetOrganization(ProcessImport::JP2);
jp.StartProcess();
jp.EndProcess();

If you would like to see JP2Decoder being used in implementation, see std2isis.cpp or for a class that implements JP2Decoder, see ProcessImport

Author
2009-12-18 Janet Barrett
History:

2009-12-18 Janet Barrett - Original version.

2012-04-06 Kris Becker - Fixed condition compilation where support for JP2K is disabled

2016-08-28 Kelvin Rodriguez - Moved member variables to be placed properly within the if ENABLEJP2K preprocessor block in order to stop unused member variable warnings in clang. Part of porting to OS X 10.11.

2017-08-21 Tyler Wilson, Ian Humphrey, Summer Stapleton - Added support for new kakadu libraries. References #4809.

2017-09-15 Ian Humphrey - Modified destructor to call finish() on the decompressor before destroying the kdu_codestream. Caused segfault on OSX 10.11 for the JP2Importer test, and isis2std and std2isis jpeg2000 tests. References #4809.

Definition at line 98 of file JP2Decoder.h.

Constructor & Destructor Documentation

◆ JP2Decoder()

Isis::JP2Decoder::JP2Decoder ( const QString &  jp2file)

Constructs a JPEG2000 decoder object.

Parameters
jp2fileThe name of the JP2 file that needs to be decoded.

Definition at line 48 of file JP2Decoder.cpp.

References _FILEINFO_.

◆ ~JP2Decoder()

Isis::JP2Decoder::~JP2Decoder ( )

JP2Decoder destructor.

Definition at line 212 of file JP2Decoder.cpp.

Member Function Documentation

◆ OpenFile()

void Isis::JP2Decoder::OpenFile ( )

Open the JPEG2000 file.

Definition at line 68 of file JP2Decoder.cpp.

References _FILEINFO_.

Referenced by Isis::JP2Importer::JP2Importer(), and Isis::ProcessImport::ProcessJp2().

◆ Read() [1/2]

void Isis::JP2Decoder::Read ( unsigned char **  inbuf)

Read data from JP2 file containing 8-bit data.

Parameters
inbufThe array of pointers to byte buffers that will be used to read in the image data. One byte buffer is required for each band in the image. Kakadu reads in a BIL manner. It is up to the calling routine to do the casting necessary to convert the byte data to the actual pixel type (UnsignedByte, UnsignedWord, SignedWord).

Definition at line 184 of file JP2Decoder.cpp.

Referenced by Isis::ProcessImport::ProcessJp2(), and Isis::JP2Importer::updateRawBuffer().

◆ Read() [2/2]

void Isis::JP2Decoder::Read ( short int **  inbuf)

Read data from JP2 file containing 16-bit data.

Parameters
inbufThe array of pointers to byte buffers that will be used to read in the image data. One byte buffer is required for each band in the image. Kakadu reads in a BIL manner. It is up to the calling routine to do the casting necessary to convert the byte data to the actual pixel type (UnsignedByte, UnsignedWord, SignedWord).

Definition at line 201 of file JP2Decoder.cpp.

◆ SetResolutionAndRegion()

void Isis::JP2Decoder::SetResolutionAndRegion ( )
private

Sets resolution of data that will be decompressed. Also determines the image dimensions at the requested resolution.

Set resolution level of the JPEG2000 file.

This class is currently set up to only read a file at full resolution.

Definition at line 161 of file JP2Decoder.cpp.

Member Data Documentation

◆ Kakadu_Error

JP2Error* Isis::JP2Decoder::Kakadu_Error
private

JP2 Error handling facility.

Definition at line 177 of file JP2Decoder.h.

◆ p_jp2File

QString Isis::JP2Decoder::p_jp2File
private

Input file name.

Definition at line 145 of file JP2Decoder.h.

◆ p_numBands

unsigned int Isis::JP2Decoder::p_numBands
private

Number of bands in JP2 file.

Definition at line 148 of file JP2Decoder.h.

◆ p_numLines

unsigned int Isis::JP2Decoder::p_numLines
private

Number of lines in JP2 file.

Definition at line 147 of file JP2Decoder.h.

◆ p_numSamples

unsigned int Isis::JP2Decoder::p_numSamples
private

Number of samples in JP2 file.

Definition at line 146 of file JP2Decoder.h.

◆ p_pixelBytes

unsigned int Isis::JP2Decoder::p_pixelBytes
private

Number of bytes per pixel in JP2 file.

Definition at line 149 of file JP2Decoder.h.

◆ p_signedData

bool Isis::JP2Decoder::p_signedData
private

Set to true if data in JP2 file is signed.

Definition at line 150 of file JP2Decoder.h.


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