C# Class Emgu.CV.Features2D.SURFTracker

Inheritance: DisposableObject
Show file Open project: genecyber/PredatorCV

Public Methods

Method Description
CamShiftTrack ( SURFFeature observedFeatures, MCvBox2D initRegion, Single>.Image priorMask ) : HomographyMatrix

Use camshift to track the feature

Detect ( SURFFeature observedFeatures, double uniquenessThreshold ) : HomographyMatrix

Detect the if the model features exist in the observed features. If true, an homography matrix is returned, otherwise, null is returned.

GetHomographyMatrixFromMatchedFeatures ( MatchedSURFFeature matchedFeatures ) : HomographyMatrix

Recover the homography matrix using RANDSAC. If the matrix cannot be recovered, null is returned.

MatchFeature ( SURFFeature observedFeatures, int k, int emax ) : MatchedSURFFeature[]

Match the SURF feature from the observed image to the features from the model image

SURFTracker ( SURFFeature modelFeatures ) : System

Create a SURF tracker, where SURF is matched with flann

VoteForSizeAndOrientation ( MatchedSURFFeature matchedFeatures, double scaleIncrement, int rotationBins ) : MatchedSURFFeature[]

Eliminate the matched features whose scale and rotation do not aggree with the majority's scale and rotation.

VoteForUniqueness ( MatchedSURFFeature matchedFeatures, double uniquenessThreshold ) : MatchedSURFFeature[]

Filter the matched Features, such that if a match is not unique, it is rejected.

Protected Methods

Method Description
DisposeObject ( ) : void

Release unmanaged memory

ReleaseManagedResources ( ) : void

Release the memory assocaited with this SURF Tracker

Method Details

CamShiftTrack() public method

Use camshift to track the feature
public CamShiftTrack ( SURFFeature observedFeatures, MCvBox2D initRegion, Single>.Image priorMask ) : HomographyMatrix
observedFeatures SURFFeature The feature found from the observed image
initRegion MCvBox2D The predicted location of the model in the observed image. If not known, use MCvBox2D.Empty as default
priorMask Single>.Image The mask that should be the same size as the observed image. Contains a priori value of the probability a match can be found. If you are not sure, pass an image fills with 1.0s
return HomographyMatrix

Detect() public method

Detect the if the model features exist in the observed features. If true, an homography matrix is returned, otherwise, null is returned.
public Detect ( SURFFeature observedFeatures, double uniquenessThreshold ) : HomographyMatrix
observedFeatures SURFFeature The observed features
uniquenessThreshold double The distance different ratio which a match is consider unique, a good number will be 0.8
return HomographyMatrix

DisposeObject() protected method

Release unmanaged memory
protected DisposeObject ( ) : void
return void

GetHomographyMatrixFromMatchedFeatures() public static method

Recover the homography matrix using RANDSAC. If the matrix cannot be recovered, null is returned.
public static GetHomographyMatrixFromMatchedFeatures ( MatchedSURFFeature matchedFeatures ) : HomographyMatrix
matchedFeatures MatchedSURFFeature The Matched Features, only the first ModelFeature will be considered
return HomographyMatrix

MatchFeature() public method

Match the SURF feature from the observed image to the features from the model image
public MatchFeature ( SURFFeature observedFeatures, int k, int emax ) : MatchedSURFFeature[]
observedFeatures SURFFeature The SURF feature from the observed image
k int The number of neighbors to find
emax int For k-d tree only: the maximum number of leaves to visit.
return MatchedSURFFeature[]

ReleaseManagedResources() protected method

Release the memory assocaited with this SURF Tracker
protected ReleaseManagedResources ( ) : void
return void

SURFTracker() public method

Create a SURF tracker, where SURF is matched with flann
public SURFTracker ( SURFFeature modelFeatures ) : System
modelFeatures SURFFeature The SURF feature from the model image
return System

VoteForSizeAndOrientation() public static method

Eliminate the matched features whose scale and rotation do not aggree with the majority's scale and rotation.
public static VoteForSizeAndOrientation ( MatchedSURFFeature matchedFeatures, double scaleIncrement, int rotationBins ) : MatchedSURFFeature[]
matchedFeatures MatchedSURFFeature The matched feature that will be participated in the voting. For each matchedFeatures, only the zero indexed ModelFeature will be considered.
scaleIncrement double This determins the different in scale for neighbour hood bins, a good value might be 1.5 (which means matched features in bin i+1 is scaled 1.5 times larger than matched features in bin i
rotationBins int The numbers of bins for rotation, a good value might be 20 (which means each bin covers 18 degree)
return MatchedSURFFeature[]

VoteForUniqueness() public static method

Filter the matched Features, such that if a match is not unique, it is rejected.
public static VoteForUniqueness ( MatchedSURFFeature matchedFeatures, double uniquenessThreshold ) : MatchedSURFFeature[]
matchedFeatures MatchedSURFFeature The Matched SURF features, each of them has the model feature sorted by distance. (e.g. SortMatchedFeaturesByDistance )
uniquenessThreshold double The distance different ratio which a match is consider unique, a good number will be 0.8
return MatchedSURFFeature[]