Isis 3 Programmer Reference
Isis::ProcessRubberSheet Class Reference

Derivative of Process, designed for geometric transformations. More...

#include <ProcessRubberSheet.h>

Inheritance diagram for Isis::ProcessRubberSheet:
Inheritance graph
Collaboration diagram for Isis::ProcessRubberSheet:
Collaboration graph

Classes

class  Quad
 

Public Member Functions

 ProcessRubberSheet (int startSize=128, int endSize=8)
 Constructs a ProcessRubberSheet class with the default tile size range. More...
 
virtual ~ProcessRubberSheet ()
 Destroys the RubberSheet object. More...
 
virtual void StartProcess (Transform &trans, Interpolator &interp)
 Applies a Transform and an Interpolator to every pixel in the output cube. More...
 
virtual void processPatchTransform (Transform &trans, Interpolator &interp)
 Applies a Transform and an Interpolator to small patches. More...
 
virtual void BandChange (void(*funct)(const int band))
 Registers a function to be called when the current output cube band number changes. More...
 
virtual void ForceTile (double Samp, double Line)
 
virtual void SetTiling (long long start, long long end)
 This sets the start and end tile sizes for the rubber sheet; numbers are inclusive and must be powers of 2. More...
 
virtual void setPatchParameters (int startSample, int startLine, int samples, int lines, int sampleIncrement, int lineIncrement)
 This method allows the programmer to override the default values for patch parameters used in the patch transform method (processPatchTransform) More...
 
virtual void StartProcess (void funct())
 In the base class, this method will invoked a user-specified function exactly one time. More...
 
virtual void EndProcess ()
 End the processing sequence and cleans up by closing cubes, freeing memory, etc. More...
 
virtual void Finalize ()
 Cleans up by closing cubes and freeing memory for owned cubes. More...
 
virtual Isis::CubeSetInputCube (const QString &parameter, const int requirements=0)
 Opens an input cube specified by the user and verifies requirements are met. More...
 
virtual Isis::CubeSetInputCube (const QString &fname, const Isis::CubeAttributeInput &att, int requirements=0)
 Opens an input cube specified by the programmer and verifies requirements are met. More...
 
virtual void SetInputCube (Isis::Cube *inCube, int requirements=0)
 Set the InputCube vector to an opened Cube which was dynamically allocated. More...
 
virtual Isis::CubeSetOutputCube (const QString &parameter)
 Allocates a user-specified output cube whose size matches the first input cube. More...
 
virtual Isis::CubeSetOutputCube (const QString &parameter, const int nsamps, const int nlines, const int nbands=1)
 Allocates a user specified output cube whose size is specified by the programmer. More...
 
virtual Isis::CubeSetOutputCube (const QString &fname, const Isis::CubeAttributeOutput &att, const int nsamps, const int nlines, const int nbands=1)
 Allocates a output cube whose name and size is specified by the programmer. More...
 
virtual Isis::CubeSetOutputCubeStretch (const QString &parameter, UserInterface *ui=nullptr)
 Allocates a user-specified output cube whose size matches the first input cube. More...
 
virtual Isis::CubeSetOutputCubeStretch (const QString &parameter, const int nsamps, const int nlines, const int nbands=1, UserInterface *ui=nullptr)
 Allocates a user specified output cube whose size is specified by the programmer. More...
 
void AddInputCube (Cube *cube, bool owned=true)
 
void AddOutputCube (Cube *cube, bool owned=true)
 
void CheckRequirements (const Cube *cube, const int requirements)
 Checks to make sure the input cube meets the inputted requirements. More...
 
void ClearCubes ()
 Close owned cubes from the list and clear the list. More...
 
void ClearInputCubes ()
 Close owned input cubes from the list and clear the list. More...
 
void ClearOutputCubes ()
 Close owned output cubes from the list and clear the list. More...
 
void PropagateLabels (const bool prop)
 This method allows the programmer to turn on/off the propagation of labels from the 1st input cube to any of the output cubes. More...
 
void PropagateLabels (const QString &cube)
 This method allows the programmer to propagate labels from a specific secondary cube. More...
 
void PropagateTables (const bool prop)
 This method allows the programmer to propagate input tables to the output cube (default is true) More...
 
void PropagateTables (const QString &fromName, const QList< QString > &tableNames=QList< QString >())
 Propagate the tables from the cube with the given filename to the output cube. More...
 
