Open3D (C++ API)  0.16.0
RGBDOdometryImpl.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27// Private header. Do not include in Open3d.h.
28#pragma once
29
30#include "open3d/core/Tensor.h"
31
32namespace open3d {
33namespace t {
34namespace pipelines {
35namespace kernel {
36namespace odometry {
37
39 const core::Tensor& source_vertex_map,
40 const core::Tensor& target_vertex_map,
41 const core::Tensor& source_normal_map,
42 const core::Tensor& intrinsics,
43 const core::Tensor& init_source_to_target,
44 core::Tensor& delta,
45 float& inlier_residual,
46 int& inlier_count,
47 const float depth_outlier_trunc,
48 const float depth_huber_delta);
49
51 const core::Tensor& source_depth,
52 const core::Tensor& target_depth,
53 const core::Tensor& source_intensity,
54 const core::Tensor& target_intensity,
55 const core::Tensor& target_intensity_dx,
56 const core::Tensor& target_intensity_dy,
57 const core::Tensor& source_vertex_map,
58 const core::Tensor& intrinsics,
59 const core::Tensor& init_source_to_target,
60 core::Tensor& delta,
61 float& inlier_residual,
62 int& inlier_count,
63 const float depth_outlier_trunc,
64 const float intensity_huber_delta);
65
66void ComputeOdometryResultHybridCPU(const core::Tensor& source_depth,
67 const core::Tensor& target_depth,
68 const core::Tensor& source_intensity,
69 const core::Tensor& target_intensity,
70 const core::Tensor& target_depth_dx,
71 const core::Tensor& target_depth_dy,
72 const core::Tensor& target_intensity_dx,
73 const core::Tensor& target_intensity_dy,
74 const core::Tensor& source_vertex_map,
75 const core::Tensor& intrinsics,
76 const core::Tensor& init_source_to_target,
77 core::Tensor& delta,
78 float& inlier_residual,
79 int& inlier_count,
80 float depth_outlier_trunc,
81 const float depth_huber_delta,
82 const float intensity_huber_delta);
83#ifdef BUILD_CUDA_MODULE
84
85void ComputeOdometryResultPointToPlaneCUDA(
86 const core::Tensor& source_vertex_map,
87 const core::Tensor& target_vertex_map,
88 const core::Tensor& source_normal_map,
89 const core::Tensor& intrinsics,
90 const core::Tensor& init_source_to_target,
91 core::Tensor& delta,
92 float& inlier_residual,
93 int& inlier_count,
94 const float depth_outlier_trunc,
95 const float depth_huber_delta);
96
97void ComputeOdometryResultIntensityCUDA(
98 const core::Tensor& source_depth,
99 const core::Tensor& target_depth,
100 const core::Tensor& source_intensity,
101 const core::Tensor& target_intensity,
102 const core::Tensor& target_intensity_dx,
103 const core::Tensor& target_intensity_dy,
104 const core::Tensor& source_vertex_map,
105 const core::Tensor& intrinsics,
106 const core::Tensor& init_source_to_target,
107 core::Tensor& delta,
108 float& inlier_residual,
109 int& inlier_count,
110 const float depth_outlier_trunc,
111 const float intensity_huber_delta);
112
113void ComputeOdometryResultHybridCUDA(const core::Tensor& source_depth,
114 const core::Tensor& target_depth,
115 const core::Tensor& source_intensity,
116 const core::Tensor& target_intensity,
117 const core::Tensor& target_depth_dx,
118 const core::Tensor& target_depth_dy,
119 const core::Tensor& target_intensity_dx,
120 const core::Tensor& target_intensity_dy,
121 const core::Tensor& source_vertex_map,
122 const core::Tensor& intrinsics,
123 const core::Tensor& init_source_to_target,
124 core::Tensor& delta,
125 float& inlier_residual,
126 int& inlier_count,
127 const float depth_outlier_trunc,
128 const float depth_huber_delta,
129 const float intensity_huber_delta);
130#endif
131
132} // namespace odometry
133} // namespace kernel
134} // namespace pipelines
135} // namespace t
136} // namespace open3d
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)
Definition: RGBDOdometryCPU.cpp:222
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)
Definition: RGBDOdometryCPU.cpp:45
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)
Definition: RGBDOdometryCPU.cpp:126
Definition: PinholeCameraIntrinsic.cpp:35