Isis 3 Programmer Reference
Isis::ApolloPanIO Class Reference


Calculates a series of affine transformations from the measured coordinates of the up to 90 fiducial marks on a complete (stiched) apollo panoramic cube More...

#include <ApolloPanIO.h>

Collaboration diagram for Isis::ApolloPanIO:
Collaboration graph

Classes

struct  Affine2D
 C style structure for storing the calculation optimized parameters of a forward and reverse 2D affine transformation. More...
 
struct  FidObs
 C Style structure for storing measured fiducial coordinates. More...
 

Public Member Functions

 ApolloPanIO ()
 Constructs an ApolloPanIO object. More...
 
 ~ApolloPanIO ()
 Destroys the ApolloPanObject. More...
 
void initialize ()
 Initilizes member variables in preparation for solving for the interior orientation affines. More...
 
int fiducialObservation (int fiducialNumber, double machine_x, double machine_y)
 This method adds a measurement of the center of an apollo panoramic image fiducial mark for consideration in calculation of the image interior orienation. More...
 
int clearFiducialObservation (int fiducialNumber)
 This method removes a measurement of the center of an apollo panoramic image fiducial mark from consideration in calculation of the image interior orienation. More...
 
int computeInteriorOrienation ()
 This method leverages all the fiducial obersatvions to caculate a series of affine transformations for cube (machine) space into image space. More...
 
int machine2Image (double *machineX, double *machineY)
 This method does an in place (overwriting input) conversion of a cube coordinate (sample, line) into image coordinates Call after computeInteriorOrienation() More...
 
int machine2Image (double machineX, double machineY, double *imageX, double *imageY)
 This method does a conversion of a cube coordinates (sample, line) into image coordinates Call after computeInteriorOrienation() More...
 
int image2Machine (double *imageX, double *imageY)
 This method does an in place (overwriting input) conversion of an image coordinate into cube (machine) coordinates (sample, line) Call after computeInteriorOrienation() More...
 
int image2Machine (double imageX, double imageY, double *machineX, double *machineY)
 This method does a conversion of an image coordinates to a cube (sample, line) coordinates. More...
 
double stdevResiduals ()
 Accessor for the standard deviation of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats() More...
 
double meanResiduals ()
 Accessor for the mean (average) of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats() More...
 
double maxResiduals ()
 Accessor for the mean (average) of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats() More...
 

Private Types

typedef struct Isis::ApolloPanIO::Affine2D Affine2D
 C style structure for storing the calculation optimized parameters of a forward and reverse 2D affine transformation. More...
 
typedef struct Isis::ApolloPanIO::FidObs FidObs
 C Style structure for storing measured fiducial coordinates. More...
 

Private Member Functions

void calc_residual_stats ()
 This method calculates summary statistics for the residual vector lenths for all measured fiducial marks. More...
 

Private Attributes

Affine2D affines [44]
 an array of discreet affine transformations pertaining to regions of the image (there can never be more than 44) More...
 
FidObs obs [90]
 array to hold all possible observations of fiducial marks More...
 
int n
 the number of affines used to model the image More...
 
double maxR
 maximum residual vector length More...
 
double meanR
 mean of residual vector lenghts More...
 
double stdevR
 standard deviation of residual vector lengths More...
 

Detailed Description


Calculates a series of affine transformations from the measured coordinates of the up to 90 fiducial marks on a complete (stiched) apollo panoramic cube

Description: The 90 Fiducial marks effectively divide a complete (stitched) apollo panormaic cube into 44 rectangular regions. 42 of these represent the same period of time, T, the center two are 0.5T. This class uses up to 44 2 dimensional affine transformations linked together with first order continuity conditions at the boundaries to enforce consistent line scan durations and correct warping in the film.


Author
2011-09-19 Orrin Thomas
History:

2011-09-19 Orrin Thomas - Original version

2012-07-10 Orrin Thomas - Updated to current coding standards

