Isis 3 Programmer Reference
|
An image bundle adjustment object. More...
#include <BundleAdjust.h>
Public Slots | |
bool | solveCholesky () |
Compute the least squares bundle adjustment solution using Cholesky decomposition. | |
void | abortBundle () |
Flag to abort when bundle is threaded. | |
void | outputBundleStatus (QString status) |
Slot for deltack and jigsaw to output the bundle status. | |
ControlNetQsp | controlNet () |
Returns a pointer to the output control network. | |
LidarDataQsp | lidarData () |
Returns a pointer to the output lidar data file. | |
SerialNumberList * | serialNumberList () |
Returns a pointer to the serial number list. | |
QString | fileName (int index) |
Return the ith filename in the cube list file given to constructor. | |
QString | iterationSummaryGroup () const |
Returns the iteration summary string. | |
bool | isConverged () |
Returns if the BundleAdjust converged. | |
Table | cMatrix (int index) |
Return the updated instrument pointing table for the ith cube in the cube list given to the constructor. | |
Table | spVector (int index) |
Return the updated instrument position table for the ith cube in the cube list given to the constructor. | |
QString | modelState (int index) |
Return the updated model state for the ith cube in the cube list given to the constructor. | |
int | numberOfImages () const |
Returns the number of images. | |
double | iteration () const |
Returns what iteration the BundleAdjust is currently on. | |
Signals | |
void | statusUpdate (QString) |
void | error (QString) |
void | iterationUpdate (int) |
void | pointUpdate (int) |
void | statusBarUpdate (QString) |
void | resultsReady (BundleSolutionInfo *bundleSolveInformation) |
void | finished () |
Public Member Functions | |
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. | |
BundleAdjust (BundleSettingsQsp bundleSettings, const QString &cnetFile, const QString &cubeList, const QString &lidarDataFile, bool printSummary=true) | |
Construct a BundleAdjust object from the given settings, control network file, cube list, and lidar point data. | |
BundleAdjust (BundleSettingsQsp bundleSettings, QString &cnet, SerialNumberList &snlist, bool printSummary=true) | |
Construct a BundleAdjust object with held cubes. | |
BundleAdjust (BundleSettingsQsp bundleSettings, Control &cnet, SerialNumberList &snlist, bool bPrintSummary) | |
Constructs a BundleAdjust object using a Control object. | |
BundleAdjust (BundleSettingsQsp bundleSettings, ControlNet &cnet, SerialNumberList &snlist, bool printSummary=true) | |
Constructs a BundleAdjust object using a ControlNet object. | |
BundleAdjust (BundleSettingsQsp bundleSettings, ControlNetQsp cnet, const QString &cubeList, bool printSummary=true) | |
Constructs a BundleAdjust from an already created ControlNet within a shared pointer. | |
BundleAdjust (BundleSettingsQsp bundleSettings, Control &control, QList< ImageList * > imgList, bool printSummary) | |
Thread safe constructor. | |
~BundleAdjust () | |
Destroys BundleAdjust object, deallocates pointers (if we have ownership), and frees variables from cholmod library. | |
BundleSolutionInfo * | solveCholeskyBR () |
Compute the least squares bundle adjustment solution using Cholesky decomposition. | |
QList< ImageList * > | imageLists () |
This method returns the image list used in the bundle adjust. | |
bool | isAborted () |
Returns if the BundleAdjust has been aborted. | |
Private Member Functions | |
void | init (Progress *progress=0) |
Initialize all solution parameters. | |
bool | initializeNormalEquationsMatrix () |
Initialize Normal Equations matrix (m_sparseNormals). | |
bool | validateNetwork () |
control network validation - on the very real chance that the net has not been checked before running the bundle | |
bool | solveSystem () |
Compute the solution to the normal equations using the CHOLMOD library. | |
void | iterationSummary () |
Creates an iteration summary and an iteration group for the solution summary. | |
BundleSolutionInfo * | bundleSolveInformation () |
Create a BundleSolutionInfo containing the settings and results from the bundle adjustment. | |
bool | computeBundleStatistics () |
Compute Bundle statistics and store them in m_bundleResults. | |
void | applyParameterCorrections () |
Apply parameter corrections for current iteration. | |
bool | errorPropagation () |
Error propagation for solution. | |
void | computeResiduals () |
Compute image measure residuals. | |
double | computeVtpv () |
Computes vtpv, the weighted sum of squares of residuals. | |
bool | computeRejectionLimit () |
Compute rejection limit. | |
bool | flagOutliers () |
Flags outlier measures and control points. | |
bool | formNormalEquations () |
Form the least-squares normal equations matrix via cholmod. | |
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 | 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. | |
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. | |
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 | formWeightedNormals (LinearAlgebra::VectorCompressed &n1, LinearAlgebra::Vector &nj) |
Apply weighting for spacecraft position, velocity, acceleration and camera angles, angular velocities, angular accelerations if so stipulated (legalese). | |
void | productAB (SparseBlockColumnMatrix &A, SparseBlockRowMatrix &B) |
Perform the matrix multiplication C = N12 x Q. | |
void | accumProductAlphaAB (double alpha, SparseBlockRowMatrix &A, LinearAlgebra::Vector &B, LinearAlgebra::Vector &C) |
Performs the matrix multiplication nj = nj + alpha (Q x n2). | |
bool | invert3x3 (LinearAlgebra::MatrixUpperTriangular &m) |
Dedicated quick inverse of 3x3 matrix. | |
bool | productATransB (LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, SparseBlockRowMatrix &Q) |
Perform the matrix multiplication Q = N22 x N12(transpose) | |
bool | initializeCHOLMODLibraryVariables () |
Initializations for CHOLMOD sparse matrix package. | |
bool | freeCHOLMODLibraryVariables () |
Free CHOLMOD library variables. | |
bool | loadCholmodTriplet () |
Load sparse normal equations matrix into CHOLMOD triplet. | |
Private Attributes | |
BundleSettingsQsp | m_bundleSettings |
Contains the solve settings. | |
BundleResults | m_bundleResults |
Stores the results of the bundle adjust. | |
ControlNetQsp | m_controlNet |
Output control net. | |
QString | m_cnetFileName |
The control net filename. | |
QVector< BundleControlPointQsp > | m_bundleControlPoints |
Vector of control points. | |
BundleLidarPointVector | m_bundleLidarControlPoints |
Vector of lidar points. | |
QString | m_lidarFileName |
Input lidar point filename. | |
LidarDataQsp | m_lidarDataSet |
Output lidar data. | |
int | m_numLidarConstraints |
TODO: temp. | |
BundleObservationVector | m_bundleObservations |
SerialNumberList * | m_serialNumberList |
!< Vector of observations. | |
BundleTargetBodyQsp | m_bundleTargetBody |
bool | m_abort |
!< Contains information about the target body. | |
QString | m_iterationSummary |
bool | m_printSummary |
!< Summary of the most recently completed iteration. | |
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. | |
int | m_iteration |
The current iteration. | |
double | m_iterationTime |
Time for last iteration. | |
int | m_numberOfImagePartials |
number of image-related partials. | |
QList< ImageList * > | m_imageLists |
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. | |
cholmod_common | m_cholmodCommon |
LinearAlgebra::Vector | m_RHS |
!< Contains object parameters, statistics, and workspace used by the CHOLMOD library. | |
SparseBlockMatrix | m_sparseNormals |
!< The right hand side of the normal equations. | |
cholmod_triplet * | m_cholmodTriplet |
!< The sparse block normal equations matrix. | |
cholmod_sparse * | m_cholmodNormal |
!< The CHOLMOD triplet representation of the sparse normal equations matrix. | |
cholmod_factor * | m_L |
!< The CHOLMOD sparse normal equations matrix used by cholmod_factorize to solve the system. | |
LinearAlgebra::Vector | m_imageSolution |
!< The lower triangular L matrix from Cholesky decomposition. | |
int | m_previousNumberImagePartials |
!< The image parameter solution vector. | |
An image bundle adjustment object.
BundleAdjust is used to perform a bundle adjustment on overlapping ISIS cubes. Using the collineariy condition, BundleAdjust can construct a system of normal equations and then using the CHOLMOD library, solve that system.
2005-05-30 Jeff Anderson, Debbie A. Cook & Tracie Sucharski - Original version
2007-05-29 Debbie A. Cook - Added new method iterationSummary and changed points on held images to held instead of ground.
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.
2007-08-25 Debbie A. Cook - Added methods and members to support instrument position solution.
2007-09-17 Debbie A. Cook - Added ability to process in observation mode for Lunar Orbiter.
2007-11-17 Debbie A. Cook - Added method SetSolution Method.
2007-12-21 Debbie A. Cook - Added member p_Degree and methods m_nsolveCamDegree and ckDegree.
2008-01-11 Debbie A. Cook - Added observation mode functionality for spacecraft position and upgraded ObservationNumber methods for compatability.
2008-01-14 Debbie A. Cook - Added code to solve for local radii.
2008-04-18 Debbie A. Cook - Added progress for ControlNet.
2008-06-18 Christopher Austin - Fixed ifndef.
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.
2008-11-22 Debbie A. Cook - Added code to wrap longitude to keep it in [0.0, 360.0].
2008-11-22 Debbie A. Cook - Added new call to get timeScale and set for the observation along with basetime.
2008-11-26 Debbie A. Cook - Added check to applyHeldList for Ignored points and measures.
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.
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.
2009-08-13 Debbie A. Cook - Corrected calculations of cudx and cudy so that they use the signed focal length also.
2009-10-14 Debbie A. Cook - Modified AddPartials method to use new CameraGroundMap method, GetXY.
2009-10-30 Debbie A. Cook - Improved error message in AddPartials.
2009-12-14 Debbie A. Cook - Updated SpicePosition enumerated partial type constants.
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.
2010-06-18 Debbie A. Cook - Added p_cnetFile as member since it was taken out of ControlNet.
2010-07-09 Ken Edmundson - Added Folding in solution method (SPECIALK), error propogation, statistical report, etc.
2010-08-13 Debbie A. Cook - Changed surface point from lat/lon/radius to body-fixed XYZ.
2010-12-17 Debbie A. Cook - Merged Ken Edmundson version with system and updated to new binary control net.
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.
2011-02-17 Debbie A. Cook - Updated to use new parameter added to SpicePosition, p_timeScale.
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.
2011-03-29 Ken Edmundson - Fixed bug in observation mode when solving for spacecraft position and improved output.
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.
2011-06-05 Debbie A. Cook - Changed checks for solution type to match change from SPARSE to SPARSE-LU.
2011-06-07 Debbie A. Cook - and Tracie Sucharski - Modified point types from Ground to Fixed and from Tie to Free.
2011-06-14 Debbie A. Cook - added method isHeld(int index) for preventing any updates to held images.
2011-06-27 Debbie A. Cook - and Ken Edmundson Added names to top header fields of .csv output and fixed bugs in sparse output.
2011-07-12 Ken Edmundson - Segmentation fault bugfix in OutputHeader method. Previously was attempting to output camera angle sigmas when none had been allocated.
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.
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 cameraMavtpv_targetBodyp and cameraList. Added this back in (was originally added on 2011-01-19), was deleted somewhere along the line.
2011-09-28 Debbie A. Cook - Renamed SPARSE solve method to OLDSPARSE and CHOLMOD to SPARSE.
2011-10-14 Ken Edmundson - Added call to m_pCnet->ClearJigsawRejected() to the init() method to set all measure/point JigsawRejected flags to false prior to bundle.
2011-12-09 Ken Edmundson - Memory leak fix in method cholmodInverse. Need call to "cholmod_free_dense(&x,&m_cholmodCommon)" inside loop.
2011-12-20 Ken Edmundson - Fixes to outlier rejection. Added rejection multiplier member variable, can be set in jigsaw interface.
2012-02-02 Debbie A. Cook - Added SetSolvePolyOverHermite method and members m_bSolvePolyOverHermite and m_positionType.
2012-03-26 Orrin Thomas - Added maximum likelihood capabilities.
2012-05-21 Debbie A. Cook - Added initialization of m_dRejectionMultiplier.
2012-07-06 Debbie A. Cook - Updated Spice members to be more compliant with Isis coding standards. References #972.
2012-09-28 Ken Edmundson - Initialized variables for bundle statistic computations. The bundleout.txt file was modifed to show N/A for RMS, Min, Max of Radius Sigmas when not solving for radius. References #783.
2013-11-12 Ken Edmundson - Programmers Note. References #813, #1521, #1653 #813 - Info echoed to screen when using Maximum Likelihood methods are now printed to print.prt file. #1521 - The cout debug statements that appear on screen when updating images were removed from SpiceRotation.cpp #1653 - Constraints were being applied for "Free" points that have constrained coordinates. Also found that a priori coordinates for these points were not being computed in ControlPoint::ComputeApriori, this has also been fixed.
2013-12-18 Tracie Sucharski - The ControlNet::GetNumberOfMeasuresInImage was renamed to ControlNet::GetNumberOfValidMeasuresInImage and only returns the number of valid (Ignore= False) measures.
2014-02-25 Ken Edmundson - Speed up and memory improvements to error propagation. References #2031.
2014-05-16 Jeannie Backer - Added BundleSettings object to constructor inputs. Cleaned and organized code. Updated to be more compliant with ISIS coding standards.
2014-07-14 Kimberly Oyama - Added support for correlation matrix. Covariance matrix is now written to a file and the location is saved as part of the CorrelationMatrix object.
2014-07-23 Jeannie Backer - Modified to print "N/A" for rejection multiplier if outlier rejection is turned off.
2014-09-18 Kimberly Oyama - Added a constructor for running the bunlde in a separate thread.
2014-11-05 Ken Edmundson - Fixed memory bug. Wasn't releasing cholmod_factor m_L every iteration. Now release every iteration but the last since we
2015-02-20 Jeannie Backer - Updated to be more compliant with ISIS coding standards.
2015-08-17 Jeannie Backer - Updated to be more compliant with ISIS coding standards.
2015-09-03 Jeannie Backer - Changed the name of the output correlation matrix file from ["inverseMatrix" + random unique code + ".dat"] to [BundleSettings::outputFilePrefix() + "inverseMatrix.dat"]. So that the prefix can be used to specify the path of the location where the matrix file should be written. Some improvements made to comply with coding standards.
2015-09-10 Ian Humphrey - Fixed include for cholmod header after updating v005 libraries.
2016-07-11 Jesse Mapel - Changed m_bundleControlPoints to be a vector of QSharedPointers to BundleControlPoints instead of a BundleControlPointVector. Fixes #4099.
2016-07-11 Jeannie Backer - Removed initialize(). Implementation was moved the the bottom of init() method. Fixes #4161.
2016-08-03 Jesse Mapel - Changed BundleObservationVector to a vector of QSharedPointers. Fixes #4150.
2016-08-10 Jeannie Backer - Replaced boost vectors and matrices with Isis::LinearAlgebra::Vector and Isis::LinearAlgebra::Matrix, respectively. References #4163.
2016-08-15 Jesse Mapel - Moved write methods to BundleSolutionInfo. Changed constructors to always construct a new control network. Fixes #4159.
2016-08-15 Ian Humphrey - Replaced ISIS ControlPoint and ControlMeasure uses with BundleControlPoint and BundleMeasure. No longer need to check if the BundleControlPoint or BundleMeasure is ignored before use, since we only add non-ignored ControlPoints to the BundleControlPoint, and we only add non-ignored ControlMeasures to the BundleControlPoint. Fixes #4173, #4201.
2016-08-16 Jesse Mapel - Added error throw when covariance matrices are not symmetric due to unstable data and settings. Fixes #2302.
2016-08-17 Jesse Mapel - Moved all method implementations to the cpp file. Fixes #4185.
2016-08-18 Jeannie Backer - Removed all references to deprecated solve methods SpeckialK and OldSparse. Fixes #4162.
2016-08-23 Jesse Mapel - Removed output file calls. Apps and objects that use BundleAdjust must call output methods from BundleSolutionInfo. Fixes #4279.
2016-08-24 Jesse Mapel - Updated documentation and member variable names. Brought closer to ISIS 3 coding standards. Fixes #4183, #4188, #4235.
2016-08-28 Kelvin Rodriguez - Remvoed useless register keywords to squash warnigns in clang. Part of porting to OS X 10.11.
2016-09-22 Ian Humphrey - Modified validateNetwork() so that validation status messages are logged to stdout. Fixes #4313.
2016-10-05 Ian Humphrey - Modified errorPropagation_CHOLMOD() to check bundle settings to see if it should generate the inverseMatrix.dat file. References #4315.
2016-10-13 Ian Humphrey - Added constructor that takes a ControlNetQsp, so that when jigsaw modifies a control net for a held image, the control net can be passed as a shared pointer. Removed m_pHeldSnList, isHeld(), checkHeldList(), applyHeldList(), two constructors that used heldList parameters. Modified destructor to not delete m_pHeldSnList, since it was removed. Fixes #4293.
2016-10-17 Adam Paquette - Cleaned up terminal output for readability and cohesion Fixes #4263, #4311, #4312.
2016-10-18 Ian Humphrey - Modified iterationSummary() to always output Rejected_Measures kewyord, regardless of outlier rejection being on or off. Fixes #4461.
2016-10-25 Ian Humphrey - Modified iterationSumary() to always output Rejected_Measures keyword, regarldess of outlier rjection being on or off. Fixes #4461. Modified solveCholesky() and computeRejectionLimit() so jigsaw's std out for Rejection Limit, Sigma0, and Elapsed Time match ISIS production's jigsaw std out. Fixes #4463.
2016-10-28 Ian Humphrey - Modified solveCholesky() and errorPropagation() to change spacing in terminal output, so that it matches production. References #4463.
2016-11-16 Ian Humphrey - Modified solveCholesky() to throw caught exceptions that occur. Removed bundleException(QString) signal. Fixes #4483.
2016-12-01 Ian Humphrey - Modified outputBundleStatus()'s printf() call so that there is no longer a -Wformat-security warning.
2017-05-01 Makayla Shepherd - Added imageLists() to track and return the images bundled. Fixes #4818.
2017-05-09 Tracie Sucharski - Fixed an empty pointer in ::imgeLists method.
2017-05-09 Ken Edmundson - Speed improvements and error propagation bug fix. Separated initializations for Normal Equations matrix out of ::initializeCholmodLibraryVariables() into initializeNormalEquationsMatrix(). Added m_previousNumberImagePartials to avoid unnecessary resizing of the "coeffImage" matrix in computePartials. New m_startColumn member in SparseBlockColumnMatrix eliminates costly computation of leading colums and rows. In errorPropagation method, call to get Q matrix from BundleControlPoint was creating a copy instead of getting a reference. References #4664.
2017-06-08 Makayla Shepherd - Modified imageLists() to close the image cube after adding it to the image list. Fixes #4908.
2017-08-09 Summer Stapleton - Added a try/catch around the m_controlNet assignment in each of the constructors to verify valid control net input. Fixes #5068.
2017-09-01 Debbie A. Cook - Added BundleSettingsQsp as argument to BundleControlPoint constructor and moved setWeights call from BundleAdjust::init to BundleControlPoint constructor. Don't allow solving for triaxial radii when coordinate type is not Latitudinal. Added new optional argument controlPointCoordType to ControlNet constructor call. References #4649 and #501.
2018-02-12 Ken Edmundson - Removed members m_xResiduals, m_yResiduals, and m_xyResiduals and made them local to the computeResiduals() method. Removed member m_bodyRadii, used only locally in init() method.
2018-05-22 Ken Edmundson - Modified methods bundleSolveInformation() and solveCholeskyBR() to return raw pointers to a BundleSolutionInfo object. Also modified resultsReady signal to take a raw pointer to a BundleSolutionInfo object. This was done to avoid using a copy constructor in the BundleSolutionInfo class because it is derived from QObject. Note that we ultimately want to return a QSharedPointer instead of a raw pointer.
2018-05-31 Debbie A. Cook - Moved productAlphaAV and control point parameter correction code to BundleControlPoint. Earlier revised errorPropagation to compute the sigmas via the variance/covariance matrices instead of the sigmas. This should produce more accurate results. References #4649 and #501.
2018-06-14 Christopher Combs - Added getter method to tell if a bundle adjust was aborted. Added emits for status updates to the run widget.
2018-06-18 Makayla Shepherd - Stopped command line output for ipce BundleAdjust. Fixes #4171.
2018-06-27 Ken Edmundson - Now setting measure sigmas in BundleMeasure in init() method; retrieving sigma and sqrt of weight in computePartials and computeVtpv methods.
2018-09-06 Debbie A. Cook - (added to BundleXYZ branch on 2017-09-01) Added BundleSettingsQsp as argument to BundleControlPoint constructor and moved setWeights call from BundleAdjust::init to BundleControlPoint constructor. Don't allow solving for triaxial radii when coordinate type is not Latitudinal. Added new optional argument controlPointCoordType to ControlNet constructor call. References #4649 and #501.
2018-09-06 Debbie A. Cook and Ken Edmundson - (added to BundleXYZ branch on (2018-05-31). Moved productAlphaAV and control point parameter correction code to BundleControlPoint. Earlier revised errorPropagation to compute the sigmas via the variance/ covariance matrices instead of the sigmas. This should produce more accurate results. References #4649 and #501.
2018-09-06 Debbie A. Cook - Removed obsolete member variables: m_radiansToMeters, m_metersToRadians, and m_bodyRadii which have been replaced with the local radius of a control point for converting point sigmas to/from radians from/to meters. References #4649 and #501.
2018-11-29 Ken Edmundson - Modifed init, initializeNormalEquationsMatrix, and computePartials methods.
2019-04-29 Ken Edmundson - Modifications for bundle with lidar.
2019-05-15 Debbie A. Cook - The call to CameraGroundMap::GetXY in method ComputePartials was modified to not check for points on the back side of the planet when computing instrument coordinates during the bundle adjustment. In the future a control net diagnostic program might be useful to detect any points not visible on an image based on the exterior orientation of the image. References #2591.
Definition at line 329 of file BundleAdjust.h.
Isis::BundleAdjust::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.
bundleSettings | A shared pointer to the BundleSettings to be used. |
cnetFile | The filename of the control network to be used. |
cubeList | The list of filenames of the cubes to be adjusted. |
printSummary | If summaries should be printed each iteration. |
Definition at line 107 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
const QString & | cnetFile, | ||
const QString & | cubeList, | ||
const QString & | lidarDataFile, | ||
bool | printSummary = true ) |
Construct a BundleAdjust object from the given settings, control network file, cube list, and lidar point data.
bundleSettings | A shared pointer to the BundleSettings to be used. |
cnetFile | The filename of the control network to be used. |
cubeList | The list of filenames of the cubes to be adjusted. |
lidarDataFile | Lidar point dataset filename. |
printSummary | If summaries should be printed each iteration. |
Definition at line 145 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_lidarDataSet, m_lidarFileName, m_printSummary, m_serialNumberList, Isis::BundleResults::setOutputControlNet(), and Isis::BundleResults::setOutputLidarData().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
QString & | cnetFile, | ||
SerialNumberList & | snlist, | ||
bool | printSummary = true ) |
Construct a BundleAdjust object with held cubes.
bundleSettings | A shared pointer to the BundleSettings to be used. |
cnetFile | The filename of the control network to be used. |
cubeList | The list of filenames of the cubes to be adjusted. |
heldList | The list of filenames of the held cubes. Held cubes must be in both heldList and cubeList. |
printSummary | If summaries should be printed each iteration. |
Definition at line 195 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
Control & | cnet, | ||
SerialNumberList & | snlist, | ||
bool | printSummary ) |
Constructs a BundleAdjust object using a Control object.
A new control network object will be created as a copy of the Control's control network.
bundleSettings | A shared pointer to the BundleSettings to be used. |
cnet | The Control object whose control network will be copied. The Control will not be modified by the BundleAdjust. |
snlist | A serial number list containing the cubes to be adjusted. |
printSummary | If summaries should be printed each iteration. |
Definition at line 232 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
ControlNet & | cnet, | ||
SerialNumberList & | snlist, | ||
bool | printSummary = true ) |
Constructs a BundleAdjust object using a ControlNet object.
A copy of the ControlNet will be used.
bundleSettings | A shared pointer to the BundleSettings to be used. |
cnet | The ControlNet that will be copied. The original ControlNet will not be modified. |
snlist | A serial number list containing the cubes to be adjusted. |
printSummary | If summaries should be printed each iteration. |
Definition at line 269 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
ControlNetQsp | cnet, | ||
const QString & | cubeList, | ||
bool | printSummary = true ) |
Constructs a BundleAdjust from an already created ControlNet within a shared pointer.
bundleSettings | QSharedPointer to the bundle settings to use. |
cnet | QSharedPointer to the control net to adjust. |
cubeList | QString name of list of cubes to create serial numbers for. |
printSummary | Boolean indicating whether to print application output summary. |
Definition at line 303 of file BundleAdjust.cpp.
References init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::BundleAdjust | ( | BundleSettingsQsp | bundleSettings, |
Control & | control, | ||
QList< ImageList * > | imgLists, | ||
bool | printSummary ) |
Thread safe constructor.
bundleSettings | A shared pointer to the BundleSettings to be used. |
control | The Control object whose control network will be copied. The Control will not be modified by the BundleAdjust. |
snlist | A serial number list containing the cubes to be adjusted. |
printSummary | If summaries should be printed each iteration. |
Definition at line 335 of file BundleAdjust.cpp.
References Isis::SerialNumberList::add(), Isis::Control::fileName(), Isis::Image::fileName(), init(), m_abort, m_bundleResults, m_bundleSettings, m_cleanUp, m_cnetFileName, m_controlNet, m_printSummary, m_serialNumberList, and Isis::BundleResults::setOutputControlNet().
Isis::BundleAdjust::~BundleAdjust | ( | ) |
Destroys BundleAdjust object, deallocates pointers (if we have ownership), and frees variables from cholmod library.
Definition at line 383 of file BundleAdjust.cpp.
References freeCHOLMODLibraryVariables(), m_cleanUp, and m_serialNumberList.
|
slot |
Flag to abort when bundle is threaded.
Flag is set outside the bundle thread, typically by the gui thread.
Definition at line 819 of file BundleAdjust.cpp.
References m_abort.
Referenced by Isis::JigsawRunWidget::closeEvent().
|
private |
Performs the matrix multiplication nj = nj + alpha (Q x n2).
alpha | A constant multiplier. |
Q | A sparse block matrix. |
n2 | A vector. |
nj | The output accumulation vector. |
Definition at line 1769 of file BundleAdjust.cpp.
References m_sparseNormals.
Referenced by formLidarPointNormals(), and formPointNormals().
|
private |
Apply parameter corrections for current iteration.
Definition at line 2135 of file BundleAdjust.cpp.
References m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleSettings, m_imageSolution, m_sparseNormals, and Isis::BundleObservationVector::numberParameters().
Referenced by solveCholesky().
|
private |
Create a BundleSolutionInfo containing the settings and results from the bundle adjustment.
Definition at line 1171 of file BundleAdjust.cpp.
References imageLists(), m_bundleResults, m_bundleSettings, m_cnetFileName, m_lidarFileName, and Isis::BundleSolutionInfo::setRunTime().
Referenced by solveCholesky(), and solveCholeskyBR().
|
slot |
Return the updated instrument pointing table for the ith cube in the cube list given to the constructor.
This is only valid for ISIS camera model cubes
i | The index of the cube |
Definition at line 2953 of file BundleAdjust.cpp.
References m_controlNet.
Referenced by Isis::JigsawRunWidget::on_JigsawAcceptButton_clicked().
|
private |
Compute Bundle statistics and store them in m_bundleResults.
Sets: m_rmsImageSampleResiduals m_rmsImageLineResiduals m_rmsImageResiduals
m_rmsImageXSigmas m_rmsImageYSigmas m_rmsImageZSigmas m_rmsImageRASigmas m_rmsImageDECSigmas m_rmsImageTWISTSigmas
m_maxSigmaLatitude m_maxSigmaLatitudePointId m_maxSigmaLongitude m_maxSigmaLongitudePointId m_maxSigmaRadius m_maxSigmaRadiusPointId
m_minSigmaLatitude m_minSigmaLatitudePointId m_minSigmaLongitude m_minSigmaLongitudePointId m_minSigmaRadius m_minSigmaRadiusPointId
m_rmsSigmaLat m_rmsSigmaLon m_rmsSigmaRad
Definition at line 3157 of file BundleAdjust.cpp.
References m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleResults, m_bundleSettings, m_serialNumberList, Isis::SurfacePoint::Rectangular, Isis::BundleResults::resizeSigmaStatisticsVectors(), Isis::SerialNumberList::serialNumberIndex(), Isis::BundleResults::setRmsFromSigmaStatistics(), Isis::BundleResults::setRmsImageResidualLists(), Isis::BundleResults::setRmsLidarImageResidualLists(), Isis::BundleResults::setSigmaCoord1Range(), Isis::BundleResults::setSigmaCoord2Range(), Isis::BundleResults::setSigmaCoord3Range(), and Isis::SerialNumberList::size().
Referenced by solveCholesky().
|
private |
Compute partial derivatives and weighted residuals for a measure.
coeffTarget, coeffImage, coeffPoint3D, and coeffRHS will be filled with the different partial derivatives.
coeffTarget | A matrix that will contain target body partial derivatives. |
coeffImage | A matrix that will contain camera position and orientation partial derivatives. |
coeffPoint3D | A matrix that will contain point lat, lon, and radius partial derivatives. |
coeffRHS | A vector that will contain weighted x,y residuals. |
measure | The measure that partials are being computed for. |
point | The point containing measure. |
IException::User | "Unable to map apriori surface point for measure" |
Definition at line 2044 of file BundleAdjust.cpp.
References Isis::BundleResults::addProbabilityDistributionObservation(), Isis::BundleResults::addResidualsProbabilityDistributionObservation(), Isis::BundleControlPoint::adjustedSurfacePoint(), Isis::Camera::Csm, Isis::Camera::Framing, Isis::BundleControlPoint::id(), m_bundleResults, m_bundleSettings, m_previousNumberImagePartials, Isis::BundleResults::maximumLikelihoodModelIndex(), Isis::BundleResults::maximumLikelihoodModelWFunc(), Isis::BundleResults::numberMaximumLikelihoodModels(), Isis::MaximumLikelihoodWFunctions::sqrtWeightScaler(), and Isis::IException::User.
Referenced by formNormalEquations().
|
private |
Compute rejection limit.
Computes the median and the median absolute deviation (M.A.D.) of the residuals. Then, sets the rejection limit in m_bundleResults to median + RejectionMultiplier * M.A.D.
@TODO should this be in BundleResults?
Definition at line 2258 of file BundleAdjust.cpp.
References m_bundleControlPoints, m_bundleResults, m_bundleSettings, Isis::BundleResults::numberObservations(), outputBundleStatus(), Isis::BundleResults::rejectionLimit(), and Isis::BundleResults::setRejectionLimit().
Referenced by solveCholesky().
|
private |
Compute image measure residuals.
Definition at line 1145 of file BundleAdjust.cpp.
References m_bundleControlPoints, and m_bundleLidarControlPoints.
Referenced by solveCholesky().
|
private |
Computes vtpv, the weighted sum of squares of residuals.
Definition at line 2203 of file BundleAdjust.cpp.
References m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleResults, Isis::BundleResults::setRmsXYResiduals(), and Isis::BundleLidarPointVector::vtpvRangeContribution().
Referenced by solveCholesky().
|
slot |
Returns a pointer to the output control network.
Definition at line 2884 of file BundleAdjust.cpp.
References m_controlNet.
|
private |
Error propagation for solution.
IException::User | "Input data and settings are not sufficiently stable for error propagation." |
2016-10-05 Ian Humphrey - Updated to check to see if bundle settings is allowing us to create the inverse matrix correlation file. References #4315.
2016-10-28 Ian Humphrey - Added extra newline between Error Propagation: Inverse Blocking and Filling point covariance messages. References #4463.
2018-09-06 Debbie A. Cook and Ken Edmundson - (added to BundleXYZ branch on (2018-05-31). Moved productAlphaAV and control point parameter correction code to BundleControlPoint. Earlier revised errorPropagation to compute the sigmas via the variance/ covariance matrices instead of the sigmas. This should produce more accurate results. References #4649 and #501.
Definition at line 2536 of file BundleAdjust.cpp.
References Isis::iTime::CurrentLocalTime(), Isis::SparseBlockMatrix::insertMatrixBlock(), Isis::SurfacePoint::Latitudinal, m_bundleControlPoints, m_bundleResults, m_bundleSettings, m_cholmodNormal, m_cholmodTriplet, m_L, m_rank, m_sparseNormals, outputBundleStatus(), Isis::BundleResults::setCorrMatCovFileName(), Isis::SurfacePoint::SetMatrix(), Isis::BundleResults::sigma0(), Isis::IException::User, and Isis::SparseBlockMatrix::wipe().
Referenced by solveCholesky().
|
slot |
Return the ith filename in the cube list file given to constructor.
i | The index of the cube. |
Definition at line 2928 of file BundleAdjust.cpp.
References Isis::SerialNumberList::fileName(), and m_serialNumberList.
Referenced by init().
|
private |
Flags outlier measures and control points.
Definition at line 2357 of file BundleAdjust.cpp.
References m_bundleControlPoints, m_bundleResults, m_controlNet, outputBundleStatus(), Isis::BundleResults::rejectionLimit(), and Isis::BundleResults::setNumberRejectedObservations().
Referenced by solveCholesky().
|
private |
Compute the Q matrix and NIC vector for a control point.
The inputs N22, N12, and n2 come from calling formMeasureNormals() with the control point's measures. The Q matrix and NIC vector are stored in the BundleControlPoint. R = N12 x Q is accumulated into m_sparseNormals.
N22 | Contribution to normal equations matrix for a control point. |
N12 | Contribution to normal equations matrix for images and target body. |
n2 | The right hand side vector for the point on the body. |
nj | The output right hand side vector. |
bundleControlPoint | The control point that the Q matrixs are NIC vector are being formed for. |
Definition at line 1542 of file BundleAdjust.cpp.
References accumProductAlphaAB(), invert3x3(), m_bundleSettings, productAB(), productATransB(), Isis::SurfacePoint::SetMatrix(), and Isis::SparseBlockRowMatrix::zeroBlocks().
Referenced by formNormalEquations().
|
private |
Form the auxilary normal equation matrices for a measure.
N22, N12, n1, and n2 will contain the auxilary matrices when completed.
N22 | The normal equation matrix for the point on the body. |
N12 | The normal equation matrix for the camera and the target body. |
n1 | The right hand side vector for the camera and the target body. |
n2 | The right hand side vector for the point on the body. |
coeffTarget | The matrix containing target body partial derivatives. |
coeffImage | The matrix containing camera parameter partial derivatives. |
coeffPoint3D | The matrix containing point parameter partial derivatives. |
coeffRHS | The vector containing weighted x,y residuals. |
observationIndex | The index of the observation containing the measure that the partial derivative matrices are for. |
Definition at line 1376 of file BundleAdjust.cpp.
References Isis::SparseBlockMatrix::insertMatrixBlock(), m_bundleSettings, and m_sparseNormals.
Referenced by formNormalEquations().
|
private |
Form the least-squares normal equations matrix via cholmod.
Each BundleControlPoint will stores its Q matrix and NIC vector once finished. The covariance matrix for each point will be stored in its adjusted surface point.
Definition at line 1193 of file BundleAdjust.cpp.
References computePartials(), formLidarPointNormals(), formMeasureNormals(), formPointNormals(), formWeightedNormals(), m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleResults, m_bundleSettings, m_numLidarConstraints, m_rank, m_RHS, m_sparseNormals, outputBundleStatus(), Isis::BundleResults::setNumberConstrainedLidarPointParameters(), Isis::BundleResults::setNumberConstrainedPointParameters(), Isis::BundleResults::setNumberImageObservations(), Isis::BundleResults::setNumberLidarImageObservations(), Isis::BundleResults::setNumberLidarRangeConstraints(), and Isis::BundleResults::setNumberUnknownParameters().
Referenced by solveCholesky().
|
private |
Compute the Q matrix and NIC vector for a control point.
The inputs N22, N12, and n2 come from calling formMeasureNormals() with the control point's measures. The Q matrix and NIC vector are stored in the BundleControlPoint. R = N12 x Q is accumulated into m_sparseNormals.
N22 | The normal equation matrix for the point on the body. |
N12 | The normal equation matrix for the camera and the target body. |
n2 | The right hand side vector for the point on the body. |
nj | The output right hand side vector. |
bundleControlPoint | The control point that the Q matrixs are NIC vector are being formed for. |
Definition at line 1462 of file BundleAdjust.cpp.
References accumProductAlphaAB(), invert3x3(), m_bundleSettings, productAB(), productATransB(), Isis::SurfacePoint::SetMatrix(), and Isis::SparseBlockRowMatrix::zeroBlocks().
Referenced by formNormalEquations().
|
private |
Apply weighting for spacecraft position, velocity, acceleration and camera angles, angular velocities, angular accelerations if so stipulated (legalese).
n1 | The right hand side vector for the camera and the target body. |
nj | The right hand side vector |
IException::Programmer | "In BundleAdjust::formWeightedNormals(): target body normals matrix block is null." |
IException::Programmer | "In BundleAdjust::formWeightedNormals(): position segment normals matrix block is null." |
IException::Programmer | "In BundleAdjust::formWeightedNormals(): pointing segment normals matrix block is null." |
Definition at line 1623 of file BundleAdjust.cpp.
References Isis::SparseBlockMatrix::getBlock(), Isis::BundleResults::incrementNumberConstrainedImageParameters(), Isis::BundleResults::incrementNumberConstrainedTargetParameters(), m_bundleResults, m_bundleSettings, m_sparseNormals, Isis::BundleResults::resetNumberConstrainedImageParameters(), and Isis::BundleResults::resetNumberConstrainedTargetParameters().
Referenced by formNormalEquations().
|
private |
Free CHOLMOD library variables.
Frees m_cholmodTriplet, m_cholmodNormal, and m_L. Calls cholmod_finish when complete.
Definition at line 744 of file BundleAdjust.cpp.
References m_cholmodNormal, m_cholmodTriplet, and m_L.
Referenced by ~BundleAdjust().
This method returns the image list used in the bundle adjust.
If a QList<ImageList *> was passed into the constructor then it uses that list, otherwise it constructs the QList using the m_serialNumberList
Definition at line 2487 of file BundleAdjust.cpp.
References Isis::Image::closeCube(), Isis::SerialNumberList::fileName(), m_serialNumberList, Isis::IException::Programmer, and Isis::SerialNumberList::size().
Referenced by bundleSolveInformation().
|
private |
Initialize all solution parameters.
This method is called by constructors to
progress | A pointer to the progress of creating the cameras. |
IException::Programmer | "In BundleAdjust::init(): image is null." |
IException::Programmer | "In BundleAdjust::init(): observation is null." |
2011-08-14 Debbie A. Cook - Opt out of network validation for deltack network in order to allow a single measure on a point
2016-10-13 Ian Humphrey - Removed verification of held images in the from list and counting of the number of held images. References #4293.
remove printf statements
answer comments with questions, TODO, ???, and !!!
Definition at line 425 of file BundleAdjust.cpp.
References Isis::BundleObservationVector::addNew(), Isis::ControlPoint::ComputeApriori(), Isis::Camera::Csm, Isis::SerialNumberList::fileName(), fileName(), Isis::Camera::GetCameraType(), initializeCHOLMODLibraryVariables(), initializeNormalEquationsMatrix(), m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleResults, m_bundleSettings, m_cholmodNormal, m_cholmodTriplet, m_controlNet, m_imageSolution, m_iteration, m_L, m_lidarDataSet, m_normalInverse, m_previousNumberImagePartials, m_rank, m_RHS, m_serialNumberList, Isis::BundleResults::maximumLikelihoodSetUp(), Isis::BundleObservationVector::numberParameters(), Isis::BundleObservationVector::observationByCubeSerialNumber(), Isis::SerialNumberList::observationNumber(), outputBundleStatus(), Isis::IException::Programmer, Isis::SerialNumberList::serialNumber(), Isis::BundleResults::setNumberUnknownParameters(), Isis::SerialNumberList::size(), Isis::SerialNumberList::spacecraftInstrumentId(), Isis::IException::User, and validateNetwork().
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), and BundleAdjust().
|
private |
Initializations for CHOLMOD sparse matrix package.
Calls cholmod_start, sets m_cholmodCommon options.
Definition at line 716 of file BundleAdjust.cpp.
References Isis::cholmodErrorHandler(), m_cholmodTriplet, and m_rank.
Referenced by init().
|
private |
Initialize Normal Equations matrix (m_sparseNormals).
Definition at line 766 of file BundleAdjust.cpp.
References m_bundleSettings, m_sparseNormals, Isis::BundleObservationVector::numberParameters(), and Isis::SparseBlockMatrix::setNumberOfColumns().
Referenced by init().
|
private |
Dedicated quick inverse of 3x3 matrix.
m | The 3x3 matrix to invert. Overwritten with the inverse. |
@TODO Move to LinearAlgebra
Definition at line 1997 of file BundleAdjust.cpp.
Referenced by formLidarPointNormals(), and formPointNormals().
bool Isis::BundleAdjust::isAborted | ( | ) |
Returns if the BundleAdjust has been aborted.
Definition at line 3085 of file BundleAdjust.cpp.
References m_abort.
Referenced by Isis::JigsawRunWidget::notifyThreadFinished().
|
slot |
Returns if the BundleAdjust converged.
Definition at line 3075 of file BundleAdjust.cpp.
References Isis::BundleResults::converged(), and m_bundleResults.
|
slot |
Returns what iteration the BundleAdjust is currently on.
Definition at line 2938 of file BundleAdjust.cpp.
References m_iteration.
|
private |
Creates an iteration summary and an iteration group for the solution summary.
Definition at line 3002 of file BundleAdjust.cpp.
References Isis::BundleResults::converged(), Isis::BundleResults::degreesOfFreedom(), Isis::BundleResults::elapsedTime(), Isis::BundleResults::elapsedTimeErrorProp(), Isis::Application::Log(), m_bundleResults, m_bundleSettings, m_iteration, m_iterationTime, m_printSummary, Isis::BundleResults::maximumLikelihoodMedianR2Residuals(), Isis::BundleResults::maximumLikelihoodModelIndex(), Isis::BundleResults::numberConstrainedImageParameters(), Isis::BundleResults::numberConstrainedPointParameters(), Isis::BundleResults::numberConstrainedTargetParameters(), Isis::BundleResults::numberMaximumLikelihoodModels(), Isis::BundleResults::numberObservations(), Isis::BundleResults::numberRejectedObservations(), Isis::BundleResults::numberUnknownParameters(), Isis::BundleResults::sigma0(), and Isis::toString().
Referenced by solveCholesky().
|
slot |
Returns the iteration summary string.
Definition at line 3097 of file BundleAdjust.cpp.
|
slot |
Returns a pointer to the output lidar data file.
Definition at line 2894 of file BundleAdjust.cpp.
References m_lidarDataSet.
|
private |
Load sparse normal equations matrix into CHOLMOD triplet.
Blocks from the sparse block normal matrix are loaded into a CHOLMOD triplet. Before the triplet can be used with CHOLMOD, it must be converted to a CHOLMOD sparse matrix via cholmod_triplet_to_sparse.
Definition at line 1879 of file BundleAdjust.cpp.
References m_cholmodTriplet, m_iteration, m_rank, m_sparseNormals, Isis::SparseBlockMatrix::numberOfBlocks(), Isis::SparseBlockMatrix::numberOfElements(), and outputBundleStatus().
Referenced by solveSystem().
|
slot |
Return the updated model state for the ith cube in the cube list given to the constructor.
This is only valid for CSM cubes.
i | The index of the cube to get the model state for |
Definition at line 2981 of file BundleAdjust.cpp.
References Isis::Camera::Csm, Isis::CSMCamera::getModelState(), m_controlNet, Isis::IException::Programmer, and Isis::toString().
|
slot |
Returns the number of images.
Definition at line 2914 of file BundleAdjust.cpp.
References m_serialNumberList, and Isis::SerialNumberList::size().
|
slot |
Slot for deltack and jigsaw to output the bundle status.
status | The bundle status string to output. |
Definition at line 3111 of file BundleAdjust.cpp.
Referenced by computeRejectionLimit(), errorPropagation(), flagOutliers(), formNormalEquations(), init(), loadCholmodTriplet(), solveCholesky(), and validateNetwork().
|
private |
Perform the matrix multiplication C = N12 x Q.
The result, C, is stored in m_sparseNormals.
N12 | A sparse block matrix. |
Q | A sparse block matrix |
Definition at line 1724 of file BundleAdjust.cpp.
References Isis::SparseBlockMatrix::insertMatrixBlock(), and m_sparseNormals.
Referenced by formLidarPointNormals(), and formPointNormals().
|
private |
Perform the matrix multiplication Q = N22 x N12(transpose)
N22 | A symmetric matrix |
N12 | A sparse block matrix |
Q | The output sparse block matrix |
Definition at line 1694 of file BundleAdjust.cpp.
Referenced by formLidarPointNormals(), and formPointNormals().
|
slot |
Returns a pointer to the serial number list.
Definition at line 2904 of file BundleAdjust.cpp.
References m_serialNumberList.
|
slot |
Compute the least squares bundle adjustment solution using Cholesky decomposition.
2016-10-25 Ian Humphrey - Spacing and precision for Sigma0 and Elapsed Time match ISIS production's jigsaw std output. References #4463." <p> <p> 2016-10-28 Ian Humphrey - Updated spacing for Error Propagation Complete message. References #4463."
2016-11-16 Ian Humphrey - Modified catch block to throw the caught exception, so a message box will appear to the user when running jigsaw in GUI mode. Fixes #4483.
Definition at line 838 of file BundleAdjust.cpp.
References applyParameterCorrections(), bundleSolveInformation(), computeBundleStatistics(), computeRejectionLimit(), computeResiduals(), Isis::BundleResults::computeSigma0(), computeVtpv(), Isis::BundleResults::converged(), Isis::BundleResults::degreesOfFreedom(), errorPropagation(), flagOutliers(), formNormalEquations(), Isis::BundleResults::incrementMaximumLikelihoodModelIndex(), Isis::BundleResults::initializeResidualsProbabilityDistribution(), iterationSummary(), Isis::SurfacePoint::Latitudinal, m_abort, m_bundleControlPoints, m_bundleLidarControlPoints, m_bundleResults, m_bundleSettings, m_imageSolution, m_iteration, m_iterationTime, m_L, m_sparseNormals, Isis::BundleResults::maximumLikelihoodModelIndex(), Isis::BundleResults::numberConstrainedPointParameters(), Isis::BundleResults::numberMaximumLikelihoodModels(), Isis::BundleResults::numberObservations(), Isis::BundleResults::numberUnknownParameters(), outputBundleStatus(), Isis::BundleResults::printMaximumLikelihoodTierInformation(), Isis::BundleResults::setBundleControlPoints(), Isis::BundleResults::setBundleLidarPoints(), Isis::BundleResults::setConverged(), Isis::BundleResults::setElapsedTime(), Isis::BundleResults::setElapsedTimeErrorProp(), Isis::BundleResults::setIterations(), Isis::BundleResults::setObservations(), Isis::BundleResults::sigma0(), Isis::BundleSettings::Sigma0, solveSystem(), and Isis::SparseBlockMatrix::zeroBlocks().
Referenced by solveCholeskyBR().
BundleSolutionInfo * Isis::BundleAdjust::solveCholeskyBR | ( | ) |
Compute the least squares bundle adjustment solution using Cholesky decomposition.
Definition at line 809 of file BundleAdjust.cpp.
References bundleSolveInformation(), and solveCholesky().
|
private |
Compute the solution to the normal equations using the CHOLMOD library.
IException::Programmer | "CHOLMOD: Failed to load Triplet matrix" |
Definition at line 1808 of file BundleAdjust.cpp.
References loadCholmodTriplet(), m_cholmodNormal, m_cholmodTriplet, m_imageSolution, m_L, m_rank, m_RHS, Isis::IException::Programmer, and Isis::toString().
Referenced by solveCholesky().
|
slot |
Return the updated instrument position table for the ith cube in the cube list given to the constructor.
This is only valid for ISIS camera model cubes
i | The index of the cube |
Definition at line 2968 of file BundleAdjust.cpp.
References m_controlNet.
Referenced by Isis::JigsawRunWidget::on_JigsawAcceptButton_clicked().
|
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
IException::User | "Images with one or less measures:" |
2011-08-04 Debbie A. Cook - Changed error message to indicate it fails with one measure as well as no measures.
2016-09-22 Ian Humphrey - Replaced statusUpdate signal emits with direct calls to outputBundleStats() so the validation messages are printed to stdout. References #4313.
Definition at line 677 of file BundleAdjust.cpp.
References m_controlNet, outputBundleStatus(), Isis::toString(), and Isis::IException::User.
Referenced by init().
|
private |
!< Contains information about the target body.
If the bundle should abort.
Definition at line 483 of file BundleAdjust.h.
Referenced by abortBundle(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), isAborted(), and solveCholesky().
|
private |
Vector of control points.
Definition at line 470 of file BundleAdjust.h.
Referenced by applyParameterCorrections(), computeBundleStatistics(), computeRejectionLimit(), computeResiduals(), computeVtpv(), errorPropagation(), flagOutliers(), formNormalEquations(), init(), and solveCholesky().
|
private |
Vector of lidar points.
Definition at line 471 of file BundleAdjust.h.
Referenced by applyParameterCorrections(), computeBundleStatistics(), computeResiduals(), computeVtpv(), formNormalEquations(), init(), and solveCholesky().
|
private |
Definition at line 477 of file BundleAdjust.h.
|
private |
Stores the results of the bundle adjust.
Definition at line 465 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), bundleSolveInformation(), computeBundleStatistics(), computePartials(), computeRejectionLimit(), computeVtpv(), errorPropagation(), flagOutliers(), formNormalEquations(), formWeightedNormals(), init(), isConverged(), iterationSummary(), and solveCholesky().
|
private |
Contains the solve settings.
Definition at line 464 of file BundleAdjust.h.
Referenced by applyParameterCorrections(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), bundleSolveInformation(), computeBundleStatistics(), computePartials(), computeRejectionLimit(), errorPropagation(), formLidarPointNormals(), formMeasureNormals(), formNormalEquations(), formPointNormals(), formWeightedNormals(), init(), initializeNormalEquationsMatrix(), iterationSummary(), and solveCholesky().
|
private |
Definition at line 481 of file BundleAdjust.h.
|
private |
Definition at line 510 of file BundleAdjust.h.
|
private |
!< The CHOLMOD triplet representation of the sparse normal equations matrix.
Created from m_sparseNormals and then used to create m_cholmodNormal.
Definition at line 525 of file BundleAdjust.h.
Referenced by errorPropagation(), freeCHOLMODLibraryVariables(), init(), and solveSystem().
|
private |
!< The sparse block normal equations matrix.
Used to populate m_cholmodTriplet and for error propagation.
Definition at line 519 of file BundleAdjust.h.
Referenced by errorPropagation(), freeCHOLMODLibraryVariables(), init(), initializeCHOLMODLibraryVariables(), loadCholmodTriplet(), and solveSystem().
|
private |
!< If the iteration summaries should be output to the log file.
Definition at line 489 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), and ~BundleAdjust().
|
private |
The control net filename.
Definition at line 468 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), and bundleSolveInformation().
|
private |
Output control net.
Definition at line 467 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), cMatrix(), controlNet(), flagOutliers(), init(), modelState(), spVector(), and validateNetwork().
Definition at line 496 of file BundleAdjust.h.
|
private |
!< The lower triangular L matrix from Cholesky decomposition.
Created from m_cholmodNormal by cholmod_factorize.
Definition at line 534 of file BundleAdjust.h.
Referenced by applyParameterCorrections(), init(), solveCholesky(), and solveSystem().
|
private |
The current iteration.
Definition at line 493 of file BundleAdjust.h.
Referenced by init(), iteration(), iterationSummary(), loadCholmodTriplet(), and solveCholesky().
|
private |
Definition at line 484 of file BundleAdjust.h.
|
private |
Time for last iteration.
Definition at line 494 of file BundleAdjust.h.
Referenced by iterationSummary(), and solveCholesky().
|
private |
!< The CHOLMOD sparse normal equations matrix used by cholmod_factorize to solve the system.
Created from m_cholmodTriplet.
Definition at line 530 of file BundleAdjust.h.
Referenced by errorPropagation(), freeCHOLMODLibraryVariables(), init(), solveCholesky(), and solveSystem().
|
private |
Output lidar data.
Definition at line 474 of file BundleAdjust.h.
Referenced by BundleAdjust(), init(), and lidarData().
|
private |
Input lidar point filename.
Definition at line 473 of file BundleAdjust.h.
Referenced by BundleAdjust(), and bundleSolveInformation().
|
private |
!< The lists of images used in the bundle.
Inverse of the normal equations matrix. Set by cholmodInverse.
Definition at line 509 of file BundleAdjust.h.
Referenced by init().
|
private |
number of image-related partials.
Definition at line 495 of file BundleAdjust.h.
|
private |
|
private |
!< The image parameter solution vector.
Definition at line 537 of file BundleAdjust.h.
Referenced by computePartials(), and init().
|
private |
!< Summary of the most recently completed iteration.
Definition at line 486 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), and iterationSummary().
|
private |
!< If the serial number lists need to be deleted by the destructor.
The rank of the system.
Definition at line 492 of file BundleAdjust.h.
Referenced by errorPropagation(), formNormalEquations(), init(), initializeCHOLMODLibraryVariables(), loadCholmodTriplet(), and solveSystem().
|
private |
!< Contains object parameters, statistics, and workspace used by the CHOLMOD library.
Definition at line 513 of file BundleAdjust.h.
Referenced by formNormalEquations(), init(), and solveSystem().
|
private |
!< Vector of observations.
Each observation contains one or more images. List of image serial numbers.
Definition at line 480 of file BundleAdjust.h.
Referenced by BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), BundleAdjust(), computeBundleStatistics(), fileName(), imageLists(), init(), numberOfImages(), serialNumberList(), and ~BundleAdjust().
|
private |
!< The right hand side of the normal equations.
Definition at line 515 of file BundleAdjust.h.
Referenced by accumProductAlphaAB(), applyParameterCorrections(), errorPropagation(), formMeasureNormals(), formNormalEquations(), formWeightedNormals(), initializeNormalEquationsMatrix(), loadCholmodTriplet(), productAB(), and solveCholesky().