22#include "BundleControlPoint.h" 
   23#include "BundleLidarPointVector.h" 
   24#include "BundleObservationSolveSettings.h" 
   25#include "BundleObservationVector.h" 
   26#include "BundleResults.h" 
   27#include "BundleSettings.h" 
   28#include "BundleSolutionInfo.h" 
   29#include "BundleTargetBody.h" 
   31#include "CameraGroundMap.h" 
   32#include "ControlMeasure.h" 
   33#include "ControlNet.h" 
   35#include "LinearAlgebra.h" 
   36#include "MaximumLikelihoodWFunctions.h" 
   37#include "ObservationNumberList.h" 
   39#include "SerialNumberList.h" 
   40#include "SparseBlockMatrix.h" 
   41#include "Statistics.h" 
   43template< 
typename T > 
class QList;
 
   44template< 
typename A, 
typename B > 
class QMap;
 
  333                   const QString &cnetFile,
 
  334                   const QString &cubeList,
 
  335                   bool printSummary = 
true);
 
  337                   const QString &cnetFile,
 
  338                   const QString &cubeList,
 
  339                   const QString &lidarDataFile,
 
  340                   bool printSummary = 
true);
 
  344                   bool printSummary = 
true);
 
  352                   bool printSummary = 
true);
 
  355                   const QString &cubeList,
 
  356                   bool printSummary = 
true);
 
  359                   QList<ImageList *> imgList,
 
  387      void statusUpdate(QString);
 
  389      void iterationUpdate(
int);
 
  390      void pointUpdate(
int);
 
  391      void statusBarUpdate(QString);
 
  429                              int                                  observationIndex);
 
  484      QString m_iterationSummary;                            
 
  496      QList<ImageList *> m_imageLists;                        
 
  506      boost::numeric::ublas::symmetric_matrix<
 
  508          boost::numeric::ublas::upper,
 
  510      cholmod_common  m_cholmodCommon;                       
 
 
An image bundle adjustment object.
 
QString modelState(int index)
Return the updated model state for the ith cube in the cube list given to the constructor.
 
bool m_cleanUp
!< If the iteration summaries should be output to the log file.
 
int m_rank
!< If the serial number lists need to be deleted by the destructor.
 
SparseBlockMatrix m_sparseNormals
!< The right hand side of the normal equations.
 
int numberOfImages() const
Returns the number of images.
 
void productAB(SparseBlockColumnMatrix &A, SparseBlockRowMatrix &B)
Perform the matrix multiplication C = N12 x Q.
 
bool solveCholesky()
Compute the least squares bundle adjustment solution using Cholesky decomposition.
 
bool computeBundleStatistics()
Compute Bundle statistics and store them in m_bundleResults.
 
double m_iterationTime
Time for last iteration.
 
int formLidarPointNormals(LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, LinearAlgebra::Vector &n2, LinearAlgebra::Vector &nj, BundleLidarControlPointQsp &point)
Compute the Q matrix and NIC vector for a control point.
 
bool formNormalEquations()
Form the least-squares normal equations matrix via cholmod.
 
SerialNumberList * serialNumberList()
Returns a pointer to the serial number list.
 
void init(Progress *progress=0)
Initialize all solution parameters.
 
bool computePartials(LinearAlgebra::Matrix &coeffTarget, LinearAlgebra::Matrix &coeffImage, LinearAlgebra::Matrix &coeffPoint3D, LinearAlgebra::Vector &coeffRHS, BundleMeasure &measure, BundleControlPoint &point)
Compute partial derivatives and weighted residuals for a measure.
 
bool isConverged()
Returns if the BundleAdjust converged.
 
QString fileName(int index)
Return the ith filename in the cube list file given to constructor.
 
void abortBundle()
Flag to abort when bundle is threaded.
 
QString m_lidarFileName
Input lidar point filename.
 
int m_previousNumberImagePartials
!< The image parameter solution vector.
 
double iteration() const
Returns what iteration the BundleAdjust is currently on.
 
void outputBundleStatus(QString status)
Slot for deltack and jigsaw to output the bundle status.
 
bool flagOutliers()
Flags outlier measures and control points.
 
QVector< BundleControlPointQsp > m_bundleControlPoints
Vector of control points.
 
LidarDataQsp lidarData()
Returns a pointer to the output lidar data file.
 
bool isAborted()
Returns if the BundleAdjust has been aborted.
 
BundleSettingsQsp m_bundleSettings
Contains the solve settings.
 
bool invert3x3(LinearAlgebra::MatrixUpperTriangular &m)
Dedicated quick inverse of 3x3 matrix.
 
int m_numLidarConstraints
TODO: temp.
 
Table cMatrix(int index)
Return the updated instrument pointing table for the ith cube in the cube list given to the construct...
 
double computeVtpv()
Computes vtpv, the weighted sum of squares of residuals.
 
QList< ImageList * > imageLists()
This method returns the image list used in the bundle adjust.
 
void applyParameterCorrections()
Apply parameter corrections for current iteration.
 
bool initializeCHOLMODLibraryVariables()
Initializations for CHOLMOD sparse matrix package.
 
boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > m_normalInverse
!< The lists of images used in the bundle.
 
