class sophus::KannalaBrandtK3TransformΒΆ

#include <kannala_brandt.h>

class KannalaBrandtK3Transform {
public:
    // typedefs

    using ProjInCameraZ1Plane = Eigen::Matrix<TScalar, 2, 1> ;
    using PixelImage = Eigen::Matrix<TScalar, 2, 1> ;
    using Params = Eigen::Matrix<TScalar, kNumParams, 1> ;
    using DistorationParams = Eigen::Matrix<TScalar, kNumDistortionParams, 1> ;

    // fields

    static constexpr int kNumDistortionParams = 4;
    static constexpr int kNumParams = kNumDistortionParams + 4;
    static constexpr const std::string_view kProjectionModel =       "KannalaBrandtK3: fx, fy, cx, cy, kb0, kb1, kb2, kb3";

    // methods

    template <class TParamsTypeT, class TPointTypeT>
    static PixelImage<typename TPointTypeT::Scalar> distort(
        Eigen::MatrixBase<TParamsTypeT> const& params,
        Eigen::MatrixBase<TPointTypeT> const& proj_point_in_camera_z1_plane
        );

    template <class TScalar>
    static ProjInCameraZ1Plane<TScalar> undistort(
        Params<TScalar> const& params,
        PixelImage<TScalar> const& pixel_image
        );

    template <class TParamsTypeT, class TPointTypeT>
    static Eigen::Matrix<typename TPointTypeT::Scalar, 2, 2> dxDistort(
        Eigen::MatrixBase<TParamsTypeT> const& params,
        Eigen::MatrixBase<TPointTypeT> const& proj_point_in_camera_z1_plane
        );
};