56 explicit SfmTrack2d(
const std::vector<SfmMeasurement>& measurements)
57 : measurements(measurements) {}
65 measurements.emplace_back(idx, m);
73 return measurements[idx];
77 const SiftIndex&
siftIndex(
size_t idx)
const {
return siftIndices[idx]; }
84 std::vector<int> track_cam_indices;
85 for (
auto& measurement : measurements) {
86 track_cam_indices.emplace_back(measurement.first);
89 std::adjacent_find(track_cam_indices.begin(), track_cam_indices.end());
90 bool all_cameras_unique = (i == track_cam_indices.end());
91 return all_cameras_unique;
100 Eigen::MatrixX2d m(numberMeasurements(), 2);
101 for (
size_t i = 0; i < numberMeasurements(); i++) {
102 m.row(i) = measurement(i).second;
109 Eigen::VectorXi v(numberMeasurements());
110 for (
size_t i = 0; i < numberMeasurements(); i++) {
111 v(i) = measurement(i).first;
119 using SfmTrack2dVector = std::vector<SfmTrack2d>;
132 explicit SfmTrack(
float r = 0,
float g = 0,
float b = 0)
133 : p(0, 0, 0), r(r), g(g), b(b) {}
137 : p(pt), r(r), g(g), b(b) {}
154 void print(
const std::string& s =
"")
const;
163 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 165 friend class boost::serialization::access;
166 template <
class ARCHIVE>
167 void serialize(ARCHIVE& ar,
const unsigned int ) {
168 ar& BOOST_SERIALIZATION_NVP(p);
169 ar& BOOST_SERIALIZATION_NVP(r);
170 ar& BOOST_SERIALIZATION_NVP(g);
171 ar& BOOST_SERIALIZATION_NVP(b);
172 ar& BOOST_SERIALIZATION_NVP(measurements);
173 ar& BOOST_SERIALIZATION_NVP(siftIndices);
179 template <
typename T>
Point3 rgb() const
Get RGB values describing 3d point.
Definition: SfmTrack.h:147
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Definition: Testable.h:152
Vector2 Point2
Definition: Point2.h:32
std::vector< SiftIndex > siftIndices
The feature descriptors (optional)
Definition: SfmTrack.h:47
bool hasUniqueCameras() const
Check that no two measurements are from the same camera.
Definition: SfmTrack.h:83
const Point3 & point3() const
Get 3D point.
Definition: SfmTrack.h:144
const SiftIndex & siftIndex(size_t idx) const
Get the SIFT feature index corresponding to the measurement at idx
Definition: SfmTrack.h:77
std::pair< size_t, Point2 > SfmMeasurement
A measurement with its camera index.
Definition: SfmTrack.h:32
Definition: Testable.h:112
size_t numberMeasurements() const
Total number of measurements in this track.
Definition: SfmTrack.h:69
void addMeasurement(size_t idx, const gtsam::Point2 &m)
Add measurement (camera_idx, Point2) to track.
Definition: SfmTrack.h:64
Definition: SfmTrack.h:125
const SfmMeasurement & measurement(size_t idx) const
Get the measurement (camera index, Point2) at pose index idx
Definition: SfmTrack.h:72
std::pair< size_t, size_t > SiftIndex
Sift index for SfmTrack.
Definition: SfmTrack.h:35
Track containing 2D measurements associated with a single 3D point. Note: Equivalent to gtsam...
Definition: SfmTrack.h:42
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
Eigen::MatrixX2d measurementMatrix() const
Return the measurements as a 2D matrix.
Definition: SfmTrack.h:99
std::vector< SfmMeasurement > measurements
The 2D image projections (id,(u,v))
Definition: SfmTrack.h:44
Definition: chartTesting.h:28
Point3 p
3D position of the point
Definition: SfmTrack.h:126
float b
RGB color of the 3D point.
Definition: SfmTrack.h:127
Vector3 Point3
Definition: Point3.h:38
Eigen::VectorXi indexVector() const
Return the camera indices of the measurements.
Definition: SfmTrack.h:108