4#include "Base/Headers/Buffer.hpp"
5#include <Eigen/Geometry>
7 template <
class Scalar_,
int Options>
9 using SE3d = SE3<double, 0>;
10 using SE3f = SE3<float, 0>;
15 template<
typename _Tp>
class Point3_;
16 typedef Point3_<float> Point3f;
17 template<
typename _Tp>
class Point_;
18 typedef Point_<float> Point2f;
38 virtual cv::Point2f
project(
const cv::Point3f &p3D) = 0;
40 virtual Eigen::Vector2d
project(
const Eigen::Vector3d & v3D) = 0;
42 virtual Eigen::Vector2f
project(
const Eigen::Vector3f & v3D) = 0;
44 virtual Eigen::Vector2f
projectMat(
const cv::Point3f& p3D) = 0;
48 virtual float uncertainty2(
const Eigen::Matrix<g_type,2,1> &p2D) = 0;
53 virtual cv::Point3f
unproject(
const cv::Point2f &p2D) = 0;
57 virtual Eigen::Matrix<g_type,2,3>
projectJac(
const Eigen::Vector3<g_type>& v3D) = 0;
59 virtual bool ReconstructWithTwoViews(
60 const PrimitiveAlignedBuffer<cv::KeyPoint, 32>& vKeys1
61 ,
const PrimitiveAlignedBuffer<cv::KeyPoint, 32>& vKeys2
64 , AlocatingAlignedBuffer<cv::Point3f, 8>& vP3D
68 virtual cv::Mat
toK() = 0;
70 virtual Eigen::Matrix3f
toK_() = 0;
81 virtual bool epipolarConstrain(
GeometricCamera* otherCamera,
const cv::KeyPoint& kp1,
const cv::KeyPoint& kp2,
const Eigen::Matrix3f& R12,
const Eigen::Vector3f& t12,
const float sigmaLevel,
const float unc) = 0;
91 virtual bool matchAndtriangulate(
const cv::KeyPoint& kp1,
const cv::KeyPoint& kp2,
GeometricCamera* pOther,
92 Sophus::SE3f& Tcw1, Sophus::SE3f& Tcw2,
93 const float sigmaLevel1,
const float sigmaLevel2,
94 Eigen::Vector3f& x3Dtriangulated) = 0;
The equivelent of std::vector but with a bit more control.
Abstract interface for geometric camera models (pinhole, fisheye, etc.).
virtual float uncertainty2(const Eigen::Matrix< g_type, 2, 1 > &p2D)=0
Computes the squared uncertainty at a 2D image point.
virtual Eigen::Vector2f projectMat(const cv::Point3f &p3D)=0
Projects a cv::Point3f to 2D and returns as Eigen vector.
virtual bool isEqual(const GeometricCamera *pCam) const =0
Checks equality with another camera model.
static uint04 nNextId
Global counter for assigning unique camera IDs.
virtual Eigen::Vector2d project(const Eigen::Vector3d &v3D)=0
Projects a 3D point to 2D image coordinates (double precision).
virtual Eigen::Matrix< g_type, 2, 3 > projectJac(const Eigen::Vector3< g_type > &v3D)=0
Computes the 2x3 Jacobian of the projection function.
static constexpr uint04 CAM_PINHOLE
Pinhole camera type identifier.
GeometricCamera()
Default constructor.
virtual Eigen::Vector2f project(const Eigen::Vector3f &v3D)=0
Projects a 3D point to 2D image coordinates (single precision).
GeometricCamera(const Buffer< float > &_vParameters)
Constructs with the given intrinsic parameters.
static constexpr uint04 CAM_FISHEYE
Fisheye camera type identifier.
virtual Eigen::Vector3f unprojectEig(const cv::Point2f &p2D)=0
Unprojects a 2D point to a 3D ray as an Eigen vector.
virtual bool epipolarConstrain(GeometricCamera *otherCamera, const cv::KeyPoint &kp1, const cv::KeyPoint &kp2, const Eigen::Matrix3f &R12, const Eigen::Vector3f &t12, const float sigmaLevel, const float unc)=0
Checks whether two keypoints satisfy the epipolar constraint.
float getParameter(const int i)
Returns the i-th intrinsic parameter.
Buffer< float > mvParameters
Camera intrinsic parameters.
void setParameter(const float p, const uint04 i)
Sets the i-th intrinsic parameter.
uint04 size() const
Returns the number of intrinsic parameters.
uint04 mnType
Camera model type.
uint04 mnId
Unique camera identifier.
virtual Eigen::Matrix3f toK_()=0
Returns the camera calibration matrix as an Eigen matrix.
uint04 GetId()
Returns the unique camera id.
uint04 type() const
Returns the camera type (CAM_PINHOLE or CAM_FISHEYE).
virtual cv::Point2f project(const cv::Point3f &p3D)=0
Projects a 3D point to 2D image coordinates (cv::Point3f overload).
virtual cv::Point3f unproject(const cv::Point2f &p2D)=0
Unprojects a 2D point to a 3D point.
virtual cv::Mat toK()=0
Returns the camera calibration matrix as a cv::Mat.
The primary namespace for the NDEVR SDK.
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...