Skip to content

VLFeat compatibility#114

Closed
griwodz wants to merge 8 commits intodevelopfrom
fix/vlfeatCompliance2
Closed

VLFeat compatibility#114
griwodz wants to merge 8 commits intodevelopfrom
fix/vlfeatCompliance2

Conversation

@griwodz
Copy link
Copy Markdown
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
@griwodz griwodz force-pushed the fix/vlfeatCompliance2 branch from 358dca7 to 5a295bb Compare March 7, 2021 00:17
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