Class EquidistantDistortion

Inheritance Relationships

Base Type

Class Documentation

class aslam::EquidistantDistortion : public aslam::Cloneable<Distortion, EquidistantDistortion>

An implementation of the equidistant distortion model for pinhole cameras.

See “A Generic Camera Model and Calibration Method for Conventional, Wide-Angle, and

Fish-Eye Lenses” by Juho Kannala and Sami S. Brandt for further information. The ordering of the parameter vector is: k1 k2 k3 k4 NOTE: The inverse transformation (undistort) in this case is not available in closed form and so it is computed iteratively!

Constructors/destructors and operators

explicit EquidistantDistortion(const Eigen::VectorXd &distortionParams)

EquidistantDistortion Ctor.

Parameters
  • [in] distortionParams: Vector containing the distortion parameter. (dim=4: k1, k2, k3, k4)

EquidistantDistortion(const EquidistantDistortion&) = default

Copy constructor for clone operation.

void operator=(const EquidistantDistortion&) = delete
friend friend std::ostream & operator<< (std::ostream &out, const EquidistantDistortion &distortion)

Convenience function to print the state using streams.

Distort methods: applies the distortion model to a point.

virtual void distortUsingExternalCoefficients(const Eigen::VectorXd *dist_coeffs, Eigen::Vector2d *point, Eigen::Matrix2d *out_jacobian) const

Apply distortion to a point in the normalized image plane using provided distortion coefficients.

External distortion coefficients can be specified using this function. (Ignores the internally stored parameters.

Parameters
  • [in] dist_coeffs: Vector containing the coefficients for the distortion model. NOTE: If nullptr, use internal distortion parameters.

  • [inout] point: The point in the normalized image plane. After the function, this point is distorted.

  • [out] out_jacobian: The Jacobian of the distortion function with respect to small changes in the input point. If NULL is passed, the Jacobian calculation is skipped.

template<typename ScalarType>
void distortUsingExternalCoefficients(const Eigen::Map<Eigen::Matrix<ScalarType, Eigen::Dynamic, 1>> *dist_coeffs, const Eigen::Matrix<ScalarType, 2, 1> &point, Eigen::Matrix<ScalarType, 2, 1> *out_point) const

Templated version of the distortExternalCoeffs function.

Parameters
  • [in] dist_coeffs: Vector containing the coefficients for the distortion model.

  • [in] point: The point in the normalized image plane. After the function, this point is distorted.

  • [out] out_point: The distorted point.

virtual void distortParameterJacobian(const Eigen::VectorXd *dist_coeffs, const Eigen::Vector2d &point, Eigen::Matrix<double, 2, Eigen::Dynamic> *out_jacobian) const

Apply distortion to the point and provide the Jacobian of the distortion with respect to small changes in the distortion parameters.

Parameters
  • [in] dist_coeffs: Vector containing the coefficients for the distortion model. NOTE: If nullptr, use internal distortion parameters.

  • [in] point: The point in the normalized image plane.

  • [out] out_jacobian: The Jacobian of the distortion with respect to small changes in the distortion parameters.

Undistort methods: Removes the modeled distortion effects from a point.

virtual void undistortUsingExternalCoefficients(const Eigen::VectorXd &dist_coeffs, Eigen::Vector2d *point) const

Apply undistortion to recover a point in the normalized image plane using provided distortion coefficients.

External distortion coefficients can be specified using this function. Ignores the internally stored parameters.

Parameters
  • [in] dist_coeffs: Vector containing the coefficients for the distortion model.

  • [inout] point: The distorted point. After the function, this point is in the normalized image plane.

Methods to support unit testing.

static inline EquidistantDistortion::UniquePtr createTestDistortion()

Create a test distortion object for unit testing.

static inline EquidistantDistortion::UniquePtr createZeroTestDistortion()

Create a test distortion object for unit testing with null distortion.

Methods to set/get distortion parameters

virtual bool distortionParametersValid(const Eigen::VectorXd &dist_coeffs) const

Check the validity of distortion parameters.

Return

If the distortion parameters are valid.

Parameters
  • [in] dist_coeffs: Vector containing the coefficients. Parameters will NOT be stored.

inline virtual int getParameterSize() const

Returns the number of parameters used in the distortion model.

NOTE: Use the constexpr function parameterCount if you know the exact distortion type.

virtual void printParameters(std::ostream &out, const std::string &text) const

Print the internal parameters of the distortion in a human-readable form Print to the ostream that is passed in.

The text is extra text used by the calling function to distinguish cameras.

static bool areParametersValid(const Eigen::VectorXd &parameters)

Static function that checks whether the given intrinsic parameters are valid for this model.

static inline constexpr size_t parameterCount()

Returns the number of parameters used in this distortion model.

Public Types

enum [anonymous]

Number of parameters used for this distortion model.

Values:

enumerator kNumOfParams
enum [anonymous]

Values:

enumerator CLASS_SERIALIZATION_VERSION

Public Functions

ASLAM_POINTER_TYPEDEFS(EquidistantDistortion)