56 template<
typename T >
class QList;
57 template<
typename A,
typename B >
class QMap;
275 const QString &cnetFile,
276 const QString &cubeList,
277 bool printSummary =
true);
281 bool printSummary =
true);
289 bool printSummary =
true);
292 const QString &cubeList,
293 bool printSummary =
true);
319 void statusUpdate(QString);
321 void iterationUpdate(
int,
double);
350 double, boost::numeric::ublas::upper > &N22,
352 boost::numeric::ublas::compressed_vector< double > &n1,
358 int observationIndex);
360 double, boost::numeric::ublas::upper > &N22,
376 bool invert3x3(boost::numeric::ublas::symmetric_matrix<
377 double, boost::numeric::ublas::upper > &m);
379 double, boost::numeric::ublas::upper > &N22,
383 boost::numeric::ublas::bounded_vector< double, 3 > &v2,
417 QString m_iterationSummary;
428 double m_radiansToMeters;
440 boost::numeric::ublas::symmetric_matrix<
442 boost::numeric::ublas::upper,
444 cholmod_common m_cholmodCommon;
This represents an ISIS control net in a project-based GUI interface.
boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper, boost::numeric::ublas::column_major > m_normalInverse
!< The body specific meters to radians conversion factor.
This class is a container class for BundleObservations.
BundleSolutionInfo bundleSolveInformation()
Create a BundleSolutionInfo containing the settings and results from the bundle adjustment.
bool initializeCHOLMODLibraryVariables()
Initializations for CHOLMOD sparse matrix package.
QString fileName(int index)
Return the ith filename in the cube list file given to constructor.
Internalizes a list of images and allows for operations on the entire list.
QSharedPointer< BundleSettings > BundleSettingsQsp
Definition for a BundleSettingsQsp, a shared pointer to a BundleSettings object.
bool flagOutliers()
Flags outlier measures and control points.
bool m_printSummary
!< Summary of the most recently completed iteration.
void init(Progress *progress=0)
Initialize all solution parameters.
QSharedPointer< ControlNet > ControlNetQsp
This typedef is for future implementation of target body.
bool isConverged()
Returns if the BundleAdjust converged.
Container class for BundleAdjustment results.
SerialNumberList * serialNumberList()
Returns a pointer to the serial number list.
int m_numberOfImagePartials
number of image-related partials.
bool cholmodInverse()
Compute inverse of normal equations matrix for CHOLMOD.
bool formWeightedNormals(boost::numeric::ublas::compressed_vector< double > &n1, LinearAlgebra::Vector &nj)
Apply weighting for spacecraft position, velocity, acceleration and camera angles, angular velocities, angular accelerations if so stipulated (legalese).
bool wrapUp()
Compute the residuals for each adjusted point and store adjustment results in m_bundleResults.
bool freeCHOLMODLibraryVariables()
Free CHOLMOD library variables.
SparseBlockMatrix m_sparseNormals
!< The right hand side of the normal equations.
Table spVector(int index)
Return a table spacecraft vector for the ith cube in the cube list given to the constructor.
Statistics m_xyResiduals
xy residual statistics.
QString iterationSummaryGroup() const
Returns the iteration summary string.
QSharedPointer< BundleTargetBody > BundleTargetBodyQsp
Definition for BundleTargetBodyQsp, a QSharedPointer to a BundleTargetBody.
double m_metersToRadians
!< The body specific radians to meters conversion factor.
double iteration() const
Returns what iteration the BundleAdjust is currently on.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
A container class for a ControlMeasure.
boost::numeric::ublas::matrix< double > Matrix
Definition for an Isis::LinearAlgebra::Matrix of doubles.
Distance measurement, usually in meters.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
SerialNumberList * m_serialNumberList
!< Vector of observations.
bool validateNetwork()
control network validation - on the very real chance that the net has not been checked before running...
BundleSettingsQsp m_bundleSettings
Contains the solve settings.
void abortBundle()
Flag to abort when bundle is threaded.
This class is used to accumulate statistics on double arrays.
LinearAlgebra::Vector m_imageSolution
!< The lower triangular L matrix from Cholesky decomposition.
bool solveCholesky()
Compute the least squares bundle adjustment solution using Cholesky decomposition.
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
bool formMeasureNormals(boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, boost::numeric::ublas::compressed_vector< double > &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.
Program progress reporter.
~BundleAdjust()
Destroys BundleAdjust object, deallocates pointers (if we have ownership), and frees variables from c...
bool loadCholmodTriplet()
Load sparse normal equations matrix into CHOLMOD triplet.
Table cMatrix(int index)
Return a table cmatrix for the ith cube in the cube list given to the constructor.
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...
int m_rank
!< If the serial number lists need to be deleted by the destructor.
ControlNetQsp controlNet()
Returns a pointer to the output control network.
cholmod_triplet * m_cholmodTriplet
!< The sparse block normal equations matrix.
bool solveSystem()
Compute the solution to the normal equations using the CHOLMOD library.
bool productATransB(boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, SparseBlockRowMatrix &Q)
Perform the matrix multiplication Q = N22 x N12(transpose)
void accumProductAlphaAB(double alpha, SparseBlockRowMatrix &A, LinearAlgebra::Vector &B, LinearAlgebra::Vector &C)
Performs the matrix multiplication nj = nj + alpha (Q x n2).
void applyParameterCorrections()
apply parameter corrections for solution.
Statistics m_yResiduals
y residual statistics.
This class holds information about a control point that BundleAdjust needs to run corretly...
bool m_cleanUp
!< If the iteration summaries should be output to the log file.
BundleResults m_bundleResults
Stores the results of the < bundle adjust.
LinearAlgebra::Vector m_RHS
!< Contains object parameters, statistics, and workspace used by the CHOLMOD library.
int m_iteration
The current iteration.
QString m_cnetFileName
The control net filename.
int numberOfImages() const
Returns the number of images.
Statistics m_xResiduals
x residual statistics.
void outputBundleStatus(QString status)
Slot for deltack and jigsaw to output the bundle status.
bool formNormalEquations()
Form the least-squares normal equations matrix via cholmod.
bool formPointNormals(boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &N22, SparseBlockColumnMatrix &N12, LinearAlgebra::Vector &n2, LinearAlgebra::Vector &nj, BundleControlPointQsp &point)
Compute the Q matrix and NIC vector for a control point.
BundleSolutionInfo solveCholeskyBR()
Compute the least squares bundle adjustment solution using Cholesky decomposition.
ControlNetQsp m_controlNet
Output control net.
BundleObservationVector m_bundleObservations
!< Vector of control points.
Class for storing Table blobs information.
void productAB(SparseBlockColumnMatrix &A, SparseBlockRowMatrix &B)
Perform the matrix multiplication C = N12 x Q.
bool computeRejectionLimit()
Compute rejection limit.
A container class for statistical results from a BundleAdjust solution.
void iterationSummary()
Creates an iteration summary and an iteration group for the solution summary.
cholmod_sparse * m_cholmodNormal
!< The CHOLMOD triplet representation of the sparse normal equations matrix.
An image bundle adjustment object.
bool errorPropagation()
Error propagation for solution.
double computeResiduals()
This method computes the focal plane residuals for the measures.
QSharedPointer< BundleControlPoint > BundleControlPointQsp
Definition for BundleControlPointQSP, a shared pointer to a BundleControlPoint.
Serial Number list generator.
cholmod_factor * m_L
!< The CHOLMOD sparse normal equations matrix used by cholmod_factorize to solve the system...
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.
void productAlphaAV(double alpha, boost::numeric::ublas::bounded_vector< double, 3 > &v2, SparseBlockRowMatrix &Q, LinearAlgebra::Vector &v1)
Perform the matrix multiplication v2 = alpha ( Q x v1 ).
bool m_abort
If the bundle should abort.
bool computeBundleStatistics()
Compute Bundle statistics and store them in m_bundleResults.
bool invert3x3(boost::numeric::ublas::symmetric_matrix< double, boost::numeric::ublas::upper > &m)
Dedicated quick inverse of 3x3 matrix.
Distance m_bodyRadii[3]
!< Contains information about the target body.