USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::BundleAdjust Class Reference

#include <BundleAdjust.h>

Collaboration diagram for Isis::BundleAdjust:
Collaboration graph
[legend]

List of all members.

Classes

struct  SpacecraftWeights

Public Types

enum  DecompositionMethod { NoneSelected, SPECIALK, CHOLMOD }
enum  CmatrixSolveType {
  None, AnglesOnly, AnglesVelocity, AnglesVelocityAcceleration,
  CKAll
}
enum  SpacecraftPositionSolveType {
  Nothing, PositionOnly, PositionVelocity, PositionVelocityAcceleration,
  SPKAll
}

Public Member Functions

 BundleAdjust (const QString &cnetFile, const QString &cubeList, bool printSummary=true)
 BundleAdjust (const QString &cnetFile, const QString &cubeList, const QString &heldList, bool printSummary=true)
 BundleAdjust (Isis::ControlNet &cnet, Isis::SerialNumberList &snlist, bool printSummary=true)
 BundleAdjust (Isis::ControlNet &cnet, Isis::SerialNumberList &snlist, Isis::SerialNumberList &heldsnlist, bool printSummary=true)
bool ReadSCSigmas (const QString &scsigmasList)
double Solve ()
 compute partials for measure
bool SolveCholesky ()
 The solve method is an least squares solution for updating the camera pointing.
Isis::ControlNetControlNet ()
Isis::SerialNumberListSerialNumberList ()
int Images () const
int Observations () const
 Return the number of observations in list given to the constructor.
QString FileName (int index)
 Return the ith filename in the cube list file given to constructor.
bool IsHeld (int index)
 Return whether the ith file in the cube list is held.
Table Cmatrix (int index)
 Return a table cmatrix for the ith cube in the cube list given to the constructor.
Table SpVector (int index)
 Return a table spacecraft vector for the ith cube in the cube list given to the constructor.
void SetSolveTwist (bool solve)
void SetSolveRadii (bool solve)
void SetSolvePolyOverHermite (bool b)
void SetSolvePolyOverPointing (bool b)
void SetErrorPropagation (bool b)
void SetOutlierRejection (bool b)
void SetRejectionMultiplier (double d)
void SetGlobalLatitudeAprioriSigma (double d)
void SetGlobalLongitudeAprioriSigma (double d)
void SetGlobalRadiiAprioriSigma (double d)
void SetGlobalSpacecraftPositionAprioriSigma (double d)
void SetGlobalSpacecraftVelocityAprioriSigma (double d)
void SetGlobalSpacecraftAccelerationAprioriSigma (double d)
void SetGlobalCameraAnglesAprioriSigma (double d)
void SetGlobalCameraAngularVelocityAprioriSigma (double d)
void SetGlobalCameraAngularAccelerationAprioriSigma (double d)
void SetStandardOutput (bool b)
void SetCSVOutput (bool b)
void SetResidualOutput (bool b)
void SetOutputFilePrefix (const QString &str)
void SetDecompositionMethod (DecompositionMethod method)
 Set decomposition method.
void SetSolveCmatrix (CmatrixSolveType type)
 For which camera angle coefficients do we solve?
void SetSolveSpacecraftPosition (SpacecraftPositionSolveType type)
 For which camera position coefficients do we solve?
void SetCKDegree (int degree)
 Set the degree of the polynomial to fit to the camera angles.
void SetSolveCKDegree (int degree)
 Set the degree of the polynomial to adjust in the solution.
void SetSPKDegree (int degree)
 Set the degree of the polynomial to fit to the camera position.
void SetSolveSPKDegree (int degree)
 Set the degree of the camera position polynomial to adjust in the solution.
int BasisColumns ()
 Determine the number of columns we will need for the least squares.
int ComputeConstrainedParameters ()
double Error () const
double Iteration () const
int IgnoredPoints () const
int FixedPoints () const
void SetObservationMode (bool bObservationMode)
 This method turns on observation mode and creates the observation number list.
void SetConvergenceThreshold (double d)
void SetMaxIterations (int n)
void SetSolutionMethod (QString str)
 This method sets the solution method for solving the matrix and fills the point index map, which is dependent on the solution method.
void GetSparseParameterCorrections ()
 Retrieve parameter correction vector for old sparse least-squares object and parse into m_Image_Corrections and m_Point_Corrections vectors so we can use the same output as SpecialK and Cholmod Sparse solutions.
bool IsConverged ()
QString IterationSummaryGroup () const
void maximumLikelihoodSetup (QList< QString > models, QList< double > quantiles)
 This method steps up the maximum likelihood estimation solution.

Private Member Functions

void Init (Progress *progress=0)
 Initialize solution parameters.
bool validateNetwork ()
 control network validation - on the very real chance that the net has not been checked before running the bundle
void ComputeNumberPartials ()
 This method determines the number of partials per image and per point.
void ComputeImageParameterWeights ()
 Weighting for image parameter ComputeNumberPartials must be called first.
void SetSpaceCraftWeights ()
void AddPartials (int nPointIndex)
 Populate the least squares matrix with measures for a point specific to frame cameras (for now).
void FillPointIndexMap ()
 This method fills the point index map and needs to know the solution method in order to work properly.
void Update (BasisFunction &basis)
 This method uses the basis function after the matrix has been solved.
int PointIndex (int i) const
 Return index to basis function for ith point.
int ImageIndex (int i) const
 Return index to basis function for ith image.
void CheckHeldList ()
 This method checks all cube files in the held list to make sure they are in the input list.
void ApplyHeldList ()
int Triangulation (bool bDoApproximation=false)
 Populate the least squares matrix with measures for a point specific to frame cameras (for now).
bool ApproximatePoint_ClosestApproach (const ControlPoint &rpoint, int nIndex)
 Calculates approximate point coordinates by the method of the closest approach of two vectors.
bool TriangulatePoint (const ControlPoint &rpoint)
 Triangulates an individual point.
bool TriangulationPartials ()
bool SetParameterWeights ()
 set parameter weighting for old SPARSE solution
void SetPostBundleSigmas ()
void IterationSummary (double avErr, double sigmaXY, double sigmaHat, double sigmaX, double sigmaY)
 This method creates a iteration summary and creates an iteration group for the Sparse BundleAdjust summary.
void SpecialKIterationSummary ()
bool Output ()
 output bundle results to file
bool OutputHeader (std::ofstream &fp_out)
bool OutputWithErrorPropagation ()
 output bundle results to file with error propagation
bool OutputNoErrorPropagation ()
 output bundle results to file with no error propagation
bool OutputPointsCSV ()
 output point data to csv file
bool OutputImagesCSV ()
 output image data to csv file
bool OutputResiduals ()
 output image coordinate residuals to comma-separated-value file
bool WrapUp ()
bool ComputeBundleStatistics ()
 flags...
void Initialize ()
 Initializes matrices and parameters for bundle adjustment.
bool InitializePointWeights ()
void InitializePoints ()
bool formNormalEquations ()
 Forming the least-squares normal equations matrix.
void applyParameterCorrections ()
 apply parameter corrections
bool errorPropagation ()
 error propagation.
bool solveSystem ()
 solve normal equations system.
bool formNormalEquations_CHOLMOD ()
 Forming the least-squares normal equations matrix via cholmod.
bool formNormals1_CHOLMOD (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, boost::numeric::ublas::compressed_vector< double > &n1, boost::numeric::ublas::vector< double > &n2, boost::numeric::ublas::matrix< double > &coeff_image, boost::numeric::ublas::matrix< double > &coeff_point3D, boost::numeric::ublas::vector< double > &coeff_RHS, int nImageIndex)
bool formNormals2_CHOLMOD (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, boost::numeric::ublas::vector< double > &n2, boost::numeric::ublas::vector< double > &nj, int nPointIndex, int i)
bool formNormals3_CHOLMOD (boost::numeric::ublas::compressed_vector< double > &n1, boost::numeric::ublas::vector< double > &nj)
bool solveSystem_CHOLMOD ()
void AmultAdd_CNZRows_CHOLMOD (double alpha, SparseBlockColumnMatrix &A, SparseBlockRowMatrix &B)
void transA_NZ_multAdd_CHOLMOD (double alpha, SparseBlockRowMatrix &A, boost::numeric::ublas::vector< double > &B, boost::numeric::ublas::vector< double > &C)
void applyParameterCorrections_CHOLMOD ()
 apply parameter corrections
