![]() |
VisionWorks Toolkit ReferenceDecember 18, 2015 | 1.2 Release |
The FAST Track Primitive.
This primitive detects and tracks corners using the FAST algorithm.
The primitive uses the following identifiers:
vxGetKernelByEnum
function;"com.nvidia.nvx.fast_track"
for vxGetKernelByName
function.The FAST corner detector uses the pixels on a Bresenham circle to classify whether a candidate point \( p \) is actually a corner.
Given the following definitions:
The two conditions for FAST corner detection can be expressed as:
So when either of these two conditions is met, the candidate \( p \) is classified as a corner.
Optionally, a binary mask can be provided to filter out corners from specified regions. The primitive will only leave points with a non-zero mask value.
Once a corner has been detected, its strength (response, saliency or score) is computed. The corner response \( C_p \) function is defined as the largest threshold \( t \) for which the pixel \( p \) remains a corner.
This primitive applies a cell-based, non-max suppression step on all detected corners to remove multiple or spurious responses.
The input image is split into cells (cell size is a primitive's parameter), and for each cell the corner with highest strength is selected. If there are several corners with the same strength the bottom-most right corner is chosen.
Additionally, the primitive can be used in tracking scenarios. It accepts an optional tracked features list from optical flow. The primitive extracts corners only for those cells that do not contain any tracked points.
The primitive applies cell-based, non-max suppressions for input tracked points, too, so only non-lost points with the highest strength are left per cell.
Functions | |
vx_node | nvxFastTrackNode (vx_graph graph, vx_image input, vx_array output, vx_image mask, vx_array tracked_points, vx_uint32 type, vx_uint32 threshold, vx_uint32 cell_size, vx_scalar num_corners) |
[Graph] Detects and tracks corners using the FAST algorithm. More... | |
vx_status | nvxuFastTrack (vx_context context, vx_image input, vx_array output, vx_image mask, vx_array tracked_points, vx_uint32 type, vx_uint32 threshold, vx_uint32 cell_size, vx_scalar num_corners) |
[Immediate] Detects and tracks corners using the FAST algorithm. More... | |
vx_node nvxFastTrackNode | ( | vx_graph | graph, |
vx_image | input, | ||
vx_array | output, | ||
vx_image | mask, | ||
vx_array | tracked_points, | ||
vx_uint32 | type, | ||
vx_uint32 | threshold, | ||
vx_uint32 | cell_size, | ||
vx_scalar | num_corners | ||
) |
[Graph] Detects and tracks corners using the FAST algorithm.
[in] | graph | Specifies the graph. |
[in] | input | Specifies the input image. Only VX_DF_IMAGE_U8 format is supported. The image size must be not greater than \( 2^{32} \) pixels. |
[out] | output | Specifies the output list of corners. Only VX_TYPE_KEYPOINT , NVX_TYPE_KEYPOINTF and NVX_TYPE_POINT2F item types are supported. The array capacity must be explicitly provided, even for virtual arrays. |
[in] | mask | Specifies the optional mask. Only VX_DF_IMAGE_U8 format is supported. The mask should have the same size as input image. |
[in] | tracked_points | Specifies the optional tracked features list. If specified, it should have the same item type as output array. |
[in] | type | Specifies the number of neighborhoods to test. Supported values : 9, 10, 11, 12. |
[in] | threshold | Specifies the threshold on difference between intensity of the central pixel and pixels of a circle around this pixel. The threshold value should be less than 255. |
[in] | cell_size | Specifies the size of cells for cell-based non-max suppression. The cell_size should be less than input image dimensions. |
[out] | num_corners | Specifies the total number of detected corners in image (optional). It should be VX_TYPE_SIZE scalar. |
vxGetStatus
). vx_status nvxuFastTrack | ( | vx_context | context, |
vx_image | input, | ||
vx_array | output, | ||
vx_image | mask, | ||
vx_array | tracked_points, | ||
vx_uint32 | type, | ||
vx_uint32 | threshold, | ||
vx_uint32 | cell_size, | ||
vx_scalar | num_corners | ||
) |
[Immediate] Detects and tracks corners using the FAST algorithm.
[in] | context | Specifies the context. |
[in] | input | Specifies the input image. Only VX_DF_IMAGE_U8 format is supported. The image size must be not greater than \( 2^{32} \) pixels. |
[out] | output | Specifies the output list of corners. Only VX_TYPE_KEYPOINT , NVX_TYPE_KEYPOINTF and NVX_TYPE_POINT2F item types are supported. The array capacity must be explicitly provided, even for virtual arrays. |
[in] | mask | Specifies the optional mask. Only VX_DF_IMAGE_U8 format is supported. The mask should have the same size as input image. |
[in] | tracked_points | Specifies the optional tracked features list. If specified, it should have the same item type as output array. |
[in] | type | Specifies the number of neighborhoods to test. Supported values : 9, 10, 11, 12. |
[in] | threshold | Specifies the threshold on difference between intensity of the central pixel and pixels of a circle around this pixel. The threshold value should be less than 255. |
[in] | cell_size | Specifies the size of cells for cell-based non-max suppression. The cell_size should be less than input image dimensions. |
[out] | num_corners | Specifies the total number of detected corners in image (optional). It should be VX_TYPE_SIZE scalar. |
vx_status
enumerator. VX_SUCCESS | No errors. |
VX_ERROR_INVALID_REFERENCE | Supplied parameters are not a valid references. |
VX_ERROR_INVALID_PARAMETERS | Supplied parameters are not valid. |
VX_ERROR_INVALID_SCOPE | Supplied parameters are virtual objects, which can't be used in immediate mode. |
VX_FAILURE | Internal error in primitive implementation, check log for detailed information (Framework: Log). |