41 #include <pcl/gpu/containers/device_array.h>
42 #include <pcl/gpu/kinfu/pixel_rgb.h>
43 #include <pcl/gpu/kinfu/tsdf_volume.h>
44 #include <pcl/gpu/kinfu/color_volume.h>
45 #include <pcl/gpu/kinfu/raycaster.h>
47 #include <pcl/point_cloud.h>
52 #define KINFU_DEFAULT_RGB_FOCAL_X 525.f
53 #define KINFU_DEFAULT_RGB_FOCAL_Y 525.f
56 #define KINFU_DEFAULT_DEPTH_FOCAL_X 585.f
57 #define KINFU_DEFAULT_DEPTH_FOCAL_Y 585.f
91 setDepthIntrinsics (
float fx,
float fy,
float cx = -1,
float cy = -1);
100 getDepthIntrinsics (
float& fx,
float& fy,
float& cx,
float& cy);
107 setInitalCameraPose (
const Eigen::Affine3f& pose);
114 setDepthTruncationForICP (
float max_icp_distance = 0.f);
121 setIcpCorespFilteringParams (
float distThreshold,
float sineOfAngle);
128 setCameraMovementThreshold(
float threshold = 0.001f);
134 initColorIntegration(
int max_weight = -1);
149 bool operator() (
const DepthMap& depth, Eigen::Affine3f* hint=
nullptr);
156 bool operator() (
const DepthMap& depth,
const View& colors);
163 getCameraPose (
int time = -1)
const;
167 getNumberOfPoses ()
const;
185 getImage (
View& view)
const;
213 using Matrix3frm = Eigen::Matrix<float, 3, 3, Eigen::RowMajor>;
214 using Vector3f = Eigen::Vector3f;
224 float max_icp_distance_;
227 float fx_, fy_, cx_, cy_;
234 Matrix3frm init_Rcam_;
240 int icp_iterations_[LEVELS];
247 std::vector<DepthMap> depths_curr_;
249 std::vector<MapArr> vmaps_g_curr_;
251 std::vector<MapArr> nmaps_g_curr_;
254 std::vector<MapArr> vmaps_g_prev_;
256 std::vector<MapArr> nmaps_g_prev_;
259 std::vector<MapArr> vmaps_curr_;
261 std::vector<MapArr> nmaps_curr_;
264 std::vector<CorespMap> coresps_;
275 std::vector<Matrix3frm> rmats_;
278 std::vector<Vector3f> tvecs_;
281 float integration_metric_threshold_;
291 allocateBufffers (
int rows_arg,
int cols_arg);