bool errorPropagation_CHOLMOD ()
bool formNormalEquations_SPECIALK ()
 Forming the least-squares normal equations matrix via specialk.
bool formNormals1_SPECIALK (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, boost::numeric::ublas::matrix< double > &N12, boost::numeric::ublas::compressed_vector< double > &n1, boost::numeric::ublas::vector< double > &n2, boost::numeric::ublas::matrix< double > &coeff_image, boost::numeric::ublas::matrix< double > &coeff_point3D, boost::numeric::ublas::vector< double > &coeff_RHS, int nImageIndex)
bool formNormals2_SPECIALK (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, boost::numeric::ublas::matrix< double > &N12, boost::numeric::ublas::vector< double > &n2, boost::numeric::ublas::vector< double > &nj, int nPointIndex, int i)
bool formNormals3_SPECIALK (boost::numeric::ublas::compressed_vector< double > &n1, boost::numeric::ublas::vector< double > &nj)
bool solveSystem_SPECIALK ()
void AmultAdd_CNZRows_SPECIALK (double alpha, boost::numeric::ublas::matrix< double > &A, boost::numeric::ublas::compressed_matrix< double > &B, boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > &C)
void transA_NZ_multAdd_SPECIALK (double alpha, boost::numeric::ublas::compressed_matrix< double > &A, boost::numeric::ublas::vector< double > &B, boost::numeric::ublas::vector< double > &C)
void applyParameterCorrections_SPECIALK ()
 apply parameter corrections
bool errorPropagation_SPECIALK ()
bool CholeskyUT_NOSQR ()
bool CholeskyUT_NOSQR_Inverse ()
bool CholeskyUT_NOSQR_BackSub (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > &m, boost::numeric::ublas::vector< double > &s, boost::numeric::ublas::vector< double > &rhs)
bool ComputePartials_DC (boost::numeric::ublas::matrix< double > &coeff_image, boost::numeric::ublas::matrix< double > &coeff_point3D, boost::numeric::ublas::vector< double > &coeff_RHS, const ControlMeasure &measure, const ControlPoint &point)
double ComputeResiduals ()
 This method computes the focal plane residuals for the measures.
void AmulttransBNZ (boost::numeric::ublas::matrix< double > &A, boost::numeric::ublas::compressed_matrix< double > &B, boost::numeric::ublas::matrix< double > &C, double alpha=1.0)
void ANZmultAdd (boost::numeric::ublas::compressed_matrix< double > &A, boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > &B, boost::numeric::ublas::matrix< double > &C, double alpha=1.0)
bool Invert_3x3 (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &m)
bool product_ATransB (boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, SparseBlockRowMatrix &Q)
void product_AV (double alpha, boost::numeric::ublas::bounded_vector< double, 3 > &v2, SparseBlockRowMatrix &Q, boost::numeric::ublas::vector< double > &v1)
bool ComputeRejectionLimit ()
bool FlagOutliers ()
bool initializeCholMod ()
 Initializations for Cholmod sparse matrix package.
bool freeCholMod ()
 Initializations for Cholmod sparse matrix package.
bool cholmod_Inverse ()
bool loadCholmodTriplet ()

Private Attributes

bool m_bSolveTwist
 to solve for "twist" angle
bool m_bSolveRadii
 to solve for point radii
bool m_bSolvePolyOverHermite
 to fit polynomial over existing Hermite
bool m_bSolvePolyOverPointing
 to fit polynomial over existing pointing
bool m_bObservationMode
 for observation mode (explain this somewhere)
bool m_bErrorPropagation
 to perform error propagation
bool m_bOutlierRejection
 to perform automatic outlier detection/rejection
double m_dRejectionMultiplier
 outlier rejection multiplier
bool m_bPrintSummary
 to print summary
bool m_bOutputStandard
 to print standard bundle output file (bundleout.txt)
bool m_bOutputCSV
 to output points and image station data in csv format
bool m_bOutputResiduals
 to output residuals in csv format
bool m_bCleanUp
 for cleanup (i.e. in destructor)
bool m_bSimulatedData
 indicating simulated (i.e. 'perfect' data)
bool m_bLastIteration
bool m_bMaxIterationsReached
bool m_bDeltack
 flag indicating deltack was calling app
int m_nIteration
 current iteration
int m_nMaxIterations
 maximum iterations
int m_nNumImagePartials
 number of image-related partials
int m_nNumPointPartials
 number of point-related partials
int m_nObservations
 number of image coordinate observations
int m_nRejectedObservations
 number of rejected image coordinate observations //!
int m_nImageParameters
 number of image parameters
int m_nPointParameters
 total number of point parameters (including constrained)
int m_nConstrainedPointParameters
 number of constrained point parameters
int m_nConstrainedImageParameters
 number of constrained image parameters
int m_nDegreesOfFreedom
 degrees of freedom //!
int m_nHeldPoints
 number of 'held' points (define)
int m_nFixedPoints
 number of 'fixed' (ground) points (define)
int m_nIgnoredPoints
 number of ignored points
int m_nHeldImages
 number of 'held' images (define)
int m_nHeldObservations
 number of 'held' observations (define)
int m_nCKDegree
 ck degree (define)
int m_nsolveCKDegree
 solve cad degree (define)
int m_nNumberCamAngleCoefSolved
 number of camera angle coefficients in solution
int m_nSPKDegree
 spk degree (define)
int m_nsolveSPKDegree
 solve spk degree (define)
int m_nNumberCamPosCoefSolved
 number of camera position coefficients in solution
int m_nUnknownParameters
 total number of parameters to solve for
int m_nBasisColumns
 number of columns (parameters) in normal equations
SpicePosition::Source m_nPositionType
 type of SpicePosition interpolation
SpiceRotation::Source m_nPointingType
 type of SpiceRotation interpolation
std::vector< int > m_nPointIndexMap
 index into normal equations of point parameter positions
std::vector< int > m_nImageIndexMap
 index into normal equations of image parameter positions
double m_dError
 error
double m_dConvergenceThreshold
 bundle convergence threshold
double m_dElapsedTime
 elapsed time for bundle
double m_dElapsedTimeErrorProp
 elapsed time for error propagation //!
double m_dSigma0
 std deviation of unit weight
double m_drms_rx
 rms of x residuals
double m_drms_ry
 rms of y residuals
double m_drms_rxy
 rms of all x and y residuals
double m_drms_sigmaLat
 rms of adjusted Latitude sigmas
double m_drms_sigmaLon
 rms of adjusted Longitude sigmas
double m_drms_sigmaRad
 rms of adjusted Radius sigmas
double m_dminSigmaLatitude
QString m_idMinSigmaLatitude
double m_dmaxSigmaLatitude
QString m_idMaxSigmaLatitude
double m_dminSigmaLongitude
QString m_idMinSigmaLongitude
double m_dmaxSigmaLongitude
QString m_idMaxSigmaLongitude
double m_dminSigmaRadius
QString m_idMinSigmaRadius
double m_dmaxSigmaRadius
QString m_idMaxSigmaRadius
double m_dRejectionLimit
 current rejection limit
double m_dGlobalLatitudeAprioriSigma
 latitude apriori sigma
double m_dGlobalLongitudeAprioriSigma
 longitude apriori sigma
double m_dGlobalRadiusAprioriSigma
 radius apriori sigma
double m_dGlobalSurfaceXAprioriSigma
 surface point x apriori sigma
double m_dGlobalSurfaceYAprioriSigma
 surface point y apriori sigma
double m_dGlobalSurfaceZAprioriSigma
 surface point z apriori sigma
