Newer
Older
#include <ftl/operators/mask.hpp>
#include "mask_cuda.hpp"
using ftl::operators::DiscontinuityMask;
using ftl::operators::CullDiscontinuity;
using ftl::codecs::Channel;
using ftl::rgbd::Format;
DiscontinuityMask::DiscontinuityMask(ftl::Configurable *cfg) : ftl::operators::Operator(cfg) {
}
DiscontinuityMask::~DiscontinuityMask() {
}
bool DiscontinuityMask::apply(ftl::rgbd::Frame &in, ftl::rgbd::Frame &out, ftl::rgbd::Source *s, cudaStream_t stream) {
int radius = config()->value("radius", 2);
float threshold = config()->value("threshold", 0.1f);
ftl::cuda::discontinuity(
out.createTexture<int>(Channel::Mask, ftl::rgbd::Format<int>(in.get<cv::cuda::GpuMat>(Channel::Depth).size())),
in.createTexture<uchar4>(Channel::Support1),
in.createTexture<float>(Channel::Depth),
in.get<cv::cuda::GpuMat>(Channel::Depth).size(),
s->parameters().minDepth, s->parameters().maxDepth,
radius, threshold, stream
);
return true;
}
CullDiscontinuity::CullDiscontinuity(ftl::Configurable *cfg) : ftl::operators::Operator(cfg) {
}
CullDiscontinuity::~CullDiscontinuity() {
}
bool CullDiscontinuity::apply(ftl::rgbd::Frame &in, ftl::rgbd::Frame &out, ftl::rgbd::Source *s, cudaStream_t stream) {
ftl::cuda::cull_discontinuity(
in.createTexture<int>(Channel::Mask),
out.createTexture<float>(Channel::Depth),
stream
);
return true;
}