AliceVision
Photogrammetric Computer Vision Framework
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
aliceVision::camera::IntrinsicScaleOffsetDisto Class Referenceabstract

Class with disto. More...

#include <IntrinsicScaleOffsetDisto.hpp>

Inheritance diagram for aliceVision::camera::IntrinsicScaleOffsetDisto:
aliceVision::camera::IntrinsicScaleOffset aliceVision::camera::IntrinsicBase aliceVision::camera::Equidistant aliceVision::camera::Equirectangular aliceVision::camera::Pinhole

Public Member Functions

 IntrinsicScaleOffsetDisto (unsigned int w, unsigned int h, double scaleX, double scaleY, double offsetX, double offsetY, std::shared_ptr< Distortion > distortion=nullptr, std::shared_ptr< Undistortion > undistortion=nullptr)
 
 IntrinsicScaleOffsetDisto (const IntrinsicScaleOffsetDisto &other)
 
void assign (const IntrinsicBase &other) override
 Assign object. More...
 
bool operator== (const IntrinsicBase &otherBase) const override
 compare to another intrinsic object More...
 
bool equalTo (const IntrinsicBase &otherBase, bool ignoreDistortion) const
 compare to another intrinsic object More...
 
void setDistortionObject (std::shared_ptr< Distortion > object)
 
bool hasDistortion () const override
 Camera model handles a distortion field. More...
 
Vec2 addDistortion (const Vec2 &p) const override
 Create a new point from a given point by adding distortion. More...
 
Vec2 removeDistortion (const Vec2 &p) const override
 Create a new point from a given point by removing distortion. More...
 
Vec2 getUndistortedPixel (const Vec2 &p) const override
 Return the un-distorted pixel (with removed distortion)
 
Vec2 getDistortedPixel (const Vec2 &p) const override
 Return the distorted pixel (with added distortion)
 
std::size_t getDistortionParamsSize () const
 
std::vector< double > getDistortionParams () const
 
void setDistortionParams (const std::vector< double > &distortionParams)
 
template<class F >
void setDistortionParamsFn (F &&callback)
 
template<class F >
void setDistortionParamsFn (std::size_t count, F &&callback)
 
std::vector< double > getParameters () const override
 Get the intrinsic parameters. More...
 
std::size_t getParametersSize () const override
 Get the count of intrinsic parameters. More...
 
bool updateFromParams (const std::vector< double > &params) override
 Update intrinsic parameters. More...
 
float getMaximalDistortion ([[maybe_unused]] double minRadius, double maxRadius) const override
 
Eigen::Matrix< double, 2, 2 > getDerivativeAddDistoWrtPt (const Vec2 &pt) const
 
Eigen::Matrix< double, 2, 2 > getDerivativeRemoveDistoWrtPt (const Vec2 &pt) const
 
Eigen::MatrixXd getDerivativeAddDistoWrtDisto (const Vec2 &pt) const
 
Eigen::MatrixXd getDerivativeRemoveDistoWrtDisto (const Vec2 &pt) const
 
virtual Eigen::Matrix< double, 2, Eigen::Dynamic > getDerivativeTransformProjectWrtDistortion (const Eigen::Matrix4d &pose, const Vec4 &pt) const =0
 
virtual Eigen::Matrix< double, 3, Eigen::Dynamic > getDerivativeBackProjectUnitWrtDistortion (const Vec2 &pt2D) const =0
 
void setDistortionInitializationMode (EInitMode distortionInitializationMode) override
 Set The intrinsic disto initialization mode. More...
 
EInitMode getDistortionInitializationMode () const override
 Get the intrinsic disto initialization mode. More...
 
std::shared_ptr< DistortiongetDistortion () const
 
void setUndistortionObject (std::shared_ptr< Undistortion > object)
 
std::shared_ptr< UndistortiongetUndistortion () const
 
- Public Member Functions inherited from aliceVision::camera::IntrinsicScaleOffset
 IntrinsicScaleOffset (unsigned int w, unsigned int h, double scaleX, double scaleY, double offsetX, double offsetY)
 
void copyFrom (const IntrinsicScaleOffset &other)
 
void setScale (const Vec2 &scale)
 
Vec2 getScale () const
 
void setOffset (const Vec2 &offset)
 
Vec2 getOffset () const
 
const Vec2 getPrincipalPoint () const
 Principal point in image coordinate ((0,0) is image top-left).
 