std::vector< double > m_dGlobalSpacecraftPositionAprioriSigma
 camera position apriori sigmas: size is # camera position coefficients solved
std::vector< double > m_dGlobalCameraAnglesAprioriSigma
 camera angles apriori sigmas: size is # camera angle coefficients solved
double m_dGlobalSpacecraftPositionWeight
double m_dGlobalSpacecraftVelocityWeight
double m_dGlobalSpacecraftAccelerationWeight
double m_dGlobalCameraAnglesWeight
double m_dGlobalCameraAngularVelocityWeight
double m_dGlobalCameraAngularAccelerationWeight
std::vector< double > m_dImageParameterWeights
double m_dRTM
 radians to meters conversion factor (body specific)
double m_dMTR
 meters to radians conversion factor (body specific)
Distance m_BodyRadii [3]
 body radii i meters
std::vector< double > m_dEpsilons
 vector maintaining total corrections to parameters
std::vector< double > m_dParameterWeights
 vector of parameter weights
std::vector< double > m_dxKnowns
std::vector< double > m_dyKnowns
QString m_strCnetFileName
 Control Net file specification.
QString m_strSolutionMethod
 solution method string (QR,SVD,SPARSE-LU,SPECIALK)
QString m_strOutputFilePrefix
 output file prefix
Isis::LeastSquaresm_pLsq
 'LeastSquares' object
Isis::ControlNetm_pCnet
 'ControlNet' object
Isis::SerialNumberListm_pSnList
 list of image serial numbers
Isis::SerialNumberListm_pHeldSnList
 list of held image serial numbers
Isis::ObservationNumberListm_pObsNumList
 list of observation numbers
Statistics m_Statsx
 x errors
Statistics m_Statsy
 y errors
Statistics m_Statsrx
 x residuals
Statistics m_Statsry
 y residuals
Statistics m_Statsrxy
 xy residuals
std::vector< Statisticsm_rmsImageSampleResiduals
std::vector< Statisticsm_rmsImageLineResiduals
std::vector< Statisticsm_rmsImageResiduals
std::vector< Statisticsm_rmsImageXSigmas
std::vector< Statisticsm_rmsImageYSigmas
std::vector< Statisticsm_rmsImageZSigmas
std::vector< Statisticsm_rmsImageRASigmas
std::vector< Statisticsm_rmsImageDECSigmas
std::vector< Statisticsm_rmsImageTWISTSigmas
DecompositionMethod m_decompositionMethod
 matrix decomp method
CmatrixSolveType m_cmatrixSolveType
 cmatrix solve type (define)
SpacecraftPositionSolveType m_spacecraftPositionSolveType
 spacecraft position solve type (define)
std::vector< SpacecraftWeightsm_SCWeights
int m_nRank
bool m_bConverged
bool m_bError
boost::numeric::ublas::symmetric_matrix
< double,
boost::numeric::ublas::upper,
boost::numeric::ublas::column_major > 
m_Normals
 reduced normal equations matrix
boost::numeric::ublas::vector
< double > 
m_nj
 array of Qs (see Brown, 1976)
std::vector
< boost::numeric::ublas::compressed_matrix
< double > > 
m_Qs_SPECIALK
std::vector< SparseBlockRowMatrixm_Qs_CHOLMOD
std::vector
< boost::numeric::ublas::bounded_vector
< double, 3 > > 
m_NICs
 < array of NICs (see Brown, 1976)
boost::numeric::ublas::vector
< double > 
m_Image_Corrections
 image parameter cumulative correction vector
boost::numeric::ublas::vector
< double > 
m_Image_Solution
 image parameter solution vector
std::vector
< boost::numeric::ublas::bounded_vector
< double, 3 > > 
m_Point_Corrections
 vector of corrections to 3D point parameter
std::vector
< boost::numeric::ublas::bounded_vector
< double, 3 > > 
m_Point_AprioriSigmas
 vector of apriori sigmas for 3D point parameters
std::vector
< boost::numeric::ublas::bounded_vector
< double, 3 > > 
m_Point_Weights
 vector of weights for 3D point parameters
QString m_iterationSummary
cholmod_common m_cm
cholmod_factor * m_L
cholmod_sparse * m_N
SparseBlockMatrix m_SparseNormals
cholmod_triplet * m_pTriplet
MaximumLikelihoodWFunctionsm_wFunc [3]
 This class is used to reweight observations in order to achieve more robust parameter estimation, up to three different maximum likelihood estimation models can be used in succession.
StatCumProbDistDynCalcm_cumPro
 This class will be used to calculate the cumulative probability distribution of |R^2 residuals|, quantiles of this distribution are used to adjust the maximum likelihood functions dynamically iteration by iteration.
StatCumProbDistDynCalcm_cumProRes
 This class keeps track of the cumulative probability distribution of residuals (in unweighted pixels), this is used for reporting, and not for computation.
bool m_maxLikelihoodFlag [3]
 Up to three different maximum likelihood estimation models can be used in succession, these flags record if they are enabled.
int m_maxLikelihoodIndex
 This count keeps track of which stadge of the maximum likelihood adjustment the bundle is currently on.
double m_maxLikelihoodQuan [3]
 Quantiles of the |residual| distribution to be used for tweaking constants of the maximum probability models.

Detailed Description

Author:
2006-05-30 Jeff Anderson, Debbie A. Cook, and Tracie Sucharski

For internal use only.