void PropagatePolygons (const bool prop)
 This method allows the programmer to propagate input blobs to the output cube (default is true) More...
 
void PropagateHistory (const bool prop)
 This method allows the programmer to propagate history to the output cube (default is true) More...
 
void PropagateOriginalLabel (const bool prop)
 This method allows the programmer to propagate original labels to the output cube (default is true) More...
 
Isis::ProgressProgress ()
 This method returns a pointer to a Progress object. More...
 
QString MissionData (const QString &mission, const QString &file, bool highestVersion=false)
 This method reads the mission specific data directory from the user preference file, makes sure that mission is available in the Isis installation, and the attaches the provided input file to the directory in order to create a full file specification. More...
 
void WriteHistory (Cube &cube)
 Writes out the History blob to the cube. More...
 
void CalculateStatistics ()
 Calculates and stores off statistics on every band of every cube added to this process via the SetInputCube method. More...
 
std::vector< Isis::Statistics * > BandStatistics (const unsigned index)
 Get the vector of Statistics objects for each band separately of a specified input cube. More...
 
Isis::StatisticsCubeStatistics (const unsigned index)
 Get the Statistics object for all bands of a specified input cube. More...
 

Protected Attributes

Isis::Progressp_progress
 Pointer to a Progress object. More...
 
bool p_propagateLabels
 Flag indicating if labels are be propagated to output cubes. More...
 
bool p_propagateTables
 Flag indicating if tables are be propagated to output cubes. More...
 
bool p_propagatePolygons
 Flag indicating if blobs are be propagated to output cubes. More...
 
bool p_propagateHistory
 Flag indicating if history is to be propagated to output cubes. More...
 
bool p_propagateOriginalLabel
 Flag indicating if original lable is to be propagated to output cubes. More...
 
std::vector< std::vector< Isis::Statistics * > > p_bandStats
 Holds the calculated statistics for each band separately of every input cubei after the CalculateStatistics method is called. More...
 
std::vector< Isis::Statistics * > p_cubeStats
 Holds the calculated statistics for every band together of every input cubei after the CalculateStatistics method is called. More...
 
std::vector< Isis::Cube * > InputCubes
 A vector of pointers to opened Cube objects. More...
 
std::vector< Isis::Cube * > OutputCubes
 A vector of pointers to allocated Cube objects. More...
 
QSet< Isis::Cube * > * m_ownedCubes
 A list of cubes owned by this instant. More...
 

Private Member Functions

void ProcessQuad (std::vector< Quad * > &quadTree, Transform &trans, std::vector< std::vector< double > > &lineMap, std::vector< std::vector< double > > &sampMap)
 
void SplitQuad (std::vector< Quad * > &quadTree)
 
void SlowQuad (std::vector< Quad * > &quadTree, Transform &trans, std::vector< std::vector< double > > &lineMap, std::vector< std::vector< double > > &sampMap)
 
double Det4x4 (double m[4][4])
 
double Det3x3 (double m[3][3])
 
void SlowGeom (TileManager &otile, Portal &iportal, Transform &trans, Interpolator &interp)
 
void QuadTree (TileManager &otile, Portal &iportal, Transform &trans, Interpolator &interp, bool useLastTileMap)
 
bool TestLine (Transform &trans, int ssamp, int esamp, int sline, int eline, int increment)
 This function walks a line (or rectangle) and tests a point every increment pixels. More...
 
void transformPatch (double startingSample, double endingSample, double startingLine, double endingLine, Portal &iportal, Transform &trans, Interpolator &interp)
 
void splitPatch (double startingSample, double endingSample, double startingLine, double endingLine, Portal &iportal, Transform &trans, Interpolator &interp)
 

Private Attributes

void(* p_bandChangeFunct )(const int band)
 
std::vector< std::vector< double > > p_sampMap
 
std::vector< std::vector< double > > p_lineMap
 
double p_forceSamp
 
double p_forceLine
 
long long p_startQuadSize
 
long long p_endQuadSize
 
int m_patchStartSample
 
int m_patchStartLine
 
int m_patchSamples
 
int m_patchLines
 
int m_patchSampleIncrement
 
int m_patchLineIncrement
 

Detailed Description

Derivative of Process, designed for geometric transformations.

