1 | initial version |
Question: "is the number of clusters that i should use equal to my POI in my application which is 26 ?"
Answer: No, it is not related to the number of classes at all. Typical values range from k=100 to 10000 (or more)
Question: "how is that one center descriptor can be used in matching, and does the rest descriptors that belong to that center Ki descriptor related to each other in some data structure like tree"
Answer: The rest of the descriptors belonging to that cluster are not needed for matching (i.e. you only need to store the cluster centers). The goal is to have a global descriptor, you achieve that by computing now a histogram of all local descriptors (of one image) to their nearest cluster ccenters.
Example: Let's make a small example then it's getting clearer: you have chosen 100 clusters, you cluster your local descriptors (you don't need to train all but let's say 500000 random ones) of your training set. Now, given a new image you compute again local descriptors. For each of these cluster center you search the nearest cluster center and you count their occurence in a histogram (i.e. you initialize a vector of 100 with zeros - each entry standing for a cluster-id - and count how often one cluster center has chosen as the nearest one). After normalizing the histogram (typically L1) you have your bag of words descriptor (of dimension 100) which you can compare now. In other words you have transformed all your local descriptors to a global one which you can now use for classification, etc.
I hope, it got clearer now!