24#include <boost/shared_ptr.hpp>
44 double k1_ = 0.0f, k2_ = 0.0f;
45 double p1_ = 0.0f, p2_ = 0.0f;
49 enum { dimension = 9 };
52 using shared_ptr = boost::shared_ptr<Cal3DS2_Base>;
60 Cal3DS2_Base(
double fx,
double fy,
double s,
double u0,
double v0,
double k1,
61 double k2,
double p1 = 0.0,
double p2 = 0.0,
double tol = 1e-5)
62 :
Cal3(fx, fy, s, u0, v0),
75 Cal3DS2_Base(
const Vector9& v)
76 : Cal3(v(0), v(1), v(2), v(3), v(4)),
87 GTSAM_EXPORT
friend std::ostream& operator<<(std::ostream& os,
88 const Cal3DS2_Base& cal);
91 void print(
const std::string& s =
"")
const override;
94 bool equals(
const Cal3DS2_Base& K,
double tol = 1e-8)
const;
101 inline double k1()
const {
return k1_; }
104 inline double k2()
const {
return k2_; }
107 inline double p1()
const {
return p1_; }
110 inline double p2()
const {
return p2_; }
113 Vector4
k()
const {
return Vector4(k1_, k2_, p1_, p2_); }
116 Vector9 vector()
const;
133 Matrix2 D2d_intrinsic(
const Point2& p)
const;
136 Matrix29 D2d_calibration(
const Point2& p)
const;
139 size_t dim()
const override {
return Dim(); }
142 inline static size_t Dim() {
return dimension; }
149 virtual boost::shared_ptr<Cal3DS2_Base>
clone()
const {
150 return boost::shared_ptr<Cal3DS2_Base>(
new Cal3DS2_Base(*
this));
160 friend class boost::serialization::access;
161 template <
class Archive>
162 void serialize(Archive& ar,
const unsigned int ) {
163 ar& boost::serialization::make_nvp(
164 "Cal3DS2_Base", boost::serialization::base_object<Cal3>(*
this));
165 ar& BOOST_SERIALIZATION_NVP(k1_);
166 ar& BOOST_SERIALIZATION_NVP(k2_);
167 ar& BOOST_SERIALIZATION_NVP(p1_);
168 ar& BOOST_SERIALIZATION_NVP(p2_);
169 ar& BOOST_SERIALIZATION_NVP(tol_);
Common code for all Calibration models.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:156
Vector2 Point2
As of GTSAM 4, in order to make GTSAM more lean, it is now possible to just typedef Point2 to Vector2...
Definition: Point2.h:27
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition: OptionalJacobian.h:41
Common base class for all calibration models.
Definition: Cal3.h:69
Calibration of a camera with radial distortion.
Definition: Cal3DS2_Base.h:42
Cal3DS2_Base()=default
Default Constructor with only unit focal length.
double p2() const
Second tangential distortion coefficient.
Definition: Cal3DS2_Base.h:110
static size_t Dim()
return DOF, dimensionality of tangent space
Definition: Cal3DS2_Base.h:142
virtual boost::shared_ptr< Cal3DS2_Base > clone() const
Definition: Cal3DS2_Base.h:149
double k2() const
Second distortion coefficient.
Definition: Cal3DS2_Base.h:104
double k1() const
First distortion coefficient.
Definition: Cal3DS2_Base.h:101
size_t dim() const override
return DOF, dimensionality of tangent space
Definition: Cal3DS2_Base.h:139
double p1() const
First tangential distortion coefficient.
Definition: Cal3DS2_Base.h:107
Vector4 k() const
return distortion parameter vector
Definition: Cal3DS2_Base.h:113