Are there any fast alternatives to SURF and SIFT for scale-invariant feature extraction?
Asked Answered
K

7

33

SURF is patented, as is SIFT. ORB and BRIEF are not patented, but their features are not scale-invariant, seriously limiting their usefulness in complex scenarios.

Are there any feature extractors that can extract scale-invariant features as fast as SURF and are not so strictly patented as SURF and SIFT?

Kiangsi answered 14/4, 2012 at 22:16 Comment(1)
Asked on dsp as well.Lavery
N
32

Although you already choose BRISK, you might find FREAK interesting. Author claims to have better results than BRISK and ORB. I should also add that ORB is scale-invariant but has some problems in that area. So I would still recommend it for someone to try it.

The FREAK source code is compatible with OpenCV (how easy it is to merge them I do not know) and the author is working on submitting it to the OpenCV project.

EDIT:

FREAK is now part of opencv feature detectors / descriptors.

You can read here more about the differences between several feature detectors/extractors, and also a series of benchmarks which includes FREAK and other popular ones.

Nullifidian answered 11/6, 2012 at 9:54 Comment(2)
+1 Brisk detector combined with Freak descriptor is what gives the best results for me.Adama
github.com/kikohs/freak/blob/master/demo/freak_demo.cpp broken link to freak sampleKocher
E
14

FREAK is supposed to be the fastest scale and rotation invariant descriptor extractor, it is open source and you can use it easily as it is implemented in OpenCV. You need a binary matcher that uses the Hamming Distance, like the BruteForceMatcher.

Here you have an example on how to use it, easily replaceble by SIFT descriptor.

Estivate answered 19/12, 2012 at 12:1 Comment(1)
It looks like your link to the example is broken :(Puttyroot
K
9

I ended up using Brisk, which is a feature detector with performance comparable to SURF but under the BSD licence. Plus, it's got a very nice open source C++ implementation that plugs in easily to the OpenCV FeatureDetector framework, so it's like 2 lines choosing to use Brisk over SURF in your code.

Kiangsi answered 14/5, 2012 at 0:10 Comment(1)
Perfect. I saw the paper, but hadn't found the implementation. Thanks for the reply.Embarrassment
P
6

You might try multi-scale histogram of oriented gradients. It won't be fully scale-invariant, but if your data are constrained with a reasonable set of scale limits (often the case in practice) then this can probably work for you.

Another approach, depending totally on what your intended application is, would be to leverage poselets, even if they are built on top of a non-scale-invariant descriptor like plain histogram of oriented gradient, or appearance models. If the annotations in your training data include examples of different items for detection all at different scales, then the Procrustes-style distance used in Poselets for training should take care of a lot of scale-invariance. This may not be satisfactory though if your primary application is not localized detection of parts.

As an aside, I think it's rather unfortunate that SIFT and SURF were capable of being patented this way, given that they were (at least in part) funded with tax-payer dollars through grants.

Pyelitis answered 14/4, 2012 at 22:46 Comment(1)
Do you have a non-private link to info multi-scale HoG, for those of us without IEEE subscriptions?Guncotton
U
4

You can try KAZE, it is supposed to be faster and more precise (the videos seem fancy, but I did not get to try it myself yet). There is also an accelerated version of it available.

Pablo F. Alcantarilla, Adrien Bartoli and Andrew J. Davison, "KAZE Features", In European Conference on Computer Vision (ECCV). Fiorenze*, Italy. October 2012.

Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli, "Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces", In British Machine Vision Conference (BMVC). Bristol, UK. September 2013

The source codes, videos and more can be found at the author's website.

*Firenze

Upstream answered 19/5, 2014 at 15:35 Comment(1)
I have compared AKAZE, SURF and SIFT in one application and I can confirm that in my tests, it is at least as good and the descriptors being much faster to compare than either of the too (them being binary and all). It is also not subject to patents so I'd recommend AKAZE as the first choice.Phoebe
D
3

FREAK is now included in OpenCV 2.4.2, you can use it easily :-)

Disney answered 8/8, 2012 at 8:27 Comment(0)
L
-1

Detection of landmark points and finding hog features(it's not patented ) by forming patches around landmark points .

Landlordism answered 19/7, 2017 at 12:22 Comment(1)
Hi, welcome to SO, and thank you for trying to contribute. However it does not make much sense to add a oneliner without any details as an answer, if the question already has a highly upvoted, detailed and accepted answer like it does here.Athanasius

© 2022 - 2024 — McMap. All rights reserved.