parent
6362b5648a
commit
38010860e4
|
|
@ -2764,7 +2764,7 @@ class SfmTrack {
|
||||||
SfmTrack();
|
SfmTrack();
|
||||||
Point3 point3() const;
|
Point3 point3() const;
|
||||||
size_t number_measurements() const;
|
size_t number_measurements() const;
|
||||||
void setP(gtsam::Point3& p_);
|
void set_point3(gtsam::Point3& p_);
|
||||||
pair<size_t, gtsam::Point2> measurement(size_t idx) const;
|
pair<size_t, gtsam::Point2> measurement(size_t idx) const;
|
||||||
pair<size_t, size_t> siftIndex(size_t idx) const;
|
pair<size_t, size_t> siftIndex(size_t idx) const;
|
||||||
void add_measurement(const pair<size_t, gtsam::Point2>& m);
|
void add_measurement(const pair<size_t, gtsam::Point2>& m);
|
||||||
|
|
|
||||||
|
|
@ -210,9 +210,8 @@ GTSAM_EXPORT GraphAndValues load3D(const std::string& filename);
|
||||||
|
|
||||||
/// A measurement with its camera index
|
/// A measurement with its camera index
|
||||||
typedef std::pair<size_t, Point2> SfmMeasurement;
|
typedef std::pair<size_t, Point2> SfmMeasurement;
|
||||||
typedef std::vector<SfmMeasurement> SfmMeasurements;
|
|
||||||
|
|
||||||
/// SfmTrack
|
/// Sift index for SfmTrack
|
||||||
typedef std::pair<size_t, size_t> SiftIndex;
|
typedef std::pair<size_t, size_t> SiftIndex;
|
||||||
|
|
||||||
/// Define the structure for the 3D points
|
/// Define the structure for the 3D points
|
||||||
|
|
@ -228,10 +227,9 @@ struct SfmTrack {
|
||||||
return measurements.size();
|
return measurements.size();
|
||||||
}
|
}
|
||||||
/// Set 3D point
|
/// Set 3D point
|
||||||
void setP(const Point3& p_){
|
void set_point3(const Point3& p_){
|
||||||
p = p_;
|
p = p_;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the measurement (camera index, Point2) at pose index `idx`
|
/// Get the measurement (camera index, Point2) at pose index `idx`
|
||||||
SfmMeasurement measurement(size_t idx) const {
|
SfmMeasurement measurement(size_t idx) const {
|
||||||
return measurements[idx];
|
return measurements[idx];
|
||||||
|
|
@ -240,14 +238,14 @@ struct SfmTrack {
|
||||||
SiftIndex siftIndex(size_t idx) const {
|
SiftIndex siftIndex(size_t idx) const {
|
||||||
return siftIndices[idx];
|
return siftIndices[idx];
|
||||||
}
|
}
|
||||||
|
/// Get 3D point
|
||||||
Point3 point3() const {
|
Point3 point3() const {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
/// Add measurement to track
|
||||||
void add_measurement(const pair<size_t, gtsam::Point2>& m) {
|
void add_measurement(const pair<size_t, gtsam::Point2>& m) {
|
||||||
measurements.push_back(m);
|
measurements.push_back(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -273,11 +271,11 @@ struct SfmData {
|
||||||
SfmTrack track(size_t idx) const {
|
SfmTrack track(size_t idx) const {
|
||||||
return tracks[idx];
|
return tracks[idx];
|
||||||
}
|
}
|
||||||
|
/// Add a track to SfmData
|
||||||
void add_track(const SfmTrack& t) {
|
void add_track(const SfmTrack& t) {
|
||||||
tracks.push_back(t);
|
tracks.push_back(t);
|
||||||
}
|
}
|
||||||
|
/// Add a camera to SfmData
|
||||||
void add_camera(const SfmCamera& cam){
|
void add_camera(const SfmCamera& cam){
|
||||||
cameras.push_back(cam);
|
cameras.push_back(cam);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,6 @@ set(ignore
|
||||||
gtsam::BetweenFactorPose3s
|
gtsam::BetweenFactorPose3s
|
||||||
gtsam::Point2Vector
|
gtsam::Point2Vector
|
||||||
gtsam::Pose3Vector
|
gtsam::Pose3Vector
|
||||||
gtsam::SfmMeasurement
|
|
||||||
gtsam::SfmCamera
|
|
||||||
gtsam::SiftIndex
|
|
||||||
gtsam::KeyVector
|
gtsam::KeyVector
|
||||||
gtsam::BinaryMeasurementsUnit3
|
gtsam::BinaryMeasurementsUnit3
|
||||||
gtsam::KeyPairDoubleMap)
|
gtsam::KeyPairDoubleMap)
|
||||||
|
|
|
||||||
|
|
@ -10,5 +10,3 @@ PYBIND11_MAKE_OPAQUE(std::vector<gtsam::Pose3>);
|
||||||
PYBIND11_MAKE_OPAQUE(std::vector<boost::shared_ptr<gtsam::BetweenFactor<gtsam::Pose3> > >);
|
PYBIND11_MAKE_OPAQUE(std::vector<boost::shared_ptr<gtsam::BetweenFactor<gtsam::Pose3> > >);
|
||||||
PYBIND11_MAKE_OPAQUE(std::vector<boost::shared_ptr<gtsam::BetweenFactor<gtsam::Pose2> > >);
|
PYBIND11_MAKE_OPAQUE(std::vector<boost::shared_ptr<gtsam::BetweenFactor<gtsam::Pose2> > >);
|
||||||
PYBIND11_MAKE_OPAQUE(std::vector<gtsam::IndexPair>);
|
PYBIND11_MAKE_OPAQUE(std::vector<gtsam::IndexPair>);
|
||||||
//PYBIND11_MAKE_OPAQUE(std::vector<gtsam::SfmMeasurement>);
|
|
||||||
//PYBIND11_MAKE_OPAQUE(std::vector<gtsam::SiftIndex>);
|
|
||||||
|
|
@ -13,5 +13,3 @@ py::bind_vector<std::vector<gtsam::BinaryMeasurement<gtsam::Unit3> > >(m_, "Bina
|
||||||
py::bind_map<gtsam::IndexPairSetMap>(m_, "IndexPairSetMap");
|
py::bind_map<gtsam::IndexPairSetMap>(m_, "IndexPairSetMap");
|
||||||
py::bind_vector<gtsam::IndexPairVector>(m_, "IndexPairVector");
|
py::bind_vector<gtsam::IndexPairVector>(m_, "IndexPairVector");
|
||||||
py::bind_map<gtsam::KeyPairDoubleMap>(m_, "KeyPairDoubleMap");
|
py::bind_map<gtsam::KeyPairDoubleMap>(m_, "KeyPairDoubleMap");
|
||||||
//py::bind_vector<std::vector<gtsam::SfmMeasurement> >(m_, "Measurement");
|
|
||||||
//py::bind_vector<std::vector<gtsam::SiftIndex> >(m_, "SiftIndexVector");
|
|
||||||
|
|
@ -32,11 +32,12 @@ class TestSfmData(GtsamTestCase):
|
||||||
def test_tracks(self):
|
def test_tracks(self):
|
||||||
"""Test functions in SfmTrack"""
|
"""Test functions in SfmTrack"""
|
||||||
# measurement is of format (camera_idx, imgPoint)
|
# measurement is of format (camera_idx, imgPoint)
|
||||||
# create camera indices for two cameras
|
# create arbitrary camera indices for two cameras
|
||||||
i1, i2 = np.random.randint(5), np.random.randint(5)
|
i1, i2 = 4,5
|
||||||
# create imgPoint for cameras i1 and i2
|
# create arbitrary image measurements for cameras i1 and i2
|
||||||
uv_i1 = gtsam.Point2(np.random.randint(5), np.random.randint(5))
|
uv_i1 = gtsam.Point2(12.6, 82)
|
||||||
uv_i2 = gtsam.Point2(np.random.randint(5), np.random.randint(5))
|
# translating point uv_i1 along X-axis
|
||||||
|
uv_i2 = gtsam.Point2(24.88, 82)
|
||||||
m_i1 = (i1, uv_i1)
|
m_i1 = (i1, uv_i1)
|
||||||
m_i2 = (i2, uv_i2)
|
m_i2 = (i2, uv_i2)
|
||||||
# add measurements to the track
|
# add measurements to the track
|
||||||
|
|
@ -47,7 +48,7 @@ class TestSfmData(GtsamTestCase):
|
||||||
# camera_idx in the first measurement of the track corresponds to i1
|
# camera_idx in the first measurement of the track corresponds to i1
|
||||||
self.assertEqual(self.tracks.measurement(0)[0], i1)
|
self.assertEqual(self.tracks.measurement(0)[0], i1)
|
||||||
# Set arbitrary 3D point corresponding to the track
|
# Set arbitrary 3D point corresponding to the track
|
||||||
self.tracks.setP(gtsam.Point3(2.5, 3.3, 1.2))
|
self.tracks.set_point3(gtsam.Point3(2.5, 3.3, 1.2))
|
||||||
np.testing.assert_array_almost_equal(
|
np.testing.assert_array_almost_equal(
|
||||||
gtsam.Point3(2.5,3.3,1.2),
|
gtsam.Point3(2.5,3.3,1.2),
|
||||||
self.tracks.point3()
|
self.tracks.point3()
|
||||||
|
|
@ -59,10 +60,11 @@ class TestSfmData(GtsamTestCase):
|
||||||
#cam1 = gtsam.SfmCamera(1500, 1200, 0, 640, 480)
|
#cam1 = gtsam.SfmCamera(1500, 1200, 0, 640, 480)
|
||||||
# Create new track with 3 measurements
|
# Create new track with 3 measurements
|
||||||
track2 = gtsam.SfmTrack()
|
track2 = gtsam.SfmTrack()
|
||||||
i1, i2, i3 = np.random.randint(5), np.random.randint(5), np.random.randint(5)
|
i1, i2, i3 = 3,5,6
|
||||||
uv_i1 = gtsam.Point2(np.random.randint(5), np.random.randint(5))
|
uv_i1 = gtsam.Point2(21.23, 45.64)
|
||||||
uv_i2 = gtsam.Point2(np.random.randint(5), np.random.randint(5))
|
# translating along X-axis
|
||||||
uv_i3 = gtsam.Point2(np.random.randint(5), np.random.randint(5))
|
uv_i2 = gtsam.Point2(45.7, 45.64)
|
||||||
|
uv_i3 = gtsam.Point2(68.35, 45.64)
|
||||||
m_i1, m_i2, m_i3 = (i1, uv_i1), (i2, uv_i2), (i3, uv_i3)
|
m_i1, m_i2, m_i3 = (i1, uv_i1), (i2, uv_i2), (i3, uv_i3)
|
||||||
# add measurements to the track
|
# add measurements to the track
|
||||||
track2.add_measurement(m_i1)
|
track2.add_measurement(m_i1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue