UFO 1.0.0
An Efficient Probabilistic 3D Mapping Framework That Embraces the Unknown
Loading...
Searching...
No Matches
perspective_intrinsics.hpp
1
45#ifndef UFO_VISION_CAMERA_PERSPECTIVE_INTRINSICS_HPP
46#define UFO_VISION_CAMERA_PERSPECTIVE_INTRINSICS_HPP
47
48// STL
49#include <cmath>
50#include <cstddef>
51#include <format>
52#include <ostream>
53
54namespace ufo
55{
68 std::size_t rows{};
72 std::size_t cols{};
76 float vertical_fov{};
82 float cx{};
88 float cy{};
94 float zoom = 1.0f;
100 float fx = 0.0f;
106 float fy = 0.0f;
112 float focus_distance = 0.0f;
118 float lens_radius = 0.0f;
125 bool deterministic = true;
126
131 [[nodiscard]] constexpr float aspect() const noexcept
132 {
133 return static_cast<float>(cols) / static_cast<float>(rows);
134 }
135
139 [[nodiscard]] friend bool operator==(PerspectiveIntrinsics const&,
140 PerspectiveIntrinsics const&) noexcept = default;
141};
142
146inline std::ostream& operator<<(std::ostream& os, PerspectiveIntrinsics const& intrinsics)
147{
148 os << "Rows: " << intrinsics.rows << ", Cols: " << intrinsics.cols
149 << "\nVertical FoV: " << intrinsics.vertical_fov << "\ncx: " << intrinsics.cx
150 << ", cy: " << intrinsics.cy << "\nfx: " << intrinsics.fx
151 << ", fy: " << intrinsics.fy << "\nZoom: " << intrinsics.zoom
152 << "\nFocus distance: " << intrinsics.focus_distance
153 << ", Lens radius: " << intrinsics.lens_radius
154 << "\nDeterministic: " << (intrinsics.deterministic ? "true" : "false");
155 return os;
156}
157
161} // namespace ufo
162
163template <>
164struct std::formatter<ufo::PerspectiveIntrinsics> {
165 constexpr auto parse(std::format_parse_context& ctx) const { return ctx.begin(); }
166
167 auto format(ufo::PerspectiveIntrinsics const& intrinsics,
168 std::format_context& ctx) const
169 {
170 return std::format_to(
171 ctx.out(),
172 "Rows: {}, Cols: {}\nVertical FoV: {}\ncx: {}, cy: {}\nfx: {}, fy: "
173 "{}\nZoom: {}\nFocus distance: {}, Lens radius: {}\nDeterministic: {}",
174 intrinsics.rows, intrinsics.cols, intrinsics.vertical_fov, intrinsics.cx,
175 intrinsics.cy, intrinsics.fx, intrinsics.fy, intrinsics.zoom,
176 intrinsics.focus_distance, intrinsics.lens_radius, intrinsics.deterministic);
177 }
178};
179
180#endif // UFO_VISION_CAMERA_PERSPECTIVE_INTRINSICS_HPP
All vision-related classes and functions.
Definition cloud.hpp:49
Stores the intrinsic parameters of a perspective camera.
float fy
Vertical focal length in pixels.
float focus_distance
Distance to the focal plane.
float cy
Vertical principal point in pixels.
float fx
Horizontal focal length in pixels.
float vertical_fov
Vertical field of view in radians.
bool deterministic
Whether ray generation should be deterministic.
float cx
Horizontal principal point in pixels.
std::size_t rows
Image height in pixels.
std::size_t cols
Image width in pixels.
float lens_radius
Radius of the camera lens.
friend bool operator==(PerspectiveIntrinsics const &, PerspectiveIntrinsics const &) noexcept=default
Memberwise equality comparison.
constexpr float aspect() const noexcept
Computes the aspect ratio (cols / rows).