Simplify triangulation API with config struct
This commit is contained in:
+25
-32
@@ -150,43 +150,44 @@ struct TriangulationOptions
|
||||
size_t min_group_size = 1;
|
||||
};
|
||||
|
||||
struct TriangulationConfig
|
||||
{
|
||||
std::vector<Camera> cameras;
|
||||
std::array<std::array<float, 3>, 2> roomparams {{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}};
|
||||
std::vector<std::string> joint_names;
|
||||
TriangulationOptions options;
|
||||
};
|
||||
|
||||
// =================================================================================================
|
||||
|
||||
std::vector<PairCandidate> build_pair_candidates(const PoseBatch2DView &poses_2d);
|
||||
|
||||
PreviousPoseFilterDebug filter_pairs_with_previous_poses(
|
||||
const PoseBatch2DView &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3DView &previous_poses_3d,
|
||||
const TriangulationOptions &options = {});
|
||||
const TriangulationOptions *options_override = nullptr);
|
||||
|
||||
inline PreviousPoseFilterDebug filter_pairs_with_previous_poses(
|
||||
const PoseBatch2D &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3D &previous_poses_3d,
|
||||
const TriangulationOptions &options = {})
|
||||
const TriangulationOptions *options_override = nullptr)
|
||||
{
|
||||
return filter_pairs_with_previous_poses(
|
||||
poses_2d.view(), cameras, joint_names, previous_poses_3d.view(), options);
|
||||
return filter_pairs_with_previous_poses(poses_2d.view(), config, previous_poses_3d.view(), options_override);
|
||||
}
|
||||
|
||||
TriangulationTrace triangulate_debug(
|
||||
const PoseBatch2DView &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::array<std::array<float, 3>, 2> &roomparams,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3DView *previous_poses_3d = nullptr,
|
||||
const TriangulationOptions &options = {});
|
||||
const TriangulationOptions *options_override = nullptr);
|
||||
|
||||
inline TriangulationTrace triangulate_debug(
|
||||
const PoseBatch2D &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::array<std::array<float, 3>, 2> &roomparams,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3D *previous_poses_3d = nullptr,
|
||||
const TriangulationOptions &options = {})
|
||||
const TriangulationOptions *options_override = nullptr)
|
||||
{
|
||||
PoseBatch3DView previous_view_storage;
|
||||
const PoseBatch3DView *previous_view = nullptr;
|
||||
@@ -195,8 +196,7 @@ inline TriangulationTrace triangulate_debug(
|
||||
previous_view_storage = previous_poses_3d->view();
|
||||
previous_view = &previous_view_storage;
|
||||
}
|
||||
return triangulate_debug(
|
||||
poses_2d.view(), cameras, roomparams, joint_names, previous_view, options);
|
||||
return triangulate_debug(poses_2d.view(), config, previous_view, options_override);
|
||||
}
|
||||
|
||||
// =================================================================================================
|
||||
@@ -205,28 +205,22 @@ inline TriangulationTrace triangulate_debug(
|
||||
* Calculate a triangulation using a padded pose tensor.
|
||||
*
|
||||
* @param poses_2d Padded poses of shape [views, max_persons, joints, 3].
|
||||
* @param cameras List of cameras.
|
||||
* @param roomparams Room parameters (room size, room center).
|
||||
* @param joint_names List of 2D joint names.
|
||||
* @param options Triangulation options.
|
||||
* @param config Triangulation configuration (cameras, room parameters, joint names, options).
|
||||
* @param options_override Optional per-call options override. Defaults to config.options.
|
||||
*
|
||||
* @return Pose tensor of shape [persons, joints, 4].
|
||||
*/
|
||||
PoseBatch3D triangulate_poses(
|
||||
const PoseBatch2DView &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::array<std::array<float, 3>, 2> &roomparams,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3DView *previous_poses_3d = nullptr,
|
||||
const TriangulationOptions &options = {});
|
||||
const TriangulationOptions *options_override = nullptr);
|
||||
|
||||
inline PoseBatch3D triangulate_poses(
|
||||
const PoseBatch2D &poses_2d,
|
||||
const std::vector<Camera> &cameras,
|
||||
const std::array<std::array<float, 3>, 2> &roomparams,
|
||||
const std::vector<std::string> &joint_names,
|
||||
const TriangulationConfig &config,
|
||||
const PoseBatch3D *previous_poses_3d = nullptr,
|
||||
const TriangulationOptions &options = {})
|
||||
const TriangulationOptions *options_override = nullptr)
|
||||
{
|
||||
PoseBatch3DView previous_view_storage;
|
||||
const PoseBatch3DView *previous_view = nullptr;
|
||||
@@ -235,6 +229,5 @@ inline PoseBatch3D triangulate_poses(
|
||||
previous_view_storage = previous_poses_3d->view();
|
||||
previous_view = &previous_view_storage;
|
||||
}
|
||||
return triangulate_poses(
|
||||
poses_2d.view(), cameras, roomparams, joint_names, previous_view, options);
|
||||
return triangulate_poses(poses_2d.view(), config, previous_view, options_override);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user