This is the processing class for geometric transformations of cube data. Objects of this class can be used to apply rubber sheet transformations from one space to another, such as converting from one map projection to another or from instrument space to ground space. Each pixel position in the output cube will be processed by querying a transformer to find what input pixel should be used and an interpolator to find the value of the pixel. Any application using this class must supply a Transform object and an Interpolator object. This class allows only one input cube and one output cube.

Author
2002-10-22 Stuart Sides
History:
2003-02-13 Stuart Sides - Created a unit test for the object.
History:
2003-03-31 Stuart Sides - Added false argument to IsisError.report call in the unit test.
History:
2003-05-16 Stuart Sides - Modified schema from astrogeology... isis.astrogeology...
History:
2003-05-28 Stuart Sides - Added a new member function to allow an application to be notified when the current band number of the output cube changes (BandChange).
History:
2003-10-23 Jeff Anderson - Modified StartProcess method to use a quadtree mechanism to speed processing of cubes. Essentially it generates an internalized file
History:
2004-03-09 Stuart Sides - Modified quadtree mechanism to not give up on a quad unless none of the edge pixels transform. This needs to be refined even more.
History:
2005-02-11 Elizabeth Ribelin - Modified file to support Doxygen documentation
History:
2006-03-28 Tracie Sucharski - Modified the StartProcess to process multi-band cubes using the same tile map if there is no Band dependent function.
History:
2006-04-04 Tracie Sucharski - Added ForceTile method and two private variables to hold the sample/line of the input cube position which will force tile containing that position to be processed in ProcessQuad even if all 4 corners of tile are bad.
History:
2008-09-10 Steven Lambright - Made tiling start and end sizes variable
History:
2009-05-21 Steven Lambright - A tiling hint starting at 2 will now automatically jump to doing a SlowGeom instead of not working/being a valid option. This fixes 2-line push frame cameras.
History:
2008-10-30 Steven Lambright - Fixed problem with definition of class Quad, pointed out by "novus0x2a" (Support Board Member)
History:
2009-06-05 Steven Lambright - Added TestLine(...) method and made the checking for inserting a null tile more strict (checks the outline of a 2x2 box instead of just the outline of the quad).
History:
2011-08-19 Jeannie Backer - Modified unitTest to use $temporary variable instead of /tmp directory.
History:
2012-05-07 Jeff Anderson - Added the forward patch algorithm.
History:
2012-05-15 Jeff Anderson - Added UniqueCachingAlgorithm to reverse patch algorithm (startProcess)
History:
2012-07-11 Jeff Anderson - Fixed a bug in the reverse patch algorithm. When an input patch contains the 0/360 seam (or -180/180) it caused stripes in certain output projections (cylindrical). This has been fixed by making sure the output patch size is not too large.
History:
2012-08-03 Kimberly Oyama and Steven Lambright - Changed the percentage (from 99% to 50%) of the output cube that a patch can cover before it is split into a smaller patch. The 99% produced unpredictable results on different machines due to double rounding error. References #604.
History:
2015-01-15 Sasha Brownsberger - Added virtual keyword to StartProcess function to ensure successful inheritance between Process and its child classes. Made destructor virtual. References #2215.
History:
2017-06-09 Christopher Combs - Changed loop counter int in StartProcess to long long int. References #4611.
Todo:
2005-02-11 Stuart Sides - finish documentation and add coded and implementation example to class documentation

Definition at line 104 of file ProcessRubberSheet.h.

Constructor & Destructor Documentation

◆ ProcessRubberSheet()

Isis::ProcessRubberSheet::ProcessRubberSheet ( int  startSize = 128,
int  endSize = 8 
)

Constructs a ProcessRubberSheet class with the default tile size range.

Parameters
startSizeBeginning size of output tiles for reverse driven geom
endSizeMinimum size of output tiles for reverse driven geom

Definition at line 35 of file ProcessRubberSheet.cpp.

References Isis::Null.

◆ ~ProcessRubberSheet()

virtual Isis::ProcessRubberSheet::~ProcessRubberSheet ( )
inlinevirtual

Destroys the RubberSheet object.

Definition at line 110 of file ProcessRubberSheet.h.

Member Function Documentation

◆ BandChange()

void Isis::ProcessRubberSheet::BandChange ( void(*)(const int band)  funct)
virtual

