image_framework_ymj/include/open3d/t/pipelines/kernel/RGBDOdometryImpl.h

133 lines
6.1 KiB
C
Raw Normal View History

2024-12-06 16:25:16 +08:00
// ----------------------------------------------------------------------------
// - Open3D: www.open3d.org -
// ----------------------------------------------------------------------------
// Copyright (c) 2018-2023 www.open3d.org
// SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------
// Private header. Do not include in Open3d.h.
#pragma once
#include "open3d/core/Tensor.h"
namespace open3d {
namespace t {
namespace pipelines {
namespace kernel {
namespace odometry {
void ComputeOdometryResultPointToPlaneCPU(
const core::Tensor& source_vertex_map,
const core::Tensor& target_vertex_map,
const core::Tensor& source_normal_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
const float depth_outlier_trunc,
const float depth_huber_delta);
void ComputeOdometryResultIntensityCPU(
const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& source_intensity,
const core::Tensor& target_intensity,
const core::Tensor& target_intensity_dx,
const core::Tensor& target_intensity_dy,
const core::Tensor& source_vertex_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
const float depth_outlier_trunc,
const float intensity_huber_delta);
void ComputeOdometryResultHybridCPU(const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& source_intensity,
const core::Tensor& target_intensity,
const core::Tensor& target_depth_dx,
const core::Tensor& target_depth_dy,
const core::Tensor& target_intensity_dx,
const core::Tensor& target_intensity_dy,
const core::Tensor& source_vertex_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
float depth_outlier_trunc,
const float depth_huber_delta,
const float intensity_huber_delta);
void ComputeOdometryInformationMatrixCPU(const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& intrinsic,
const core::Tensor& source_to_target,
const float depth_outlier_trunc,
core::Tensor& information);
#ifdef BUILD_CUDA_MODULE
void ComputeOdometryResultPointToPlaneCUDA(
const core::Tensor& source_vertex_map,
const core::Tensor& target_vertex_map,
const core::Tensor& source_normal_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
const float depth_outlier_trunc,
const float depth_huber_delta);
void ComputeOdometryResultIntensityCUDA(
const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& source_intensity,
const core::Tensor& target_intensity,
const core::Tensor& target_intensity_dx,
const core::Tensor& target_intensity_dy,
const core::Tensor& source_vertex_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
const float depth_outlier_trunc,
const float intensity_huber_delta);
void ComputeOdometryResultHybridCUDA(const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& source_intensity,
const core::Tensor& target_intensity,
const core::Tensor& target_depth_dx,
const core::Tensor& target_depth_dy,
const core::Tensor& target_intensity_dx,
const core::Tensor& target_intensity_dy,
const core::Tensor& source_vertex_map,
const core::Tensor& intrinsics,
const core::Tensor& init_source_to_target,
core::Tensor& delta,
float& inlier_residual,
int& inlier_count,
const float depth_outlier_trunc,
const float depth_huber_delta,
const float intensity_huber_delta);
void ComputeOdometryInformationMatrixCUDA(const core::Tensor& source_depth,
const core::Tensor& target_depth,
const core::Tensor& intrinsic,
const core::Tensor& source_to_target,
const float square_dist_thr,
core::Tensor& information);
#endif
} // namespace odometry
} // namespace kernel
} // namespace pipelines
} // namespace t
} // namespace open3d