It seems obvious that the number of keypoints of any image should equal the number of keypoints of the mirror image of that image. The following is a simple function to test this assumption:?
It is very easy to find images that flunk this simple test. In particular the image of the girl in the hat included in the Mathematica documentation yields False when the above is appled to it. This example can be found at
Import["ExampleData/lena.tif"]
Any comments that could help clarify this situation would be appreciated.
Image processing functions in general often do things that would be counter-intuitive if a human did them.
The feature detection is based off of the SURF, so I would look at details and canonical implementations of that algorithm for a more precise idea of what it is doing internally.
I am not familiar with the literature on SURF, so it will take some effort to get to the bottom of this. In the meantime, my guess is that this is definitely a “bug” and not a “feature.”
From what I’ve read online, the actual SURF algorithm is supposed to be rotationally invariant, but it seems that different kinds of implementations of it may have limited rotational invariance, although I’m not sure I know what that would mean. If you believe this is an issue, please contact Wolfram technical support (support@wolfram.com) with a description of the issue.
Your assumption is reasonable. But in practice, the implementation may not meet such criterion due to a variety of factors like for example the need for speed and the sampling of the scale space. The value of ImageKeypoints lies in the many keypoints it returns. A single keypoint may not be found in the mirrored image, but the large set of keypoints will overall.