Difference between revisions of "Function:GoodFeaturesToTrack"

From CUVI Wiki
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
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
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===
====Function====
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
CuviStatus goodFeaturesToTrack(CuviImage* srcImage
CuviStatus goodFeaturesToTrack(const CuviImage& src,
                               CuviROI roi,
                               const CuviRect& roi,
                               CuviPointValue2D** outputFeatures,
                               CuviPointValue2D<Cuvi32f,Cuvi32f>*& output,
                               Cuvi32s* maxFeatures,
                               Cuvi32s& maxFeatures,
                               CuviFeaturesCriteria criteria,
                               const CuviFeaturesCriteria criteria = CuviFeaturesCriteria(),
                               CuviStream* stream = NULL);
                               const CuviStream& stream = CuviStream());
</syntaxhighlight>
</syntaxhighlight>
|}
|}


===Parameters===
====Parameters====
{|
|style="font-size:75%;"|
{|class="wikitable"
{|class="wikitable"
|-
|-
Line 21: Line 23:
! Description
! Description
|-
|-
| srcImage
| src
| CuviImage*
| const CuviImage&
| Input 8 bit Gray Scale Image.
| Input 8 bit Gray Scale Image.
|-
|-
| roi
| roi
| CuviROI
| const CuviRect&
| Desired region of interest of input image. The function will return features from only that region of the image
| Desired region of interest of input image. The function will return features from only that region of the image
|-
|-
| outputFeatures
| output
| CuviPointValue2D**
| CuviPointValue2D<Cuvi32f,Cuvi32f>*&
| Output feature list that contains the coordinates & values of features/corners.
| Output feature list that contains the coordinates & values of features/corners.
|-
|-
| maxFeatures
| maxFeatures
| Cuvi32s*
| 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
| 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
| criteria
| CuviFeaturesCriteria
| const CuviFeaturesCriteria
| A structure containing various parameters that affect feature selection behavior  
| A structure containing various parameters that affect feature selection behavior  
|-
|-
| stream
| stream
| CuviStream*
| const CuviStream&
| GPU stream ID for execution
| GPU stream ID for execution
 
|}
|}
|}


 
====Image Type Support====
===Image Type Support===
{|
 
|style="font-size:75%;"|
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 56: Line 58:
|-
|-
| 8uC1
| 8uC1
| CuviPointValue2D
| CuviPointValue2D<Cuvi32f,Cuvi32f>
|}
|}
|}


====Samples===
[[File:Window.jpg|none|frame|Input Image]]
<br/>
[[File:Features.jpg|none|frame| Selected Features]]
<br/>


===Example===
====Example====
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">


//Create an 8-bit Grays-scale CuviImage
//Create an 8-bit Grays-scale CuviImage
CuviImage *gpu_image = new CuviImage(size,img->depth,img->nChannels);
CuviImage gpu_image = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);
 
//Populate the Image
gpu_image->upload(img->imageData,img->widthStep);


CuviPointValue2D *features;
CuviPointValue2D<Cuvi32f,Cuvi32f> *features;


//Desired number of features
//Desired number of features
Line 77: Line 82:


//Selecting complete image for the process
//Selecting complete image for the process
CuviROI roi = cuviROI(0,0,img->width,img->height);
CuviRect roi(0,0,img.width(),img.height());


//Setting Feature selection parameters
//Setting Feature selection parameters
CuviFeaturesCriteria criteria = cuviFeaturesCriteria(CUVI_FEATURES_HARRIS_PETER,0.006f,15,3,-2.0f);
CuviFeaturesCriteria criteria(CUVI_FEATURES_HARRIS_PETER,0.006f,15,3,-2.0f);


//Calling GoodFeaturesToTrack
//Calling GoodFeaturesToTrack
cuvi::computerVision::goodFeaturesToTrack(&gimg,roi,&features,&featureCount,criteria);
cuvi::computerVision::goodFeaturesToTrack(gimg,roi,features,featureCount,criteria);


</syntaxhighlight>
</syntaxhighlight>
|}
|}

Latest revision as of 22:13, 18 October 2022

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

Error creating thumbnail: Unable to save thumbnail to destination
Input Image


Error creating thumbnail: Unable to save thumbnail to destination
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);