Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VLFeat compatibility #114

Closed
wants to merge 8 commits into from
Closed

VLFeat compatibility #114

wants to merge 8 commits into from

Conversation

griwodz
Copy link
Member

@griwodz griwodz commented Oct 16, 2020

Description

This PR delivers code that is identical to PR #112, but the changes have been rearranged into different commits to make examining the changes easier.

The proposed change adds a descriptor computation that is compliant with VLFeat. The original PopSift descriptor was not because it used the angle differently: while VLFeat spreads the angular part of the descriptor over up to 8 bins of the descriptor's histogram, PopSift would only spread it over two. Furthermore, descriptors are arranged differently into the histograms (according to VLFeat documentation, VLFeat does that also differently from Lowe's original code).

Features list

For backward compatibility, the VLFeat descriptor is not the default descriptor. The following settings lead to results that seem to be identical to the VLFeat 0.9.20 C code and command line (the 0.9.21 command line does not work):

--desc-mode=vlfeat              : use the VLFeat descriptor extraction
--norm-mode=classic             : use L2 normalization, not RootSift
--norm-multi 9 --write-as-uchar : multiply descriptor values with 2^9 and cast to uchar
--write-with-ori                : output of descriptors in the same format as VLFeat command line (instead of OpenCV-compliant)
--initial-blur 0.5              : PopSift default
--sigma 1.6                     : PopSift default
--threshold 0                   : set the peak threshold to 0
--edge-threshold 10.0           : PopSift default

Implementation remarks

The L2 normalization had a bug that was removed.

The threshold for accepting an orientation in VLFeat is computed before smoothing the histogram, PopSift did it after computing the histogram (consequently accepting fewer orientations). This was change to work like VLFeat.

@griwodz griwodz changed the title VLFeat capatibility VLFeat compatibility Oct 16, 2020
@griwodz griwodz self-assigned this Oct 16, 2020
@simogasp simogasp added this to the v1.0.0 milestone Oct 16, 2020
Carsten Griwodz added 2 commits March 7, 2021 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants