1. A method for assigning one of a plurality of classes to an input image, comprising one or more processors implementing the following actions: identifying by a key patch detector a plurality of key-patches in the input image; computing by a feature description module an unordered feature vector for each of the plurality of key-patches; computing by a multi-histogram computation module a first histogram of fixed length feature vectors for each of the plurality of classes using the plurality of unordered feature vectors computed; computing by the multi-histogram computation module a second histogram for each of the plurality of classes using the plurality of unordered feature vectors computed and the first histogram of fixed length feature vectors computed; and, assigning by a classifier training module at least one of the plurality of classes to the input image using the plurality of histograms computed as input to a classifier; wherein the first and second histograms are iteratively estimated using an Expectation-Maximization based calculation for mixture weight, mean vector, and covariance matrix parameters of the feature vector, wherein the parameters correspond to relative frequencies, averages, and variations of the visual words.