Implement SOFT features in mrpt-vision
- Paper reference. Seems to outperform many state-of-the-art alternatives.
- Example MATLAB implementation here
Update Nov 2018: There's a SOFT2 version:
- Cvisic, I., Cesic, J., Markovic, I., & Petrovic, I. (2017). Soft-SLAM: Computationally efficient stereo visual SLAM for autonomous UAVS. Journal of Field Robotics.
I am interested in implementing this feature. Can you give me some cue about where to start from? Thanks!
Thanks for the initiative! I'll pass you soon a few pointers on how to get started.
Since this is a new feature detector for this repo I am thinking of creating a new file altogether, like mrpt/libs/vision/src/CFeatureExtraction_SOFT.cpp and its required utilities in a new folder mrpt/libs/vision/src/SOFT_utils for better organization.
Let me know if you have any corrections here.
Yes, that's perfect.
Please be sure of carefully reading this: https://github.com/MRPT/mrpt/blob/master/.github/CONTRIBUTING.md
Cheers!
I started with implementation of the utilities first. So I wanted to know if any of the following standard Matlab APIs are implemented in MRPT -
- detectMinEigenFeatures: Detecting Shi-Tomasi features in image
- extractFeatures: Extracting detected features.
- matchFeatures
- KLT Tracker (Kanade-Lucas-Tomasi)
- showMatchedFeatures: For visualization of matched features
Thanks.
Sorry for the delay but as you might have seen... we have too many interesting developing fronts right now!
Answering your doubts:
detectMinEigenFeatures: Detecting Shi-Tomasi features in image
mrpt::vision::CFeatureExtraction::extractFeaturesKLT() does the job if you set options.featsType to featKLT.
extractFeatures: Extracting detected features.
The same class linked above has a computeDescriptors() method with a number of options. Refer to the Doxygen docs in the link.
matchFeatures
Yes: mrpt::vision::matchFeatures
KLT Tracker (Kanade-Lucas-Tomasi)
Yes: mrpt::vision::CFeatureTracker_KL
showMatchedFeatures: For visualization of matched features
Not as a single function, as far as I remember (@famoreno ??), but you could do:
CFeatureList list1,list2;
// ...
mrpt::gui::CDisplayWindow win1, win2;
win1.showImageAndPoints( img1, list1 );
win2.showImageAndPoints( img2, list2 );
Thanks! That was really helpful.
has this feature been implemented?
Nope... if someone wants to contribute it, fork+pull-requests are welcome! ;-)