5 #ifndef IFM3D_DISTANCE_IMAGE_INFO_H
6 #define IFM3D_DISTANCE_IMAGE_INFO_H
10 #include <ifm3d/fg/buffer.h>
14 #include <ifm3d/fg/module_frame_grabber.h>
18 constexpr
auto CHUNK_SIZE_INFO_OFFSET = 4;
19 constexpr
auto HEADER_SIZE_INFO_OFFSET = 8;
20 constexpr
auto HEADER_VERSION_INFO_OFFSET = 12;
21 constexpr
auto DISTANCE_IMAGE_INFO_DATA_SIZE = 360;
23 constexpr
auto NR_MODEL_PARAMS = 32;
24 constexpr
auto AMPL_NORM_FACTOR_VECTOR_SIZE = 3;
25 constexpr
auto EXTR_OPTIC_USER_VECTOR_SIZE = 6;
28 enum class ExtrinsicParam : std::uint32_t
44 std::array<float, NR_MODEL_PARAMS> model_parameters;
49 float _dist_resolution;
50 float _ampl_resolution;
51 std::vector<float> _amp_norm_factors;
52 std::vector<float> _extrinsic_optic_to_user;
55 std::vector<std::uint16_t> _u16_distance_buffer;
56 std::vector<std::uint16_t> _u16_amplitude_buffer;
57 std::uint32_t _width, _height;
58 std::vector<uint64_t> _timestamps_nsec;
59 std::vector<float> _exposure_times_sec;
68 const std::vector<float>& amp_norm_fctrs,
69 const std::vector<float>& extr_opt_to_usr,
72 const std::vector<std::uint16_t>& distance_buffer,
73 const std::vector<std::uint16_t>& amplitude_buffer,
74 const std::vector<uint64_t>& timestamps_nsec,
75 const std::vector<float>& exposure_times_sec,
77 std::uint32_t height);
79 std::vector<std::uint8_t> GetXyzdVector();
80 std::vector<std::uint8_t> GetAmplitudeVector();
83 GetExtrinsicOpticToUser()
85 return _extrinsic_optic_to_user;
89 GetIntrinsicCalibration()
91 return _intrinsic_calibration;
95 GetInverseIntrinsicCalibration()
97 return _inverse_intrinsic_calibration;
103 return (_width * _height);
121 std::vector<uint64_t>
124 return _timestamps_nsec;
134 return _exposure_times_sec;
144 using DistanceImageInfoPtr = std::unique_ptr<DistanceImageInfo>;
145 IFM3D_EXPORT DistanceImageInfoPtr
146 create_distance_image_info(
const std::vector<std::uint8_t>& data_buffer,
147 std::size_t distimageinfo_idx,
148 std::size_t dist_idx,
151 std::uint32_t height);
154 #endif // IFM3D_DISTANCE_IMAGE_INFO_H