I'm working on object recognition using VLSift and it appears to me that there are various way to get this working. One method is to : -extract SIFT features -lookup features with kdtree that holds existing SIFT features database -returned best bin features
Another seems to be: -extract SIFT features -create histogram
that is, ignoring the classification part of object recognition. Am I correct that these are two legitimate approaches? As far as I know, the histogram will also get the best bin. If so, which is better? What are the advantages and disadvantages?
Kd-Tree is a data structure that contains a set of items. It allows a fast search for the K nearest matches of a query item.
As far as the object recognition problem is concerned, Kd-Tree is not a necessary component. It only serves the purpose of improving the runtime of matching individual features.
The histogram approach does not require matching individual features at all. Instead, you quantize the features of a query image. Then, you compute a histogram of the quantized features. In order to find a matching database image, you look for the most similar histogram in the database.
Since no matching of individual features is required, the histogram approach runs asymptotically faster.
An important difference between the two approaches is that the histogram representation is ignorant of the spatial coordinates of the keypoints for which the feature vectors were computed. Thus, it has less discriminative power.