rtabmap icon indicating copy to clipboard operation
rtabmap copied to clipboard

[Feature-Request] BEBLID

Open borongyuan opened this issue 2 years ago • 2 comments

BEBLID (Boosted Efficient Binary Local Image Descriptor) is a efficient binary descriptor learned with boosting. It is able to describe keypoints from any detector just by changing the scale_factor parameter. In several benchmarks it has proved to largely improve other binary descriptors like ORB or BRISK with the same efficiency.

BEBLID is one of the best non-deep learning feature descriptor in recent years. It was verified in BEBLID-SLAM. I think we should add it in and see the effect. What's a bit awkward is that it has only been added to OpenCV since 4.5.1. We have several platforms using slightly older versions of OpenCV. For older OpenCV versions, we can use the implementation in this repository. But I also want to avoid messing up the code too much.

borongyuan avatar Sep 03 '23 04:09 borongyuan

BEBLID is BSD license, so we could probably include their source code as 3rd party in rtabmap and use it when we detect OpencV<4.5.1, and then use opencv's version when Opencv>=4.5.1 is detected. It seems to support many detectors, I think we could start by making a new Feature2D type for FAST+BEBLID (which seems the type used in BEBLID-SLAM)

matlabbe avatar Sep 04 '23 20:09 matlabbe

BEBLID is BSD license, so we could probably include their source code as 3rd party in rtabmap and use it when we detect OpencV<4.5.1, and then use opencv's version when Opencv>=4.5.1 is detected.

I thought so at the beginning, but we may need to check whether there is any difference between the implementations to avoid parameter incompatibility. For example for scale_factor in BEBLID:

6.25f is default and fits for KAZE, SURF detected keypoints window ratio 6.75f should be the scale for SIFT detected keypoints window ratio 5.00f should be the scale for AKAZE, MSD, AGAST, FAST, BRISK keypoints window ratio 0.75f should be the scale for ORB keypoints ratio 1.50f was the default in original implementation

And in OpenCV's doc:

1.00f should be the scale for ORB keypoints 6.75f should be the scale for SIFT detected keypoints 6.25f is default and fits for KAZE, SURF detected keypoints 5.00f should be the scale for AKAZE, MSD, AGAST, FAST, BRISK keypoints

I don't know why there is a difference for ORB.

borongyuan avatar Sep 05 '23 01:09 borongyuan