![]() |
KudanCV
|
Public Types | |
enum | VerifierChoiceMethod { VERIFY_FIRST, VERIFY_BEST, VERIFY_ALL } |
Public Member Functions | |
CameraImage::CameraResolution | getResolution (PatchMatcher &patchMatcher, std::shared_ptr< Homography > homography, std::shared_ptr< Homography > previousHomography, std::shared_ptr< Marker > marker, float *maxDistance) |
bool | trackMarker (std::shared_ptr< TrackedMarker > trackedMarker) |
void | processFrame (cv::Mat image) |
void | updateCamera (cv::Mat image) |
bool | trackAllMarkers () |
bool | processSharedOpticalFlow () |
void | detectMarkersNow () |
void | detectMarkersInBackground () |
void | detectMarkers (std::vector< std::shared_ptr< Marker > > markersToDetect, std::vector< std::vector< cv::Point2f > > maskRegions) |
void | verifyDetections (std::shared_ptr< CameraImage > cameraImage) |
std::shared_ptr< TrackedMarker > | setupNewTrackedMarker (std::shared_ptr< Marker > marker, std::shared_ptr< CameraImage > cameraImage, std::shared_ptr< Homography > homography) |
bool | setupNewTrackedMarker (TrackedMarker &trackedMarker, cv::Ptr< CameraImage > cameraImage, cv::Ptr< Homography > homography) |
std::vector< std::shared_ptr< Marker > > | getMarkersToDetect () |
bool | addMarker (std::shared_ptr< Marker > marker) |
void | removeMarker (std::shared_ptr< Marker > marker) |
Removes this marker from the detector. Does not return anything, because it can't know about state, because it's in general queued. | |
void | processMarkerQueues () |
int | getNumberOfMarkersDetected () |
const MarkerDetectorResult & | getDetectedMarker (int position) |
bool | hasCameraCalibration () |
CameraCalibration | getCameraCalibration () |
int | getNumberOfTrackedMarkers () |
int | getNumberOfMarkers () |
std::shared_ptr< TrackedMarker > | getTrackedMarker (int position) |
std::vector< std::vector< cv::Point2f > > | getTrackedBoundaries () |
cv::Mat | getCameraImage () |
std::vector< cv::KeyPoint > | getKeypoints () |
bool | isUsingFlowRecovery () |
void | setUseFlowRecovery (bool f) |
int | numMarkersFlowRecoverable () |
void | prohibitFlowRecovery () |
void | setThreading (bool t) |
void | setNumDetectionThreads (int t) |
void | setNumThreads (int t) |
void | toggleParallelDetection (bool isParallel) |
bool | isDetectorParallel () |
void | setMarkerChoiceMethod (MarkerDetector::MarkerChoiceMethod m) |
void | setMaximumSimultaneousTracking (int t) |
void | clearTracking () |
void | setIntrinsics (float focalX, float focalY, float prinX, float prinY) |
void | setHammingThreshold (int ham) |
void | setOrientationFilterThreshold (float angle) |
void | setNumMatchesRequired (int numMatches) |
bool | trackedMarkersUseExtensions () |
bool | anyMarkersUseExtensions () |
int | extendMarkers (cv::Mat image) |
bool | createExtension (cv::Mat image, std::shared_ptr< Marker > marker, std::shared_ptr< TrackedMarker > trackedMarker) |
bool | checkNewMarker (std::shared_ptr< Marker > marker) |
void | switchTrackedExtensions (cv::Mat image) |
Public Attributes | |
int | numDetectionsAttempted |
int | numDetectionsMade |
int | numDetectionsKept |
int | numTracksAttempted |
std::shared_ptr< DebugState > | debugState |
Static Public Attributes | |
static const int | maxImageWidth = 640 |
bool PlanarTracker::anyMarkersUseExtensions | ( | ) |
Of ALL the markers in the detector, are any of them involved in extended marker in any way? i.e. could they be extended or switched? Probably obselete!
bool PlanarTracker::checkNewMarker | ( | std::shared_ptr< Marker > | marker | ) |
Once a new extended marker is created, it might not necessarily be good enough (could be on a featureless region of the image for example). This makes sure the new marker fulfills various criteria
bool PlanarTracker::createExtension | ( | cv::Mat | image, |
std::shared_ptr< Marker > | marker, | ||
std::shared_ptr< TrackedMarker > | trackedMarker | ||
) |
Attempt to create a new exteded marker, from an existing marker, at its current tracked state
image | The current camera image (for extracting the new marker image) |
marker | The marker which is to be extended |
trackedMarker | Representing the current tracked state of the marker in the image |
int PlanarTracker::extendMarkers | ( | cv::Mat | image | ) |
The main function for initialising extended markers (should only be called if any of the markers currently tracked support this) This will look at tracked markers, and for those which are not extended (but could be) will try to create new extensions
image | The current camera image |
|
inline |
OPTICAL FLOW RECOVERY
|
inline |
Set threshold used in hamming filter, which cuts any potential match with a higher distance than this Set to a value of 0 to skip this filter Default value: 70
|
inline |
Set the minimum number of (post homography inlier) matches required for a marker to be considered a match Default value: 30
|
inline |
Set the angle threshold used in the orientation filter, which cuts matches which do differ from the dominant orientation change in the image by more than this value. Set to a value of 0 to skip this filter Angle is in degrees Default value: 8
void PlanarTracker::switchTrackedExtensions | ( | cv::Mat | image | ) |
This is called during tracking when any of the markershave extensions, in order to see if for any marker, any of its other extensions (i.e. markers with the same root) would be better candidates for tracking right now. If so, it will switch to tracking these, and create new TrackedMarker objects as needed
bool PlanarTracker::trackedMarkersUseExtensions | ( | ) |
Of all the markers currently being tracked, are any of them involved in extended marker in any way? i.e. could they be extended or switched?