Registers a function to be called when the current output cube band number changes.

This includes the first time. If and application does NOT need to be notified when the processing is about to proceed to the next band there is no need to call this member. The application function will not be called.

Parameters
funct(const int band) An application defined function which will be called every time the current band number changes.

Definition at line 232 of file ProcessRubberSheet.cpp.

◆ BandStatistics()

std::vector<Isis::Statistics *> Isis::Process::BandStatistics ( const unsigned  index)
inlineinherited

Get the vector of Statistics objects for each band separately of a specified input cube.

Parameters
indexThe index of the input cube in InputCubes
Returns
vector<Statistics*> A list of statistics ordered by band

Definition at line 279 of file Process.h.

References Isis::Process::p_bandStats.

◆ CalculateStatistics()

void Isis::Process::CalculateStatistics ( )
inherited

Calculates and stores off statistics on every band of every cube added to this process via the SetInputCube method.

The newly calculated statistics are stored in two ways: as a vector where each entry is a single Statistics object for every band of a particular input cube, and as a vector where each entry is a vector of Statistics objects, for each band separately, of a particular input cube.

Definition at line 824 of file Process.cpp.

References Isis::Statistics::AddData(), Isis::Cube::bandCount(), Isis::Progress::CheckStatus(), Isis::Buffer::DoubleBuffer(), Isis::Cube::lineCount(), Isis::Cube::read(), Isis::LineManager::SetLine(), Isis::Progress::SetMaximumSteps(), Isis::Progress::SetText(), Isis::Buffer::size(), and Isis::toString().

◆ CheckRequirements()

void Isis::Process::CheckRequirements ( const Cube cube,
const int  requirements 
)
inherited

Checks to make sure the input cube meets the inputted requirements.

Parameters
cubeCube to check
requirementsUse to specify requirements for the input file. The following requirments are checked against 1) ic_base::SizeMatch checks to make sure the input cube has the same bands, samples, and lines as the first input cube open using this method, 2) ic_base::SpatialMatch checks to make sure the input cube has the same samples and lines as the first input cube, 3) ic_base::Georeferenced checks to make sure latitude/longitudes can be obtained from the input cube, 4) ic_base::FullyGeoreferenced checks to make sure latitude/longitude, phase/incidence/emission, and other geometric parameters can be obtained from the input cube, 5) ic_base::OneBand checks to make sure the input cube has exactly one band. Note, that these requirements can be logically or'ed. For example, ic_base::SpatialMatch | ic_base::georeferenced. Defaults to 0
Exceptions
Isis::iException::Message

Definition at line 503 of file Process.cpp.

References Isis::Cube::bandCount(), Isis::Cube::fileName(), Isis::Cube::lineCount(), and Isis::Cube::sampleCount().

◆ ClearCubes()

void Isis::Process::ClearCubes ( )
inherited

Close owned cubes from the list and clear the list.

Definition at line 593 of file Process.cpp.

◆ ClearInputCubes()

void Isis::Process::ClearInputCubes ( )
inherited

Close owned input cubes from the list and clear the list.

Definition at line 603 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::FileTool::saveAsReducedCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ ClearOutputCubes()

void Isis::Process::ClearOutputCubes ( )
inherited

Close owned output cubes from the list and clear the list.

Definition at line 617 of file Process.cpp.

◆ CubeStatistics()

Isis::Statistics* Isis::Process::CubeStatistics ( const unsigned  index)
inlineinherited

Get the Statistics object for all bands of a specified input cube.

Parameters
indexThe index of the input cube in InputCubes
Returns
Statistics* Collections of statistics gathered on all bands

Definition at line 293 of file Process.h.

References Isis::Process::p_cubeStats.

◆ EndProcess()

void Isis::Process::EndProcess ( )
virtualinherited

◆ Finalize()

void Isis::Process::Finalize ( )
virtualinherited

Cleans up by closing cubes and freeing memory for owned cubes.

Clears the lists for all cubes.

Reimplemented in Isis::ProcessPolygons, Isis::ProcessImportPds, Isis::ProcessGroundPolygons, Isis::ProcessByTile, Isis::ProcessByBrick, and Isis::ProcessByBoxcar.

Definition at line 463 of file Process.cpp.

Referenced by Isis::ProcessByBoxcar::Finalize().

◆ MissionData()

