Classes | |
| class | HarrisKeyframe |
A key-frame contains:
| |
Public Types | |
Public Member Functions | |
| void | addKeyFrame (const boost::shared_ptr< opentl::models::Target > &target, opentl::core::cvdata::Image *img=NULL) |
| Add key-frame. | |
| virtual HarrisKeypoints * | clone () const |
| Clone: call the copy constructor. | |
| int | countOfflineMatchings (int targetId) |
| void | drawCurrKeypoints (opentl::core::cvdata::Image *img) |
| Draw current detected features (red crosses). | |
| void | drawKeyframe (opentl::core::cvdata::Image *img, int keyInd) |
| Superimpose keyframe on the image. | |
| void | drawNearestKeyframe (opentl::core::cvdata::Image *img, int targetId) |
| Superimpose nearest keyframe to a given target on the image. | |
| void | drawOfflineKeypoints (opentl::core::cvdata::Image *img, int targetId=0) |
| Draw off-line (previously matched) features (purple crosses). | |
| void | drawOfflineMatchings (opentl::core::cvdata::Image *img, int targetId=0) |
| Draw keyframe (= off-line) matching features (blue dots and lines). | |
| void | drawOnlineKeypoints (opentl::core::cvdata::Image *img, int targetId=0) |
| Draw on-line (previously matched) features (purple crosses). | |
| void | drawOnlineMatchings (opentl::core::cvdata::Image *img, int targetId=0) |
| Draw on-line matching features (purple dots and lines). | |
| int | getNKeyFrames () |
| Number of available keyframes. | |
| void | getOfflineMatchings (std::vector< math::Vector3 > &bodyPoints, std::vector< math::Vector2 > &screenPoints, int targetId=0) |
| Obtain keyframe (= off-line) matchings. | |
| void | getOnlineMatchings (std::vector< math::Vector3 > &bodyPoints, std::vector< math::Vector2 > &screenPoints, int targetId=0) |
| Obtain on-line matchings. | |
| HarrisKeypoints (const HarrisKeypoints &c) | |
| Copy constructor. | |
| HarrisKeypoints (opentl::modelprojection::WarpBack *warpBack, int camIdx, modelprojection::GLRenderer *renderer=NULL) | |
| Constructor. | |
| virtual void | init () |
| Allocate memory and set parameters. | |
| virtual int | matchFeatLevel (const TargetPtrVector &targets, T_MEAS_FEATPtrVector &outputMeas, std::size_t partitionIdx) |
| matchFeatLevel. Match detected keypoints on short-baseline (previous frame) and wide-baseline (nearest key-frame) | |
| int | matchKeypointsNCC (opentl::core::cvdata::HarrisKeypoints *feat1, opentl::core::cvdata::HarrisKeypoints *feat2) |
| Match two feature sets with normalized cross-correlation (NCC). | |
| virtual int | matchObjLevel (const TargetPtrVector &targets, T_MEAS_OBJPtrVector &outputMeas, std::size_t partitionIdx) |
| matchObjLevel. Estimate pose from point correspondences (it calls matchFeatLevel first) | |
| virtual int | preProcess (const opentl::core::cvdata::Image &image) |
| Pre-processing. Detect Harris keypoints in the current image. | |
| void | removeAllKeyframes () |
| Remove all key-frames. | |
| virtual int | sampleModelFeatures (const TargetPtrVector &targets) |
| Sample visible model features M_off, from the off-line given ShapeAppearance model (i.e. off-line). | |
| void | shortBaselineWarp (opentl::core::cvdata::HarrisKeypoints *onlineFeatures, const opentl::core::State &predState) |
| Re-project keypoint positions from the previous frame to the current, predicted pose. | |
| virtual int | updateModelFeatures (const TargetPtrVector &targets) |
| Update model features M_on, from the on-line image stream. | |
| void | wideBaselineWarp (HarrisKeyframe *keyFrame, opentl::core::cvdata::HarrisKeypoints *offlineFeatures, const opentl::core::State &predState) |
| Warp keypoint descriptors from the nearest keyframe (pre-computed) to the current position in the screen. For each patch (point and normal) in object-space, compute the invert homography from the current (predicted) view, back to the keyframe and warp the keyframe descriptor. | |
| virtual | ~HarrisKeypoints () |
| Destructor. | |
Common flags to all modalities: they specify which field will be filled in the output measurement, inside the matchXLevel() function. Default values = all true.
| maxFeatures | (int) Maximum number of detectable features on any image (keyframes or current frames) |
| corrWin | (int) Size of the correlation window |
| OFFLINE_COUNT |
Reimplemented from opentl::modalities::Modality.
| computeJacobians | <bool> Flag for computing Jacobians of re-projected keypoints (for example, needed by DataFusion::upgradeToObjLevel) Default: false |
| minDetectDist | (double) Minimum distance between detected features |
| qualityLevel | (double) Minimum acceptable "quality" for each feature |
| maxMatchDist | (double) Maximum search distance for matching (~ std of feature-level measurement noise, R) |
| nccThresh | (double) Minimum NCC value to accept a match |
| measStdFeatOffline | (double) Standard deviation of measurement noise (feature-level), for the off-line sampled keypoints |
| measStdFeatOnline | (double) Standard deviation of measurement noise (feature-level), for the on-line updated keypoints |
| measStdObj | (double) Standard deviation of measurement noise (object-level) |
| poseElementWeights | (math::Transform) Weights (Mahalanobis distance) for the finite pose parameters, in order to evaluate "distances" in pose-space |
| usePoseElementWeights | (bool) Whether to use pose element weights |
| maxKeyframes | (int) Maximum number of possible key-frames |
| renderKeyframes | (bool) If true the key-frames are rendered using the texture model. Otherwise, the current image is used. NOTE the latter may introduce errors, if the pose is not well aligned! |
| createKeyframeDist | (double) If minimum distance between current frame and the nearest keyframe is higher than this, then a new keyframe is created default: -1 (no keyframe is created, apart from the first) |
| removeKeyframeDist | (double) If distance between current frame and a keyframe is higher than this, then the keyframe is removed default: -1 (no keyframe is removed) |
| ONLINE_COUNT |
Reimplemented from opentl::modalities::Modality.
| opentl::modalities::HarrisKeypoints::HarrisKeypoints | ( | opentl::modelprojection::WarpBack * | warpBack, | |
| int | camIdx, | |||
| modelprojection::GLRenderer * | renderer = NULL | |||
| ) |
Constructor.
| opentl::modalities::HarrisKeypoints::HarrisKeypoints | ( | const HarrisKeypoints & | c | ) |
Copy constructor.
| virtual opentl::modalities::HarrisKeypoints::~HarrisKeypoints | ( | ) | [virtual] |
Destructor.
| void opentl::modalities::HarrisKeypoints::addKeyFrame | ( | const boost::shared_ptr< opentl::models::Target > & | target, | |
| opentl::core::cvdata::Image * | img = NULL | |||
| ) |
Add key-frame.
| target | Input target | |
| img | Input (optional) input image; if absent, the key-frame will be rendered from the target model |
| virtual HarrisKeypoints* opentl::modalities::HarrisKeypoints::clone | ( | ) | const [inline, virtual] |
| int opentl::modalities::HarrisKeypoints::countOfflineMatchings | ( | int | targetId | ) |
| void opentl::modalities::HarrisKeypoints::drawCurrKeypoints | ( | opentl::core::cvdata::Image * | img | ) |
Draw current detected features (red crosses).
| void opentl::modalities::HarrisKeypoints::drawKeyframe | ( | opentl::core::cvdata::Image * | img, | |
| int | keyInd | |||
| ) |
Superimpose keyframe on the image.
| void opentl::modalities::HarrisKeypoints::drawNearestKeyframe | ( | opentl::core::cvdata::Image * | img, | |
| int | targetId | |||
| ) |
Superimpose nearest keyframe to a given target on the image.
| void opentl::modalities::HarrisKeypoints::drawOfflineKeypoints | ( | opentl::core::cvdata::Image * | img, | |
| int | targetId = 0 | |||
| ) |
Draw off-line (previously matched) features (purple crosses).
| void opentl::modalities::HarrisKeypoints::drawOfflineMatchings | ( | opentl::core::cvdata::Image * | img, | |
| int | targetId = 0 | |||
| ) |
Draw keyframe (= off-line) matching features (blue dots and lines).
| void opentl::modalities::HarrisKeypoints::drawOnlineKeypoints | ( | opentl::core::cvdata::Image * | img, | |
| int | targetId = 0 | |||
| ) |
Draw on-line (previously matched) features (purple crosses).
| void opentl::modalities::HarrisKeypoints::drawOnlineMatchings | ( | opentl::core::cvdata::Image * | img, | |
| int | targetId = 0 | |||
| ) |
Draw on-line matching features (purple dots and lines).
| int opentl::modalities::HarrisKeypoints::getNKeyFrames | ( | ) | [inline] |
Number of available keyframes.
| void opentl::modalities::HarrisKeypoints::getOfflineMatchings | ( | std::vector< math::Vector3 > & | bodyPoints, | |
| std::vector< math::Vector2 > & | screenPoints, | |||
| int | targetId = 0 | |||
| ) |
Obtain keyframe (= off-line) matchings.
| void opentl::modalities::HarrisKeypoints::getOnlineMatchings | ( | std::vector< math::Vector3 > & | bodyPoints, | |
| std::vector< math::Vector2 > & | screenPoints, | |||
| int | targetId = 0 | |||
| ) |
Obtain on-line matchings.
| virtual void opentl::modalities::HarrisKeypoints::init | ( | ) | [virtual] |
| virtual int opentl::modalities::HarrisKeypoints::matchFeatLevel | ( | const TargetPtrVector & | targets, | |
| T_MEAS_FEATPtrVector & | outputMeas, | |||
| std::size_t | partitionIdx | |||
| ) | [virtual] |
matchFeatLevel. Match detected keypoints on short-baseline (previous frame) and wide-baseline (nearest key-frame)
| targets | Input vector of targets | |
| outputMeas | Output feature-level measurements (matched keypoints, residuals and evtl. Jacobians) NOTE: The second index of outputMeas (state inside the target) is not used, and always set to 0. |
Reimplemented from opentl::modalities::Modality.
| int opentl::modalities::HarrisKeypoints::matchKeypointsNCC | ( | opentl::core::cvdata::HarrisKeypoints * | feat1, | |
| opentl::core::cvdata::HarrisKeypoints * | feat2 | |||
| ) |
Match two feature sets with normalized cross-correlation (NCC).
| feat1 | Input feature set 1; found correspondences with feat2 are stored inside | |
| feat2 | Input feature set 2; found correspondences with feat1 are stored inside |
| virtual int opentl::modalities::HarrisKeypoints::matchObjLevel | ( | const TargetPtrVector & | targets, | |
| T_MEAS_OBJPtrVector & | outputMeas, | |||
| std::size_t | partitionIdx | |||
| ) | [virtual] |
matchObjLevel. Estimate pose from point correspondences (it calls matchFeatLevel first)
| targets | Input vector of targets | |
| outputMeas | Output object-level measurements (state-space residuals) NOTE: The second index of outputMeas (state inside the target) is not used, and always set to 0. |
Reimplemented from opentl::modalities::Modality.
| virtual int opentl::modalities::HarrisKeypoints::preProcess | ( | const opentl::core::cvdata::Image & | image | ) | [virtual] |
Pre-processing. Detect Harris keypoints in the current image.
| void opentl::modalities::HarrisKeypoints::removeAllKeyframes | ( | ) |
Remove all key-frames.
| virtual int opentl::modalities::HarrisKeypoints::sampleModelFeatures | ( | const TargetPtrVector & | targets | ) | [virtual] |
Sample visible model features M_off, from the off-line given ShapeAppearance model (i.e. off-line).
Get the nearest key-frame (considering all targets.
Reimplemented from opentl::modalities::Modality.
| void opentl::modalities::HarrisKeypoints::shortBaselineWarp | ( | opentl::core::cvdata::HarrisKeypoints * | onlineFeatures, | |
| const opentl::core::State & | predState | |||
| ) |
Re-project keypoint positions from the previous frame to the current, predicted pose.
| onlineFeatures | Previous frame (back-projected in space) keypoints | |
| predState | Predicted state for this target |
| virtual int opentl::modalities::HarrisKeypoints::updateModelFeatures | ( | const TargetPtrVector & | targets | ) | [virtual] |
Update model features M_on, from the on-line image stream.
1 - Update on-line features with the detected ones (from the pre-processing step) 2 - If no nearby key-frame is present, then create a new one under the estimated pose, and back-project the detected features
| targets | Vector of targets |
Reimplemented from opentl::modalities::Modality.
| void opentl::modalities::HarrisKeypoints::wideBaselineWarp | ( | HarrisKeyframe * | keyFrame, | |
| opentl::core::cvdata::HarrisKeypoints * | offlineFeatures, | |||
| const opentl::core::State & | predState | |||
| ) |
Warp keypoint descriptors from the nearest keyframe (pre-computed) to the current position in the screen. For each patch (point and normal) in object-space, compute the invert homography from the current (predicted) view, back to the keyframe and warp the keyframe descriptor.
| keyFrame | Key-frame information (image and keypoints) | |
| predState | Predicted state for this target |
1.5.8