I am implementing the CV detection pipeline with the use of SIFT and KNN Matcher.
Image keypoints matched to the query keypoints produce the following image:
The matched objects have a lot of key points on them and there are some false matches. I would like to consider spots with a lot of matches as detections of the query object and ignore isolated points.
What would be an appropriate clustering method, where one can put a limit on points in a neighborhood of some radius to declater this set of points a cluster?
KMeans is not a good idea, since it takes a fixed number of points and doesn't throw outliers.
From the algorithms proposed in sklearn, seems like DBSCAN
and Agglomerative clustering
are a good choice, since they allow for variable number of clusters, unknown apriori and outlier removal.
Or there is better alternative?