fixing centroids override by using cv::mat deep copy #53
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi
as part of working and improving orb slam 3, we encountered a bug in assigning new centroids to the voc tree.
we offer simple and clean solution to this in the following commit.
when creating a new voc tree from around 1 million features in the orbslam3 voc.txt, we found that features which are selected as cluster centers during the k-medians are mutated, meaning the leaves that are supposed to represent those features actually hold the mutated version (cluster centers). for example, in a tree with around 900k leaves, we noticed about 200k were mutated.
this damaged the correctness of the voc tree, since we needed to assign weights to each feature/leaf, using the original voc.txt weights. this means mutated features had no correct weights. after this change, we notice no original feature was mutated.