26 float &inlier_residual,
28 const float depth_outlier_trunc,
29 const float depth_huber_delta) {
52 source_vertex_map, target_vertex_map, target_normal_map,
53 intrinsics_d, trans_d, delta, inlier_residual, inlier_count,
54 depth_outlier_trunc, depth_huber_delta);
55 }
else if (device.
IsCUDA()) {
57 CUDA_CALL(ComputeOdometryResultPointToPlaneCUDA, source_vertex_map,
58 target_vertex_map, target_normal_map, intrinsics_d, trans_d,
59 delta, inlier_residual, inlier_count, depth_outlier_trunc,
76 float &inlier_residual,
78 const float depth_outlier_trunc,
79 const float intensity_huber_delta) {
108 if (device.
IsCPU()) {
110 source_depth, target_depth, source_intensity, target_intensity,
111 target_intensity_dx, target_intensity_dy, source_vertex_map,
112 intrinsics_d, trans_d, delta, inlier_residual, inlier_count,
113 depth_outlier_trunc, intensity_huber_delta);
114 }
else if (device.
IsCUDA()) {
116 CUDA_CALL(ComputeOdometryResultIntensityCUDA, source_depth,
117 target_depth, source_intensity, target_intensity,
118 target_intensity_dx, target_intensity_dy, source_vertex_map,
119 intrinsics_d, trans_d, delta, inlier_residual, inlier_count,
120 depth_outlier_trunc, intensity_huber_delta);
138 float &inlier_residual,
140 const float depth_outlier_trunc,
141 const float depth_huber_delta,
142 const float intensity_huber_delta) {
175 if (device.
IsCPU()) {
177 source_depth, target_depth, source_intensity, target_intensity,
178 target_depth_dx, target_depth_dy, target_intensity_dx,
179 target_intensity_dy, source_vertex_map, intrinsics_d, trans_d,
180 delta, inlier_residual, inlier_count, depth_outlier_trunc,
181 depth_huber_delta, intensity_huber_delta);
182 }
else if (device.
IsCUDA()) {
184 CUDA_CALL(ComputeOdometryResultHybridCUDA, source_depth, target_depth,
185 source_intensity, target_intensity, target_depth_dx,
186 target_depth_dy, target_intensity_dx, target_intensity_dy,
187 source_vertex_map, intrinsics_d, trans_d, delta,
188 inlier_residual, inlier_count, depth_outlier_trunc,
189 depth_huber_delta, intensity_huber_delta);
199 const float square_dist_thr,
219 source_vertex_map, target_vertex_map, intrinsic,
220 source_to_target, square_dist_thr, information);
222 CUDA_CALL(ComputeOdometryInformationMatrixCUDA, source_vertex_map,
223 target_vertex_map, intrinsic, source_to_target,
224 square_dist_thr, information);
#define CUDA_CALL(cuda_function,...)
#define AssertTensorDevice(tensor,...)
#define AssertTensorDtype(tensor,...)
#define AssertTensorDtypes(tensor,...)
#define AssertTensorShape(tensor,...)
When CUDA is not enabled, this is a dummy class.
bool IsCUDA() const
Returns true iff device type is CUDA.
DeviceType GetType() const
Returns type of the device, e.g. DeviceType::CPU, DeviceType::CUDA.
bool IsCPU() const
Returns true iff device type is CPU.
Tensor Contiguous() const
Device GetDevice() const override
Tensor To(Dtype dtype, bool copy=false) const
void ComputeOdometryInformationMatrixCPU(const core::Tensor &source_vertex_map, const core::Tensor &target_vertex_map, const core::Tensor &intrinsic, const core::Tensor &source_to_target, const float square_dist_thr, core::Tensor &information)
void ComputeOdometryResultIntensity(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, const float depth_outlier_trunc, const float depth_huber_delta, const float intensity_huber_delta)
void ComputeOdometryResultPointToPlane(const core::Tensor &source_vertex_map, const core::Tensor &target_vertex_map, const core::Tensor &target_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 ComputeOdometryResultPointToPlaneCPU(const core::Tensor &source_vertex_map, const core::Tensor &target_vertex_map, const core::Tensor &target_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 ComputeOdometryInformationMatrix(const core::Tensor &source_vertex_map, const core::Tensor &target_vertex_map, const core::Tensor &intrinsic, const core::Tensor &source_to_target, const float square_dist_thr, core::Tensor &information)
void ComputeOdometryResultHybrid(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 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)
Generic file read and write utility for python interface.