int m_numberOfImagePartials
number of image-related partials.
 
LinearAlgebra::Vector m_imageSolution
!< The lower triangular L matrix from Cholesky decomposition.
 
cholmod_triplet * m_cholmodTriplet
!< The sparse block normal equations matrix.
 
ControlNetQsp m_controlNet
Output control net.
 
bool validateNetwork()
control network validation - on the very real chance that the net has not been checked before running...
 
SerialNumberList * m_serialNumberList
!< Vector of observations.
 
bool loadCholmodTriplet()
Load sparse normal equations matrix into CHOLMOD triplet.
 
LidarDataQsp m_lidarDataSet
Output lidar data.
 
cholmod_factor * m_L
!< The CHOLMOD sparse normal equations matrix used by cholmod_factorize to solve the system.
 
bool solveSystem()
Compute the solution to the normal equations using the CHOLMOD library.
 
BundleAdjust(BundleSettingsQsp bundleSettings, const QString &cnetFile, const QString &cubeList, bool printSummary=true)
Construct a BundleAdjust object from the given settings, control network file, and cube list.
 
void accumProductAlphaAB(double alpha, SparseBlockRowMatrix &A, LinearAlgebra::Vector &B, LinearAlgebra::Vector &C)
Performs the matrix multiplication nj = nj + alpha (Q x n2).
 
bool initializeNormalEquationsMatrix()
Initialize Normal Equations matrix (m_sparseNormals).
 
QString iterationSummaryGroup() const
Returns the iteration summary string.
 
LinearAlgebra::Vector m_RHS
!< Contains object parameters, statistics, and workspace used by the CHOLMOD library.
 
bool errorPropagation()
Error propagation for solution.
 
BundleResults m_bundleResults
Stores the results of the bundle adjust.
 
QString m_cnetFileName
The control net filename.
 
bool formMeasureNormals(LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, LinearAlgebra::VectorCompressed &n1, LinearAlgebra::Vector &n2, LinearAlgebra::Matrix &coeffTarget, LinearAlgebra::Matrix &coeffImage, LinearAlgebra::Matrix &coeffPoint3D, LinearAlgebra::Vector &coeffRHS, int observationIndex)
Form the auxilary normal equation matrices for a measure.
 
BundleSolutionInfo * bundleSolveInformation()
Create a BundleSolutionInfo containing the settings and results from the bundle adjustment.
 
int formPointNormals(LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, LinearAlgebra::Vector &n2, LinearAlgebra::Vector &nj, BundleControlPointQsp &point)
Compute the Q matrix and NIC vector for a control point.
 
bool m_abort
!< Contains information about the target body.
 
BundleLidarPointVector m_bundleLidarControlPoints
Vector of lidar points.
 
void computeResiduals()
Compute image measure residuals.
 
bool m_printSummary
!< Summary of the most recently completed iteration.
 
bool computeRejectionLimit()
Compute rejection limit.
 
bool productATransB(LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, SparseBlockRowMatrix &Q)
Perform the matrix multiplication Q = N22 x N12(transpose)
 
void iterationSummary()
Creates an iteration summary and an iteration group for the solution summary.
 
int m_iteration
The current iteration.
 
bool freeCHOLMODLibraryVariables()
Free CHOLMOD library variables.
 
bool formWeightedNormals(LinearAlgebra::VectorCompressed &n1, LinearAlgebra::Vector &nj)
Apply weighting for spacecraft position, velocity, acceleration and camera angles,...
 
BundleSolutionInfo * solveCholeskyBR()
Compute the least squares bundle adjustment solution using Cholesky decomposition.
 
ControlNetQsp controlNet()
Returns a pointer to the output control network.
 
cholmod_sparse * m_cholmodNormal
!< The CHOLMOD triplet representation of the sparse normal equations matrix.
 
~BundleAdjust()
Destroys BundleAdjust object, deallocates pointers (if we have ownership), and frees variables from c...
 
Table spVector(int index)
Return the updated instrument position table for the ith cube in the cube list given to the construct...
 
This class holds information about a control point that BundleAdjust needs to run correctly.
 
This class is a container class for BundleLidarControlPoints.
 
A container class for a ControlMeasure.
 
This class is a container class for BundleObservations.
 
A container class for statistical results from a BundleAdjust solution.
 
Container class for BundleAdjustment results.
 
This represents an ISIS control net in a project-based GUI interface.
 
Internalizes a list of images and allows for operations on the entire list.
 
boost::numeric::ublas::compressed_vector< double > VectorCompressed
Definition for an Isis::LinearAlgebra::VectorCompressed of doubles.
 
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
 
boost::numeric::ublas::matrix< double > Matrix
Definition for an Isis::LinearAlgebra::Matrix of doubles.
 
boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > MatrixUpperTriangular
Definition for an Isis::LinearAlgebra::MatrixUpperTriangular of doubles with an upper configuration.
 
Program progress reporter.
 
Serial Number list generator.
 
Class for storing Table blobs information.
 
This is free and unencumbered software released into the public domain.
 
This is free and unencumbered software released into the public domain.
 
This is free and unencumbered software released into the public domain.