MRPT / mrpt

:zap: The Mobile Robot Programming Toolkit (MRPT)
https://docs.mrpt.org/reference/latest/
BSD 3-Clause "New" or "Revised" License
1.94k stars 629 forks source link

Implement SOFT features in mrpt-vision #514

Open jlblancoc opened 7 years ago

jlblancoc commented 7 years ago

Update Nov 2018: There's a SOFT2 version:

srihegde commented 7 years ago

I am interested in implementing this feature. Can you give me some cue about where to start from? Thanks!

jlblancoc commented 7 years ago

Thanks for the initiative! I'll pass you soon a few pointers on how to get started.

srihegde commented 7 years ago

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.

jlblancoc commented 7 years ago

Yes, that's perfect.

Please be sure of carefully reading this: https://github.com/MRPT/mrpt/blob/master/.github/CONTRIBUTING.md

Cheers!

srihegde commented 7 years ago

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 -

Thanks.

jlblancoc commented 7 years ago

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 );
srihegde commented 7 years ago

Thanks! That was really helpful.

Doodle1106 commented 4 years ago

has this feature been implemented?

jlblancoc commented 4 years ago

Nope... if someone wants to contribute it, fork+pull-requests are welcome! ;-)