1. A system for identifying an image that matches a target image based on visual parts of the target image, comprising: a collection of images, each image having salient points, each salient point having a feature vector; a first version and a second version of the target image, each version having salient points; a memory storing computer-executable instructions of a component that identifies matching points, each matching point being a salient point of the first version of the target image for which there is only one salient point of the second version of the target image with a similar feature, such that a salient point of the first version is not a matching point when the similarity between that salient point of the first version and the most similar salient point of the second version is too close to the similarity between that salient point of the first version and the second most similar salient point of the second version; a component that identifies groups of matching points such that the matching points are proximate to each other in the first version and their matching points are also proximate to each other in the second version wherein a group represents a visual part, the component identifies a group by: selecting a first matching point; selecting a second matching point; selecting a third matching point; and when the second matching point and the third matching point are within a certain radius of the first matching point in both the first version and the second version, designating the first matching point, the second matching point, and the third matching point as being a group; and a component that identifies an image from the collection of images that matches the target image by comparing features of salient points of the images to features of the salient points of the visual parts of the target image, the image being identified based on number of salient points of the image that match salient points of the visual parts of the target image; a component that ranks identified images based on the number of visual parts of the identified images that correspond to a visual part of the target image; and a processor for executing the computer-executable instructions stored in the memory.