Resize with Nearest-Neighbor Interpolation#

Changes an image size using the Nearest-neighbor interpolation method.

Description

This function changes the image size using the nearest neighbor interpolation method. The image size may be either reduced or increased in each direction, depending on the destination image size. Algorithm parameters must be set through the resize_nearest_spec class. This function can operate with ROI (see Image Regions of Interest).

Headers

oneapi/ipl/transform/resize_nearest.hpp

Syntax

template<typename ComputeT = float, typename SrcImageT, typename DstImageT>
sycl::event oneapi::ipl::resize_nearest(sycl::queue &queue, SrcImageT &src, DstImageT &dst, const resize_nearest_spec &spec = {}, const std::vector<sycl::event> &dependencies = {})#

Resize with the Nearest-neighbor interpolation method.

Template Parameters:
  • ComputeT – type to perform calculations

  • SrcImageT – Source image type

  • DstImageT – Destination image type

Parameters:
  • queue[in] SYCL queue

  • src[in] source image

  • dst[out] destination image

  • spec[in] algorithmic specification

  • dependencies[in] other events dependencies

Returns:

SYCL event, that represents a status of an operation it associated with

Supported values for ComputeT:

float

double

half

Supported combinations for DataT/Layouts:

DataT/Layouts

plane

channel3

channel4

plane3

std::uint8_t

std::int8_t

std::uint16_t

std::int16_t

std::uint32_t

std::int32_t

float

double

Supported values for subsampled layout (only for std::uint8_t data type):

sub420

sub420i

Parameters

class resize_nearest_spec#

Resize nearest parameters.

Errors

compile-time memory layout check

Indicates an error when image memory layout is not supported.

compile-time data type check

Indicates an error when image data type is not supported.

compile-time compute data type check

Indicates an error when compute data type is not supported.

invalid_argument exception

Indicates an error when one of the pitch values is not divisible by size of component data type in bytes.

The code example below demonstrates how shall be called oneapi::ipl::resize_nearest:

using namespace oneapi;

sycl::queue                 queue;
ipl::shared_usm_allocator_t allocator{ queue };
const sycl::range<2>        image_size{ height, width };

// Source 4-channel image data
ipl::image<ipl::layouts::channel4, std::uint8_t> src_image{ queue, p_image_data, image_size, allocator };
// Destination 4-channel image data with x2 size
ipl::image<ipl::layouts::channel4, std::uint8_t> dst_image{ image_size * 2, allocator };

auto event = ipl::resize_nearest(queue, src_image, dst_image);