QString Isis::Process::MissionData ( const QString &  mission,
const QString &  file,
bool  highestVersion = false 
)
inherited

This method reads the mission specific data directory from the user preference file, makes sure that mission is available in the Isis installation, and the attaches the provided input file to the directory in order to create a full file specification.

Parameters
missionName of the mission data directory
fileName of the file to attach to the end of the directory
highestVersionIf set to true the method will return the highest version number of the given file. Therefore, file must contain question marks such as "file???.dat". See the FileName class for more information on versioned files. Defaults to false.

Definition at line 768 of file Process.cpp.

References Isis::FileName::expanded(), Isis::FileName::fileExists(), Isis::PvlObject::findGroup(), and Isis::FileName::highestVersion().

◆ processPatchTransform()

void Isis::ProcessRubberSheet::processPatchTransform ( Transform trans,
Interpolator interp 
)
virtual

Applies a Transform and an Interpolator to small patches.

The transform should define a mapping from input pixel coordinates to output pixel coordinates. The input image will be broken into many small patches (default 5x5). The four corners of each input patch will be mapped into the output cube using the transform. This will provide four corresponding output patch coordinates. These four coordinates (input and output) will be used to compute an affine transform from output coordinate to input coordinates. The affine transform is then used to quickly compute input coordinates (fractional). This input coordinate is then used in the interp object in order to geometrically move input pixels to output pixels.

Parameters
transA fully initialized Transform object. The Transform member of this object is used to calculate an output pixel location given an input pixel location.
interpA fully initialized Interpolator object. The Interpolate member of this object is used to calculate output pixel values.
Exceptions
iException::Message

Definition at line 787 of file ProcessRubberSheet.cpp.

References Isis::Interpolator::HotLine(), Isis::Interpolator::HotSample(), Isis::Interpolator::Lines(), Isis::Interpolator::Samples(), and Isis::Portal::SetPosition().

◆ Progress()

◆ PropagateHistory()

void Isis::Process::PropagateHistory ( const bool  prop)
inherited

This method allows the programmer to propagate history to the output cube (default is true)

Parameters
propFlag indicating if history is to be propagated to output cubes.

Definition at line 737 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ PropagateLabels() [1/2]

void Isis::Process::PropagateLabels ( const bool  prop)
inherited

This method allows the programmer to turn on/off the propagation of labels from the 1st input cube to any of the output cubes.

By default, propagation occurs automatically in the Process class when a call to either of the SetOutputCube methods is invoked. If the program * requires no propagation then utilize this method. This method can be invoked between successive calls of SetOutputCube so that some cube will have labels propagated while others will not.

Parameters
propFlag indicating if labels are be propagated to output cubes.

Definition at line 639 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ PropagateLabels() [2/2]

void Isis::Process::PropagateLabels ( const QString &  cube)
inherited

This method allows the programmer to propagate labels from a specific secondary cube.

Parameters
cubeIString containing the name of the cube containing the labels to propagate.

Definition at line 650 of file Process.cpp.

References Isis::PvlObject::addGroup(), Isis::PvlObject::addObject(), Isis::PvlObject::findObject(), Isis::PvlObject::group(), Isis::PvlObject::groups(), and Isis::PvlObject::hasObject().

◆ PropagateOriginalLabel()

void Isis::Process::PropagateOriginalLabel ( const bool  prop)
inherited

This method allows the programmer to propagate original labels to the output cube (default is true)

Parameters
propFlag indicating if original labels is to be propagated to output cubes.

Definition at line 748 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ PropagatePolygons()

void Isis::Process::PropagatePolygons ( const bool  prop)
inherited

This method allows the programmer to propagate input blobs to the output cube (default is true)

Parameters
propFlag indicating if input blobs are to be propagated to output cubes.

Definition at line 727 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ PropagateTables() [1/2]

void Isis::Process::PropagateTables ( const bool  prop)
inherited

This method allows the programmer to propagate input tables to the output cube (default is true)

Parameters
propFlag indicating if input tables are to be propagated to output cubes.

Definition at line 678 of file Process.cpp.

Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube(), and Isis::ProcessMapMosaic::SetOutputCube().

◆ PropagateTables() [2/2]

void Isis::Process::PropagateTables ( const QString &  fromName,
const QList< QString > &  tableNames = QList<QString>() 
)
inherited

