Isis 3 Programmer Reference
BundleObservation.cpp
1
7/* SPDX-License-Identifier: CC0-1.0 */
8
9#include "BundleObservation.h"
10
11#include <QDebug>
12#include <QString>
13#include <QStringList>
14#include <QVector>
15
16#include "BundleImage.h"
17#include "BundleObservationSolveSettings.h"
18#include "BundleTargetBody.h"
19#include "Camera.h"
20#include "LinearAlgebra.h"
21#include "SpicePosition.h"
22#include "SpiceRotation.h"
23
24using namespace std;
25
26namespace Isis {
27
32 m_serialNumbers.clear();
33 m_imageNames.clear();
35 m_instrumentId = "";
36 m_index = 0;
37 m_weights.clear();
38 m_corrections.clear();
39 m_aprioriSigmas.clear();
40 m_adjustedSigmas.clear();
41 }
42
43
53 BundleObservation::BundleObservation(BundleImageQsp image, QString observationNumber,
54 QString instrumentId, BundleTargetBodyQsp bundleTargetBody) {
55 m_serialNumbers.clear();
56 m_imageNames.clear();
58 m_instrumentId = "";
59 m_index = 0;
60 m_weights.clear();
61 m_corrections.clear();
62 m_aprioriSigmas.clear();
63 m_adjustedSigmas.clear();
64
65 m_observationNumber = observationNumber;
67
68 if (image) {
69 append(image);
70 m_serialNumbers.append(image->serialNumber());
71 m_imageNames.append(image->fileName());
72 m_cubeSerialNumberToBundleImageMap.insert(image->serialNumber(), image);
73 }
74 }
75
76
83 m_serialNumbers = src.m_serialNumbers;
84 m_cubeSerialNumberToBundleImageMap = src.m_cubeSerialNumberToBundleImageMap;
85
86 m_observationNumber = src.m_observationNumber;
87 m_instrumentId = src.m_instrumentId;
88
89 m_index = src.m_index;
90 }
91
92
101
102
113 if (&src != this) {
114 m_serialNumbers = src.m_serialNumbers;
115 m_cubeSerialNumberToBundleImageMap = src.m_cubeSerialNumberToBundleImageMap;
116
117 m_observationNumber = src.m_observationNumber;
118 m_instrumentId = src.m_instrumentId;
119
120 }
121
122 return *this;
123 }
124
125
136 if (value) {
137 m_cubeSerialNumberToBundleImageMap.insert(value->serialNumber(), value);
138 }
140 }
141
142
152 BundleImageQsp bundleImage;
153
154 if (m_cubeSerialNumberToBundleImageMap.contains(cubeSerialNumber)) {
155 bundleImage = m_cubeSerialNumberToBundleImageMap.value(cubeSerialNumber);
156 }
157
158 return bundleImage;
159 }
160
161
168 return m_instrumentId;
169 }
170
171
180
181
190
191
200
201
210
211
218 m_index = n;
219 }
220
221
228 return m_index;
229 }
230
231
240
241
248 double vtpv = 0.0;
249
250 for (int i = 0; i < (int)m_corrections.size(); i++) {
251 if (m_weights[i] > 0.0) {
252 vtpv += m_corrections[i]* m_corrections[i] * m_weights[i];
253 }
254
255 }
256
257 return vtpv;
258 }
259}
Abstract base class for an observation in bundle adjustment.
virtual LinearAlgebra::Vector & parameterWeights()
Accesses the solve parameter weights.
void setIndex(int n)
Sets the index for the observation.
virtual LinearAlgebra::Vector & adjustedSigmas()
Accesses the adjusted sigmas.
QString m_observationNumber
The shared portion of the serial numbers of all images in the observation.
virtual LinearAlgebra::Vector & aprioriSigmas()
Accesses the a priori sigmas.
int index()
Accesses the observation's index.
QString m_instrumentId
Spacecraft instrument id.
QStringList m_serialNumbers
List of all cube serial numbers in observation.
virtual ~BundleObservation()
Destructor.
virtual void append(const BundleImageQsp &value)
Appends a BundleImage shared pointer to the BundleObservation.
QString instrumentId()
Accesses the instrument id.
int m_index
Index of this observation in the set of observations. Map between cube serial number and BundleImage ...
LinearAlgebra::Vector m_aprioriSigmas
A posteriori (adjusted) parameter sigmas.
QStringList m_imageNames
List of all cube names.
virtual QStringList imageNames()
Access to image names for CorrelationMatrix to use.
LinearAlgebra::Vector m_adjustedSigmas
A posteriori (adjusted) parameter sigmas.
virtual LinearAlgebra::Vector & parameterCorrections()
Accesses the parameter corrections.
BundleImageQsp imageByCubeSerialNumber(QString cubeSerialNumber)
Returns the BundleImage shared pointer associated with the given serial number.
LinearAlgebra::Vector m_weights
Parameter weights. Cumulative parameter correction vector.
BundleObservation()
Constructs a BundleObservation initialized to a default state.
virtual BundleObservation & operator=(const BundleObservation &src)
Assignment operator.
double vtpv()
Compute vtpv, the weighted sum of squares of constrained image parameter residuals.
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
This is free and unencumbered software released into the public domain.
Definition Calculator.h:18
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Namespace for the standard library.