gtsam
Loading...
Searching...
No Matches
Cal3Bundler.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
19
20#pragma once
21
24
25namespace gtsam {
26
32class GTSAM_EXPORT Cal3Bundler : public Cal3f {
33 private:
34 double k1_ = 0.0, k2_ = 0.0;
35 double tol_ = 1e-5;
36
37 // Note: u0 and v0 are constants and not optimized.
38
39 public:
40 constexpr static auto dimension = 3;
41 using shared_ptr = std::shared_ptr<Cal3Bundler>;
42
45
47 Cal3Bundler() = default;
48
58 Cal3Bundler(double f, double k1, double k2, double u0 = 0, double v0 = 0,
59 double tol = 1e-5)
60 : Cal3f(f, u0, v0), k1_(k1), k2_(k2), tol_(tol) {}
61
62 ~Cal3Bundler() override = default;
63
67
69 GTSAM_EXPORT friend std::ostream& operator<<(std::ostream& os,
70 const Cal3Bundler& cal);
71
73 void print(const std::string& s = "") const override;
74
76 bool equals(const Cal3Bundler& K, double tol = 1e-9) const;
77
81
83 double k1() const { return k1_; }
84
86 double k2() const { return k2_; }
87
88 Matrix3 K() const override;
89 Vector4 k() const;
90
91 Vector3 vector() const;
92
101 Point2 uncalibrate(const Point2& p, OptionalJacobian<2, 3> Dcal = {},
102 OptionalJacobian<2, 2> Dp = {}) const;
103
111 Point2 calibrate(const Point2& pi, OptionalJacobian<2, 3> Dcal = {},
112 OptionalJacobian<2, 2> Dp = {}) const;
113
115 Matrix2 D2d_intrinsic(const Point2& p) const;
116
118 Matrix23 D2d_calibration(const Point2& p) const;
119
121 Matrix25 D2d_intrinsic_calibration(const Point2& p) const;
122
126
128 size_t dim() const { return Dim(); }
129
131 static size_t Dim() { return dimension; }
132
134 Cal3Bundler retract(const Vector& d) const {
135 return Cal3Bundler(fx_ + d(0), k1_ + d(1), k2_ + d(2), u0_, v0_);
136 }
137
139 Vector3 localCoordinates(const Cal3Bundler& T2) const {
140 return T2.vector() - vector();
141 }
142
143 private:
147
148#if GTSAM_ENABLE_BOOST_SERIALIZATION
150 friend class boost::serialization::access;
151 template <class Archive>
152 void serialize(Archive& ar, const unsigned int /*version*/) {
153 ar& boost::serialization::make_nvp(
154 "Cal3Bundler", boost::serialization::base_object<Cal3>(*this));
155 ar& BOOST_SERIALIZATION_NVP(k1_);
156 ar& BOOST_SERIALIZATION_NVP(k2_);
157 ar& BOOST_SERIALIZATION_NVP(tol_);
158 }
159#endif
160
162};
163
164template <>
165struct traits<Cal3Bundler> : public internal::Manifold<Cal3Bundler> {};
166
167template <>
168struct traits<const Cal3Bundler> : public internal::Manifold<Cal3Bundler> {};
169
170} // namespace gtsam
Calibration model with a single focal length and zero skew.
2D Point
Global functions in a separate testing namespace.
Definition chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
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:32
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Both ManifoldTraits and Testable.
Definition Manifold.h:156
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition OptionalJacobian.h:40
Template to create a binary predicate.
Definition Testable.h:112
double v0_
principal point
Definition Cal3.h:73
Calibration used by Bundler.
Definition Cal3Bundler.h:32
double k1() const
distortion parameter k1
Definition Cal3Bundler.h:83
double k2() const
distortion parameter k2
Definition Cal3Bundler.h:86
Cal3Bundler()=default
Default constructor.
Cal3Bundler retract(const Vector &d) const
Update calibration with tangent space delta.
Definition Cal3Bundler.h:134
Cal3Bundler(double f, double k1, double k2, double u0=0, double v0=0, double tol=1e-5)
Constructor.
Definition Cal3Bundler.h:58
Vector3 localCoordinates(const Cal3Bundler &T2) const
Calculate local coordinates to another calibration.
Definition Cal3Bundler.h:139
size_t dim() const
Return DOF, dimensionality of tangent space.
Definition Cal3Bundler.h:128
static size_t Dim()
Return DOF, dimensionality of tangent space.
Definition Cal3Bundler.h:131
double f() const
focal length
Definition Cal3f.h:74
Cal3f()=default
Default constructor.