Search code examples
matlabcomputer-visionk-meanssiftsurf

run k-means on combination of SURF and SIFT descriptors in matlab


how can I combine SURF and SIFT descriptors in MATLAB in which SIFT is 128D and SURF is 64D and their number of descriptors are different and the other point is that the value of SURF descriptors are very very smaller than SIFT and some of them are negative while all sift descriptors are positive; and then run k-means on the combination of them? there is a related duscussion here but I couldn't understand it and that answer was for OpenCv

any help is appreciated


Solution

  • A solution can be transforming the result of these two descriptors to a unified size and then concatenate them easily. For example, using PCA to transform both of them into a 32D dimension SIFT (32 * m as M_prime) and SURF (32*n as N_prime) and concatenating them like this: combined_feature_vectors = [M_prime N_prime]. Hence, you have + n` descriptor with the size of 32.

    You might solve the problem of small values for SURF by normalizing the features of each algorithm.