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
History:
2012-07-10 Orrin Thomas - Updated to current coding standards
History:
2017-06-28 Makayla Shepherd - Updated documentation. References #4807.

Definition at line 42 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 28 of file ApolloPanIO.cpp.

◆ ~ApolloPanIO()

Isis::ApolloPanIO::~ApolloPanIO ( )

Destroys the ApolloPanObject.

Definition at line 35 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 707 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 140 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 160 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 96 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 629 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 682 of file ApolloPanIO.cpp.

◆ initialize()

void Isis::ApolloPanIO::initialize ( )

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

Definition at line 42 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 546 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 599 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 777 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 766 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 754 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 84 of file ApolloPanIO.h.

◆ maxR

double Isis::ApolloPanIO::maxR
private

maximum residual vector length

Definition at line 88 of file ApolloPanIO.h.

◆ meanR

double Isis::ApolloPanIO::meanR
private

mean of residual vector lenghts

Definition at line 89 of file ApolloPanIO.h.

◆ n

int Isis::ApolloPanIO::n
private

the number of affines used to model the image

Definition at line 87 of file ApolloPanIO.h.

◆ obs

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

array to hold all possible observations of fiducial marks

Definition at line 86 of file ApolloPanIO.h.

◆ stdevR

double Isis::ApolloPanIO::stdevR
private

standard deviation of residual vector lengths

Definition at line 90 of file ApolloPanIO.h.


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