44 : _memory_group(
std::move(memory_manager)),
45 _fast_corners_kernel(),
56 BorderMode border_mode, uint8_t constant_border_value)
64 _non_max = nonmax_suppression;
68 _memory_group.
manage(&_output);
70 _fast_corners_kernel = std::make_unique<NEFastCornersKernel>();
71 _border_handler = std::make_unique<NEFillBorderKernel>();
72 _fill_kernel = std::make_unique<NEFillArrayKernel>();
78 _fast_corners_kernel->configure(input, &_output, threshold, nonmax_suppression,
BorderMode::UNDEFINED == border_mode);
79 _border_handler->configure(input, _fast_corners_kernel->border_size(), border_mode, constant_border_value);
83 _fill_kernel->configure(&_output, 1 , corners);
88 _memory_group.
manage(&_suppressed);
89 _nonmax_kernel = std::make_unique<NENonMaximaSuppression3x3Kernel>();
91 _fill_kernel->configure(&_suppressed, 1 , corners);
BorderMode
Methods available to handle borders.
void init(const TensorAllocator &allocator, const Coordinates &coords, TensorInfo &sub_info)
Shares the same backing memory with another tensor allocator, while the tensor info might be differen...
#define ARM_COMPUTE_ERROR_ON_TENSOR_NOT_2D(t)
1 channel, 1 U8 per channel
~NEFastCorners()
Default destructor.
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Interface for Neon tensor.
Copyright (c) 2017-2021 Arm Limited.
TensorAllocator * allocator()
Return a pointer to the tensor's allocator.
Basic implementation of the IArray interface which allocates a static number of T values...
void manage(IMemoryManageable *obj) override
Sets a object to be managed by the given memory group.
virtual const TensorShape & tensor_shape() const =0
Size for each dimension of the tensor.
void allocate() override
Allocate size specified by TensorInfo of CPU memory.
void run() override
Run the kernels contained in the function.
virtual ITensorInfo * info() const =0
Interface to be implemented by the child class to return the tensor's metadata.
NEFastCorners(std::shared_ptr< IMemoryManager > memory_manager=nullptr)
Constructor.
#define ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(t, c,...)
static constexpr size_t DimY
Alias for dimension 1 also known as Y dimension.
Memory group resources scope handling class.
virtual void schedule(ICPPKernel *kernel, const Hints &hints)=0
Runs the kernel in the same thread as the caller synchronously.
static constexpr size_t DimZ
Alias for dimension 2 also known as Z dimension.
Borders are left undefined.
void configure(IImage *input, float threshold, bool nonmax_suppression, KeyPointArray *corners, BorderMode border_mode, uint8_t constant_border_value=0)
Initialize the function's source, destination, conv and border_mode.
Store the tensor's metadata.
SimpleTensor< T > threshold(const SimpleTensor< T > &src, T threshold, T false_value, T true_value, ThresholdType type, T upper)
static IScheduler & get()
Access the scheduler singleton.