Vec2 cam2ima (const Vec2 &p) const override
 Transform a point from the camera plane to the image plane. More...
 
virtual Eigen::Matrix2d getDerivativeCam2ImaWrtScale (const Vec2 &p) const
 
virtual Eigen::Matrix2d getDerivativeCam2ImaWrtPoint () const
 
virtual Eigen::Matrix2d getDerivativeCam2ImaWrtPrincipalPoint () const
 
Vec2 ima2cam (const Vec2 &p) const override
 Transform a point from the image plane to the camera plane. More...
 
virtual Eigen::Matrix< double, 2, 2 > getDerivativeIma2CamWrtScale (const Vec2 &p) const
 
virtual Eigen::Matrix2d getDerivativeIma2CamWrtPoint () const
 
virtual Eigen::Matrix2d getDerivativeIma2CamWrtPrincipalPoint () const
 
void rescale (float factorW, float factorH) override
 Rescale intrinsics to reflect a rescale of the camera image. More...
 
bool importFromParams (const std::vector< double > &params, const Version &inputVersion) override
 Import a vector of params loaded from a file. It is similar to updateFromParams but it deals with file compatibility. More...
 
void setInitialScale (const Vec2 &initialScale)
 Set the initial scale for the intrinsic (used to constrain minimization)
 
Vec2 getInitialScale () const
 Get the intrinsic initial scale. More...
 
void setRatioLocked (bool lock)
 Lock the ratio between fx and fy. More...
 
bool isRatioLocked () const
 
void setOffsetLocked (bool lock)
 Lock the offset. More...
 
bool isOffsetLocked () const
 
void setScaleLocked (bool lock)
 Lock the scale. More...
 
bool isScaleLocked () const
 
double getFocalLength () const
 get focal length in mm More...
 
double getInitialFocalLength () const
 get initial focal length in mm More...
 
double getPixelAspectRatio () const
 estimate the pixel aspect ratio More...
 
void setFocalLength (double focalLengthMM, double pixelAspectRatio, bool useCompatibility=false)
 
void setInitialFocalLength (double initialFocalLengthMM, double pixelAspectRatio, bool useCompatibility=false)
 
- Public Member Functions inherited from aliceVision::camera::IntrinsicBase
 IntrinsicBase (unsigned int width, unsigned int height, const std::string &serialNumber="")
 
bool isLocked () const
 Get the lock state of the intrinsic. More...
 
unsigned int w () const
 Get the intrinsic image width. More...
 
unsigned int h () const
 Get the intrinsic image height. More...
 
double sensorWidth () const
 Get the intrinsic sensor width. More...
 
double sensorHeight () const
 Get the intrinsic sensor height. More...
 
const std::string & serialNumber () const
 Get the intrinsic serial number. More...
 
EInitMode getInitializationMode () const
 Get the intrinsic initialization mode. More...
 
bool operator!= (const IntrinsicBase &other) const
 
Vec2 transformProject (const geometry::Pose3 &pose, const Vec4 &pt3D, bool applyDistortion=true) const
 Projection of a 3D point into the camera plane (Apply pose, disto (if any) and Intrinsics) More...
 
virtual Vec2 transformProject (const Eigen::Matrix4d &pose, const Vec4 &pt3D, bool applyDistortion=true) const =0
 Projection of a 3D point into the camera plane (Apply pose, disto (if any) and Intrinsics) More...
 
virtual Vec2 project (const Vec4 &pt3D, bool applyDistortion=true) const =0
 Projection of a 3D point into the camera plane (Apply disto (if any) and Intrinsics) More...
 
Vec3 backprojectTransform (const Vec2 &pt2D, bool applyUndistortion=true, const geometry::Pose3 &pose=geometry::Pose3(), double depth=1.0) const
 Back-projection of a 2D point at a specific depth into a 3D point. More...
 
Vec3 backProjectUnit (const Vec2 &pt2D) const
 Back-projection of a 2D point on a unitsphere. More...
 
Vec4 getCartesianfromSphericalCoordinates (const Vec3 &pt)
 
Eigen::Matrix< double, 4, 3 > getDerivativeCartesianfromSphericalCoordinates (const Vec3 &pt)
 
virtual Eigen::Matrix< double, 2, 3 > getDerivativeTransformProjectWrtPoint3 (const Eigen::Matrix4d &pose, const Vec4 &pt3D) const =0
 Get the derivative of a projection of a 3D point into the camera plane. More...
 
