jsfeat
jsfeat copied to clipboard
BRISK Feature Descriptor
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.
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.
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?
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).
Does ORB create features for interest points found at each scale in the pyramid instead of producing one set normalized features?
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?
try it and u will know why ;)
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 .
that would be great
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.
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
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]
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
Did any progress get made on this issue?
@martindale the repo seems to be dead @inspirit please correct me if I am wrong