Make status a public field
parent
ce2cf723ad
commit
b5e9dc04fd
|
|
@ -23,6 +23,7 @@
|
||||||
#include <gtsam/geometry/Cal3Fisheye.h>
|
#include <gtsam/geometry/Cal3Fisheye.h>
|
||||||
#include <gtsam/geometry/Cal3Unified.h>
|
#include <gtsam/geometry/Cal3Unified.h>
|
||||||
#include <gtsam/geometry/Cal3_S2.h>
|
#include <gtsam/geometry/Cal3_S2.h>
|
||||||
|
#include <gtsam/geometry/Cal3DS2.h>
|
||||||
#include <gtsam/geometry/CameraSet.h>
|
#include <gtsam/geometry/CameraSet.h>
|
||||||
#include <gtsam/geometry/PinholeCamera.h>
|
#include <gtsam/geometry/PinholeCamera.h>
|
||||||
#include <gtsam/geometry/SphericalCamera.h>
|
#include <gtsam/geometry/SphericalCamera.h>
|
||||||
|
|
@ -510,18 +511,18 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TriangulationResult is an optional point, along with the reasons why it is invalid.
|
* TriangulationResult is an optional point, along with the reasons why it is
|
||||||
|
* invalid.
|
||||||
*/
|
*/
|
||||||
class TriangulationResult: public boost::optional<Point3> {
|
class TriangulationResult : public boost::optional<Point3> {
|
||||||
enum Status {
|
public:
|
||||||
VALID, DEGENERATE, BEHIND_CAMERA, OUTLIER, FAR_POINT
|
enum Status { VALID, DEGENERATE, BEHIND_CAMERA, OUTLIER, FAR_POINT };
|
||||||
};
|
Status status;
|
||||||
Status status_;
|
|
||||||
TriangulationResult(Status s) :
|
|
||||||
status_(s) {
|
|
||||||
}
|
|
||||||
public:
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
TriangulationResult(Status s) : status(s) {}
|
||||||
|
|
||||||
|
public:
|
||||||
/**
|
/**
|
||||||
* Default constructor, only for serialization
|
* Default constructor, only for serialization
|
||||||
*/
|
*/
|
||||||
|
|
@ -530,54 +531,38 @@ public:
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
TriangulationResult(const Point3& p) :
|
TriangulationResult(const Point3& p) : status(VALID) { reset(p); }
|
||||||
status_(VALID) {
|
|
||||||
reset(p);
|
|
||||||
}
|
|
||||||
static TriangulationResult Degenerate() {
|
static TriangulationResult Degenerate() {
|
||||||
return TriangulationResult(DEGENERATE);
|
return TriangulationResult(DEGENERATE);
|
||||||
}
|
}
|
||||||
static TriangulationResult Outlier() {
|
static TriangulationResult Outlier() { return TriangulationResult(OUTLIER); }
|
||||||
return TriangulationResult(OUTLIER);
|
|
||||||
}
|
|
||||||
static TriangulationResult FarPoint() {
|
static TriangulationResult FarPoint() {
|
||||||
return TriangulationResult(FAR_POINT);
|
return TriangulationResult(FAR_POINT);
|
||||||
}
|
}
|
||||||
static TriangulationResult BehindCamera() {
|
static TriangulationResult BehindCamera() {
|
||||||
return TriangulationResult(BEHIND_CAMERA);
|
return TriangulationResult(BEHIND_CAMERA);
|
||||||
}
|
}
|
||||||
bool valid() const {
|
bool valid() const { return status == VALID; }
|
||||||
return status_ == VALID;
|
bool degenerate() const { return status == DEGENERATE; }
|
||||||
}
|
bool outlier() const { return status == OUTLIER; }
|
||||||
bool degenerate() const {
|
bool farPoint() const { return status == FAR_POINT; }
|
||||||
return status_ == DEGENERATE;
|
bool behindCamera() const { return status == BEHIND_CAMERA; }
|
||||||
}
|
|
||||||
bool outlier() const {
|
|
||||||
return status_ == OUTLIER;
|
|
||||||
}
|
|
||||||
bool farPoint() const {
|
|
||||||
return status_ == FAR_POINT;
|
|
||||||
}
|
|
||||||
bool behindCamera() const {
|
|
||||||
return status_ == BEHIND_CAMERA;
|
|
||||||
}
|
|
||||||
// stream to output
|
// stream to output
|
||||||
friend std::ostream &operator<<(std::ostream &os,
|
friend std::ostream& operator<<(std::ostream& os,
|
||||||
const TriangulationResult& result) {
|
const TriangulationResult& result) {
|
||||||
if (result)
|
if (result)
|
||||||
os << "point = " << *result << std::endl;
|
os << "point = " << *result << std::endl;
|
||||||
else
|
else
|
||||||
os << "no point, status = " << result.status_ << std::endl;
|
os << "no point, status = " << result.status << std::endl;
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/// Serialization function
|
/// Serialization function
|
||||||
friend class boost::serialization::access;
|
friend class boost::serialization::access;
|
||||||
template<class ARCHIVE>
|
template <class ARCHIVE>
|
||||||
void serialize(ARCHIVE & ar, const unsigned int version) {
|
void serialize(ARCHIVE& ar, const unsigned int version) {
|
||||||
ar & BOOST_SERIALIZATION_NVP(status_);
|
ar& BOOST_SERIALIZATION_NVP(status);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -644,6 +629,7 @@ TriangulationResult triangulateSafe(const CameraSet<CAMERA>& cameras,
|
||||||
// Vector of Cameras - used by the Python/MATLAB wrapper
|
// Vector of Cameras - used by the Python/MATLAB wrapper
|
||||||
using CameraSetCal3Bundler = CameraSet<PinholeCamera<Cal3Bundler>>;
|
using CameraSetCal3Bundler = CameraSet<PinholeCamera<Cal3Bundler>>;
|
||||||
using CameraSetCal3_S2 = CameraSet<PinholeCamera<Cal3_S2>>;
|
using CameraSetCal3_S2 = CameraSet<PinholeCamera<Cal3_S2>>;
|
||||||
|
using CameraSetCal3DS2 = CameraSet<PinholeCamera<Cal3DS2>>;
|
||||||
using CameraSetCal3Fisheye = CameraSet<PinholeCamera<Cal3Fisheye>>;
|
using CameraSetCal3Fisheye = CameraSet<PinholeCamera<Cal3Fisheye>>;
|
||||||
using CameraSetCal3Unified = CameraSet<PinholeCamera<Cal3Unified>>;
|
using CameraSetCal3Unified = CameraSet<PinholeCamera<Cal3Unified>>;
|
||||||
using CameraSetSpherical = CameraSet<SphericalCamera>;
|
using CameraSetSpherical = CameraSet<SphericalCamera>;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue