1. One or more computer-readable media storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising: controlling the one or more processors configured with executable instructions to perform: defining N feature points in a codebook of K words; initializing centers in each of K clusters, the K clusters representing a distribution of the N feature points; repeating a loop, and within the loop, performing: building an index assigning each feature point to a cluster according to an approximate nearest neighbor (ANN) algorithm having random aspects; assigning each feature point to a cluster according to a comparison of an assignment indicated by the index or a previous assignment of that feature point; updating a center of each cluster to reflect the assigning; and terminating the loop upon convergence.