Isis 3 Developer Reference
|
This class holds information about a control point that BundleAdjust needs to run correctly. More...
#include <BundleControlPoint.h>
Public Member Functions | |
BundleControlPoint (BundleSettingsQsp bundleSettings, ControlPoint *point) | |
Constructs a BundleControlPoint object from a ControlPoint. More... | |
BundleControlPoint (const BundleControlPoint &src) | |
Copy constructor. More... | |
~BundleControlPoint () | |
Destructor for BundleControlPoint. More... | |
BundleControlPoint & | operator= (const BundleControlPoint &src) |
void | copy (const BundleControlPoint &src) |
Copies given BundleControlPoint to this BundleControlPoint. More... | |
BundleMeasureQsp | addMeasure (ControlMeasure *controlMeasure) |
Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list. More... | |
void | computeResiduals () |
Computes the residuals for this BundleControlPoint. More... | |
void | setAdjustedSurfacePoint (SurfacePoint surfacePoint) |
Sets the adjusted surface point for this BundleControlPoint. More... | |
void | setNumberOfRejectedMeasures (int numRejected) |
Sets the number of rejected measures for this BundleControlPoint. More... | |
void | setRejected (bool reject) |
Sets this BundleControlPoint to rejected or not rejected. More... | |
void | setWeights (const BundleSettingsQsp settings) |
Sets the weights using the given BundleSettings QSharedPointer and a conversion value for meters to radians. More... | |
void | setSigmaWeightFromGlobals (double gSigma, int index) |
Sets the member sigmas and weights from a global sigma. More... | |
void | setSigmaWeightFromGlobals (double gSigma, int index, double cFactor) |
void | zeroNumberOfRejectedMeasures () |
Resets the number of rejected measures for this BundleControlPoint to zero. More... | |
void | productAlphaAV (double alpha, SparseBlockMatrix &sparseNormals, LinearAlgebra::Vector &v1) |
Perform the matrix multiplication v2 = alpha ( Q x v1 ). More... | |
void | applyParameterCorrections (LinearAlgebra::Vector imageSolution, SparseBlockMatrix &sparseNormals, const BundleTargetBodyQsp target) |
Apply the parameter corrections to the bundle control point. More... | |
ControlPoint * | rawControlPoint () const |
Accessor for the raw ControlPoint object used for this BundleControlPoint. More... | |
bool | isRejected () const |
Method used to determine whether this control point is rejected. More... | |
int | numberOfMeasures () const |
Accesses number of measures associated with this BundleControlPoint. More... | |
int | numberOfRejectedMeasures () const |
Accesses the number of rejected measures for this BundleControlPoint. More... | |
double | residualRms () const |
Gets the root-mean-square (rms) of the BundleControlPoint's residuals. More... | |
SurfacePoint | adjustedSurfacePoint () const |
Accesses the adjusted SurfacePoint associated with this BundleControlPoint. More... | |
QString | id () const |
Accesses the Point ID associated with this BundleControlPoint. More... | |
ControlPoint::PointType | type () const |
Accesses BundleControlPoint's type. More... | |
SurfacePoint::CoordinateType | coordTypeReports () const |
Accesses BundleControlPoint's coordinate type for reports. More... | |
SurfacePoint::CoordinateType | coordTypeBundle () const |
Accesses BundleControlPoint's control point coordinate type for the bundle adjustment. More... | |
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. More... | |
boost::numeric::ublas::bounded_vector< double, 3 > & | aprioriSigmas () |
Accesses the 3 dimensional ordered vector of apriori sigmas (apriori coordinate1, apriori coordinate2, apriori coordinate3). More... | |
boost::numeric::ublas::bounded_vector< double, 3 > & | adjustedSigmas () |
Accesses the 3 dimensional ordered vector of adjusted sigmas (adjusted coordinate1, adjusted coordinate2, adjusted coordinate3). More... | |
boost::numeric::ublas::bounded_vector< double, 3 > & | weights () |
Accesses the 3 dimensional ordered vector of weight values associated with coordinate1, coordinate2, and coordinate3. More... | |
boost::numeric::ublas::bounded_vector< double, 3 > & | nicVector () |
Accesses the 3 dimensional ordered NIC vector. More... | |
SparseBlockRowMatrix & | cholmodQMatrix () |
Accesses the CholMod matrix associated with this BundleControlPoint. More... | |
QString | formatBundleOutputSummaryString (bool errorPropagation) const |
Formats an output summary string for this BundleControlPoint. More... | |
QString | formatBundleOutputDetailString (bool errorPropagation, bool solveRadius=false) const |
Formats a detailed output string table for this BundleControlPoint. More... | |
QString | formatBundleLatitudinalOutputDetailString (bool errorPropagation, bool solveRadius=false) const |
Formats a detailed output string table for this Latitudinal BundleControlPoint. More... | |
QString | formatBundleRectangularOutputDetailString (bool errorPropagation) const |
Formats a detailed output string table for this Rectangular BundleControlPoint. More... | |
QString | formatValue (double value, int fieldWidth, int precision) const |
Formats the given double precision value using the specified field width and precision. More... | |
QString | formatAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const |
Formats the apriori sigma value indicated by the given type code. More... | |
QString | formatCoordAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const |
Formats the apriori coordinate 1 (latitude or X) sigma value. More... | |
QString | formatAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const |
Formats the adjusted sigma value indicated by the given type code. More... | |
QString | formatCoordAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const |
Formats the adjusted coordinate sigma value. More... | |
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.
Isis::BundleControlPoint::BundleControlPoint | ( | BundleSettingsQsp | bundleSettings, |
ControlPoint * | controlPoint | ||
) |
Constructs a BundleControlPoint object from a ControlPoint.
Only the non-ignored measures are added to the BundleControlPoint.
controlPoint | Pointer to a ControlPoint that will be used to construct this BundleControlPoint. |
References addMeasure(), Isis::ControlPoint::GetMeasure(), Isis::ControlPoint::GetNumMeasures(), Isis::ControlMeasure::IsIgnored(), Isis::Null, and setWeights().
Isis::BundleControlPoint::BundleControlPoint | ( | const BundleControlPoint & | src | ) |
Copy constructor.
Constructs a BundleControlPoint object from an existing BundleControlPoint.
src | The BundleControlPoint to be copied. |
References copy().
Isis::BundleControlPoint::~BundleControlPoint | ( | ) |
Destructor for BundleControlPoint.
BundleMeasureQsp Isis::BundleControlPoint::addMeasure | ( | ControlMeasure * | controlMeasure | ) |
Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list.
controlMeasure | The ControlMeasure to be converted. |
Referenced by BundleControlPoint().
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).
SurfacePoint Isis::BundleControlPoint::adjustedSurfacePoint | ( | ) | const |
Accesses the adjusted SurfacePoint associated with this BundleControlPoint.
References Isis::ControlPoint::GetAdjustedSurfacePoint().
Referenced by formatAdjustedSigmaString().
void Isis::BundleControlPoint::applyParameterCorrections | ( | LinearAlgebra::Vector | imageSolution, |
SparseBlockMatrix & | sparseNormals, | ||
const BundleTargetBodyQsp | target | ||
) |
Apply the parameter corrections to the bundle control point.
imageSolution | Image vector. |
factor | The unit conversion factor to use on lat and lon rad or x/y/z km. |
target | The BundleTargetBody. |
References _FILEINFO_, isRejected(), Isis::SurfacePoint::Latitudinal, productAlphaAV(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().
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).
SparseBlockRowMatrix & Isis::BundleControlPoint::cholmodQMatrix | ( | ) |
Accesses the CholMod matrix associated with this BundleControlPoint.
void Isis::BundleControlPoint::computeResiduals | ( | ) |
Computes the residuals for this BundleControlPoint.
References Isis::ControlPoint::ComputeResiduals().
SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeBundle | ( | ) | const |
Accesses BundleControlPoint's control point coordinate type for the bundle adjustment.
SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeReports | ( | ) | const |
Accesses BundleControlPoint's coordinate type for reports.
void Isis::BundleControlPoint::copy | ( | const BundleControlPoint & | src | ) |
Copies given BundleControlPoint to this BundleControlPoint.
src | The BundleControlPoint to be copied. |
Referenced by BundleControlPoint().
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.
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.
index | CoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z |
fieldWidth | The return string's field width. |
precision | The precision of the double to be saved off. |
errorPropagation | Indicates whether error propagation was selected. |
References adjustedSurfacePoint(), Isis::SurfacePoint::GetSigmaDistance(), Isis::IsSpecial(), Isis::Distance::meters(), and Isis::Null.
Referenced by formatCoordAdjustedSigmaString().
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.
index | CoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z |
fieldWidth | The return string's field width. |
precision | The precision of the double to be saved off. |
solveRadius | A flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted |
References Isis::IsSpecial(), Isis::ControlPoint::PointTypeToString(), and type().
Referenced by formatCoordAprioriSigmaString().
QString Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString | ( | bool | errorPropagation, |
bool | solveRadius = false |
||
) | const |
Formats a detailed output string table for this Latitudinal BundleControlPoint.
errorPropagation | Indicates whether error propagation was selected. |
RTM | Conversion factor from radians to meters. Used to convert the latitude and longitude corrections to meters. |
solveRadius | A flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted |
References _FILEINFO_, Isis::DEG2RAD, Isis::Angle::degrees(), formatCoordAdjustedSigmaString(), formatCoordAprioriSigmaString(), formatValue(), Isis::ControlPoint::GetAdjustedSurfacePoint(), Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::IsSpecial(), Isis::Displacement::Kilometers, Isis::Displacement::kilometers(), Isis::Distance::kilometers(), Isis::SurfacePoint::LatitudeToMeters(), Isis::SurfacePoint::Latitudinal, Isis::SurfacePoint::LongitudeToMeters(), Isis::Null, numberOfMeasures(), numberOfRejectedMeasures(), Isis::SurfacePoint::One, Isis::ControlPoint::PointTypeToString(), Isis::IException::Programmer, Isis::RAD2DEG, Isis::SurfacePoint::Rectangular, Isis::SurfacePoint::Three, Isis::toString(), Isis::SurfacePoint::Two, and type().
Referenced by formatBundleOutputDetailString().
QString Isis::BundleControlPoint::formatBundleOutputDetailString | ( | bool | errorPropagation, |
bool | solveRadius = false |
||
) | const |
Formats a detailed output string table for this BundleControlPoint.
errorPropagation | Indicates whether error propagation was selected. |
RTM | Conversion factor from radians to meters. Used to convert the latitude and longitude corrections to meters. |
solveRadius | A flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted |
References _FILEINFO_, formatBundleLatitudinalOutputDetailString(), formatBundleRectangularOutputDetailString(), Isis::SurfacePoint::Latitudinal, Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().
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.
errorPropagation | Indicates whether error propagation was selected. |
References Isis::SurfacePoint::Degrees, formatCoordAdjustedSigmaString(), formatValue(), Isis::ControlPoint::GetAdjustedSurfacePoint(), Isis::SurfacePoint::GetCoord(), Isis::SurfacePoint::Kilometers, numberOfMeasures(), numberOfRejectedMeasures(), Isis::SurfacePoint::One, Isis::ControlPoint::PointTypeToString(), Isis::SurfacePoint::Rectangular, residualRms(), Isis::SurfacePoint::Three, Isis::SurfacePoint::Two, and type().
QString Isis::BundleControlPoint::formatBundleRectangularOutputDetailString | ( | bool | errorPropagation | ) | const |
Formats a detailed output string table for this Rectangular BundleControlPoint.
errorPropagation | Indicates whether error propagation was selected. |
References _FILEINFO_, Isis::Angle::Degrees, Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::IsSpecial(), Isis::Distance::Kilometers, Isis::Displacement::kilometers(), Isis::SurfacePoint::Latitudinal, Isis::Null, Isis::SurfacePoint::One, Isis::ControlPoint::PointTypeToString(), Isis::IException::Programmer, Isis::RAD2DEG, Isis::SurfacePoint::Rectangular, Isis::SurfacePoint::Three, Isis::toString(), and Isis::SurfacePoint::Two.
Referenced by formatBundleOutputDetailString().
QString Isis::BundleControlPoint::formatCoordAdjustedSigmaString | ( | SurfacePoint::CoordIndex | index, |
int | fieldWidth, | ||
int | precision, | ||
bool | errorPropagation | ||
) | const |
Formats the adjusted coordinate sigma value.
index | The coordinate index of the sigma to return. |
fieldWidth | The return string's field width. |
precision | The precision of the double to be saved off. |
errorPropagation | Indicates whether error propagation was selected. |
References formatAdjustedSigmaString().
Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleOutputSummaryString().
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.
fieldWidth | The return string's field width. |
precision | The precision of the double to be saved off. |
References formatAprioriSigmaString().
Referenced by formatBundleLatitudinalOutputDetailString().
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.
value | The double value to be formattted. |
fieldWidth | The return string's field width. |
precision | The precision of the given double value to be saved off. |
References Isis::IsSpecial().
Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleOutputSummaryString().
QString Isis::BundleControlPoint::id | ( | ) | const |
Accesses the Point ID associated with this BundleControlPoint.
References Isis::ControlPoint::GetId().
bool Isis::BundleControlPoint::isRejected | ( | ) | const |
Method used to determine whether this control point is rejected.
References Isis::ControlPoint::IsRejected().
Referenced by applyParameterCorrections().
boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::nicVector | ( | ) |
Accesses the 3 dimensional ordered NIC vector.
int Isis::BundleControlPoint::numberOfMeasures | ( | ) | const |
Accesses number of measures associated with this BundleControlPoint.
Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleOutputSummaryString().
int Isis::BundleControlPoint::numberOfRejectedMeasures | ( | ) | const |
Accesses the number of rejected measures for this BundleControlPoint.
References Isis::ControlPoint::GetNumberOfRejectedMeasures().
Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleOutputSummaryString().
BundleControlPoint& Isis::BundleControlPoint::operator= | ( | const BundleControlPoint & | src | ) |
void Isis::BundleControlPoint::productAlphaAV | ( | double | alpha, |
SparseBlockMatrix & | sparseNormals, | ||
LinearAlgebra::Vector & | v1 | ||
) |
Perform the matrix multiplication v2 = alpha ( Q x v1 ).
alpha | A constant multiplier. |
sparseNormals | The sparse block normal equations matrix. |
v2 | The output vector. |
Q | A sparse block matrix. |
v1 | A vector. |
Referenced by applyParameterCorrections().
ControlPoint * Isis::BundleControlPoint::rawControlPoint | ( | ) | const |
Accessor for the raw ControlPoint object used for this BundleControlPoint.
double Isis::BundleControlPoint::residualRms | ( | ) | const |
Gets the root-mean-square (rms) of the BundleControlPoint's residuals.
References Isis::ControlPoint::GetResidualRms().
Referenced by formatBundleOutputSummaryString().
void Isis::BundleControlPoint::setAdjustedSurfacePoint | ( | SurfacePoint | surfacePoint | ) |
Sets the adjusted surface point for this BundleControlPoint.
surfacePoint | The surface point to be set. |
References Isis::ControlPoint::SetAdjustedSurfacePoint().
void Isis::BundleControlPoint::setNumberOfRejectedMeasures | ( | int | numRejected | ) |
Sets the number of rejected measures for this BundleControlPoint.
numRejected | Number of rejected measures. |
References Isis::ControlPoint::SetNumberOfRejectedMeasures().
void Isis::BundleControlPoint::setRejected | ( | bool | reject | ) |
Sets this BundleControlPoint to rejected or not rejected.
reject | True will set the BundleControlPoint to rejected. |
References Isis::ControlPoint::SetRejected().
void Isis::BundleControlPoint::setSigmaWeightFromGlobals | ( | double | gSigma, |
int | index | ||
) |
Sets the member sigmas and weights from a global sigma.
TODO *** Should index be SurfacePoint::CoordIndex?
gSigma | The global sigma to assign. |
index | The index of the point coordinate being set (0, 1, or 2). |
cFactor | The conversion factor applied to gSigma to match bundle variable units. |
References _FILEINFO_, Isis::ControlPoint::GetAprioriSurfacePoint(), Isis::SurfacePoint::Latitudinal, Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().
Referenced by setWeights().
void Isis::BundleControlPoint::setSigmaWeightFromGlobals | ( | double | gSigma, |
int | index, | ||
double | cFactor | ||
) |
void Isis::BundleControlPoint::setWeights | ( | const BundleSettingsQsp | settings | ) |
Sets the weights using the given BundleSettings QSharedPointer and a conversion value for meters to radians.
settings | A QSharedPointer to BundleSettings object. |
metersToRadians | A double precision conversion factor. |
References Isis::ControlPoint::Constrained, Isis::ControlPoint::Fixed, Isis::ControlPoint::Free, Isis::ControlPoint::GetAprioriSurfacePoint(), Isis::SurfacePoint::GetSigmaDistance(), Isis::ControlPoint::GetType(), Isis::SurfacePoint::GetWeight(), Isis::ControlPoint::IsCoord1Constrained(), Isis::ControlPoint::IsCoord2Constrained(), Isis::ControlPoint::IsCoord3Constrained(), Isis::IsSpecial(), Isis::SurfacePoint::Latitudinal, Isis::Distance::meters(), Isis::SurfacePoint::One, setSigmaWeightFromGlobals(), Isis::SurfacePoint::Three, and Isis::SurfacePoint::Two.
Referenced by BundleControlPoint().
ControlPoint::PointType Isis::BundleControlPoint::type | ( | ) | const |
Accesses BundleControlPoint's type.
References Isis::ControlPoint::GetType().
Referenced by formatAprioriSigmaString(), formatBundleLatitudinalOutputDetailString(), and formatBundleOutputSummaryString().
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.
void Isis::BundleControlPoint::zeroNumberOfRejectedMeasures | ( | ) |
Resets the number of rejected measures for this BundleControlPoint to zero.
References Isis::ControlPoint::ZeroNumberOfRejectedMeasures().