The following steps demonstrate the Image Processing procedure in the hardware pipeline
xf::cv::cornerharris
is called to start processing the first input image- The output of
xf::cv::cornerHarris
is fed toxf::cv::cornersImgToList
. This function takes in an image with corners (marked as 255 and 0 elsewhere), and converts them to a list of corners. xf::cv::pyrDown
creates the two image pyramids and Dense Optical Flow is computed using the two image pyramids as described in the Iterative Pyramidal Dense Optical Flow example.xf::cv::densePyrOpticalFlow
is called with the two image pyramids as inputs.xf::cv::cornerUpdate
function is called to track the corner locations in the second image. If harris_flag is enabled, thecornerUpdate
tracks corners from the output of the list, else it tracks the previously tracked corners.
The HarrisImg()
function takes a flag called
harris_flag which is set during the first frame or when the corners need
to be redetected. The xf::cv::cornerUpdate
function outputs the updated
corners to the same memory location as the output corners list of
xf::cv::cornerImgToList
. This means that when harris_flag is unset, the
corners input to the xf::cv::cornerUpdate
are the corners tracked in the
previous cycle, that is, the corners in the first frame of the current
input frames.
After the Dense Optical Flow is computed, if harris_flag is set, the
number of corners that xf::cv::cornerharris
has detected and
xf::cv::cornersImgToList
has updated is copied to num_corners variable
. The other being the tracked corners list, listfixed. If
harris_flag is set, xf::cv::cornerUpdate
tracks the corners in ‘list’
memory location, otherwise it tracks the corners in ‘listfixed’ memory
location.