radiusMatch
under-score opened this issue · comments
under-score commented
Would be interested to learn why cloning.py uses radiusMatch and not the more frequently seen knnMatch (with detection of inliners)? And what about block-based detection instead of keypoint-based? Even after careful adjustment of all parameter, I usually miss 50% of all CMDFs ...
Guido Bartoli commented
- I used radiusMatch because I thought it would be simpler for user to set a threshold on descriptor distance rather than the K parameter, but KNN could be added as an option (however it would not improve the detection accuracy, just the number of matching keypoints)
- Block-based detection is much faster, but not robust against scaling and rotation. Keypoint-based approach can deal with a much broader range of transformation
- probably one of the two images has been manipulated too heavily and the descriptors have not been able to become sufficiently independent of it. However, you made a good point referencing BEBLID implementation inside OpenCV, I was not aware of that, I will put it as another option inside the tool in the near future (just added to the Github Projects section), thanks.
under-score commented
thank you.
- Makes sense -- although it is always difficult to find the optimal threshold (which let me move to knnMatch).
- There are also scale invariant block-based detection methods (table 8 of this paper) that may be helpful in a toolbox when dealing with low edge/corner images.
- Maybe I am wrong but so far I see little advantage of BEBLID.