Isis Developer Reference
Isis::BundleControlPoint Class Reference

This class holds information about a control point that BundleAdjust needs to run correctly. More...

#include <BundleControlPoint.h>

Inheritance diagram for Isis::BundleControlPoint:
Inheritance graph
Collaboration diagram for Isis::BundleControlPoint:
Collaboration graph

Public Member Functions

 BundleControlPoint (BundleSettingsQsp bundleSettings, ControlPoint *point)
 Constructs a BundleControlPoint object from a ControlPoint.
 
 BundleControlPoint (const BundleControlPoint &src)
 Copy constructor.
 
virtual ~BundleControlPoint ()
 Destructor for BundleControlPoint.
 
BundleControlPointoperator= (const BundleControlPoint &src)
 
void copy (const BundleControlPoint &src)
 Copies given BundleControlPoint to this BundleControlPoint.
 
BundleMeasureQsp addMeasure (ControlMeasure *controlMeasure)
 Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list.
 
void computeResiduals ()
 Computes the residuals for this BundleControlPoint.
 
void setAdjustedSurfacePoint (SurfacePoint surfacePoint)
 Sets the adjusted surface point for this BundleControlPoint.
 
void setNumberOfRejectedMeasures (int numRejected)
 Sets the number of rejected measures for this BundleControlPoint.
 
void setRejected (bool reject)
 Sets this BundleControlPoint to rejected or not rejected.
 
void setWeights (const BundleSettingsQsp settings)
 Sets the weights using the given BundleSettings QSharedPointer and a conversion value for meters to radians.
 
void setSigmaWeightFromGlobals (double gSigma, int index)
 Sets the member sigmas and weights from a global sigma.
 
void setSigmaWeightFromGlobals (double gSigma, int index, double cFactor)
 
void zeroNumberOfRejectedMeasures ()
 Resets the number of rejected measures for this BundleControlPoint to zero.
 
void productAlphaAV (double alpha, SparseBlockMatrix &sparseNormals, LinearAlgebra::Vector &v1)
 Perform the matrix multiplication v2 = alpha ( Q x v1 ).
 
virtual void applyParameterCorrections (LinearAlgebra::Vector imageSolution, SparseBlockMatrix &sparseNormals, const BundleTargetBodyQsp target)
 Apply the parameter corrections to the bundle control point.
 
double vtpv ()
 Compute vtpv, the weighted sum of squares of constrained point residuals.
 
double vtpvMeasures ()
 Compute vtpv of image measures (weighted sum of squares of measure residuals).
 
ControlPointrawControlPoint () const
 Accessor for the raw ControlPoint object used for this BundleControlPoint.
 
bool isRejected () const
 Method used to determine whether this control point is rejected.
 
int numberOfMeasures () const
 Accesses number of measures associated with this BundleControlPoint.
 
int numberOfRejectedMeasures () const
 Accesses the number of rejected measures for this BundleControlPoint.
 
double residualRms () const
 Gets the root-mean-square (rms) of the BundleControlPoint's residuals.
 
SurfacePoint adjustedSurfacePoint () const
 Accesses the adjusted SurfacePoint associated with this BundleControlPoint.
 
QString id () const
 Accesses the Point ID associated with this BundleControlPoint.
 
ControlPoint::PointType type () const
 Accesses BundleControlPoint's type.
 
SurfacePoint::CoordinateType coordTypeReports () const
 Accesses BundleControlPoint's coordinate type for reports.
 
SurfacePoint::CoordinateType coordTypeBundle () const
 Accesses BundleControlPoint's control point coordinate type for the bundle adjustment.
 
