namespace mrpt::obs::detailΒΆ

namespace detail {

// structs

struct TLevMarData;

// global functions

template <class POINTMAP>
void unprojectInto(
    mrpt::obs::CObservation3DRangeScan& src_obs,
    POINTMAP& dest_pointcloud,
    const mrpt::obs::T3DPointsProjectionParams& projectParams,
    const mrpt::obs::TRangeImageFilterParams& filterParams
    );

template <class POINTMAP>
void do_project_3d_pointcloud(
    const int H,
    const int W,
    const float* kxs,
    const float* kys,
    const float* kzs,
    mrpt::math::CMatrix_u16& rangeImage,
    const float rangeUnits,
    mrpt::opengl::PointCloudAdapter<POINTMAP>& pca,
    std::vector<uint16_t>& idxs_x,
    std::vector<uint16_t>& idxs_y,
    const mrpt::obs::TRangeImageFilterParams& fp,
    bool MAKE_ORGANIZED,
    const int DECIM
    );

template <class POINTMAP>
void do_project_3d_pointcloud_SSE2(
    const int H,
    const int W,
    const float* kxs,
    const float* kys,
    const float* kzs,
    mrpt::math::CMatrix_u16& rangeImage,
    const float rangeUnits,
    mrpt::opengl::PointCloudAdapter<POINTMAP>& pca,
    std::vector<uint16_t>& idxs_x,
    std::vector<uint16_t>& idxs_y,
    const mrpt::obs::TRangeImageFilterParams& fp,
    bool MAKE_ORGANIZED
    );

template <typename POINTMAP>
void range2XYZ_LUT(
    mrpt::opengl::PointCloudAdapter<POINTMAP>& pca,
    mrpt::obs::CObservation3DRangeScan& src_obs,
    const mrpt::obs::T3DPointsProjectionParams& pp,
    const mrpt::obs::TRangeImageFilterParams& fp,
    const int H,
    const int W,
    const int DECIM,
    const bool use_rotated_LUT
    );

static void cam2vec(
    const TCamera& camPar,
    CVectorDouble& x
    );

static void vec2cam(
    const CVectorDouble& x,
    TCamera& camPar
    );

static void cost_func(
    const CVectorDouble& par,
    const TLevMarData& d,
    CVectorDouble& err
    );

} // namespace detail