Propagate the tables from the cube with the given filename to the output cube.

This is done at the time this method is called, not during normal processing. The names of the tables to propagate can be provided through the second paramter, by specifing a list of table names. Not providing any list (or providing an empty list) will propagate all tables.

Parameters
fromNameQString of the name of the cube containing the tables to propagate.
tableNamesList of QStrings of the names of the tables to propagate; default is empty, which indicates that all tables will be propagated.
History:
2016-11-30 Ian Humphrey - Added tableNames parameter so that only specified tables will be propagated when calling this method. Note that a default of an empty QList is used to propagate all tables. References #4433.

Definition at line 698 of file Process.cpp.

References Isis::Cube::close(), Isis::Cube::label(), Isis::PvlObject::object(), Isis::PvlObject::objects(), Isis::Cube::open(), and Isis::Cube::read().

◆ SetInputCube() [1/3]

Isis::Cube * Isis::Process::SetInputCube ( const QString &  fname,
const Isis::CubeAttributeInput att,
int  requirements = 0 
)
virtualinherited

Opens an input cube specified by the programmer and verifies requirements are met.

Parameters
fnameProgrammer specified work file. For example, "myfile.cub".
attThe cube attributes to use when opening the input cube.
requirementsRequirements to check that the input cube meets. See CheckRequirements().
Returns
Cube*
Exceptions
Isis::iException::Message

Reimplemented in Isis::ProcessByBrick.

Definition at line 66 of file Process.cpp.

References Isis::CubeAttributeInput::bands(), Isis::Cube::open(), and Isis::Cube::setVirtualBands().

◆ SetInputCube() [2/3]

Isis::Cube * Isis::Process::SetInputCube ( const QString &  parameter,
const int  requirements = 0 
)
virtualinherited

Opens an input cube specified by the user and verifies requirements are met.

Returns
Cube*
Parameters
parameterUser parameter to obtain file to open. Typically, the value is "FROM". For example, the user can specify on the command line FROM=myfile.cub and this method will attempt to open the cube "myfile.cub" if the parameter was set to "FROM".
requirementsRequirements to check that the input cube meets. See CheckRequirements().
Exceptions
Isis::iException::Message

Reimplemented in Isis::ProcessBySample, Isis::ProcessByBrick, Isis::ProcessBySpectra, and Isis::ProcessByLine.

Definition at line 136 of file Process.cpp.

Referenced by Isis::ImageExporter::addChannel(), Isis::JigsawRunWidget::on_JigsawAcceptButton_clicked(), Isis::FileTool::saveAsEnlargedCube(), and Isis::ProcessGroundPolygons::SetStatCubes().

◆ SetInputCube() [3/3]

void Isis::Process::SetInputCube ( Isis::Cube inCube,
int  requirements = 0 
)
virtualinherited

Set the InputCube vector to an opened Cube which was dynamically allocated.

This is used if there already exists a valid opened cube

Author
Sharmila Prasad (5/7/2011)
Parameters
inCube- Pointer to input Cube
requirementsRequirements to check that the input cube meets. See CheckRequirements().

Definition at line 107 of file Process.cpp.

References Isis::Cube::isOpen().

◆ SetOutputCube() [1/3]

◆ SetOutputCube() [2/3]

Isis::Cube * Isis::Process::SetOutputCube ( const QString &  parameter)
virtualinherited

Allocates a user-specified output cube whose size matches the first input cube.

Returns
Cube*
Parameters
parameterUser specified output file. For example, "TO" is a popular user parameter. If the user specified TO=output.cub, then this routine would allocate the file output.cub with size specified by the first opened input cube. The output pixel type will be propagated from the first loaded input cube or will use the value in the application XML file for pixelType.
Exceptions
Isis::iException::Message

Reimplemented in Isis::ProcessMosaic, Isis::ProcessImport, and Isis::ProcessMapMosaic.

Definition at line 160 of file Process.cpp.

Referenced by Isis::FileTool::saveAsEnlargedCube(), and Isis::ProcessImport::SetOutputCube().

◆ SetOutputCube() [3/3]

Isis::Cube * Isis::Process::SetOutputCube ( const QString &  parameter,
const int  ns,
const int  nl,
const int  nb = 1 
)
virtualinherited

Allocates a user specified output cube whose size is specified by the programmer.

