# What would be a reasonable option for clustering for unknown number of clusters and a lot of outliers?

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?