namespace mrpt::img::camera_geometry

Overview

Functions for pinhole camera models: point projection, distortion, and undistortion.

namespace camera_geometry {

// namespaces

namespace mrpt::img::camera_geometry::distortion;

// global functions

void projectPoints(
    const std::vector<mrpt::math::TPoint3D>& points3D,
    const mrpt::math::TPose3D& cameraPose,
    const mrpt::math::CMatrixDouble33& intrinsicParams,
    std::vector<mrpt::img::TPixelCoordf>& projectedPoints,
    bool acceptPointsBehind = false
    );

void projectPoints_with_distortion(
    const std::vector<mrpt::math::TPoint3D>& points3D,
    const mrpt::math::TPose3D& cameraPose,
    const mrpt::img::TCamera& cameraParams,
    std::vector<mrpt::img::TPixelCoordf>& projectedPoints,
    bool acceptPointsBehind = false
    );

void projectPoints_with_distortion(
    const std::vector<mrpt::math::TPoint3D>& points3D,
    const mrpt::img::TCamera& cameraParams,
    const mrpt::math::TPose3D& cameraPose,
    std::vector<mrpt::img::TPixelCoordf>& projectedPoints,
    bool acceptPointsBehind = false
    );

void projectPoint_with_distortion(
    const mrpt::math::TPoint3D& pointInCamFrame,
    const mrpt::img::TCamera& cameraParams,
    mrpt::img::TPixelCoordf& pixel,
    bool acceptPointsBehind = false
    );

template <bool INVERSE_CAM_POSE>
mrpt::img::TPixelCoordf projectPoint(
    const mrpt::img::TCamera& cameraParams,
    const mrpt::math::TPose3D& cameraPose,
    const mrpt::math::TPoint3D& point3D
    );

template <typename POINT>
mrpt::img::TPixelCoordf projectPoint(const POINT& pointInCamFrame, const mrpt::img::TCamera& cameraParams);

void undistort_points(
    const std::vector<mrpt::img::TPixelCoordf>& distortedPixels,
    std::vector<mrpt::img::TPixelCoordf>& undistortedPixels,
    const mrpt::img::TCamera& cameraParams
    );

void undistort_points(
    const std::vector<mrpt::img::TPixelCoordf>& distortedPixels,
    std::vector<mrpt::img::TPixelCoordf>& undistortedPixels,
    const mrpt::math::CMatrixDouble33& intrinsicParams,
    const std::vector<double>& distortionParams
    );

void undistort_point(const mrpt::img::TPixelCoordf& distortedPt, mrpt::img::TPixelCoordf& undistortedPt, const mrpt::img::TCamera& cameraParams);

void undistort_points_to_unit_plane(
    const std::vector<mrpt::img::TPixelCoordf>& distortedPixels,
    std::vector<mrpt::math::TPoint2D>& normalizedCoords,
    const mrpt::img::TCamera& cameraParams
    );

} // namespace camera_geometry