virtual Eigen::Matrix< double, 2, Eigen::Dynamic > getDerivativeTransformProjectWrtParams (const Eigen::Matrix4d &pos, const Vec4 &pt3D) const =0
 Get the derivative of a projection of a 3D point into the camera plane. More...
 
virtual Eigen::Matrix< double, 3, Eigen::Dynamic > getDerivativeBackProjectUnitWrtParams (const Vec2 &pt2D) const =0
 Get the derivative of the unit sphere backprojection. More...
 
Vec2 residual (const geometry::Pose3 &pose, const Vec4 &X, const Vec2 &x, bool applyDistortion=true) const
 Compute the residual between the 3D projected point X and an image observation x. More...
 
Mat2X residuals (const geometry::Pose3 &pose, const Mat3X &X, const Mat2X &x) const
 Compute the residuals between the 3D projected point X and an image observation x. More...
 
void lock ()
 Lock the intrinsic.
 
void unlock ()
 Unlock the intrinsic.
 
void setWidth (unsigned int width)
 Set the intrinsic image width. More...
 
void setHeight (unsigned int height)
 Set the intrinsic image height. More...
 
void setSensorWidth (double width)
 Set the intrinsic sensor width. More...
 
void setSensorHeight (double height)
 Set the intrinsic sensor height. More...
 
void setSerialNumber (const std::string &serialNumber)
 Set the serial number. More...
 
void setInitializationMode (EInitMode initializationMode)
 Set the intrinsic initialization mode. More...
 
virtual IntrinsicBaseclone () const =0
 Polymorphic clone.
 
virtual EINTRINSIC getType () const =0
 Get embed camera type. More...
 
std::string getTypeStr () const
 Get the string describing the intrinsic type. More...
 
virtual double imagePlaneToCameraPlaneError (double value) const =0
 Normalize a given unit pixel error to the camera plane. More...
 
virtual double pixelProbability () const =0
 What is the probability of a pixel wrt the whole fov. More...
 
virtual bool isValid () const
 Return true if the intrinsic is valid. More...
 
virtual bool isVisibleRay (const Vec3 &ray) const =0
 Return true if this ray should be visible in the image. More...
 
virtual bool isVisible (const Vec2 &pix) const
 Return true if these pixel coordinates should be visible in the image. More...
 
virtual bool isVisible (const Vec2f &pix) const
 Return true if these pixel coordinates should be visible in the image. More...
 
virtual float getMaximalDistortion (double minRadius, double maxRadius) const
 Assuming the distortion is a function of radius, estimate the maximal undistorted radius for a range of distorted radius. More...
 
virtual std::size_t hashValue () const
 Generate an unique Hash from the camera parameters (used for grouping) More...
 
virtual Vec3 toUnitSphere (const Vec2 &pt) const =0
 Transform a given point (in pixels) to unit sphere in meters. More...
 
virtual double getHorizontalFov () const =0
 Get the horizontal FOV in radians. More...
 
virtual double getVerticalFov () const =0
 Get the vertical FOV in radians. More...
 
virtual void initializeState ()
 Initialize state with default values The estimator state is used in the bundle adjustment to decide if we update it. It is set to constant if the intrinsic is locked It is set to refined if unlocked.
 
EEstimatorParameterState getState () const
 accessor to estimator state More...
 
void setState (EEstimatorParameterState state)
 mutator for the estimator state More...
 

Static Public Member Functions

static std::shared_ptr< IntrinsicScaleOffsetDistocast (std::shared_ptr< IntrinsicBase > sptr)
 
- Static Public Member Functions inherited from aliceVision::camera::IntrinsicScaleOffset
static std::shared_ptr< IntrinsicScaleOffsetcast (std::shared_ptr< IntrinsicBase > sptr)
 

Protected Member Functions

void throwSetDistortionParamsCountError (std::size_t expected, std::size_t received)
 

Protected Attributes

std::shared_ptr< Distortion_pDistortion
 
std::shared_ptr< Undistortion_pUndistortion
 
EInitMode _distortionInitializationMode = EInitMode::NONE
 
- Protected Attributes inherited from aliceVision::camera::IntrinsicScaleOffset
bool _ratioLocked {true}
 
bool _offsetLocked {false}
 
bool _scaleLocked {false}
 
Vec2 _scale {1.0, 1.0}
 
Vec2 _offset {0.0, 0.0}
 
Vec2 _initialScale {-1.0, -1.0}
 
- Protected Attributes inherited from aliceVision::camera::IntrinsicBase
std::string _serialNumber
 
