Resize with Lanczos Interpolation¶
Changes an image size using interpolation with the Lanczos filter.
Description
This function changes an image size using interpolation with the
Lanczos filter. The image size may be either reduced or increased in
each direction, depending on the destination image size. This method
is based on the 3-lobed Lanczos window function as an interpolation function.
Algorithm parameters must be set through the resize_lanczos_spec
class.
The border pixels are processed in accordance with the border type.
This function can operate with ROI (see Image Regions of Interest).
Headers
oneapi/ipl/transform/resize_lanczos.hpp
Syntax
-
template<typename ComputeT = float, formats Format, typename DataT, typename SrcAllocatorT, typename DstAllocatorT>
sycl::event oneapi::ipl::resize_lanczos(sycl::queue &queue, image<Format, DataT, SrcAllocatorT> &src, image<Format, DataT, DstAllocatorT> &dst, const resize_lanczos_spec &spec = {}, const std::vector<sycl::event> &dependencies = {})¶ Resize with the Lanczos interpolation method.
- Template Parameters
ComputeT – type to perform calculations
Format – src/dst image format
DataT – src/dst image data type
SrcAllocatorT – source image allocator
DstAllocatorT – destination image allocator
- Parameters
queue – [in] SYCL queue
src – [in] source image
dst – [out] destination image
spec – [in] algorithm parameters
dependencies – [in] other events dependencies
- Returns
SYCL event, that represents algorithm completion
Supported values for ComputeT:
float |
double |
half |
---|---|---|
v |
v |
x |
Supported combinations for DataT/Formats:
DataT/Formats |
plane |
rgb/bgr |
rgba/bgra |
rgbp |
---|---|---|---|---|
std::uint8_t |
v |
v |
v |
x |
std::int8_t |
v |
v |
v |
x |
std::uint16_t |
v |
v |
v |
x |
std::int16_t |
v |
v |
v |
x |
std::uint32_t |
v |
v |
v |
x |
std::int32_t |
v |
v |
v |
x |
float |
v |
v |
v |
x |
double |
v |
v |
v |
x |
Supported values for subsampled Format (only for DataT = std::uint8_t
):
nv12 |
i420 |
---|---|
v |
v |
Parameters
border type support |
Type of border. Possible values are:
|
-
class oneapi::ipl::resize_lanczos_spec : public oneapi::ipl::border_spec_base<>¶
Resize Lanczos parameters.
Public Types
-
using native_pixel_t = sycl::vec<std::uint8_t, 1>¶
Type alias for pixel type.
Public Functions
-
crop_types get_crop() const noexcept¶
Returns the crop type.
- Returns
crop type
-
border_types get_border() const noexcept¶
Returns the border type.
- Returns
border type
-
auto get_border_val() const noexcept -> const native_pixel_t&¶
Returns the border value.
- Returns
border value
-
auto get_border_val_ptr() const -> const std::uint8_t*¶
Returns the border value pointer.
- Returns
border value pointer
-
using native_pixel_t = sycl::vec<std::uint8_t, 1>¶
Errors
compile-time format check |
Indicates an error when image format 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. |
|
Indicates an error when one of the pitch values is not divisible by size of component data type in bytes. |
|
Indicates an error when border type is not supported. |
The code example below demonstrates how to use the
oneapi::ipl::resize_lanczos
:
// Create queue
sycl::queue queue{};
// Source rgba image data (image_image)
image<formats::rgba, std::uint8_t> src_image{ src_data_pointer, src_size };
// Destination rgba image data (image_image)
image<formats::rgba, std::uint8_t> dst_image{ dst_size };
(void)resize_lanczos(queue, src_image, dst_image);