Returns
Cube*
Parameters
parameterUser specified output file. For example, "TO" is a popular user parameter. If the user specified TO=output.cub, then this routine would allocate the file output.cub with size specified by the first opened input cube. The output pixel type will be propagated from the first loaded input cube or will use the value in the application XML file for pixelType.
nsNumber of samples to allocate
nlNumber of lines to allocate
nbNumber of bands to allocate
Exceptions
Isis::iException::Message

Definition at line 229 of file Process.cpp.

◆ SetOutputCubeStretch() [1/2]

Isis::Cube * Isis::Process::SetOutputCubeStretch ( const QString &  parameter,
const int  ns,
const int  nl,
const int  nb = 1,
UserInterface ui = nullptr 
)
virtualinherited

Allocates a user specified output cube whose size is specified by the programmer.

Returns
Cube*
Parameters
parameterUser specified output file. For example, "TO" is a popular user parameter. If the user specified TO=output.cub, then this routine would allocate the file output.cub with size specified by the first opened input cube. The output pixel type will be propagated from the first loaded input cube or will use the value in the application XML file for pixelType.
nsNumber of samples to allocate
nlNumber of lines to allocate
nbNumber of bands to allocate
uiA user interface used to get the attributes needed. If null, the user interface will be obtained from the application.
Exceptions
Isis::iException::Message

Definition at line 270 of file Process.cpp.

References IsisAml::GetFileName(), and IsisAml::GetOutputAttribute().

◆ SetOutputCubeStretch() [2/2]

Isis::Cube * Isis::Process::SetOutputCubeStretch ( const QString &  parameter,
UserInterface ui = nullptr 
)
virtualinherited

Allocates a user-specified output cube whose size matches the first input cube.

Returns
Cube*
Parameters
parameterUser specified output file. For example, "TO" is a popular user parameter. If the user specified TO=output.cub, then this routine would allocate the file output.cub with size specified by the first opened input cube. The output pixel type will be propagated from the first loaded input cube or will use the value in the application XML file for pixelType.
uiA user interface used to get the attributes needed for SetOutputCube.
Exceptions
Isis::iException::Message

Definition at line 193 of file Process.cpp.

◆ setPatchParameters()

void Isis::ProcessRubberSheet::setPatchParameters ( int  startSample,
int  startLine,
int  samples,
int  lines,
int  sampleIncrement,
int  lineIncrement 
)
virtual

This method allows the programmer to override the default values for patch parameters used in the patch transform method (processPatchTransform)

Author
janderson (3/22/2012)
Parameters
startSampleThe starting sample in the input cube to process the default is 1.
startLineThe starting line in the input cube to process the default is 1. It would unusual to use something other than 1, however, for pushframe cameras it would make sense to use the framelet size + 1 for even cubes and 1 for odd cubes.
samplesThe number of samples in each input patch. The default is five. Larger values can make the patch algorithm run faster at the risk of transforming improperly because an affine transform is not necessarily equal to the geometric transform defined by the Transform object given to the processPatchTransform method. This is especially important to consider during image orthorectification if the DEM is high resolution.
linesThe number of lines in each input patch. The default is five. Larger values can make the patch algorithm run faster at the risk of transforming improperly because an affine transform is not necessarily equal to the geometric transform defined by the Transform object given to the processPatchTransform method. This is especially important to consider during image orthorectification if the DEM is high resolution. Also for pushframe cameras the line size for patches should divide nicely into the framelet size.
sampleIncrementThe number of input samples to increment for the next patch. The default is 4 which is one less than the default patch size. This guarantees overlap so that there is not gaps in the output cube.
sampleIncrementThe number of input lines to increment for the next patch. The default is 4 which is one less than the default patch size. This guarantees overlap so that there is not gaps in the output cube. In rare instances (pushframe cameras) the line increment should be twice the framelet height which will prevent processing of NULL framelets.

Definition at line 102 of file ProcessRubberSheet.cpp.

◆ SetTiling()

virtual void Isis::ProcessRubberSheet::SetTiling ( long long  start,
long long  end 
)
inlinevirtual

This sets the start and end tile sizes for the rubber sheet; numbers are inclusive and must be powers of 2.

Parameters
startStart position; must be at least 4 and a power of 2
endEnd position; must be at least 4, a power of 2 and less than start

Definition at line 135 of file ProcessRubberSheet.h.

