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