34 double k1_ = 0.0f, k2_ = 0.0f;
42 enum { dimension = 3 };
59 Cal3Bundler(
double f,
double k1,
double k2,
double u0 = 0,
double v0 = 0,
61 :
Cal3(f, f, 0, u0, v0), k1_(k1), k2_(k2), tol_(tol) {}
70 GTSAM_EXPORT
friend std::ostream& operator<<(std::ostream& os,
71 const Cal3Bundler& cal);
74 void print(
const std::string& s =
"")
const override;
77 bool equals(
const Cal3Bundler& K,
double tol = 10e-9)
const;
84 inline double k1()
const {
return k1_; }
87 inline double k2()
const {
return k2_; }
90 inline double px()
const {
return u0_; }
93 inline double py()
const {
return v0_; }
95 Matrix3 K()
const override;
98 Vector3 vector()
const;
100#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V41
102 inline double u0()
const {
return u0_; }
105 inline double v0()
const {
return v0_; }
116 Point2 uncalibrate(
const Point2& p, OptionalJacobian<2, 3> Dcal = boost::none,
117 OptionalJacobian<2, 2> Dp = boost::none)
const;
127 Point2 calibrate(
const Point2& pi, OptionalJacobian<2, 3> Dcal = boost::none,
128 OptionalJacobian<2, 2> Dp = boost::none)
const;
131 Matrix2 D2d_intrinsic(
const Point2& p)
const;
134 Matrix23 D2d_calibration(
const Point2& p)
const;
137 Matrix25 D2d_intrinsic_calibration(
const Point2& p)
const;
144 size_t dim()
const override {
return Dim(); }
147 inline static size_t Dim() {
return dimension; }
151 return Cal3Bundler(fx_ + d(0), k1_ + d(1), k2_ + d(2), u0_, v0_);
156 return T2.vector() - vector();
165 friend class boost::serialization::access;
166 template <
class Archive>
167 void serialize(Archive& ar,
const unsigned int ) {
168 ar& boost::serialization::make_nvp(
169 "Cal3Bundler", boost::serialization::base_object<Cal3>(*
this));
170 ar& BOOST_SERIALIZATION_NVP(k1_);
171 ar& BOOST_SERIALIZATION_NVP(k2_);
172 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:112
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Both ManifoldTraits and Testable.
Definition: Manifold.h:120
Definition: Cal3Bundler.h:32
double k1() const
distorsion parameter k1
Definition: Cal3Bundler.h:84
double k2() const
distorsion parameter k2
Definition: Cal3Bundler.h:87
Cal3Bundler()=default
Default constructor.
Cal3Bundler retract(const Vector &d) const
Update calibration with tangent space delta.
Definition: Cal3Bundler.h:150
double py() const
image center in y
Definition: Cal3Bundler.h:93
Cal3Bundler(double f, double k1, double k2, double u0=0, double v0=0, double tol=1e-5)
Constructor.
Definition: Cal3Bundler.h:59
Vector3 localCoordinates(const Cal3Bundler &T2) const
Calculate local coordinates to another calibration.
Definition: Cal3Bundler.h:155
double px() const
image center in x
Definition: Cal3Bundler.h:90
size_t dim() const override
return DOF, dimensionality of tangent space
Definition: Cal3Bundler.h:144
static size_t Dim()
return DOF, dimensionality of tangent space
Definition: Cal3Bundler.h:147