◆ StartProcess() [1/2]

void Isis::ProcessRubberSheet::StartProcess ( Transform trans,
Interpolator interp 
)
virtual

Applies a Transform and an Interpolator to every pixel in the output cube.

The output cube is written using an Tile and the input cube is read using a Portal. The input cube and output cube must be initialized prior to calling this method. Output pixels which come from outside the input cube are set to NULL8.

Parameters
transA fully initialized Transform object. The Transform member of this object is used to calculate what input pixel location should be used to interpolate the output pixel value.
interpA fully initialized Interpolator object. The Interpolate member of this object is used to calculate output pixel values.
Exceptions
IException::Message

Definition at line 132 of file ProcessRubberSheet.cpp.

References Isis::Buffer::Band(), Isis::BufferManager::begin(), Isis::BufferManager::end(), Isis::Interpolator::HotLine(), Isis::Interpolator::HotSample(), Isis::Interpolator::Lines(), Isis::Interpolator::Samples(), Isis::TileManager::SetTile(), and Isis::TileManager::Tiles().

Referenced by Isis::FileTool::saveAsEnlargedCube().

◆ StartProcess() [2/2]

virtual void Isis::Process::StartProcess ( void   funct())
inlinevirtualinherited

In the base class, this method will invoked a user-specified function exactly one time.

In derived classes such as ProcessByLine, the StartProcess will invoke a user-specified function for every line in a cube.

Parameters
funct()Name of your processing function

Definition at line 213 of file Process.h.

◆ TestLine()

bool Isis::ProcessRubberSheet::TestLine ( Transform trans,
int  ssamp,
int  esamp,
int  sline,
int  eline,
int  increment 
)
private

This function walks a line (or rectangle) and tests a point every increment pixels.

If any of these points can transform, then this method will return true. Otherwise, this returns false.

Parameters
transThe Transform object to test on
ssampStarting Sample
esampEnding Sample
slineStarting Line
elineEnding Line
incrementThe increment to step by while walking this line/rectangle

Definition at line 330 of file ProcessRubberSheet.cpp.

References Isis::Transform::Xform().

◆ WriteHistory()

void Isis::Process::WriteHistory ( Cube cube)
inherited

Member Data Documentation

◆ InputCubes

◆ m_ownedCubes

QSet<Isis::Cube *>* Isis::Process::m_ownedCubes
protectedinherited

A list of cubes owned by this instant.

These cubes will be deleted on finalization. Process will not take ownership of cubes allocated outside of Process. It is the caller's responsibility to delete such cubes.

Definition at line 199 of file Process.h.

◆ OutputCubes

std::vector<Isis::Cube *> Isis::Process::OutputCubes
protectedinherited

◆ p_bandStats

std::vector< std::vector< Isis::Statistics * > > Isis::Process::p_bandStats
protectedinherited

Holds the calculated statistics for each band separately of every input cubei after the CalculateStatistics method is called.

Definition at line 172 of file Process.h.

Referenced by Isis::Process::BandStatistics().

◆ p_cubeStats

std::vector< Isis::Statistics * > Isis::Process::p_cubeStats
protectedinherited

Holds the calculated statistics for every band together of every input cubei after the CalculateStatistics method is called.

Definition at line 179 of file Process.h.

Referenced by Isis::Process::CubeStatistics().

◆ p_progress

◆ p_propagateHistory

bool Isis::Process::p_propagateHistory
protectedinherited

Flag indicating if history is to be propagated to output cubes.

Definition at line 161 of file Process.h.

◆ p_propagateLabels

bool Isis::Process::p_propagateLabels
protectedinherited

Flag indicating if labels are be propagated to output cubes.

Definition at line 149 of file Process.h.

◆ p_propagateOriginalLabel

bool Isis::Process::p_propagateOriginalLabel
protectedinherited

Flag indicating if original lable is to be propagated to output cubes.

Definition at line 165 of file Process.h.

◆ p_propagatePolygons

bool Isis::Process::p_propagatePolygons
protectedinherited

Flag indicating if blobs are be propagated to output cubes.

Definition at line 157 of file Process.h.

◆ p_propagateTables

bool Isis::Process::p_propagateTables
protectedinherited

Flag indicating if tables are be propagated to output cubes.

Definition at line 153 of file Process.h.


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