I have two images: a large image of a puppy (the scene) and a small crop of its nose (the target):
I have gathered SURF points for both the target and the scene and then matched them. I have displayed the best matches on the scene image as follows:
What is the best way to identify the largest cluster of matched surf points?
In this example, all the points are well clustered. However, in some other examples, there are several outliers which I want to exclude.
Thanks.
Update: KDE worked well for me. Thanks everyone, that's great.
You don't need cluster analysis.
What you want to find is the area of highest density. That is probably where the true match is.
There are many methods of density estimation, in particular for low dimensionality. Consider Kernel Density Estimation KDE if you can afford it.
If you cannot afford density estimation, but need something very fast, try this:
In each dimension, compute the median.
Combine the medians into a vector to use as estimation.
The median is more robust to outliers than the mean, but other than that, it's essentially taking the (robust) mean of all your points. This will be okay, unless there are multiple good matches in the same image. Then density estimation as discussed above will be better.