History:
2005-05-30 Jeff Anderson, Debbie A. Cook & Tracie Sucharski Original version
History:
2007-05-29 Debbie A. Cook Added new method IterationSummary and changed points on held images to held instead of ground
History:
2007-07-12 Debbie A. Cook Fixed bug in iteration statistics calculations in the case of a single control point that was causing a divide by zero error
History:
2007-08-25 Debbie A. Cook Added methods and members to support instrument position solution
History:
2007-09-17 Debbie A. Cook Added ability to process in observation mode for Lunar Orbiter
History:
2007-11-17 Debbie A. Cook Added method SetSolution Method.
History:
2007-12-21 Debbie A. Cook Added member p_Degree and methods m_nsolveCamDegree and ckDegree
History:
2008-01-11 Debbie A. Cook Added observation mode functionality for spacecraft position and upgraded ObservationNumber methods for compatability
History:
2008-01-14 Debbie A. Cook Added code to solve for local radii
History:
2008-04-18 Debbie A. Cook Added progress for ControlNet
History:
2008-06-18 Christopher Austin Fixed ifndef
History:
2008-11-07 Tracie Sucharski, Added bool to constructors to indicate whether to print iteration summary info to the session log. This was needed for qtie which has no session log.
History:
2008-11-22 Debbie A. Cook Added code to wrap longitude to keep it in [0.,360.]
History:
2008-11-22 Debbie A. Cook Added new call to get timeScale and set for the observation along with basetime
History:
2008-11-26 Debbie A. Cook Added check to ApplyHeldList for Ignored points and measures
History:
2009-01-08 Debbie A. Cook Revised AddPartials and PointPartial to avoid using the camera methods to map a body-fixed vector to the camera because they compute a new time for line scan cameras based on the lat/lon/radius and the new time is used to retrieve Spice. The updated software uses the Spice at the time of the measurement.
History:
2009-02-15 Debbie A. Cook Corrected focal length to include its sign and removed obsolete calls to X/Y direction methods. Also modified PointPartial to use lat/lon/radius from the point instead of the camera.
History:
2009-08-13 Debbie A. Cook Corrected calculations of cudx and cudy so that they use the signed focal length also
History:
2009-10-14 Debbie A. Cook Modified AddPartials method to use new CameraGroundMap method, GetXY
History:
2009-10-30 Debbie A. Cook Improved error message in AddPartials
History:
2009-12-14 Debbie A. Cook Updated SpicePosition enumerated partial type constants
History:
2010-03-19 Debbie A. Cook Moved partials to GroundMap classes to support Radar sensors and modified argument list for GroundMap method ComputeXY since it now returns cudx and cudy
History:
2010-06-18 Debbie A. Cook Added p_cnetFile as member since it was taken out of ControlNet
History:
2010-07-09 Ken Edmundson Added Folding in solution method (SPECIALK), error propogation, statistical report, etc.
History:
2010-08-13 Debbie A. Cook Changed surface point from lat/lon/radius to body-fixed XYZ.
History:
2010-12-17 Debbie A. Cook Merged Ken Edmundson version with system and updated to new binary control net
History:
2011-02-01 Debbie A. Cook Moved code to create point index map into its own method to be called after the solution method has been set.
History:
2011-02-17 Debbie A. Cook Updated to use new parameter added to SpicePosition, p_timeScale
History:
2011-03-05 Debbie A. Cook Put point index creation back in init. This will prevent QRD and SVD from working if ground points are in the control net.
History:
2011-03-29 Ken Edmundson Fixed bug in observation mode when solving for spacecraft position and improved output
History:
2011-04-02 Debbie A. Cook Updated to ControlPoint class changes regarding target radii. Also separated out 2 sets of calculations to test later for efficiency
History:
2011-06-05 Debbie A. Cook Changed checks for solution type to match change from SPARSE to SPARSE-LU
History:
2011-06-07 Debbie A. Cook and Tracie Sucharski - Modified point types Ground ------> Fixed Tie----------> Free
History:
2011-06-14 Debbie A. Cook added method IsHeld(int index) for preventing any updates to held images
History:
2011-06-27 Debbie A. Cook and Ken Edmundson Added names to top header fields of .csv output and fixed bugs in sparse output.
History:
2011-07-12 Ken Edmundson Segmentation fault bugfix in OutputHeader method. Previously was attempting to output camera angle sigmas when none had been allocated.
History:
2011-07-14 Ken Edmundson and Debbie Cook Added new member, m_bDeltack to indicate calling application was deltack (or qtie) and has potential to have a single ControlPoint and ControlMeasure.
History:
2011-08-08 Tracie Sucharski, Added method to return the iteration summary to be used in qtie which does not have a log file. In SetImages, clear the cameraMap and cameraList. Added this back in (was originally added on 2011-01-19), was deleted somewhere along the line.
History:
2011-09-28 Debbie A. Cook Renamed SPARSE solve method to OLDSPARSE and CHOLMOD to SPARSE.
History:
2011-10-14 Ken Edmundson Added call to m_pCnet->ClearJigsawRejected(); to Init() method to set all measure/point JigsawRejected flags to false prior to bundle.
History:
2011-12-09 Ken Edmundson, memory leak fix in method cholmod_Inverse need call to "cholmod_free_dense(&x,&m_cm)" inside loop.
History:
2011-12-20 Ken Edmundson, Fixes to outlier rejection. Added rejection multiplier member variable, can be set in jigsaw interface.
History:
2012-02-02 Debbie A. Cook, Added SetSolvePolyOverHermite method and members m_bSolvePolyOverHermite and m_nPositionType.
History:
2012-03-26 Orrin Thomas, added maximum likelihood capabilities
History:
2012-05-21 Debbie A. Cook, Added initialization of m_dRejectionMultiplier
History:
2012-07-06 Debbie A. Cook, Updated Spice members to be more compliant with Isis coding standards. References #972.
History:
2012-09-28 Ken Edmundson, Initialized variables for bundle statistic computations;bundleout.txt modifed to show N/A for RMS, Min, Max of Radius Sigmas when not solving for radius. References #783.

Definition at line 155 of file BundleAdjust.h.


Member Function Documentation

void Isis::BundleAdjust::AddPartials ( int  nPointIndex  )  [private]
void Isis::BundleAdjust::applyParameterCorrections (  )  [private]

apply parameter corrections

Definition at line 4485 of file BundleAdjust.cpp.

References applyParameterCorrections_CHOLMOD(), applyParameterCorrections_SPECIALK(), and m_decompositionMethod.

Referenced by SolveCholesky().

void Isis::BundleAdjust::applyParameterCorrections_CHOLMOD (  )  [private]
void Isis::BundleAdjust::applyParameterCorrections_SPECIALK (  )  [private]
bool Isis::BundleAdjust::ApproximatePoint_ClosestApproach ( const ControlPoint rPoint,
int  nIndex 
) [private]
int Isis::BundleAdjust::BasisColumns (  ) 

Determine the number of columns we will need for the least squares.

When we create a row of data we will store all the image partials first and then the point partials

Definition at line 763 of file BundleAdjust.cpp.

References Isis::ControlNet::GetNumValidPoints(), m_nFixedPoints, m_nImageParameters, m_nNumImagePartials, m_nNumPointPartials, m_pCnet, m_strSolutionMethod, and Observations().

Referenced by Solve().

void Isis::BundleAdjust::CheckHeldList (  )  [private]

This method checks all cube files in the held list to make sure they are in the input list.

Definition at line 502 of file BundleAdjust.cpp.

References _FILEINFO_, Isis::SerialNumberList::HasSerialNumber(), m_pHeldSnList, m_pSnList, Isis::SerialNumberList::SerialNumber(), Isis::SerialNumberList::Size(), and Isis::IException::User.

Referenced by Init().

Table Isis::BundleAdjust::Cmatrix ( int  index  ) 

Return a table cmatrix for the ith cube in the cube list given to the constructor.

Definition at line 5728 of file BundleAdjust.cpp.

References Isis::ControlNet::Camera(), Isis::Spice::instrumentRotation(), and m_pCnet.

bool Isis::BundleAdjust::ComputeBundleStatistics (  )  [private]
void Isis::BundleAdjust::ComputeImageParameterWeights (  )  [private]

Weighting for image parameter ComputeNumberPartials must be called first.

Definition at line 570 of file BundleAdjust.cpp.

References m_bSolveTwist, m_cmatrixSolveType, m_nNumImagePartials, and m_spacecraftPositionSolveType.

Referenced by SetParameterWeights(), Solve(), and SolveCholesky().

void Isis::BundleAdjust::ComputeNumberPartials (  )  [private]

This method determines the number of partials per image and per point.

It is based on the variables to be solved for (e.g., twist, radii, cmatrix velocity, cmatrix acceleration, degree of camera position polynomial, etc)

Definition at line 518 of file BundleAdjust.cpp.

References m_bSolveRadii, m_bSolveTwist, m_cmatrixSolveType, m_nNumberCamAngleCoefSolved, m_nNumberCamPosCoefSolved, m_nNumImagePartials, m_nNumPointPartials, m_spacecraftPositionSolveType, and m_strSolutionMethod.

Referenced by Solve(), and SolveCholesky().

double Isis::BundleAdjust::ComputeResiduals (  )  [private]

This method computes the focal plane residuals for the measures.

History:
2012-01-18 Debbie A. Cook - Fixed the computation of vx and vy to make sure they are focal plane x and y residuals instead of image sample and line residuals.

Definition at line 4884 of file BundleAdjust.cpp.

References Isis::Statistics::AddData(), Isis::ControlPoint::ComputeResiduals(), Isis::ControlPoint::GetMeasure(), Isis::ControlNet::GetNumPoints(), m_drms_rx, m_drms_rxy, m_drms_ry, m_Image_Corrections, m_pCnet, m_Point_Corrections, m_Point_Weights, m_Statsrx, m_Statsrxy, m_Statsry, Isis::Statistics::Reset(), and Isis::Statistics::Rms().

Referenced by SolveCholesky().

bool Isis::BundleAdjust::errorPropagation (  )  [private]

error propagation.

Definition at line 5366 of file BundleAdjust.cpp.

References m_decompositionMethod.

Referenced by SolveCholesky().

QString Isis::BundleAdjust::FileName ( int  index  ) 

Return the ith filename in the cube list file given to constructor.

Definition at line 5711 of file BundleAdjust.cpp.

References Isis::SerialNumberList::FileName(), and m_pSnList.

void Isis::BundleAdjust::FillPointIndexMap (  )  [private]

This method fills the point index map and needs to know the solution method in order to work properly.