2017-06-28 Makayla Shepherd - Updated documentation. References #4807.

Definition at line 57 of file ApolloPanIO.h.

Member Typedef Documentation

◆ Affine2D

C style structure for storing the calculation optimized parameters of a forward and reverse 2D affine transformation.

◆ FidObs

C Style structure for storing measured fiducial coordinates.

Constructor & Destructor Documentation

◆ ApolloPanIO()

Isis::ApolloPanIO::ApolloPanIO ( )

Constructs an ApolloPanIO object.

Definition at line 20 of file ApolloPanIO.cpp.

◆ ~ApolloPanIO()

Isis::ApolloPanIO::~ApolloPanIO ( )

Destroys the ApolloPanObject.

Definition at line 27 of file ApolloPanIO.cpp.

Member Function Documentation

◆ calc_residual_stats()

void Isis::ApolloPanIO::calc_residual_stats ( )
private

This method calculates summary statistics for the residual vector lenths for all measured fiducial marks.

Call after computeInteriorOrienation()

Definition at line 699 of file ApolloPanIO.cpp.

◆ clearFiducialObservation()

int Isis::ApolloPanIO::clearFiducialObservation ( int  fiducialNumber)

This method removes a measurement of the center of an apollo panoramic image fiducial mark from consideration in calculation of the image interior orienation.

Parameters
fiducialNumberthe index of the fiducial mark [0,89], see ApolloPanIO.h documnetation for the numbering sequence
Returns
1 success
-1 failure, fiducial index invalid

Definition at line 132 of file ApolloPanIO.cpp.

◆ computeInteriorOrienation()

int Isis::ApolloPanIO::computeInteriorOrienation ( )

This method leverages all the fiducial obersatvions to caculate a series of affine transformations for cube (machine) space into image space.

The quality of solution can be accessed using the residual stats accessors.

Returns
1 success
-1 failure, insufficient fiducial measurements

affines[i].mI = pt2[0]*affines[i].rotI[0] + pt2[1]*affines[i].rotI[1];

Definition at line 152 of file ApolloPanIO.cpp.

◆ fiducialObservation()

int Isis::ApolloPanIO::fiducialObservation ( int  fiducialNumber,
double  machineX,
double  machineY 
)

This method adds a measurement of the center of an apollo panoramic image fiducial mark for consideration in calculation of the image interior orienation.

Parameters
fiducialNumberthe index of the fiducial mark [0,89], see ApolloPanIO.h documnetation for the numbering sequence
machineXThe x coordinate (sample) of the fiducial mark in cube space
machineYThe y coordinate (line) of the fiducial mark in cube space
Returns
1 success
-1 failure, fiducial index invalid, or coordinates too large

Definition at line 88 of file ApolloPanIO.cpp.

◆ image2Machine() [1/2]

int Isis::ApolloPanIO::image2Machine ( double *  imageX,
double *  imageY 
)

This method does an in place (overwriting input) conversion of an image coordinate into cube (machine) coordinates (sample, line) Call after computeInteriorOrienation()

Parameters
imageXThe x coordinate (sample) of in image space cube space overwriten with the cube (machine) sample coordinate
imageYThe y coordinate of in image space overwriten with the cube machine sample coordinate
Returns
1 success
-1 failure, machine coordinate not within the image

Definition at line 621 of file ApolloPanIO.cpp.

◆ image2Machine() [2/2]

int Isis::ApolloPanIO::image2Machine ( double  imageX,
double  imageY,
double *  machineX,
double *  machineY 
)

This method does a conversion of an image coordinates to a cube (sample, line) coordinates.

Call after computeInteriorOrienation()

Parameters
imageXInput, the x coordinate (sample) in cube space
imageYINput, the y coordinate (line) in cube space
machineXOutput, the x coordinate (sample) in cube space
machineYOutput, the y coordinate (line) in cube space
Returns
1 success
-1 failure, y coordinate to be converted is too small, it is not within the domain of the image machine space
-2 failure, y coordinate to be converted is too large, it is not within the domain of the image machine space
0 failure, coordinate not within domain of the affines
1 successful conversion

