This function is a wrapper function around the full Canny Edge Detection algorithms. It internally calls, in sequence on the image:
VLIB_conv_7x7_i8_c8s (image smoothing),
VLIB_xyGradientsAndMagnitude,
VLIB_nonMaximumSuppressionCanny,
VLIB_doublethresholding and
VLIB_edgeRelaxation. It requires externally allocated intermediate buffers to be provided and takes care of border conditions in between internal function calls. The above mentioned APIs are independently callable in case a different sequence is required, intermeidate processing is required, or differ buffer management is required.
Parameters:
[in]
*pInput
Pointer to input image array
[out]
*pBufGradX
Pointer to array containing X gradient
[out]
*pBufGradY
Pointer to array containing Y gradient
[out]
*pBufMag
Pointer to array containing magnitude
[out]
*pBufOut
Pointer to output buffer
[out]
*pScratch
Pointer to scratch buffer
[out]
*numItems
Pointer to scalar number of items
[in]
width
Input width
[in]
height
Input height
Assumptions:
The input array and output arrays should not overlap
The output array must be 32-bit aligned
The width parameter must be a multiple of 2 and >= 18
The height parameter must be > 10
pBufGradX should be a buffer of (width * height * 2) bytes
pBufGradY should be a buffer of (width * height * 2) bytes
pBufMag should be a buffer of (width * height * 2) bytes
pBufOut should be a buffer of (width * height) bytes
pScratch should be a buffer of (width * height) bytes