double _sensorWidth = 36.0
 
double _sensorHeight = 24.0
 
unsigned int _w = 0
 
unsigned int _h = 0
 
EInitMode _initializationMode = EInitMode::NONE
 initialization mode
 
bool _locked = false
 intrinsic lock
 
EEstimatorParameterState _state = EEstimatorParameterState::REFINED
 

Additional Inherited Members

- Public Types inherited from aliceVision::camera::IntrinsicBase
using sptr = std::shared_ptr< IntrinsicBase >
 
using ptr = IntrinsicBase *
 

Detailed Description

Class with disto.

Member Function Documentation

◆ addDistortion()

Vec2 aliceVision::camera::IntrinsicScaleOffsetDisto::addDistortion ( const Vec2 &  p) const
inlineoverridevirtual

Create a new point from a given point by adding distortion.

Parameters
[in]pPoint in the camera plane.
Returns
Distorted point in the camera plane.

Implements aliceVision::camera::IntrinsicBase.

◆ assign()

void aliceVision::camera::IntrinsicScaleOffsetDisto::assign ( const IntrinsicBase other)
inlineoverridevirtual

Assign object.

Parameters
[in]other

Implements aliceVision::camera::IntrinsicBase.

Reimplemented in aliceVision::camera::Pinhole.

◆ equalTo()

bool aliceVision::camera::IntrinsicScaleOffsetDisto::equalTo ( const IntrinsicBase otherBase,
bool  ignoreDistortion 
) const

compare to another intrinsic object

 

Parameters
otherBasean intrinsic object to compare to.
ignoreDistortionignore difference in distortion.
Returns
true if both objects are considered equal

◆ getDistortionInitializationMode()

EInitMode aliceVision::camera::IntrinsicScaleOffsetDisto::getDistortionInitializationMode ( ) const
inlineoverridevirtual

Get the intrinsic disto initialization mode.

Returns
The intrinsic disto initialization mode

Implements aliceVision::camera::IntrinsicBase.

◆ getParameters()

std::vector<double> aliceVision::camera::IntrinsicScaleOffsetDisto::getParameters ( ) const
inlineoverridevirtual

Get the intrinsic parameters.

Returns
Intrinsic parameters as a vector

Implements aliceVision::camera::IntrinsicBase.

◆ getParametersSize()

std::size_t aliceVision::camera::IntrinsicScaleOffsetDisto::getParametersSize ( ) const
inlineoverridevirtual

Get the count of intrinsic parameters.

Returns
The number of intrinsic parameters

Implements aliceVision::camera::IntrinsicBase.

◆ hasDistortion()

bool aliceVision::camera::IntrinsicScaleOffsetDisto::hasDistortion ( ) const
inlineoverridevirtual

Camera model handles a distortion field.

Returns
True if the camera model handles a distortion field

Reimplemented from aliceVision::camera::IntrinsicBase.

◆ operator==()

bool aliceVision::camera::IntrinsicScaleOffsetDisto::operator== ( const IntrinsicBase otherBase) const
overridevirtual

compare to another intrinsic object

 

Parameters
otherBasean intrinsic object to compare to.
Returns
true if both objects are considered equal

Reimplemented from aliceVision::camera::IntrinsicScaleOffset.

◆ removeDistortion()

Vec2 aliceVision::camera::IntrinsicScaleOffsetDisto::removeDistortion ( const Vec2 &  p) const
inlineoverridevirtual

Create a new point from a given point by removing distortion.

Parameters
[in]pPoint in the camera plane.
Returns
Undistorted point in the camera plane.

Implements aliceVision::camera::IntrinsicBase.

◆ setDistortionInitializationMode()

void aliceVision::camera::IntrinsicScaleOffsetDisto::setDistortionInitializationMode ( EInitMode  distortionInitializationMode)
inlineoverridevirtual

Set The intrinsic disto initialization mode.

Parameters
[in]distortionInitializationModeThe intrintrinsic distortion initialization mode enum

Implements aliceVision::camera::IntrinsicBase.

◆ updateFromParams()

bool aliceVision::camera::IntrinsicScaleOffsetDisto::updateFromParams ( const std::vector< double > &  params)
overridevirtual

Update intrinsic parameters.

Parameters
[in]intrinsicparameters
Returns
True if the parameters were successfully updated, false otherwise

Reimplemented from aliceVision::camera::IntrinsicScaleOffset.


The documentation for this class was generated from the following files: