aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core
diff options
context:
space:
mode:
authorDaniil Efremov <daniil.efremov@xored.com>2017-11-22 00:26:51 +0700
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:41:04 +0000
commit02bf80d4554cfc824a76008905921cb564bee999 (patch)
treeb86ebbed4d330af69c1107c10ce5e765705e88dd /arm_compute/core
parent6194145681232bf59e0455434f15aba42956145b (diff)
downloadComputeLibrary-02bf80d4554cfc824a76008905921cb564bee999.tar.gz
COMPMID-661: Fix scale border issue (#38)
Change-Id: If1dcca724e5e5f5ab363ffc16b0ef8c943e0b657 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/110105 Tested-by: BSG Visual Compute Jenkins server to access repositories on http://mpd-gerrit.cambridge.arm.com <bsgcomp@arm.com> Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'arm_compute/core')
-rw-r--r--arm_compute/core/CL/kernels/CLScaleKernel.h3
-rw-r--r--arm_compute/core/NEON/kernels/NEScaleKernel.h4
-rw-r--r--arm_compute/core/Types.h41
3 files changed, 29 insertions, 19 deletions
diff --git a/arm_compute/core/CL/kernels/CLScaleKernel.h b/arm_compute/core/CL/kernels/CLScaleKernel.h
index db0587d6ac..3bca6efd0a 100644
--- a/arm_compute/core/CL/kernels/CLScaleKernel.h
+++ b/arm_compute/core/CL/kernels/CLScaleKernel.h
@@ -42,8 +42,9 @@ public:
* All but the lowest two dimensions must be the same size as in the input tensor, i.e. scaling is only performed within the XY-plane.
* @param[in] policy Interpolation type to use
* @param[in] border_undefined True if the border mode is undefined. False if it's replicate or constant.
+ * @param[in] sampling_policy (Optional) Sampling policy used by the interpolation. Defaults to @ref SamplingPolicy::CENTER
*/
- void configure(const ICLTensor *input, ICLTensor *output, InterpolationPolicy policy, bool border_undefined);
+ void configure(const ICLTensor *input, ICLTensor *output, InterpolationPolicy policy, bool border_undefined, SamplingPolicy sampling_policy = SamplingPolicy::CENTER);
// Inherited methods overridden:
BorderSize border_size() const override;
diff --git a/arm_compute/core/NEON/kernels/NEScaleKernel.h b/arm_compute/core/NEON/kernels/NEScaleKernel.h
index 5ec5854841..ac154d4455 100644
--- a/arm_compute/core/NEON/kernels/NEScaleKernel.h
+++ b/arm_compute/core/NEON/kernels/NEScaleKernel.h
@@ -59,8 +59,10 @@ public:
* @param[out] output Destination tensor. Data types supported: Same as @p input. All but the lowest two dimensions must be the same size as in the input tensor, i.e. scaling is only performed within the XY-plane.
* @param[in] policy Interpolation type to use
* @param[in] border_undefined True if the border mode is undefined. False if it's replicate or constant.
+ * @param[in] sampling_policy (Optional) Sampling policy used by the interpolation. Defaults to @ref SamplingPolicy::CENTER
*/
- void configure(const ITensor *input, const ITensor *dx, const ITensor *dy, const ITensor *offsets, ITensor *output, InterpolationPolicy policy, bool border_undefined);
+ void configure(const ITensor *input, const ITensor *dx, const ITensor *dy, const ITensor *offsets, ITensor *output, InterpolationPolicy policy, bool border_undefined,
+ SamplingPolicy sampling_policy = SamplingPolicy::CENTER);
// Inherited methods overridden:
void run(const Window &window, const ThreadInfo &info) override;
diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h
index 37f8508674..4ecaec1eb9 100644
--- a/arm_compute/core/Types.h
+++ b/arm_compute/core/Types.h
@@ -41,23 +41,23 @@ using half = half_float::half;
/** Image colour formats */
enum class Format
{
- UNKNOWN, /** Unknown image format */
- U8, /** 1 channel, 1 U8 per channel */
- S16, /** 1 channel, 1 S16 per channel */
- U16, /** 1 channel, 1 U16 per channel */
- S32, /** 1 channel, 1 S32 per channel */
- U32, /** 1 channel, 1 U32 per channel */
- F16, /** 1 channel, 1 F16 per channel */
- F32, /** 1 channel, 1 F32 per channel */
- UV88, /** 2 channel, 1 U8 per channel */
- RGB888, /** 3 channels, 1 U8 per channel */
- RGBA8888, /** 4 channels, 1 U8 per channel */
- YUV444, /** A 3 plane of 8 bit 4:4:4 sampled Y, U, V planes */
- YUYV422, /** A single plane of 32-bit macro pixel of Y0, U0, Y1, V0 bytes */
- NV12, /** A 2 plane YUV format of Luma (Y) and interleaved UV data at 4:2:0 sampling */
- NV21, /** A 2 plane YUV format of Luma (Y) and interleaved VU data at 4:2:0 sampling */
- IYUV, /** A 3 plane of 8-bit 4:2:0 sampled Y, U, V planes */
- UYVY422 /** A single plane of 32-bit macro pixel of U0, Y0, V0, Y1 byte */
+ UNKNOWN, /**< Unknown image format */
+ U8, /**< 1 channel, 1 U8 per channel */
+ S16, /**< 1 channel, 1 S16 per channel */
+ U16, /**< 1 channel, 1 U16 per channel */
+ S32, /**< 1 channel, 1 S32 per channel */
+ U32, /**< 1 channel, 1 U32 per channel */
+ F16, /**< 1 channel, 1 F16 per channel */
+ F32, /**< 1 channel, 1 F32 per channel */
+ UV88, /**< 2 channel, 1 U8 per channel */
+ RGB888, /**< 3 channels, 1 U8 per channel */
+ RGBA8888, /**< 4 channels, 1 U8 per channel */
+ YUV444, /**< A 3 plane of 8 bit 4:4:4 sampled Y, U, V planes */
+ YUYV422, /**< A single plane of 32-bit macro pixel of Y0, U0, Y1, V0 bytes */
+ NV12, /**< A 2 plane YUV format of Luma (Y) and interleaved UV data at 4:2:0 sampling */
+ NV21, /**< A 2 plane YUV format of Luma (Y) and interleaved VU data at 4:2:0 sampling */
+ IYUV, /**< A 3 plane of 8-bit 4:2:0 sampled Y, U, V planes */
+ UYVY422 /**< A single plane of 32-bit macro pixel of U0, Y0, V0, Y1 byte */
};
/** Available data types */
@@ -82,6 +82,13 @@ enum class DataType
SIZET
};
+/** Available Sampling Policies */
+enum class SamplingPolicy
+{
+ CENTER, /**< Samples are taken at pixel center */
+ TOP_LEFT /**< Samples are taken at pixel top left corner */
+};
+
/** Constant value of the border pixels when using BorderMode::CONSTANT */
constexpr uint8_t CONSTANT_BORDER_VALUE = 199;