The OpenVX Specification
r31169
|
Defines the Image Pyramid Object Interface.
A Pyramid object in OpenVX represents a collection of related images. Typically, these images are created by either downscaling or upscaling a base image, contained in level zero of the pyramid. Successive levels of the pyramid increase or decrease in size by a factor given by the VX_PYRAMID_ATTRIBUTE_SCALE
attribute. For instance, in a pyramid with 3 levels and VX_SCALE_PYRAMID_HALF
, the level one image is one-half the width and one-half the height of the level zero image, and the level two image is one-quarter the width and one quarter the height of the level zero image. When downscaling or upscaling results in a non-integral number of pixels at any level, fractional pixels always get rounded up to the nearest integer. (E.g., a 3-level image pyramid beginning with level zero having a width of 9 and a scaling of VX_SCALE_PYRAMID_HALF
results in the level one image with a width of \( 5 = \mathbf{ceil}(9*0.5) \) and a level two image with a width of \( 3 = \mathbf{ceil}(5*0.5) \). Position \( (r_N,c_N) \) at level \( N \) corresponds to position \( (r_{N-1}/\mathbf{scale}, c_{N-1}/\mathbf{scale}) \) at level \( N-1 \).
Macros | |
#define | VX_SCALE_PYRAMID_HALF (0.5f) |
Use to indicate a half-scale pyramid. | |
#define | VX_SCALE_PYRAMID_ORB ((vx_float32)0.8408964f) |
Use to indicate a ORB scaled pyramid whose scaling factor is \( \frac{1}{\root 4 \of {2}} \). | |
Typedefs | |
typedef struct _vx_pyramid * | vx_pyramid |
The Image Pyramid object. A set of scaled images. | |
Enumerations | |
enum | vx_pyramid_attribute_e { VX_PYRAMID_ATTRIBUTE_LEVELS = ((( VX_ID_KHRONOS ) << 20) | ( VX_TYPE_PYRAMID << 8)) + 0x0, VX_PYRAMID_ATTRIBUTE_SCALE = ((( VX_ID_KHRONOS ) << 20) | ( VX_TYPE_PYRAMID << 8)) + 0x1, VX_PYRAMID_ATTRIBUTE_WIDTH = ((( VX_ID_KHRONOS ) << 20) | ( VX_TYPE_PYRAMID << 8)) + 0x2, VX_PYRAMID_ATTRIBUTE_HEIGHT = ((( VX_ID_KHRONOS ) << 20) | ( VX_TYPE_PYRAMID << 8)) + 0x3, VX_PYRAMID_ATTRIBUTE_FORMAT = ((( VX_ID_KHRONOS ) << 20) | ( VX_TYPE_PYRAMID << 8)) + 0x4 } |
The pyramid object attributes. More... | |
Functions | |
vx_pyramid VX_API_CALL | vxCreatePyramid (vx_context context, vx_size levels, vx_float32 scale, vx_uint32 width, vx_uint32 height, vx_df_image format) |
Creates a reference to a pyramid object of the supplied number of levels. More... | |
vx_pyramid VX_API_CALL | vxCreateVirtualPyramid (vx_graph graph, vx_size levels, vx_float32 scale, vx_uint32 width, vx_uint32 height, vx_df_image format) |
Creates a reference to a virtual pyramid object of the supplied number of levels. More... | |
vx_image VX_API_CALL | vxGetPyramidLevel (vx_pyramid pyr, vx_uint32 index) |
Retrieves a level of the pyramid as a vx_image , which can be used elsewhere in OpenVX. A call to vxReleaseImage is necessary to release an image for each call of vxGetPyramidLevel. More... | |
vx_status VX_API_CALL | vxQueryPyramid (vx_pyramid pyr, vx_enum attribute, void *ptr, vx_size size) |
Queries an attribute from an image pyramid. More... | |
vx_status VX_API_CALL | vxReleasePyramid (vx_pyramid *pyr) |
Releases a reference to a pyramid object. The object may not be garbage collected until its total reference count is zero. More... | |
The pyramid object attributes.
Enumerator | |
---|---|
VX_PYRAMID_ATTRIBUTE_LEVELS |
The number of levels of the pyramid. Use a |
VX_PYRAMID_ATTRIBUTE_SCALE |
The scale factor between each level of the pyramid. Use a |
VX_PYRAMID_ATTRIBUTE_WIDTH |
The width of the 0th image in pixels. Use a |
VX_PYRAMID_ATTRIBUTE_HEIGHT |
The height of the 0th image in pixels. Use a |
VX_PYRAMID_ATTRIBUTE_FORMAT |
The |
Definition at line 934 of file vx_types.h.
vx_pyramid VX_API_CALL vxCreatePyramid | ( | vx_context | context, |
vx_size | levels, | ||
vx_float32 | scale, | ||
vx_uint32 | width, | ||
vx_uint32 | height, | ||
vx_df_image | format | ||
) |
Creates a reference to a pyramid object of the supplied number of levels.
[in] | context | The reference to the overall context. |
[in] | levels | The number of levels desired. This is required to be a non-zero value. |
[in] | scale | Used to indicate the scale between pyramid levels. This is required to be a non-zero positive value. In OpenVX 1.0, the only permissible values are VX_SCALE_PYRAMID_HALF or VX_SCALE_PYRAMID_ORB . |
[in] | width | The width of the 0th level image in pixels. |
[in] | height | The height of the 0th level image in pixels. |
[in] | format | The format of all images in the pyramid. NV12, NV21, IYUV, UYVY and YUYV formats are not supported. |
vx_pyramid
to the sub-image. Any possible errors preventing a successful creation should be checked using vxGetStatus
. vx_pyramid VX_API_CALL vxCreateVirtualPyramid | ( | vx_graph | graph, |
vx_size | levels, | ||
vx_float32 | scale, | ||
vx_uint32 | width, | ||
vx_uint32 | height, | ||
vx_df_image | format | ||
) |
Creates a reference to a virtual pyramid object of the supplied number of levels.
Virtual Pyramids can be used to connect Nodes together when the contents of the pyramids will not be accessed by the user of the API. All of the following constructions are valid:
[in] | graph | The reference to the parent graph. |
[in] | levels | The number of levels desired. This is required to be a non-zero value. |
[in] | scale | Used to indicate the scale between pyramid levels. This is required to be a non-zero positive value. In OpenVX 1.0, the only permissible values are VX_SCALE_PYRAMID_HALF or VX_SCALE_PYRAMID_ORB . |
[in] | width | The width of the 0th level image in pixels. This may be set to zero to indicate to the interface that the value is unspecified. |
[in] | height | The height of the 0th level image in pixels. This may be set to zero to indicate to the interface that the value is unspecified. |
[in] | format | The format of all images in the pyramid. This may be set to VX_DF_IMAGE_VIRT to indicate that the format is unspecified. |
vx_pyramid
. Any possible errors preventing a successful creation should be checked using vxGetStatus
. vxGetPyramidLevel
behave as Virtual Images and cause vxAccessImagePatch
to return errors. vx_status VX_API_CALL vxReleasePyramid | ( | vx_pyramid * | pyr | ) |
Releases a reference to a pyramid object. The object may not be garbage collected until its total reference count is zero.
[in] | pyr | The pointer to the pyramid to release. |
vx_status_e
enumeration. VX_SUCCESS | No errors. |
VX_ERROR_INVALID_REFERENCE | If pyr is not a vx_pyramid . |
vx_status VX_API_CALL vxQueryPyramid | ( | vx_pyramid | pyr, |
vx_enum | attribute, | ||
void * | ptr, | ||
vx_size | size | ||
) |
Queries an attribute from an image pyramid.
[in] | pyr | The pyramid to query. |
[in] | attribute | The attribute for which to query. Use a vx_pyramid_attribute_e enumeration. |
[out] | ptr | The location at which to store the resulting value. |
[in] | size | The size in bytes of the container to which ptr points. |
vx_status_e
enumeration. vx_image VX_API_CALL vxGetPyramidLevel | ( | vx_pyramid | pyr, |
vx_uint32 | index | ||
) |
Retrieves a level of the pyramid as a vx_image
, which can be used elsewhere in OpenVX. A call to vxReleaseImage is necessary to release an image for each call of vxGetPyramidLevel.
[in] | pyr | The pyramid object. |
[in] | index | The index of the level, such that index is less than levels. |
vx_image
reference. 0 | Indicates that the index or the object is invalid. |