I am trying to use Akaze for an application that searches correspondences between a template and an image seen by a camera.
As a start, I have written the common pipeline building on the excellent tutorial of Rust CV. I am using Akaze with threshold 0.001, looking for two nearest neighbors, and using a distance ratio criteria of 0.8 between the first best match and the second one (best_dist < 0.8 * next_best_dist), as suggested in the Akaze OpenCV tutorial. Besides that, I am using the functions matching and symmetric_matching from the tutorial as is.
For comparison, I created a similar pipeline in Python using OpenCV (4.7.0.72). When only scaling is involved, both Rust CV's Akaze and Open CV Akaze perform well:
Open CV, before matching: left: 2514 keypoints, right: 820 keypoints:

Rust CV, before matching: left: 5353 keypoints, right: 1480:

However, when I rotate the small image, Rust CV completely fails while Open CV works like a charm:
Open CV, before matching: left: 2514 keypoints, right: 1207 keypoints:

Rust CV, before matching: left 5353 keypoints, right: 2490

So, it looks to me that there is something very broken with the rotational invariance of RustCV's Akaze implementation.
Was this implementation ever validated against the OpenCV one?
I am also surprised by the different numbers of matches, as I would expect more similar ones between the two implementations.
I am trying to use Akaze for an application that searches correspondences between a template and an image seen by a camera.
As a start, I have written the common pipeline building on the excellent tutorial of Rust CV. I am using Akaze with threshold 0.001, looking for two nearest neighbors, and using a distance ratio criteria of 0.8 between the first best match and the second one (best_dist < 0.8 * next_best_dist), as suggested in the Akaze OpenCV tutorial. Besides that, I am using the functions
matchingandsymmetric_matchingfrom the tutorial as is.For comparison, I created a similar pipeline in Python using OpenCV (4.7.0.72). When only scaling is involved, both Rust CV's Akaze and Open CV Akaze perform well:
Open CV, before matching: left: 2514 keypoints, right: 820 keypoints:

Rust CV, before matching: left: 5353 keypoints, right: 1480:

However, when I rotate the small image, Rust CV completely fails while Open CV works like a charm:
Open CV, before matching: left: 2514 keypoints, right: 1207 keypoints:

Rust CV, before matching: left 5353 keypoints, right: 2490

So, it looks to me that there is something very broken with the rotational invariance of RustCV's Akaze implementation.
Was this implementation ever validated against the OpenCV one?
I am also surprised by the different numbers of matches, as I would expect more similar ones between the two implementations.