Clustering feature Space - SURF descriptors with Adaptive MeanShift

749 views Asked by At

didnt find anything on internet. There have been some papers around recently about clustering feature space descriptors (such from SIFT/SURF) using the Mean Shift algo. Does anybody have any links or any code/library/tip to actually cluster SURF descriptors? (Matlab/C++)

I've already tried to use the 1D Mean-Shift (which perfectly works on the locations of the points) and also some other mean shifts which were avaiable...though all seem to have problems with higher dimensions.

Thanks in advance!

1

There are 1 answers

0
lukemtesta On

Why are you using a 1D classification algorithm with a high-dimensional dataset? Mean-shift segmentation is an unsupervised classification task while SIFT and SURF are used to find keypoints in an image. There is only one mean-shift. There are other alterntives such as CAMshift but are mostly independent of mean-shift. SURF and mean-shift are independent algorithms. Therefores you will find no implementation with dependencies unless it is tailored for a specific application.

Thereforemroe SIFT commonly employs a 128-dimensional EoH-based descriptor (similar dimensionality to the extended SURF descriptor) for a given keypoint. If you are going to account for the local position of each pixel (x,y) you will have a 130 dimensional feature space, not 1D.

If you wish to categorise the edge information in an image, you should first localise the keypoints in an image using SIFT or SURF. Then use a concatenated vector of the EoH and pixel position as the input to the segmentation algorithm. If you search on google or mathworks functions for an N-dimensional mean-shift algorithm you would have found one. Its the same process for a 1D dataset so has no gain being hard coded for a 1D user case. You would have also found that MATLAB's image toolbox already contains a SURF implementation.

Mean-Shift: http://www.mathworks.co.uk/matlabcentral/fileexchange/10161-mean-shift-clustering

SURF: http://www.mathworks.co.uk/help/vision/examples/object-detection-in-a-cluttered-scene-using-point-feature-matching.html

The C++ and MATLAB SIFT implementations are referenced on the original paper and it's site (A. Vedaldi, "An implementation of SIFT detector and descriptor", 2004).

SIFT: http://www.robots.ox.ac.uk/~vedaldi/code/sift.html

Original SURF paper: http://www.vision.ee.ethz.ch/~surf/eccv06.pdf

Original SIFT paper: http://www.robots.ox.ac.uk/~vedaldi/assets/sift/sift.pdf