Definition at line 461 of file BundleAdjust.cpp.

References Isis::ControlPoint::Fixed, Isis::ControlNet::GetNumPoints(), Isis::ControlPoint::GetType(), m_nFixedPoints, m_nIgnoredPoints, m_nPointIndexMap, m_pCnet, and m_strSolutionMethod.

Referenced by Init(), and SetSolutionMethod().

bool Isis::BundleAdjust::formNormalEquations (  )  [private]

Forming the least-squares normal equations matrix.

Definition at line 1215 of file BundleAdjust.cpp.

References formNormalEquations_CHOLMOD(), formNormalEquations_SPECIALK(), and m_decompositionMethod.

Referenced by SolveCholesky().

bool Isis::BundleAdjust::formNormalEquations_CHOLMOD (  )  [private]
bool Isis::BundleAdjust::formNormalEquations_SPECIALK (  )  [private]
bool Isis::BundleAdjust::freeCholMod (  )  [private]

Initializations for Cholmod sparse matrix package.

Definition at line 446 of file BundleAdjust.cpp.

void Isis::BundleAdjust::GetSparseParameterCorrections (  ) 

Retrieve parameter correction vector for old sparse least-squares object and parse into m_Image_Corrections and m_Point_Corrections vectors so we can use the same output as SpecialK and Cholmod Sparse solutions.

Definition at line 3596 of file BundleAdjust.cpp.

References Isis::ControlNet::GetNumPoints(), Isis::ControlNet::GetNumValidPoints(), m_dEpsilons, m_Image_Corrections, m_pCnet, m_pLsq, and m_Point_Corrections.

Referenced by Solve().

int Isis::BundleAdjust::ImageIndex ( int  i  )  const [private]
void Isis::BundleAdjust::Init ( Progress progress = 0  )  [private]
void Isis::BundleAdjust::Initialize (  )  [private]
bool Isis::BundleAdjust::initializeCholMod (  )  [private]

Initializations for Cholmod sparse matrix package.

Definition at line 421 of file BundleAdjust.cpp.

References Observations(), and Isis::SparseBlockMatrix::setNumberOfColumns().

Referenced by Initialize().

bool Isis::BundleAdjust::IsHeld ( int  index  ) 

Return whether the ith file in the cube list is held.

Definition at line 5719 of file BundleAdjust.cpp.

References Isis::SerialNumberList::HasSerialNumber(), m_nHeldImages, m_pHeldSnList, m_pSnList, and Isis::SerialNumberList::SerialNumber().

void Isis::BundleAdjust::IterationSummary ( double  avErr,
double  sigmaXY,
double  sigmaHat,
double  sigmaX,
double  sigmaY 
) [private]

This method creates a iteration summary and creates an iteration group for the Sparse BundleAdjust summary.

Parameters:
it Iteration number
it_time Iteration time
avErr Average error or iteration (pixels)
sigmaXY Standard deviation of coordinates (mm)
sigmaHat Aposteriori standard deviation of unit weight (mm)
sigmaX Standard deviation of deltax (mm)
sigmaY Standard deviation of deltay (mm)

Definition at line 5800 of file BundleAdjust.cpp.

References Isis::Application::Log(), m_bPrintSummary, m_dError, m_nIteration, and Isis::toString().

Referenced by Solve().

void Isis::BundleAdjust::maximumLikelihoodSetup ( QList< QString >  models,
QList< double >  quantiles 
)
int Isis::BundleAdjust::Observations (  )  const

Return the number of observations in list given to the constructor.

Definition at line 5739 of file BundleAdjust.cpp.

References m_bObservationMode, m_pObsNumList, m_pSnList, Isis::ObservationNumberList::ObservationSize(), and Isis::SerialNumberList::Size().

Referenced by BasisColumns(), Initialize(), initializeCholMod(), PointIndex(), and Solve().

bool Isis::BundleAdjust::Output (  )  [private]
bool Isis::BundleAdjust::OutputImagesCSV (  )  [private]
bool Isis::BundleAdjust::OutputNoErrorPropagation (  )  [private]
bool Isis::BundleAdjust::OutputPointsCSV (  )  [private]
bool Isis::BundleAdjust::OutputResiduals (  )  [private]
bool Isis::BundleAdjust::OutputWithErrorPropagation (  )  [private]
int Isis::BundleAdjust::PointIndex ( int  i  )  const [private]

Return index to basis function for ith point.

Definition at line 5688 of file BundleAdjust.cpp.

References m_bObservationMode, m_nNumPointPartials, m_nPointIndexMap, and Observations().

Referenced by AddPartials(), and Update().

void Isis::BundleAdjust::SetCKDegree ( int  degree  )  [inline]

Set the degree of the polynomial to fit to the camera angles.

Definition at line 256 of file BundleAdjust.h.

References m_nCKDegree.

void Isis::BundleAdjust::SetDecompositionMethod ( DecompositionMethod  method  ) 

Set decomposition method.

Choices are... SpecialK (dense normal equations matrix) Sparse (Cholmod sparse normal equations matrix)

Definition at line 679 of file BundleAdjust.cpp.

References m_decompositionMethod.

void Isis::BundleAdjust::SetObservationMode ( bool  observationMode  ) 

This method turns on observation mode and creates the observation number list.

It also checks to make sure the held image list is consistent for all images in an observation.

Is this still going to be necessary. Is the code that uses it still intact?

Definition at line 645 of file BundleAdjust.cpp.

References _FILEINFO_, Isis::SerialNumberList::FileName(), Isis::SerialNumberList::HasSerialNumber(), m_bObservationMode, m_pHeldSnList, m_pObsNumList, m_pSnList, Isis::SerialNumberList::ObservationNumber(), Isis::SerialNumberList::SerialNumber(), Isis::SerialNumberList::Size(), and Isis::IException::User.

bool Isis::BundleAdjust::SetParameterWeights (  )  [private]
void Isis::BundleAdjust::SetSolutionMethod ( QString  str  ) 

This method sets the solution method for solving the matrix and fills the point index map, which is dependent on the solution method.

Definition at line 7937 of file BundleAdjust.cpp.

References FillPointIndexMap(), and m_strSolutionMethod.

void Isis::BundleAdjust::SetSolveCKDegree ( int  degree  )  [inline]

Set the degree of the polynomial to adjust in the solution.

Definition at line 259 of file BundleAdjust.h.

References m_nsolveCKDegree.

void Isis::BundleAdjust::SetSolveCmatrix ( CmatrixSolveType  type  ) 

For which camera angle coefficients do we solve?

Definition at line 686 of file BundleAdjust.cpp.

References _FILEINFO_, m_cmatrixSolveType, m_dGlobalCameraAnglesAprioriSigma, m_nNumberCamAngleCoefSolved, m_nsolveCKDegree, Isis::toString(), and Isis::IException::User.

void Isis::BundleAdjust::SetSolveSpacecraftPosition ( SpacecraftPositionSolveType  type  ) 
void Isis::BundleAdjust::SetSolveSPKDegree ( int  degree  )  [inline]

Set the degree of the camera position polynomial to adjust in the solution.

Definition at line 266 of file BundleAdjust.h.

References m_nsolveSPKDegree.

void Isis::BundleAdjust::SetSPKDegree ( int  degree  )  [inline]

Set the degree of the polynomial to fit to the camera position.

Definition at line 262 of file BundleAdjust.h.

References m_nSPKDegree.

double Isis::BundleAdjust::Solve (  ) 

compute partials for measure

The solve method is an least squares solution for updating the camera pointing. It is iterative as the equations are non-linear. If it does not iterate to a solution in maxIterations it will throw an error. During each iteration it is updating portions of the control net, as well as the instrument pointing in the camera . An error is thrown if it does not converge in the maximum iterations. However, even if an error is thrown the control network will contain the errors at each control measure.

Parameters:
tol Maximum pixel error for any control network measurement
maxIterations Maximum iterations, if tolerance is never met an iException will be thrown.

Definition at line 3319 of file BundleAdjust.cpp.

