24#include <opencv2/opencv.hpp>
26#include "msceqf/options/msceqf_options.hpp"
27#include "types/fptypes.hpp"
38 virtual ~PinholeCamera() =
default;
62 virtual void undistortImage(
const cv::Mat& image, cv::Mat& image_undistorted) = 0;
143 const Vector4 instrinsics,
151 PinholeCamera& operator=(
const PinholeCamera&) =
delete;
152 PinholeCamera& operator=(PinholeCamera&&) =
delete;
164struct RadtanCamera final :
public PinholeCamera
185struct EquidistantCamera final :
public PinholeCamera
206using PinholeCameraSharedPtr = std::shared_ptr<PinholeCamera>;
207using PinholeCameraUniquePtr = std::unique_ptr<PinholeCamera>;
208using RadtanCameraSharedPtr = std::shared_ptr<RadtanCamera>;
209using RadtanCameraUniquePtr = std::unique_ptr<RadtanCamera>;
210using EquidistantCameraSharedPtr = std::shared_ptr<EquidistantCamera>;
211using EquidistantCameraUniquePtr = std::unique_ptr<EquidistantCamera>;
222[[nodiscard]]
static PinholeCameraUniquePtr createCamera(
const CameraOptions& opts,
const Vector4& intrinsics)
224 if constexpr (std::is_base_of_v<PinholeCamera, T>)
226 return std::make_unique<T>(opts, intrinsics);
virtual void undistort(std::vector< cv::Point2f > &uv_cv, const bool &normalize=false)=0
Undistort given distorted point in OpenCV format (std::vector<cv::Point2f>).
void normalize(cv::Point2f &uv)
Normalize multiple features uv coordinates in OpenCV format (cv::Point2f).
void setIntrinsics(const Vector4 &intrinsics)
Set the value of the intrinsic parameters.
const Vector4 & intrinsics() const
Get camera intrinsics parameter (fx, fy, cx, cy) as a 4 vector.
uint height_
Image height.
Definition camera.hpp:157
void denormalize(std::vector< cv::Point2f > &uv)
Denormalize multiple features uv coordinates in OpenCV format (std::vector<cv::Point2f>).
const VectorX & distortionCoefficients() const
Get camera distortion coefficients (k1, k2, p1, p2, ...) as a vector.
void normalize(std::vector< Eigen::Vector2f > &uv)
Normalize multiple features uv coordinates in Eigen format (std::vector<Eigen::Vector2f>).
PinholeCamera()=delete
Rule of Five.
virtual void undistortImage(const cv::Mat &image, cv::Mat &image_undistorted)=0
Undistort given image in openCV format (cv::Mat).
uint width_
Image width.
Definition camera.hpp:156
void normalize(std::vector< cv::Point2f > &uv)
Normalize multiple features uv coordinates in OpenCV format (std::vector<cv::Point2f>).
void denormalize(std::vector< Eigen::Vector2f > &uv)
Denormalize multiple features uv coordinates in Eigen format (std::vector<Eigen::Vector2f>).
void normalize(Eigen::Vector2f &uv)
Normalize a single feature uv coordinates in Eigen format (Eigen::Vector2f).
void undistort(std::vector< Eigen::Vector2f > &uv, const bool &normalize=false)
Undistort given distorted point in Eigen format (std::vector<Eigen::Vector2f>).
void denormalize(Eigen::Vector2f &uv)
Denormalize a single feature uv coordinates in Eigen format (Eigen::Vector2f).
Vector4 intrinsics_
Vector of intrinsic paramater (fx, fy, cx, cy).
Definition camera.hpp:155
void denormalize(cv::Point2f &uv)
Denormalize multiple features uv coordinates in OpenCV format (cv::Point2f).
VectorX distortion_coefficients_
Vector of distortion coefficients (k1, k2, p1, p2, ...).
Definition camera.hpp:154
Definition msceqf_options.hpp:169
void undistortImage(const cv::Mat &image, cv::Mat &image_undistorted) override
Undistort given image in openCV format (cv::Mat).
void undistort(std::vector< cv::Point2f > &uv_cv, const bool &normalize) override
Undistort given distorted point in OpenCV format (std::vector<cv::Point2f>).
void undistortImage(const cv::Mat &image, cv::Mat &image_undistorted) override
Undistort given image in openCV format (cv::Mat).
void undistort(std::vector< cv::Point2f > &uv_cv, const bool &normalize) override
Undistort given distorted point in OpenCV format (std::vector<cv::Point2f>).