A method for processing a visual search request by a server, the method comprising: a) receiving, from a mobile device, the visual search request containing a plurality of ranked features of a query image, wherein the plurality of ranked features comprise a first subset of a predetermined number of top ranked features identified for the query image, where the ranked features are ranked based on edge and peak strength; for each of one or more images from an image list, executing steps b-d: b) performing local feature matching between the received features and the image; c) transmitting, to the mobile device, a flag identifying at least one matched feature, so that the mobile device computes a minimum bounding box, MBB, on the query image for the at least one matched feature, and a local histogram for the MBB for the at least one matched feature, d) receiving, from the mobile device, the local histogram for the MBB for the at least one matched feature, checking a distance between a local histogram for an MBB for the at least one matched feature of the image among the one or more images and the local histogram for the MBB for the at least one matched feature of the query image, and if the distance exceeds a threshold, removing the image from the list, and if the distance does not exceed the threshold, leaving the image in the list, e) if a match is found then terminating the search, else f) if there are more features left, receiving, from the mobile device, the visual search request containing a second plurality of ranked features in the query image, wherein the second plurality of ranked features comprises a subsequent subset of the predetermined number of top ranked features identified for the query image, where the ranked features are ranked based on edge and peak strength; else, if there are no features left, terminating the search, g) for each of the one or more images of the list which were not removed, performing subsequent iterations of steps b) to f). a) receiving, from a mobile device, the visual search request containing a plurality of ranked features of a query image, wherein the plurality of ranked features comprise a first subset of a predetermined number of top ranked features identified for the query image, where the ranked features are ranked based on edge and peak strength; b) performing local feature matching between the received features and the image; c) transmitting, to the mobile device, a flag identifying at least one matched feature, so that the mobile device computes a minimum bounding box, MBB, on the query image for the at least one matched feature, and a local histogram for the MBB for the at least one matched feature, d) receiving, from the mobile device, the local histogram for the MBB for the at least one matched feature, checking a distance between a local histogram for an MBB for the at least one matched feature of the image among the one or more images and the local histogram for the MBB for the at least one matched feature of the query image, and if the distance exceeds a threshold, removing the image from the list, and if the distance does not exceed the threshold, leaving the image in the list, checking a distance between a local histogram for an MBB for the at least one matched feature of the image among the one or more images and the local histogram for the MBB for the at least one matched feature of the query image, and if the distance exceeds a threshold, removing the image from the list, and if the distance does not exceed the threshold, leaving the image in the list, e) if a match is found then terminating the search, else f) if there are more features left, receiving, from the mobile device, the visual search request containing a second plurality of ranked features in the query image, wherein the second plurality of ranked features comprises a subsequent subset of the predetermined number of top ranked features identified for the query image, where the ranked features are ranked based on edge and peak strength; else, if there are no features left, terminating the search, g) for each of the one or more images of the list which were not removed, performing subsequent iterations of steps b) to f).