References _FILEINFO_, Isis::Statistics::AddData(), AddPartials(), Isis::Statistics::Average(), Isis::ControlNet::AverageResidual(), BasisColumns(), Isis::ControlNet::Camera(), Isis::ControlNet::ComputeApriori(), ComputeBundleStatistics(), ComputeImageParameterWeights(), ComputeNumberPartials(), Isis::ControlNet::ComputeResiduals(), Isis::SpicePosition::GetBaseTime(), Isis::ControlNet::GetMaximumResidual(), Isis::ControlNet::GetNumPoints(), Isis::ControlNet::GetNumValidMeasures(), Isis::SpicePosition::GetPolynomial(), GetSparseParameterCorrections(), Isis::SpicePosition::GetTimeScale(), Isis::Spice::instrumentPosition(), Isis::Spice::instrumentRotation(), IterationSummary(), Isis::LeastSquares::Knowns(), m_bErrorPropagation, m_bObservationMode, m_cmatrixSolveType, m_dConvergenceThreshold, m_dElapsedTime, m_dElapsedTimeErrorProp, m_dError, m_dSigma0, m_nBasisColumns, m_nCKDegree, m_nDegreesOfFreedom, m_nIteration, m_nMaxIterations, m_nObservations, m_nPointingType, m_nPositionType, m_nsolveCKDegree, m_nsolveSPKDegree, m_nSPKDegree, m_nUnknownParameters, m_pCnet, m_pLsq, m_pObsNumList, m_spacecraftPositionSolveType, m_Statsrx, m_Statsrxy, m_Statsry, m_Statsx, m_Statsy, m_strSolutionMethod, Isis::ObservationNumberList::ObservationNumberMapIndex(), Observations(), Isis::ObservationNumberList::ObservationSize(), Output(), Isis::LeastSquares::QRD, Isis::Statistics::Reset(), Isis::LeastSquares::Residuals(), Isis::SpicePosition::SetOverrideBaseTime(), SetParameterWeights(), Isis::SpicePosition::SetPolynomial(), Isis::SpicePosition::SetPolynomialDegree(), Isis::Progress::SetText(), Isis::LeastSquares::Solve(), Isis::LeastSquares::SPARSE, Isis::LeastSquares::SparseErrorPropagation(), Isis::Statistics::SumSquare(), Isis::LeastSquares::SVD, Isis::toString(), Isis::Statistics::TotalPixels(), Isis::IException::Unknown, Update(), and Isis::IException::User.

bool Isis::BundleAdjust::SolveCholesky (  ) 

The solve method is an least squares solution for updating the camera pointing.

It is iterative as the equations are non-linear. If it does not iterate to a solution in maxIterations it will throw an error. During each iteration it is updating portions of the control net, as well as the instrument pointing in the camera . An error is thrown if it does not converge in the maximum iterations. However, even if an error is thrown the control network will contain the errors at each control measure.

Parameters:
tol Maximum pixel error for any control network measurement
maxIterations Maximum iterations, if tolerance is never met an iException will be thrown.

Definition at line 908 of file BundleAdjust.cpp.

References _FILEINFO_, applyParameterCorrections(), Isis::ControlNet::Camera(), Isis::ControlNet::ComputeApriori(), ComputeImageParameterWeights(), ComputeNumberPartials(), ComputeResiduals(), errorPropagation(), formNormalEquations(), Isis::SpicePosition::GetBaseTime(), Isis::SpicePosition::GetPolynomial(), Isis::SpicePosition::GetTimeScale(), Isis::StatCumProbDistDynCalc::initialize(), Initialize(), Isis::Spice::instrumentPosition(), Isis::Spice::instrumentRotation(), Isis::IException::Io, m_bDeltack, m_bErrorPropagation, m_bObservationMode, m_bOutlierRejection, m_cmatrixSolveType, m_cumPro, m_cumProRes, m_dConvergenceThreshold, m_decompositionMethod, m_dElapsedTime, m_dElapsedTimeErrorProp, m_dSigma0, m_Image_Solution, m_maxLikelihoodFlag, m_maxLikelihoodIndex, m_maxLikelihoodQuan, m_nCKDegree, m_nConstrainedImageParameters, m_nConstrainedPointParameters, m_nDegreesOfFreedom, m_nIteration, m_nMaxIterations, m_nObservations, m_Normals, m_nPointingType, m_nPositionType, m_nsolveCKDegree, m_nsolveSPKDegree, m_nSPKDegree, m_nUnknownParameters, m_pCnet, m_pObsNumList, m_spacecraftPositionSolveType, m_wFunc, Isis::ObservationNumberList::ObservationNumberMapIndex(), Isis::ObservationNumberList::ObservationSize(), Output(), Isis::SpicePosition::SetOverrideBaseTime(), Isis::SpicePosition::SetPolynomial(), Isis::SpicePosition::SetPolynomialDegree(), Isis::MaximumLikelihoodWFunctions::setTweakingConstant(), solveSystem(), Isis::toString(), Isis::IException::User, Isis::StatCumProbDistDynCalc::value(), and Isis::SparseBlockMatrix::zeroBlocks().

bool Isis::BundleAdjust::solveSystem (  )  [private]

solve normal equations system.

Definition at line 1227 of file BundleAdjust.cpp.

References m_decompositionMethod.

Referenced by SolveCholesky().

Table Isis::BundleAdjust::SpVector ( int  index  ) 

Return a table spacecraft vector for the ith cube in the cube list given to the constructor.

Definition at line 5734 of file BundleAdjust.cpp.

References Isis::ControlNet::Camera(), Isis::Spice::instrumentPosition(), and m_pCnet.

bool Isis::BundleAdjust::TriangulatePoint ( const ControlPoint rPoint  )  [private]

Triangulates an individual point.

Parameters:
rpoint reference to control point
maxIterations Maximum iterations, if tolerance is never met an iException will be thrown.
Returns:
integer Number of points triangulated successfully

Definition at line 4232 of file BundleAdjust.cpp.

Referenced by Triangulation().

int Isis::BundleAdjust::Triangulation ( bool  bDoApproximation = false  )  [private]

Populate the least squares matrix with measures for a point specific to frame cameras (for now).

Triangulates all points (including control points).

Parameters:
tol Maximum pixel error for any control network measurement
maxIterations Maximum iterations, if tolerance is never met an iException will be thrown.
Returns:
integer Number of points triangulated successfully

Definition at line 4191 of file BundleAdjust.cpp.

References ApproximatePoint_ClosestApproach(), Isis::ControlNet::GetNumPoints(), m_pCnet, and TriangulatePoint().

void Isis::BundleAdjust::Update ( BasisFunction basis  )  [private]

This method uses the basis function after the matrix has been solved.

The coefficients of the basis function represent the new right ascension, declination, and twist values of the camera. Each is a polynomial based on time. For example, ra = A + B * (t - t0) + C * (t - t0)^2. However, as the function we were solving was non-linear we had to take the dervative to linearize. Therefore we have the change in ra, dec, and twist. Really we have the change in A, B, and C.

Definition at line 5552 of file BundleAdjust.cpp.

References Isis::ControlNet::Camera(), Isis::BasisFunction::Coefficient(), Isis::DEG2RAD(), Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::ControlPoint::Fixed, Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::ControlNet::GetNumPoints(), Isis::SpicePosition::GetPolynomial(), Isis::ControlPoint::GetType(), Isis::SerialNumberList::HasSerialNumber(), ImageIndex(), Isis::Spice::instrumentPosition(), Isis::Spice::instrumentRotation(), m_bSolveRadii, m_bSolveTwist, m_cmatrixSolveType, m_nHeldImages, m_nPointingType, m_nPositionType, m_pCnet, m_pHeldSnList, m_pSnList, m_spacecraftPositionSolveType, m_strSolutionMethod, Isis::Distance::Meters, Isis::Distance::meters(), PointIndex(), Isis::RAD2DEG(), Isis::SerialNumberList::SerialNumber(), Isis::ControlPoint::SetAdjustedSurfacePoint(), Isis::SpicePosition::SetPolynomial(), and Isis::SurfacePoint::SetSphericalCoordinates().

