jsfeat icon indicating copy to clipboard operation
jsfeat copied to clipboard

BRISK Feature Descriptor

Open FreakTheMighty opened this issue 11 years ago • 14 comments

It would be really cool if we could implement BRISK in javascript. http://www.robots.ox.ac.uk/~vgg/rg/papers/brisk.pdf

Your library already has a FAST implementation which could be extended as described in the paper linked to above, to estimate the scale of features.

Having a local feature descriptor would be a great addition to jsfeat.

FreakTheMighty avatar Jan 20 '14 03:01 FreakTheMighty

i do have plans to implement several descriptors in jsfeat. still BRISK no in the priority due its performance expenses. i would most likely start with FREAK and ORB. u also can use image pyramid and detect FAST points at different scale levels to imitate scale invariant features.

inspirit avatar Jan 20 '14 09:01 inspirit

In the brisk paper they mention using intra octives for scale detection, that confused me. Without that it seemed somewhat straight forward. Get the FAST score at 3 different octaves. Fit A curve to the observed scores the use the maximum to interpolate scale and position.

FREAK looks interesting, but why do you say it performs better? As near as I can tell its greatest improvement is ordering the most significant bits first in the descriptor which could be used to speed up matching. Is this signficant?

FreakTheMighty avatar Jan 20 '14 16:01 FreakTheMighty

doing scale pyramid in BRISK manner is really expensive when it comes to JS. so i think creating pyramid the way ORB is doing is good enough.

FREAK computation cost is less compared to BRISK and according to my tests it produces better descriptors when it comes to matching (more true positive matches).

inspirit avatar Jan 20 '14 16:01 inspirit

Does ORB create features for interest points found at each scale in the pyramid instead of producing one set normalized features?

FreakTheMighty avatar Jan 21 '14 02:01 FreakTheMighty

I am also very interested in image keypoint descriptor implementation in javascript. Indeed ORB seams a promising candidate in JS environment but why not implement SIFT or "SIFT like" key point descriptor?

josundin avatar Feb 18 '14 14:02 josundin

try it and u will know why ;)

inspirit avatar Feb 18 '14 14:02 inspirit

I have a working version of BRISK. I'm sure there will be design and implementation issues with what I have but I will push what's I've got soon. On Feb 18, 2014 6:26 AM, "Eugene Zatepyakin" [email protected] wrote:

try it and u will know why ;)

Reply to this email directly or view it on GitHubhttps://github.com/inspirit/jsfeat/issues/26#issuecomment-35388561 .

FreakTheMighty avatar Feb 18 '14 15:02 FreakTheMighty

that would be great

inspirit avatar Feb 18 '14 15:02 inspirit

Cool, I am definitely up for trying out your BRISK descriptor in the image alignment tool I am working on. For SIFT I'll might try to implement it :) but I guess the problem would be to build the scale space, it might be a bit heavy for js.

josundin avatar Feb 18 '14 16:02 josundin

it will be magnitudes slower compared to ORB/FREAK/BRISK i'm not sure why people still choose that descriptor for their projects... if u want floating point descriptor so much then just do SURF it is at least has better features and more stable

inspirit avatar Feb 18 '14 16:02 inspirit

One benefit of binary descriptors is that they can use Hamming as a distance metric. This means that the distance between two vectors can be calculated by summing the bits after applying an XOR to the two vectors.

Also, SIFT and SURF descriptors contain floating point values so they are less memory efficient.

Regarding the various binary descriptors. ORB isn't scale invariant. I'm not sure you would consider my version of BRISK scale invariant either. I simply calculate descriptors at a number of discreet scales.

As for matching quality, I believe the respective papers indicate that the mentioned binary descriptors don't out perform floating point descriptors. Nonetheless, they are quite good. Also, I've recently been made aware of 'binboost', which claims to be even better than previous binary descriptors.

http://cvlab.epfl.ch/research/detect/binboost

On Tue, Feb 18, 2014 at 8:32 AM, josundin [email protected] wrote:

Cool, I am definitely up for trying out your BRISK descriptor in the image alignment tool I am working on. For SIFT I'll might try to implement it :) but I guess the problem would be to build the scale space, it might be a bit heavy for js.

Reply to this email directly or view it on GitHubhttps://github.com/inspirit/jsfeat/issues/26#issuecomment-35402777 .

Jesse Vander Does 401-226-8251 | [email protected]

FreakTheMighty avatar Feb 18 '14 17:02 FreakTheMighty

yes SURF and SIFT still claims to be more robust if we compare on very different dataset still the difference is not that big.

i'm aware of binboost and i was also very optimistic about it but authors don't really calculate the time required to compute each descriptor and it turned to be several times slower compared to other binary descriptors. of course matching is fast since we got bit-based vector. also binboost has big problems with noisy/bad quality images. still i really like the idea of it and probably there is a way to avoid some issues by replacing some routines or some preprocessing. i didnt try much yet with it

inspirit avatar Feb 18 '14 17:02 inspirit

Did any progress get made on this issue?

martindale avatar Aug 11 '20 19:08 martindale

@martindale the repo seems to be dead @inspirit please correct me if I am wrong

wardhanster avatar Aug 16 '20 16:08 wardhanster