Detecting interesting parts of an image is an important step in most computer vision applications. Itserves as the first low-level processing step in applications like image segmentation, object recognition, object tracking and motion estimation. CUVI offers feature detectors including KLT, Harris and Peter in a single function
Function
CuviStatus goodFeaturesToTrack(const CuviImage& src,
const CuviRect& roi,
CuviPointValue2D<Cuvi32f,Cuvi32f>*& output,
Cuvi32s& maxFeatures,
const CuviFeaturesCriteria criteria = CuviFeaturesCriteria(),
const CuviStream& stream = CuviStream());
|
Parameters
Name
|
Type
|
Description
|
src
|
const CuviImage&
|
Input 8 bit Gray Scale Image.
|
roi
|
const CuviRect&
|
Desired region of interest of input image. The function will return features from only that region of the image
|
output
|
CuviPointValue2D<Cuvi32f,Cuvi32f>*&
|
Output feature list that contains the coordinates & values of features/corners.
|
maxFeatures
|
Cuvi32s&
|
Desired number of features. If the total features detected in the image or ROI are less than maxFeatures its value is updated to that number
|
criteria
|
const CuviFeaturesCriteria
|
A structure containing various parameters that affect feature selection behavior
|
stream
|
const CuviStream&
|
GPU stream ID for execution
|
|
Image Type Support
Input
|
Output
|
8uC1
|
CuviPointValue2D<Cuvi32f,Cuvi32f>
|
|
=Samples
Input Image
Selected Features
Example
//Create an 8-bit Grays-scale CuviImage
CuviImage gpu_image = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);
CuviPointValue2D<Cuvi32f,Cuvi32f> *features;
//Desired number of features
int featureCount = 100;
//Selecting complete image for the process
CuviRect roi(0,0,img.width(),img.height());
//Setting Feature selection parameters
CuviFeaturesCriteria criteria(CUVI_FEATURES_HARRIS_PETER,0.006f,15,3,-2.0f);
//Calling GoodFeaturesToTrack
cuvi::computerVision::goodFeaturesToTrack(gimg,roi,features,featureCount,criteria);
|