Definition at line 674 of file ApolloPanIO.cpp.

◆ initialize()

void Isis::ApolloPanIO::initialize ( )

Initilizes member variables in preparation for solving for the interior orientation affines.

Definition at line 34 of file ApolloPanIO.cpp.

◆ machine2Image() [1/2]

int Isis::ApolloPanIO::machine2Image ( double *  machineX,
double *  machineY 
)

This method does an in place (overwriting input) conversion of a cube coordinate (sample, line) into image coordinates Call after computeInteriorOrienation()

Parameters
machineXThe x coordinate (sample) in cube space overwriten with the image coordinate
machineYThe y coordinate (line) in cube space overwriten with the image coordinate
Returns
1 success
-1 failure, machine coordinate not within the image

Definition at line 538 of file ApolloPanIO.cpp.

◆ machine2Image() [2/2]

int Isis::ApolloPanIO::machine2Image ( double  machineX,
double  machineY,
double *  imageX,
double *  imageY 
)

This method does a conversion of a cube coordinates (sample, line) into image coordinates Call after computeInteriorOrienation()

Parameters
machineXInput, the x coordinate (sample) in cube space
machineYInput, the y coordinate (line) in cube space
imageXOutput, the x coordinate (sample) in cube space
imageYOutput, the y coordinate (line) in cube space
Returns
1 success
-1 failure, y coordinate to be converted is too small, it is not within the domain of the image machine space
-2 failure, y coordinate to be converted is too large, it is not within the domain of the image machine space
0 failure, coordinate not within domain of the affines
1 successful conversion

Definition at line 591 of file ApolloPanIO.cpp.

◆ maxResiduals()

double Isis::ApolloPanIO::maxResiduals ( )

Accessor for the mean (average) of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats()

Returns
-1 value not yet calculated

Definition at line 769 of file ApolloPanIO.cpp.

Referenced by Isis::ApolloPanoramicDetectorMap::maxResidual().

◆ meanResiduals()

double Isis::ApolloPanIO::meanResiduals ( )

Accessor for the mean (average) of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats()

Returns
-1 value not yet calculated

Definition at line 758 of file ApolloPanIO.cpp.

Referenced by Isis::ApolloPanoramicDetectorMap::meanResidual().

◆ stdevResiduals()

double Isis::ApolloPanIO::stdevResiduals ( )

Accessor for the standard deviation of the residual vector lenghts Call after computeInteriorOrienation() and calc_residual_stats()

Returns
-1 value not yet calculated

Definition at line 746 of file ApolloPanIO.cpp.

Referenced by Isis::ApolloPanoramicDetectorMap::stdevResidual().

Member Data Documentation

◆ affines

Affine2D Isis::ApolloPanIO::affines[44]
private

an array of discreet affine transformations pertaining to regions of the image (there can never be more than 44)

Definition at line 99 of file ApolloPanIO.h.

◆ maxR

double Isis::ApolloPanIO::maxR
private

maximum residual vector length

Definition at line 103 of file ApolloPanIO.h.

◆ meanR

double Isis::ApolloPanIO::meanR
private

mean of residual vector lenghts

Definition at line 104 of file ApolloPanIO.h.

◆ n

int Isis::ApolloPanIO::n
private

the number of affines used to model the image

Definition at line 102 of file ApolloPanIO.h.

◆ obs

FidObs Isis::ApolloPanIO::obs[90]
private

array to hold all possible observations of fiducial marks

Definition at line 101 of file ApolloPanIO.h.

◆ stdevR

double Isis::ApolloPanIO::stdevR
private

standard deviation of residual vector lengths

Definition at line 105 of file ApolloPanIO.h.


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