Referenced by Solve().

bool Isis::BundleAdjust::validateNetwork (  )  [private]

control network validation - on the very real chance that the net has not been checked before running the bundle

checks implemented for ... (1) images with 0 or 1 measures

For internal use only.

History:
2011-08-4 Debbie A. Cook - Changed error message to indicate it fails with one measure as well as no measures.

Definition at line 392 of file BundleAdjust.cpp.

References _FILEINFO_, Isis::SerialNumberList::FileName(), Isis::ControlNet::GetNumberOfMeasuresInImage(), m_pCnet, m_pSnList, Isis::SerialNumberList::SerialNumber(), Isis::SerialNumberList::Size(), Isis::toString(), and Isis::IException::User.

Referenced by Init().


Member Data Documentation

for cleanup (i.e. in destructor)

Definition at line 345 of file BundleAdjust.h.

flag indicating deltack was calling app

Definition at line 349 of file BundleAdjust.h.

Referenced by Init(), and SolveCholesky().

to perform error propagation

Definition at line 338 of file BundleAdjust.h.

Referenced by ComputeBundleStatistics(), Init(), Output(), OutputImagesCSV(), OutputPointsCSV(), Solve(), and SolveCholesky().

for observation mode (explain this somewhere)

Definition at line 337 of file BundleAdjust.h.

Referenced by formNormalEquations_CHOLMOD(), formNormalEquations_SPECIALK(), ImageIndex(), Init(), Observations(), PointIndex(), SetObservationMode(), Solve(), and SolveCholesky().

body radii i meters

Definition at line 440 of file BundleAdjust.h.

Referenced by Init().

to perform automatic outlier detection/rejection

Definition at line 339 of file BundleAdjust.h.

Referenced by SolveCholesky().

to output points and image station data in csv format

Definition at line 343 of file BundleAdjust.h.

Referenced by Init(), and Output().

to output residuals in csv format

Definition at line 344 of file BundleAdjust.h.

Referenced by Init(), and Output().

to print standard bundle output file (bundleout.txt)

Definition at line 342 of file BundleAdjust.h.

Referenced by Init(), and Output().

to print summary

Definition at line 341 of file BundleAdjust.h.

Referenced by IterationSummary().

indicating simulated (i.e. 'perfect' data)

Definition at line 346 of file BundleAdjust.h.

Referenced by Init().

to fit polynomial over existing Hermite

Definition at line 335 of file BundleAdjust.h.

Referenced by Init().

to fit polynomial over existing pointing

Definition at line 336 of file BundleAdjust.h.

CmatrixSolveType Isis::BundleAdjust::m_cmatrixSolveType [private]

This class will be used to calculate the cumulative probability distribution of |R^2 residuals|, quantiles of this distribution are used to adjust the maximum likelihood functions dynamically iteration by iteration.

Definition at line 659 of file BundleAdjust.h.

Referenced by maximumLikelihoodSetup(), and SolveCholesky().

This class keeps track of the cumulative probability distribution of residuals (in unweighted pixels), this is used for reporting, and not for computation.

Definition at line 663 of file BundleAdjust.h.

Referenced by SolveCholesky().

bundle convergence threshold

Definition at line 382 of file BundleAdjust.h.

Referenced by Init(), Solve(), and SolveCholesky().

DecompositionMethod Isis::BundleAdjust::m_decompositionMethod [private]

elapsed time for bundle

Definition at line 383 of file BundleAdjust.h.

Referenced by Init(), Solve(), and SolveCholesky().

elapsed time for error propagation //!

Definition at line 384 of file BundleAdjust.h.

Referenced by Init(), Solve(), and SolveCholesky().

std::vector<double> Isis::BundleAdjust::m_dEpsilons [private]

vector maintaining total corrections to parameters

Definition at line 442 of file BundleAdjust.h.

Referenced by GetSparseParameterCorrections().

double Isis::BundleAdjust::m_dError [private]

error

Definition at line 381 of file BundleAdjust.h.

Referenced by Init(), IterationSummary(), and Solve().

camera angles apriori sigmas: size is # camera angle coefficients solved

Definition at line 423 of file BundleAdjust.h.

Referenced by OutputImagesCSV(), OutputNoErrorPropagation(), OutputWithErrorPropagation(), and SetSolveCmatrix().

latitude apriori sigma

Definition at line 411 of file BundleAdjust.h.

Referenced by Init(), and SetParameterWeights().

longitude apriori sigma

Definition at line 412 of file BundleAdjust.h.

Referenced by Init(), and SetParameterWeights().

radius apriori sigma

Definition at line 413 of file BundleAdjust.h.

Referenced by Init(), and SetParameterWeights().

camera position apriori sigmas: size is # camera position coefficients solved

Definition at line 418 of file BundleAdjust.h.

Referenced by OutputImagesCSV(), OutputNoErrorPropagation(), OutputWithErrorPropagation(), and SetSolveSpacecraftPosition().

surface point x apriori sigma

Definition at line 414 of file BundleAdjust.h.

surface point y apriori sigma

Definition at line 415 of file BundleAdjust.h.

surface point z apriori sigma

Definition at line 416 of file BundleAdjust.h.

double Isis::BundleAdjust::m_dMTR [private]

meters to radians conversion factor (body specific)

Definition at line 439 of file BundleAdjust.h.

Referenced by Init(), and SetParameterWeights().

std::vector<double> Isis::BundleAdjust::m_dParameterWeights [private]

vector of parameter weights

Definition at line 443 of file BundleAdjust.h.

Referenced by SetParameterWeights().

current rejection limit

apriori sigmas from user interface < for points, these override values control-net except for "held" & "fixed" points

Definition at line 405 of file BundleAdjust.h.

outlier rejection multiplier

Definition at line 340 of file BundleAdjust.h.

Referenced by Init().

rms of x residuals

Definition at line 386 of file BundleAdjust.h.

Referenced by ComputeResiduals().

rms of all x and y residuals

Definition at line 388 of file BundleAdjust.h.

Referenced by ComputeResiduals().

rms of y residuals

Definition at line 387 of file BundleAdjust.h.

Referenced by ComputeResiduals().

rms of adjusted Latitude sigmas

Definition at line 389 of file BundleAdjust.h.

Referenced by ComputeBundleStatistics(), and OutputWithErrorPropagation().

rms of adjusted Longitude sigmas

Definition at line 390 of file BundleAdjust.h.

Referenced by ComputeBundleStatistics(), and OutputWithErrorPropagation().

rms of adjusted Radius sigmas

Definition at line 391 of file BundleAdjust.h.

Referenced by ComputeBundleStatistics(), and OutputWithErrorPropagation().

double Isis::BundleAdjust::m_dRTM [private]

radians to meters conversion factor (body specific)

Definition at line 438 of file BundleAdjust.h.

Referenced by Init(), OutputNoErrorPropagation(), OutputPointsCSV(), and OutputWithErrorPropagation().

std deviation of unit weight

Definition at line 385 of file BundleAdjust.h.

Referenced by Solve(), and SolveCholesky().

boost::numeric::ublas::vector<double> Isis::BundleAdjust::m_Image_Corrections [private]
boost::numeric::ublas::vector<double> Isis::BundleAdjust::m_Image_Solution [private]

image parameter solution vector

Definition at line 507 of file BundleAdjust.h.

Referenced by applyParameterCorrections_CHOLMOD(), applyParameterCorrections_SPECIALK(), Initialize(), and SolveCholesky().

Up to three different maximum likelihood estimation models can be used in succession, these flags record if they are enabled.

Definition at line 667 of file BundleAdjust.h.

Referenced by maximumLikelihoodSetup(), and SolveCholesky().

This count keeps track of which stadge of the maximum likelihood adjustment the bundle is currently on.

Definition at line 671 of file BundleAdjust.h.

Referenced by SolveCholesky().

