libCalib
C++ library documentation
libCalib::CameraModelOpenCV Class Reference

#include <CameraModelOpenCV.h>

+ Inheritance diagram for libCalib::CameraModelOpenCV:

Public Types

enum  ParameterIdx {
  fIdx = 0 , arIdx , cxIdx , cyIdx ,
  k1Idx , k2Idx , k3Idx , k4Idx ,
  k5Idx , k6Idx , p1Idx , p2Idx ,
  s1Idx , s2Idx , s3Idx , s4Idx ,
  tauXIdx , tauYIdx
}
 

Public Member Functions

ParameterReference f ()
 
ParameterReference ar ()
 
ParameterReference cx ()
 
ParameterReference cy ()
 
ParameterReference k1 ()
 
ParameterReference k2 ()
 
ParameterReference k3 ()
 
ParameterReference k4 ()
 
ParameterReference k5 ()
 
ParameterReference k6 ()
 
ParameterReference p1 ()
 
ParameterReference p2 ()
 
ParameterReference s1 ()
 
ParameterReference s2 ()
 
ParameterReference s3 ()
 
ParameterReference s4 ()
 
ParameterReference tauX ()
 
ParameterReference tauY ()
 
template<class Archive >
void serialize (Archive &ar)
 
bool checkValidity (const double X, const double Y, const double Z)
 
- Public Member Functions inherited from libCalib::CameraModelCRT< CameraModelOpenCV >
std::unique_ptr< ceres::CostFunction > newCostFunction (const Point2 &imagePoint) const override
 
double getVal (const std::string &name) const override
 
double getVal (const int idx) const override
 
double * getValsPtr () override
 
std::vector< double > getVals () const override
 
void setVals (const std::vector< double > &vals) override
 
bool setVal (const std::string name, const double val) override
 
bool setVal (const int idx, const double val) override
 
bool setState (const std::string name, const ParameterState state) override
 
ParameterState getState (const std::string name) override
 
std::vector< int > getConstantIds () const override
 
int getNParams () const override
 
const std::string getName () const override
 
std::vector< ParameterNamegetParameterNames () const override
 
bool projectPoint (const double X, const double Y, const double Z, double &u, double &v) const override
 
bool unprojectPoint (const double &u, const double &v, double &X, double &Y, double &Z) const override
 
virtual void getUndistortionMaps (Image< float > &mapU, Image< float > &mapV, Matrix< double, 3, 3 > &K) const override
 
virtual void getUnprojectionMaps (Image< float > &mapX, Image< float > &mapY) const override
 
std::string toString () const override
 
std::unique_ptr< CameraModelBaseclone () const override
 
virtual void initialize (const double f, const double ar, const double cx, const double cy, const double k1) override
 
virtual std::unique_ptr< ceres::CostFunction > regularizationFunction (const int nResiduals) const override
 
void serialize (Archive &ar)
 
 CameraModelBase (const ImageSize imageSize)
 
 CameraModelBase ()
 
- Public Member Functions inherited from libCalib::CameraModelBase
 CameraModelBase (const ImageSize imageSize)
 
template<class Archive >
void serialize (Archive &ar)
 

Static Public Member Functions

static const std::string name ()
 
static const std::array< ParameterName, nParameters > parameterNames ()
 
template<typename T >
static bool distort (const T &x, const T &y, T &xd, T &yd, const T *params)
 
template<typename T >
static bool project (const T &X, const T &Y, const T &Z, T &u, T &v, const T *params)
 
template<typename T >
static bool unproject (const T &u, const T &v, T &X, T &Y, T &Z, const T *params)
 

Public Attributes

Parameters< nParameters > parameters
 
- Public Attributes inherited from libCalib::CameraModelBase
ImageSize imageSize
 

Static Public Attributes

static const int nParameters {18}
 

Detailed Description

OpenCV's augmented Brown-Conrady camera model with all parameters available in OpenCV 4.x. Note that fx = f and fy = f*ar.

Brown, Duane C. (May 1966). "Decentering distortion of lenses" (PDF). Photogrammetric Engineering. 32 (3): 444–462. Conrady, A. E. (1919). "Decentred Lens-Systems". Monthly Notices of the Royal Astronomical Society. 79 (5): 384.

Member Data Documentation

◆ parameters

Parameters<nParameters> libCalib::CameraModelOpenCV::parameters
Initial value:
= Parameters<nParameters>(
parameterNames(),
{1.0, 1.0, imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0})