Refactor Bundler and Fisheye models
parent
42b0537402
commit
17e9b73fb6
|
@ -23,16 +23,6 @@
|
||||||
|
|
||||||
namespace gtsam {
|
namespace gtsam {
|
||||||
|
|
||||||
/* ************************************************************************* */
|
|
||||||
Cal3Bundler::Cal3Bundler() :
|
|
||||||
f_(1), k1_(0), k2_(0), u0_(0), v0_(0), tol_(1e-5) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
|
||||||
Cal3Bundler::Cal3Bundler(double f, double k1, double k2, double u0, double v0,
|
|
||||||
double tol)
|
|
||||||
: f_(f), k1_(k1), k2_(k2), u0_(u0), v0_(v0), tol_(tol) {}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
Matrix3 Cal3Bundler::K() const {
|
Matrix3 Cal3Bundler::K() const {
|
||||||
Matrix3 K;
|
Matrix3 K;
|
||||||
|
@ -59,11 +49,9 @@ void Cal3Bundler::print(const std::string& s) const {
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
bool Cal3Bundler::equals(const Cal3Bundler& K, double tol) const {
|
bool Cal3Bundler::equals(const Cal3Bundler& K, double tol) const {
|
||||||
if (std::abs(f_ - K.f_) > tol || std::abs(k1_ - K.k1_) > tol
|
return (std::fabs(f_ - K.f_) < tol && std::fabs(k1_ - K.k1_) < tol &&
|
||||||
|| std::abs(k2_ - K.k2_) > tol || std::abs(u0_ - K.u0_) > tol
|
std::fabs(k2_ - K.k2_) < tol && std::fabs(u0_ - K.u0_) < tol &&
|
||||||
|| std::abs(v0_ - K.v0_) > tol)
|
std::fabs(v0_ - K.v0_) < tol);
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
@ -150,14 +138,4 @@ Matrix25 Cal3Bundler::D2d_intrinsic_calibration(const Point2& p) const {
|
||||||
return H;
|
return H;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
} // \ namespace gtsam
|
||||||
Cal3Bundler Cal3Bundler::retract(const Vector& d) const {
|
|
||||||
return Cal3Bundler(f_ + d(0), k1_ + d(1), k2_ + d(2), u0_, v0_);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
|
||||||
Vector3 Cal3Bundler::localCoordinates(const Cal3Bundler& T2) const {
|
|
||||||
return T2.vector() - vector();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -28,14 +28,16 @@ namespace gtsam {
|
||||||
* @addtogroup geometry
|
* @addtogroup geometry
|
||||||
* \nosubgrouping
|
* \nosubgrouping
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT Cal3Bundler {
|
class GTSAM_EXPORT Cal3Bundler : public Cal3 {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double f_; ///< focal length
|
double f_; ///< focal length
|
||||||
double k1_, k2_; ///< radial distortion
|
double k1_, k2_; ///< radial distortion
|
||||||
double u0_, v0_; ///< image center, not a parameter to be optimized but a constant
|
|
||||||
double tol_; ///< tolerance value when calibrating
|
double tol_; ///< tolerance value when calibrating
|
||||||
|
|
||||||
|
// NOTE: image center parameters (u0, v0) are not optimized
|
||||||
|
// but are constants.
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum { dimension = 3 };
|
enum { dimension = 3 };
|
||||||
|
@ -44,7 +46,7 @@ public:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/// Default constructor
|
/// Default constructor
|
||||||
Cal3Bundler();
|
Cal3Bundler() : Cal3(), f_(1), k1_(0), k2_(0), tol_(1e-5) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -56,7 +58,8 @@ public:
|
||||||
* @param tol optional calibration tolerance value
|
* @param tol optional calibration tolerance value
|
||||||
*/
|
*/
|
||||||
Cal3Bundler(double f, double k1, double k2, double u0 = 0, double v0 = 0,
|
Cal3Bundler(double f, double k1, double k2, double u0 = 0, double v0 = 0,
|
||||||
double tol = 1e-5);
|
double tol = 1e-5)
|
||||||
|
: Cal3(f, f, 0, u0, v0), f_(f), k1_(k1), k2_(k2), tol_(tol) {}
|
||||||
|
|
||||||
virtual ~Cal3Bundler() {}
|
virtual ~Cal3Bundler() {}
|
||||||
|
|
||||||
|
@ -65,7 +68,7 @@ public:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/// print with optional string
|
/// print with optional string
|
||||||
void print(const std::string& s = "") const;
|
void print(const std::string& s = "") const override;
|
||||||
|
|
||||||
/// assert equality up to a tolerance
|
/// assert equality up to a tolerance
|
||||||
bool equals(const Cal3Bundler& K, double tol = 10e-9) const;
|
bool equals(const Cal3Bundler& K, double tol = 10e-9) const;
|
||||||
|
@ -74,11 +77,6 @@ public:
|
||||||
/// @name Standard Interface
|
/// @name Standard Interface
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
Matrix3 K() const; ///< Standard 3*3 calibration matrix
|
|
||||||
Vector4 k() const; ///< Radial distortion parameters (4 of them, 2 0)
|
|
||||||
|
|
||||||
Vector3 vector() const;
|
|
||||||
|
|
||||||
/// focal length x
|
/// focal length x
|
||||||
inline double fx() const {
|
inline double fx() const {
|
||||||
return f_;
|
return f_;
|
||||||
|
@ -109,6 +107,11 @@ public:
|
||||||
return v0_;
|
return v0_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Matrix3 K() const; ///< Standard 3*3 calibration matrix
|
||||||
|
Vector4 k() const; ///< Radial distortion parameters (4 of them, 2 0)
|
||||||
|
|
||||||
|
Vector3 vector() const;
|
||||||
|
|
||||||
#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V41
|
#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V41
|
||||||
/// get parameter u0
|
/// get parameter u0
|
||||||
inline double u0() const {
|
inline double u0() const {
|
||||||
|
@ -121,12 +124,11 @@ public:
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief: convert intrinsic coordinates xy to image coordinates uv
|
* @brief: convert intrinsic coordinates xy to image coordinates uv
|
||||||
* Version of uncalibrate with derivatives
|
* Version of uncalibrate with derivatives
|
||||||
* @param p point in intrinsic coordinates
|
* @param p point in intrinsic coordinates
|
||||||
* @param Dcal optional 2*3 Jacobian wrpt CalBundler parameters
|
* @param Dcal optional 2*3 Jacobian wrpt Cal3Bundler parameters
|
||||||
* @param Dp optional 2*2 Jacobian wrpt intrinsic coordinates
|
* @param Dp optional 2*2 Jacobian wrpt intrinsic coordinates
|
||||||
* @return point in image coordinates
|
* @return point in image coordinates
|
||||||
*/
|
*/
|
||||||
|
@ -158,20 +160,20 @@ public:
|
||||||
/// @name Manifold
|
/// @name Manifold
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
/// return DOF, dimensionality of tangent space
|
||||||
|
virtual size_t dim() const { return dimension; }
|
||||||
|
|
||||||
|
/// return DOF, dimensionality of tangent space
|
||||||
|
static size_t Dim() { return dimension; }
|
||||||
|
|
||||||
/// Update calibration with tangent space delta
|
/// Update calibration with tangent space delta
|
||||||
Cal3Bundler retract(const Vector& d) const;
|
inline Cal3Bundler retract(const Vector& d) const {
|
||||||
|
return Cal3Bundler(f_ + d(0), k1_ + d(1), k2_ + d(2), u0_, v0_);
|
||||||
/// Calculate local coordinates to another calibration
|
|
||||||
Vector3 localCoordinates(const Cal3Bundler& T2) const;
|
|
||||||
|
|
||||||
/// dimensionality
|
|
||||||
virtual size_t dim() const {
|
|
||||||
return 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// dimensionality
|
/// Calculate local coordinates to another calibration
|
||||||
static size_t Dim() {
|
Vector3 localCoordinates(const Cal3Bundler& T2) const {
|
||||||
return 3;
|
return T2.vector() - vector();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -184,11 +186,11 @@ private:
|
||||||
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::make_nvp(
|
||||||
|
"Cal3Bundler", boost::serialization::base_object<Cal3>(*this));
|
||||||
ar& BOOST_SERIALIZATION_NVP(f_);
|
ar& BOOST_SERIALIZATION_NVP(f_);
|
||||||
ar& BOOST_SERIALIZATION_NVP(k1_);
|
ar& BOOST_SERIALIZATION_NVP(k1_);
|
||||||
ar& BOOST_SERIALIZATION_NVP(k2_);
|
ar& BOOST_SERIALIZATION_NVP(k2_);
|
||||||
ar & BOOST_SERIALIZATION_NVP(u0_);
|
|
||||||
ar & BOOST_SERIALIZATION_NVP(v0_);
|
|
||||||
ar& BOOST_SERIALIZATION_NVP(tol_);
|
ar& BOOST_SERIALIZATION_NVP(tol_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* @file Cal3Fisheye.cpp
|
* @file Cal3Fisheye.cpp
|
||||||
* @date Apr 8, 2020
|
* @date Apr 8, 2020
|
||||||
* @author ghaggin
|
* @author ghaggin
|
||||||
|
* @author Varun Agrawal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtsam/base/Matrix.h>
|
#include <gtsam/base/Matrix.h>
|
||||||
|
@ -23,18 +24,6 @@
|
||||||
|
|
||||||
namespace gtsam {
|
namespace gtsam {
|
||||||
|
|
||||||
/* ************************************************************************* */
|
|
||||||
Cal3Fisheye::Cal3Fisheye(const Vector9& v)
|
|
||||||
: fx_(v[0]),
|
|
||||||
fy_(v[1]),
|
|
||||||
s_(v[2]),
|
|
||||||
u0_(v[3]),
|
|
||||||
v0_(v[4]),
|
|
||||||
k1_(v[5]),
|
|
||||||
k2_(v[6]),
|
|
||||||
k3_(v[7]),
|
|
||||||
k4_(v[8]) {}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
Vector9 Cal3Fisheye::vector() const {
|
Vector9 Cal3Fisheye::vector() const {
|
||||||
Vector9 v;
|
Vector9 v;
|
||||||
|
@ -42,13 +31,6 @@ Vector9 Cal3Fisheye::vector() const {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
|
||||||
Matrix3 Cal3Fisheye::K() const {
|
|
||||||
Matrix3 K;
|
|
||||||
K << fx_, s_, u0_, 0.0, fy_, v0_, 0.0, 0.0, 1.0;
|
|
||||||
return K;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
double Cal3Fisheye::Scaling(double r) {
|
double Cal3Fisheye::Scaling(double r) {
|
||||||
static constexpr double threshold = 1e-8;
|
static constexpr double threshold = 1e-8;
|
||||||
|
@ -165,24 +147,12 @@ void Cal3Fisheye::print(const std::string& s_) const {
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
bool Cal3Fisheye::equals(const Cal3Fisheye& K, double tol) const {
|
bool Cal3Fisheye::equals(const Cal3Fisheye& K, double tol) const {
|
||||||
if (std::abs(fx_ - K.fx_) > tol || std::abs(fy_ - K.fy_) > tol ||
|
const Cal3* base = dynamic_cast<const Cal3*>(&K);
|
||||||
std::abs(s_ - K.s_) > tol || std::abs(u0_ - K.u0_) > tol ||
|
return Cal3::equals(*base, tol) && std::fabs(k1_ - K.k1_) < tol &&
|
||||||
std::abs(v0_ - K.v0_) > tol || std::abs(k1_ - K.k1_) > tol ||
|
std::fabs(k2_ - K.k2_) < tol && std::fabs(k3_ - K.k3_) < tol &&
|
||||||
std::abs(k2_ - K.k2_) > tol || std::abs(k3_ - K.k3_) > tol ||
|
std::fabs(k4_ - K.k4_) < tol;
|
||||||
std::abs(k4_ - K.k4_) > tol)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
Cal3Fisheye Cal3Fisheye::retract(const Vector& d) const {
|
|
||||||
return Cal3Fisheye(vector() + d);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
} // \ namespace gtsam
|
||||||
Vector Cal3Fisheye::localCoordinates(const Cal3Fisheye& T2) const {
|
|
||||||
return T2.vector() - vector();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace gtsam
|
|
||||||
/* ************************************************************************* */
|
|
||||||
|
|
|
@ -46,11 +46,10 @@ namespace gtsam {
|
||||||
* K = [fx s u0; 0 fy v0 ;0 0 1]
|
* K = [fx s u0; 0 fy v0 ;0 0 1]
|
||||||
* [u; v; 1] = K*[x_d; y_d; 1]
|
* [u; v; 1] = K*[x_d; y_d; 1]
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT Cal3Fisheye {
|
class GTSAM_EXPORT Cal3Fisheye : public Cal3 {
|
||||||
private:
|
private:
|
||||||
double fx_, fy_, s_, u0_, v0_; // focal length, skew and principal point
|
double k1_, k2_, k3_, k4_; ///< fisheye distortion coefficients
|
||||||
double k1_, k2_, k3_, k4_; // fisheye distortion coefficients
|
double tol_ = 1e-5; ///< tolerance value when calibrating
|
||||||
double tol_ = 1e-5; // tolerance value when calibrating
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum { dimension = 9 };
|
enum { dimension = 9 };
|
||||||
|
@ -61,17 +60,12 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/// Default Constructor with only unit focal length
|
/// Default Constructor with only unit focal length
|
||||||
Cal3Fisheye()
|
Cal3Fisheye() : Cal3(), k1_(0), k2_(0), k3_(0), k4_(0), tol_(1e-5) {}
|
||||||
: fx_(1), fy_(1), s_(0), u0_(0), v0_(0), k1_(0), k2_(0), k3_(0), k4_(0), tol_(1e-5) {}
|
|
||||||
|
|
||||||
Cal3Fisheye(const double fx, const double fy, const double s, const double u0,
|
Cal3Fisheye(const double fx, const double fy, const double s, const double u0,
|
||||||
const double v0, const double k1, const double k2,
|
const double v0, const double k1, const double k2,
|
||||||
const double k3, const double k4, double tol = 1e-5)
|
const double k3, const double k4, double tol = 1e-5)
|
||||||
: fx_(fx),
|
: Cal3(fx, fy, s, u0, v0),
|
||||||
fy_(fy),
|
|
||||||
s_(s),
|
|
||||||
u0_(u0),
|
|
||||||
v0_(v0),
|
|
||||||
k1_(k1),
|
k1_(k1),
|
||||||
k2_(k2),
|
k2_(k2),
|
||||||
k3_(k3),
|
k3_(k3),
|
||||||
|
@ -84,27 +78,17 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
/// @name Advanced Constructors
|
/// @name Advanced Constructors
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
explicit Cal3Fisheye(const Vector9& v);
|
explicit Cal3Fisheye(const Vector9& v)
|
||||||
|
: Cal3(v(0), v(1), v(2), v(3), v(4)),
|
||||||
|
k1_(v(5)),
|
||||||
|
k2_(v(6)),
|
||||||
|
k3_(v(7)),
|
||||||
|
k4_(v(8)) {}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
/// @name Standard Interface
|
/// @name Standard Interface
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/// focal length x
|
|
||||||
inline double fx() const { return fx_; }
|
|
||||||
|
|
||||||
/// focal length x
|
|
||||||
inline double fy() const { return fy_; }
|
|
||||||
|
|
||||||
/// skew
|
|
||||||
inline double skew() const { return s_; }
|
|
||||||
|
|
||||||
/// image center in x
|
|
||||||
inline double px() const { return u0_; }
|
|
||||||
|
|
||||||
/// image center in y
|
|
||||||
inline double py() const { return v0_; }
|
|
||||||
|
|
||||||
/// First distortion coefficient
|
/// First distortion coefficient
|
||||||
inline double k1() const { return k1_; }
|
inline double k1() const { return k1_; }
|
||||||
|
|
||||||
|
@ -117,9 +101,6 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
/// Second tangential distortion coefficient
|
/// Second tangential distortion coefficient
|
||||||
inline double k4() const { return k4_; }
|
inline double k4() const { return k4_; }
|
||||||
|
|
||||||
/// return calibration matrix
|
|
||||||
Matrix3 K() const;
|
|
||||||
|
|
||||||
/// return distortion parameter vector
|
/// return distortion parameter vector
|
||||||
Vector4 k() const { return Vector4(k1_, k2_, k3_, k4_); }
|
Vector4 k() const { return Vector4(k1_, k2_, k3_, k4_); }
|
||||||
|
|
||||||
|
@ -133,16 +114,21 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
* @brief convert intrinsic coordinates [x_i; y_i] to (distorted) image
|
* @brief convert intrinsic coordinates [x_i; y_i] to (distorted) image
|
||||||
* coordinates [u; v]
|
* coordinates [u; v]
|
||||||
* @param p point in intrinsic coordinates
|
* @param p point in intrinsic coordinates
|
||||||
* @param Dcal optional 2*9 Jacobian wrpt intrinsic parameters (fx, fy, ...,
|
* @param Dcal optional 2*9 Jacobian wrpt intrinsic parameters
|
||||||
* k4)
|
|
||||||
* @param Dp optional 2*2 Jacobian wrpt intrinsic coordinates (xi, yi)
|
* @param Dp optional 2*2 Jacobian wrpt intrinsic coordinates (xi, yi)
|
||||||
* @return point in (distorted) image coordinates
|
* @return point in (distorted) image coordinates
|
||||||
*/
|
*/
|
||||||
Point2 uncalibrate(const Point2& p, OptionalJacobian<2, 9> Dcal = boost::none,
|
Point2 uncalibrate(const Point2& p, OptionalJacobian<2, 9> Dcal = boost::none,
|
||||||
OptionalJacobian<2, 2> Dp = boost::none) const;
|
OptionalJacobian<2, 2> Dp = boost::none) const;
|
||||||
|
|
||||||
/// Convert (distorted) image coordinates [u;v] to intrinsic coordinates [x_i,
|
/**
|
||||||
/// y_i]
|
* Convert (distorted) image coordinates [u;v] to intrinsic coordinates [x_i,
|
||||||
|
* y_i]
|
||||||
|
* @param p point in image coordinates
|
||||||
|
* @param Dcal optional 2*9 Jacobian wrpt intrinsic parameters
|
||||||
|
* @param Dp optional 2*2 Jacobian wrpt intrinsic coordinates (xi, yi)
|
||||||
|
* @return point in intrinsic coordinates
|
||||||
|
*/
|
||||||
Point2 calibrate(const Point2& p, OptionalJacobian<2, 9> Dcal = boost::none,
|
Point2 calibrate(const Point2& p, OptionalJacobian<2, 9> Dcal = boost::none,
|
||||||
OptionalJacobian<2, 2> Dp = boost::none) const;
|
OptionalJacobian<2, 2> Dp = boost::none) const;
|
||||||
|
|
||||||
|
@ -151,7 +137,7 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/// print with optional string
|
/// print with optional string
|
||||||
virtual void print(const std::string& s = "") const;
|
virtual void print(const std::string& s = "") const override;
|
||||||
|
|
||||||
/// assert equality up to a tolerance
|
/// assert equality up to a tolerance
|
||||||
bool equals(const Cal3Fisheye& K, double tol = 10e-9) const;
|
bool equals(const Cal3Fisheye& K, double tol = 10e-9) const;
|
||||||
|
@ -160,17 +146,21 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
/// @name Manifold
|
/// @name Manifold
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
/// Return dimensions of calibration manifold object
|
||||||
|
virtual size_t dim() const { return dimension; }
|
||||||
|
|
||||||
|
/// Return dimensions of calibration manifold object
|
||||||
|
static size_t Dim() { return dimension; }
|
||||||
|
|
||||||
/// Given delta vector, update calibration
|
/// Given delta vector, update calibration
|
||||||
Cal3Fisheye retract(const Vector& d) const;
|
inline Cal3Fisheye retract(const Vector& d) const {
|
||||||
|
return Cal3Fisheye(vector() + d);
|
||||||
|
}
|
||||||
|
|
||||||
/// Given a different calibration, calculate update to obtain it
|
/// Given a different calibration, calculate update to obtain it
|
||||||
Vector localCoordinates(const Cal3Fisheye& T2) const;
|
Vector localCoordinates(const Cal3Fisheye& T2) const {
|
||||||
|
return T2.vector() - vector();
|
||||||
/// Return dimensions of calibration manifold object
|
}
|
||||||
virtual size_t dim() const { return 9; }
|
|
||||||
|
|
||||||
/// Return dimensions of calibration manifold object
|
|
||||||
static size_t Dim() { return 9; }
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
/// @name Clone
|
/// @name Clone
|
||||||
|
@ -191,11 +181,8 @@ class GTSAM_EXPORT Cal3Fisheye {
|
||||||
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(fx_);
|
ar& boost::serialization::make_nvp(
|
||||||
ar& BOOST_SERIALIZATION_NVP(fy_);
|
"Cal3Fisheye", boost::serialization::base_object<Cal3>(*this));
|
||||||
ar& BOOST_SERIALIZATION_NVP(s_);
|
|
||||||
ar& BOOST_SERIALIZATION_NVP(u0_);
|
|
||||||
ar& BOOST_SERIALIZATION_NVP(v0_);
|
|
||||||
ar& BOOST_SERIALIZATION_NVP(k1_);
|
ar& BOOST_SERIALIZATION_NVP(k1_);
|
||||||
ar& BOOST_SERIALIZATION_NVP(k2_);
|
ar& BOOST_SERIALIZATION_NVP(k2_);
|
||||||
ar& BOOST_SERIALIZATION_NVP(k3_);
|
ar& BOOST_SERIALIZATION_NVP(k3_);
|
||||||
|
|
Loading…
Reference in New Issue