Quantiles of the |residual| distribution to be used for tweaking constants of the maximum probability models.

Definition at line 675 of file BundleAdjust.h.

Referenced by maximumLikelihoodSetup(), and SolveCholesky().

number of columns (parameters) in normal equations

Definition at line 375 of file BundleAdjust.h.

Referenced by AddPartials(), SetParameterWeights(), and Solve().

ck degree (define)

Definition at line 368 of file BundleAdjust.h.

Referenced by Init(), SetCKDegree(), Solve(), and SolveCholesky().

number of constrained image parameters

Definition at line 361 of file BundleAdjust.h.

Referenced by SetParameterWeights(), and SolveCholesky().

number of constrained point parameters

Definition at line 360 of file BundleAdjust.h.

Referenced by formNormalEquations_CHOLMOD(), formNormalEquations_SPECIALK(), SetParameterWeights(), and SolveCholesky().

degrees of freedom //!

Definition at line 362 of file BundleAdjust.h.

Referenced by Solve(), and SolveCholesky().

number of 'fixed' (ground) points (define)

Definition at line 364 of file BundleAdjust.h.

Referenced by BasisColumns(), and FillPointIndexMap().

number of 'held' images (define)

Definition at line 366 of file BundleAdjust.h.

Referenced by applyParameterCorrections_CHOLMOD(), applyParameterCorrections_SPECIALK(), Init(), IsHeld(), and Update().

number of 'held' observations (define)

Definition at line 367 of file BundleAdjust.h.

number of 'held' points (define)

Definition at line 363 of file BundleAdjust.h.

std::vector< boost::numeric::ublas::bounded_vector< double, 3 > > Isis::BundleAdjust::m_NICs [private]

< array of NICs (see Brown, 1976)

Definition at line 504 of file BundleAdjust.h.

Referenced by applyParameterCorrections_CHOLMOD(), applyParameterCorrections_SPECIALK(), and Initialize().

number of ignored points

Definition at line 365 of file BundleAdjust.h.

Referenced by FillPointIndexMap().

std::vector<int> Isis::BundleAdjust::m_nImageIndexMap [private]

index into normal equations of image parameter positions

Definition at line 379 of file BundleAdjust.h.

Referenced by ImageIndex(), and Init().

number of image parameters

Definition at line 358 of file BundleAdjust.h.

Referenced by BasisColumns(), and SetParameterWeights().

current iteration

Definition at line 352 of file BundleAdjust.h.

Referenced by IterationSummary(), Solve(), and SolveCholesky().

boost::numeric::ublas::vector< double > Isis::BundleAdjust::m_nj [private]

array of Qs (see Brown, 1976)

Definition at line 498 of file BundleAdjust.h.

Referenced by formNormalEquations_CHOLMOD(), and formNormalEquations_SPECIALK().

maximum iterations

Definition at line 353 of file BundleAdjust.h.

Referenced by Solve(), and SolveCholesky().

number of camera angle coefficients in solution

Definition at line 370 of file BundleAdjust.h.

Referenced by ComputeNumberPartials(), Init(), and SetSolveCmatrix().

number of camera position coefficients in solution

Definition at line 373 of file BundleAdjust.h.

Referenced by ComputeNumberPartials(), Init(), and SetSolveSpacecraftPosition().

number of image-related partials

Definition at line 354 of file BundleAdjust.h.

Referenced by BasisColumns(), ComputeImageParameterWeights(), ComputeNumberPartials(), formNormalEquations_CHOLMOD(), and Initialize().

number of point-related partials

Definition at line 355 of file BundleAdjust.h.

Referenced by BasisColumns(), ComputeNumberPartials(), and PointIndex().

number of image coordinate observations

Definition at line 356 of file BundleAdjust.h.

Referenced by formNormalEquations_CHOLMOD(), formNormalEquations_SPECIALK(), Solve(), and SolveCholesky().

boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > Isis::BundleAdjust::m_Normals [private]

reduced normal equations matrix

Definition at line 494 of file BundleAdjust.h.

Referenced by Initialize(), OutputImagesCSV(), OutputWithErrorPropagation(), and SolveCholesky().

std::vector<int> Isis::BundleAdjust::m_nPointIndexMap [private]

index into normal equations of point parameter positions

Definition at line 378 of file BundleAdjust.h.

Referenced by FillPointIndexMap(), and PointIndex().

SpiceRotation::Source Isis::BundleAdjust::m_nPointingType [private]

total number of point parameters (including constrained)

Definition at line 359 of file BundleAdjust.h.

number of rejected image coordinate observations //!

Definition at line 357 of file BundleAdjust.h.

Referenced by Init(), and Initialize().

solve cad degree (define)

Definition at line 369 of file BundleAdjust.h.

Referenced by Init(), SetSolveCKDegree(), SetSolveCmatrix(), Solve(), and SolveCholesky().

solve spk degree (define)

Definition at line 372 of file BundleAdjust.h.

Referenced by Init(), SetSolveSpacecraftPosition(), SetSolveSPKDegree(), Solve(), and SolveCholesky().

spk degree (define)

Definition at line 371 of file BundleAdjust.h.

Referenced by Init(), SetSPKDegree(), Solve(), and SolveCholesky().

total number of parameters to solve for

Definition at line 374 of file BundleAdjust.h.

Referenced by formNormalEquations_CHOLMOD(), formNormalEquations_SPECIALK(), Init(), Initialize(), Solve(), and SolveCholesky().

list of observation numbers

vectors for statistical computations...

Definition at line 457 of file BundleAdjust.h.

Referenced by ImageIndex(), Init(), Observations(), SetObservationMode(), Solve(), and SolveCholesky().

std::vector< boost::numeric::ublas::bounded_vector< double, 3 > > Isis::BundleAdjust::m_Point_AprioriSigmas [private]

vector of apriori sigmas for 3D point parameters

Definition at line 511 of file BundleAdjust.h.

Referenced by Initialize(), OutputNoErrorPropagation(), OutputWithErrorPropagation(), and SetParameterWeights().

std::vector< boost::numeric::ublas::bounded_vector< double, 3 > > Isis::BundleAdjust::m_Point_Corrections [private]
std::vector< boost::numeric::ublas::bounded_vector< double, 3 > > Isis::BundleAdjust::m_Point_Weights [private]

vector of weights for 3D point parameters

Definition at line 512 of file BundleAdjust.h.

Referenced by ComputeResiduals(), and Initialize().

SpacecraftPositionSolveType Isis::BundleAdjust::m_spacecraftPositionSolveType [private]

x residuals

Definition at line 462 of file BundleAdjust.h.

Referenced by ComputeResiduals(), and Solve().

xy residuals

Definition at line 464 of file BundleAdjust.h.

Referenced by ComputeResiduals(), and Solve().

y residuals

Definition at line 463 of file BundleAdjust.h.

Referenced by ComputeResiduals(), and Solve().

x errors

Definition at line 460 of file BundleAdjust.h.

Referenced by AddPartials(), and Solve().

y errors

Definition at line 461 of file BundleAdjust.h.

Referenced by AddPartials(), and Solve().

Control Net file specification.

Definition at line 448 of file BundleAdjust.h.

output file prefix

pointers to...

Definition at line 450 of file BundleAdjust.h.

Referenced by OutputImagesCSV(), OutputNoErrorPropagation(), OutputPointsCSV(), OutputResiduals(), and OutputWithErrorPropagation().

solution method string (QR,SVD,SPARSE-LU,SPECIALK)

Definition at line 449 of file BundleAdjust.h.

Referenced by AddPartials(), BasisColumns(), ComputeNumberPartials(), FillPointIndexMap(), Init(), Initialize(), OutputImagesCSV(), OutputWithErrorPropagation(), SetSolutionMethod(), Solve(), and Update().

This class is used to reweight observations in order to achieve more robust parameter estimation, up to three different maximum likelihood estimation models can be used in succession.

Definition at line 655 of file BundleAdjust.h.

Referenced by maximumLikelihoodSetup(), and SolveCholesky().


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