#ifndef _FTL_ILW_CUDA_HPP_ #define _FTL_ILW_CUDA_HPP_ #include <ftl/cuda_common.hpp> #include <ftl/rgbd/camera.hpp> #include <ftl/cuda_matrix_util.hpp> namespace ftl { namespace cuda { struct ILWParams { float spatial_smooth; float colour_smooth; float cost_ratio; float threshold; float range; uint flags; }; static const uint kILWFlag_IgnoreBad = 0x0001; static const uint kILWFlag_RestrictZ = 0x0002; static const uint kILWFlag_SkipBadColour = 0x0004; static const uint kILWFlag_ColourConfidenceOnly = 0x0008; void correspondence_energy_vector( ftl::cuda::TextureObject<float> &d1, ftl::cuda::TextureObject<float> &d2, ftl::cuda::TextureObject<uchar4> &c1, ftl::cuda::TextureObject<uchar4> &c2, ftl::cuda::TextureObject<float4> &vout, ftl::cuda::TextureObject<float> &eout, float4x4 &pose1, float4x4 &pose1_inv, float4x4 &pose2, const ftl::rgbd::Camera &cam1, const ftl::rgbd::Camera &cam2, const ILWParams ¶ms, int win, cudaStream_t stream ); void move_points( ftl::cuda::TextureObject<float> &d, ftl::cuda::TextureObject<float4> &v, const ftl::rgbd::Camera &camera, const float4x4 &pose, float rate, int radius, cudaStream_t stream ); } } #endif // _FTL_ILW_CUDA_HPP_