boost::numeric::ublas::bounded_vector< double, 3 > & corrections ()
 Accesses the 3 dimensional ordered vector of correction values associated with coord1, coord2, and coord 3 (latitude, longitude, and radius or X, Y, and Z.
 
boost::numeric::ublas::bounded_vector< double, 3 > & aprioriSigmas ()
 Accesses the 3 dimensional ordered vector of apriori sigmas (apriori coordinate1, apriori coordinate2, apriori coordinate3).
 
boost::numeric::ublas::bounded_vector< double, 3 > & adjustedSigmas ()
 Accesses the 3 dimensional ordered vector of adjusted sigmas (adjusted coordinate1, adjusted coordinate2, adjusted coordinate3).
 
boost::numeric::ublas::bounded_vector< double, 3 > & weights ()
 Accesses the 3 dimensional ordered vector of weight values associated with coordinate1, coordinate2, and coordinate3.
 
boost::numeric::ublas::bounded_vector< double, 3 > & nicVector ()
 Accesses the 3 dimensional ordered NIC vector.
 
SparseBlockRowMatrixcholmodQMatrix ()
 Accesses the CholMod matrix associated with this BundleControlPoint.
 
QString formatBundleOutputSummaryString (bool errorPropagation) const
 Formats an output summary string for this BundleControlPoint.
 
QString formatBundleOutputDetailString (bool errorPropagation, bool solveRadius=false) const
 Formats a detailed output string table for this BundleControlPoint.
 
QString formatBundleLatitudinalOutputDetailString (bool errorPropagation, bool solveRadius=false) const
 Formats a detailed output string table for this Latitudinal BundleControlPoint.
 
QString formatBundleRectangularOutputDetailString (bool errorPropagation) const
 Formats a detailed output string table for this Rectangular BundleControlPoint.
 
QString formatValue (double value, int fieldWidth, int precision) const
 Formats the given double precision value using the specified field width and precision.
 
QString formatAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const
 Formats the apriori sigma value indicated by the given type code.
 
QString formatCoordAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const
 Formats the apriori coordinate 1 (latitude or X) sigma value.
 
QString formatAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const
 Formats the adjusted sigma value indicated by the given type code.
 
QString formatCoordAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const
 Formats the adjusted coordinate sigma value.
 

Protected Attributes

ControlPointm_controlPoint
 < pointer to the control point object this represents
 

Detailed Description

This class holds information about a control point that BundleAdjust needs to run correctly.

This class was created to extract functionality from BundleAdjust and wrap a ControlPoint with the extra necessary information to correctly perform a bundle adjustment.

Note that only non-ignored control points should be used to construct a BundleControlPoint. Similarly, a BundleControlPoint should only contain non-ignored control measures.

Author
2014-05-22 Ken Edmundson

Constructor & Destructor Documentation

◆ BundleControlPoint() [1/2]

Isis::BundleControlPoint::BundleControlPoint ( BundleSettingsQsp bundleSettings,
ControlPoint * controlPoint )

Constructs a BundleControlPoint object from a ControlPoint.

Only the non-ignored measures are added to the BundleControlPoint.

Parameters
controlPointPointer to a ControlPoint that will be used to construct this BundleControlPoint.

References addMeasure(), Isis::ControlPoint::GetMeasure(), Isis::ControlPoint::GetNumMeasures(), m_controlPoint, Isis::Null, and setWeights().

◆ BundleControlPoint() [2/2]

Isis::BundleControlPoint::BundleControlPoint ( const BundleControlPoint & src)

Copy constructor.

Constructs a BundleControlPoint object from an existing BundleControlPoint.

Parameters
srcThe BundleControlPoint to be copied.

References copy().

◆ ~BundleControlPoint()

Isis::BundleControlPoint::~BundleControlPoint ( )
virtual

Destructor for BundleControlPoint.

Member Function Documentation

◆ addMeasure()

BundleMeasureQsp Isis::BundleControlPoint::addMeasure ( ControlMeasure * controlMeasure)

Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list.

Parameters
controlMeasureThe ControlMeasure to be converted.
Returns
BundleMeasure* A pointer to the new BundleMeasure.

Referenced by BundleControlPoint().

◆ adjustedSigmas()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::adjustedSigmas ( )

Accesses the 3 dimensional ordered vector of adjusted sigmas (adjusted coordinate1, adjusted coordinate2, adjusted coordinate3).

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of adjusted sigmas.

◆ adjustedSurfacePoint()

◆ applyParameterCorrections()

void Isis::BundleControlPoint::applyParameterCorrections ( LinearAlgebra::Vector imageSolution,
SparseBlockMatrix & sparseNormals,
const BundleTargetBodyQsp target )
virtual

Apply the parameter corrections to the bundle control point.

Parameters
imageSolutionImage vector.
factorThe unit conversion factor to use on lat and lon rad or x/y/z km.
targetThe BundleTargetBody.

Reimplemented in Isis::BundleLidarControlPoint.

References _FILEINFO_, isRejected(), Isis::SurfacePoint::Latitudinal, productAlphaAV(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

Referenced by Isis::BundleLidarControlPoint::applyParameterCorrections().

◆ aprioriSigmas()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::aprioriSigmas ( )

Accesses the 3 dimensional ordered vector of apriori sigmas (apriori coordinate1, apriori coordinate2, apriori coordinate3).

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of apriori sigmas.

◆ cholmodQMatrix()

SparseBlockRowMatrix & Isis::BundleControlPoint::cholmodQMatrix ( )

Accesses the CholMod matrix associated with this BundleControlPoint.

Returns
SparseBlockRowMatrix& The CholMod row matrix.

◆ computeResiduals()

void Isis::BundleControlPoint::computeResiduals ( )

◆ coordTypeBundle()

SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeBundle ( ) const

Accesses BundleControlPoint's control point coordinate type for the bundle adjustment.

Returns
ControlPoint::CoordinateType The BundleControlPoint's coordinate type. See SurfacePoint for the options.
See also
ControlPoint::getCoordTypeBundle()

◆ coordTypeReports()

SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeReports ( ) const

Accesses BundleControlPoint's coordinate type for reports.

Returns
ControlPoint::CoordinateType The BundleControlPoint's coordinate type. See SurfacePoint for the options.
See also
ControlPoint::getCoordType()

◆ copy()

void Isis::BundleControlPoint::copy ( const BundleControlPoint & src)

Copies given BundleControlPoint to this BundleControlPoint.

Parameters
srcThe BundleControlPoint to be copied.

References m_controlPoint.

Referenced by BundleControlPoint(), and Isis::BundleLidarControlPoint::copy().

◆ corrections()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::corrections ( )

Accesses the 3 dimensional ordered vector of correction values associated with coord1, coord2, and coord 3 (latitude, longitude, and radius or X, Y, and Z.

A bounded vector is recommended because the size will always be 3.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of correction values.

◆ formatAdjustedSigmaString()

QString Isis::BundleControlPoint::formatAdjustedSigmaString ( SurfacePoint::CoordIndex index,
int fieldWidth,
int precision,
bool errorPropagation ) const

Formats the adjusted sigma value indicated by the given type code.

If error propagation is false or the selected sigma type was set to Null, then only "N/A" will be returned.

Parameters
indexCoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted value, as a string.

References adjustedSurfacePoint(), Isis::SurfacePoint::GetSigmaDistance(), Isis::IsSpecial(), Isis::Distance::meters(), and Isis::Null.

Referenced by formatCoordAdjustedSigmaString().

◆ formatAprioriSigmaString()

QString Isis::BundleControlPoint::formatAprioriSigmaString ( SurfacePoint::CoordIndex index,
int fieldWidth,
int precision,
bool solveRadius = false ) const

Formats the apriori sigma value indicated by the given type code.

If no sigma was set, then the string "N/A" will be returned.

Parameters
indexCoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
solveRadiusA flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted
Returns
QString The formatted value, as a string.

References Isis::IsSpecial(), Isis::ControlPoint::PointTypeToString(), and type().

Referenced by formatCoordAprioriSigmaString().

◆ formatBundleLatitudinalOutputDetailString()

QString Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString ( bool errorPropagation,
bool solveRadius = false ) const

◆ formatBundleOutputDetailString()

QString Isis::BundleControlPoint::formatBundleOutputDetailString ( bool errorPropagation,
bool solveRadius = false ) const

Formats a detailed output string table for this BundleControlPoint.

Parameters
errorPropagationIndicates whether error propagation was selected.
RTMConversion factor from radians to meters. Used to convert the latitude and longitude corrections to meters.
solveRadiusA flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted
Returns
QString The formatted output detailed string.

References _FILEINFO_, formatBundleLatitudinalOutputDetailString(), formatBundleRectangularOutputDetailString(), Isis::SurfacePoint::Latitudinal, Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

◆ formatBundleOutputSummaryString()

QString Isis::BundleControlPoint::formatBundleOutputSummaryString ( bool errorPropagation) const

Formats an output summary string for this BundleControlPoint.

This string includes ID, point type, number of rays from non-rejected measures, residual RMS, adjusted coordinate1, adjusted coordinate 2, and adjusted coordinate 3 followed by the adjusted sigmas. In the case of Latitudinal coordinates, the coordinates will be adjusted latitude and longitude (in degrees), the adjusted radius (in km), and the adjusted sigmas for latitude, longitude and radius all in meters. In the case of Rectangular coordinates, the coordinates will be X, Y, Z (in km), and the adjusted sigmas for X, Y, and Z all in meters.

Parameters
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted output summary string.

References Isis::SurfacePoint::Degrees, formatCoordAdjustedSigmaString(), formatValue(), Isis::ControlPoint::GetAdjustedSurfacePoint(), Isis::SurfacePoint::GetCoord(), Isis::SurfacePoint::Kilometers, m_controlPoint, numberOfMeasures(), numberOfRejectedMeasures(), Isis::SurfacePoint::One, Isis::ControlPoint::PointTypeToString(), Isis::SurfacePoint::Rectangular, residualRms(), Isis::SurfacePoint::Three, Isis::SurfacePoint::Two, and type().

◆ formatBundleRectangularOutputDetailString()

◆ formatCoordAdjustedSigmaString()

QString Isis::BundleControlPoint::formatCoordAdjustedSigmaString ( SurfacePoint::CoordIndex index,
int fieldWidth,
int precision,
bool errorPropagation ) const

Formats the adjusted coordinate sigma value.

Parameters
indexThe coordinate index of the sigma to return.
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted adjusted coordinate sigma value, as a string.
See also
formatAdjustedSigmaString()

References formatAdjustedSigmaString().

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ formatCoordAprioriSigmaString()

QString Isis::BundleControlPoint::formatCoordAprioriSigmaString ( SurfacePoint::CoordIndex index,
int fieldWidth,
int precision,
bool solveRadius = false ) const

Formats the apriori coordinate 1 (latitude or X) sigma value.

Parameters
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
Returns
QString The formatted apriori coordinate 1 sigma value, as a string.
See also
formatAprioriSigmaString()

References formatAprioriSigmaString().

Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleRectangularOutputDetailString().

◆ formatValue()

QString Isis::BundleControlPoint::formatValue ( double value,
int fieldWidth,
int precision ) const

Formats the given double precision value using the specified field width and precision.

If the given value is special, then "Null" is returned.

Parameters
valueThe double value to be formattted.
fieldWidthThe return string's field width.
precisionThe precision of the given double value to be saved off.
Returns
QString The formatted value, as a string.

References Isis::IsSpecial().

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ id()

QString Isis::BundleControlPoint::id ( ) const

Accesses the Point ID associated with this BundleControlPoint.

Returns
QString The ID for this point.

References Isis::ControlPoint::GetId(), and m_controlPoint.

Referenced by Isis::IsisBundleObservation::computeRHSPartials(), and Isis::CsmBundleObservation::computeRHSPartials().

◆ isRejected()

bool Isis::BundleControlPoint::isRejected ( ) const

Method used to determine whether this control point is rejected.

Returns
bool Indicates whether this control point is rejected.

References Isis::ControlPoint::IsRejected(), and m_controlPoint.

Referenced by applyParameterCorrections().

◆ nicVector()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::nicVector ( )

Accesses the 3 dimensional ordered NIC vector.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The NIC vector.

◆ numberOfMeasures()

int Isis::BundleControlPoint::numberOfMeasures ( ) const

Accesses number of measures associated with this BundleControlPoint.

Returns
int The number of measures for this point.

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ numberOfRejectedMeasures()

int Isis::BundleControlPoint::numberOfRejectedMeasures ( ) const

◆ operator=()

BundleControlPoint & Isis::BundleControlPoint::operator= ( const BundleControlPoint & src)

◆ productAlphaAV()

void Isis::BundleControlPoint::productAlphaAV ( double alpha,
SparseBlockMatrix & sparseNormals,
LinearAlgebra::Vector & v1 )

Perform the matrix multiplication v2 = alpha ( Q x v1 ).

Parameters
alphaA constant multiplier.
sparseNormalsThe sparse block normal equations matrix.
v2The output vector.
QA sparse block matrix.
v1A vector.

Referenced by applyParameterCorrections().

◆ rawControlPoint()

ControlPoint * Isis::BundleControlPoint::rawControlPoint ( ) const

Accessor for the raw ControlPoint object used for this BundleControlPoint.

Returns
ControlPoint* A pointer to the raw ControlPoint.

References m_controlPoint.

◆ residualRms()

double Isis::BundleControlPoint::residualRms ( ) const

Gets the root-mean-square (rms) of the BundleControlPoint's residuals.

Returns
double Returns the rms of the residuals.
See also
ControlPoint::GetResidualRms()

References Isis::ControlPoint::GetResidualRms(), and m_controlPoint.

Referenced by formatBundleOutputSummaryString().

◆ setAdjustedSurfacePoint()

void Isis::BundleControlPoint::setAdjustedSurfacePoint ( SurfacePoint surfacePoint)

Sets the adjusted surface point for this BundleControlPoint.

Parameters
surfacePointThe surface point to be set.

References m_controlPoint, and Isis::ControlPoint::SetAdjustedSurfacePoint().

◆ setNumberOfRejectedMeasures()

void Isis::BundleControlPoint::setNumberOfRejectedMeasures ( int numRejected)

Sets the number of rejected measures for this BundleControlPoint.

Parameters
numRejectedNumber of rejected measures.
See also
ControlPoint::SetNumberOfRejectedMeasures(int numRejected)

References m_controlPoint, and Isis::ControlPoint::SetNumberOfRejectedMeasures().

◆ setRejected()

void Isis::BundleControlPoint::setRejected ( bool reject)

Sets this BundleControlPoint to rejected or not rejected.

Parameters
rejectTrue will set the BundleControlPoint to rejected.
See also
ControlPoint::SetRejected(bool reject)

References m_controlPoint, and Isis::ControlPoint::SetRejected().

◆ setSigmaWeightFromGlobals() [1/2]

void Isis::BundleControlPoint::setSigmaWeightFromGlobals ( double gSigma,
int index )

Sets the member sigmas and weights from a global sigma.

TODO *** Should index be SurfacePoint::CoordIndex?

Parameters
gSigmaThe global sigma to assign.
indexThe index of the point coordinate being set (0, 1, or 2).
cFactorThe conversion factor applied to gSigma to match bundle variable units.
See also
formatAprioriSigmaString()

References _FILEINFO_, Isis::ControlPoint::GetAprioriSurfacePoint(), Isis::SurfacePoint::Latitudinal, m_controlPoint, Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

Referenced by setWeights().

◆ setSigmaWeightFromGlobals() [2/2]

void Isis::BundleControlPoint::setSigmaWeightFromGlobals ( double gSigma,
int index,
double cFactor )

◆ setWeights()

◆ type()

◆ vtpv()

double Isis::BundleControlPoint::vtpv ( )

Compute vtpv, the weighted sum of squares of constrained point residuals.

Returns
double Weighted sum of squares of constrained point residuals.

References vtpv().

Referenced by vtpv(), vtpvMeasures(), and Isis::BundleLidarControlPoint::vtpvRangeContribution().

◆ vtpvMeasures()

double Isis::BundleControlPoint::vtpvMeasures ( )

Compute vtpv of image measures (weighted sum of squares of measure residuals).

Returns
double weighted sum of squares of measure residuals (vtpv).

References vtpv().

◆ weights()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::weights ( )

Accesses the 3 dimensional ordered vector of weight values associated with coordinate1, coordinate2, and coordinate3.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of weight values.

◆ zeroNumberOfRejectedMeasures()

void Isis::BundleControlPoint::zeroNumberOfRejectedMeasures ( )

Resets the number of rejected measures for this BundleControlPoint to zero.

See also
ControlPoint::ZeroNumberOfRejectedMeasures()

References m_controlPoint, and Isis::ControlPoint::ZeroNumberOfRejectedMeasures().

Member Data Documentation

◆ m_controlPoint


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